@shotstack/shotstack-studio 2.14.3 → 2.15.0

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.
@@ -61,7 +61,7 @@ fn mainFragment(@location(0) uv: vec2<f32>, @builtin(position) position: vec4<f3
61
61
  var a = clamp(0.5 + ${$d} * (0.5 - m - wipeUniforms.uBrightness), 0.0, 1.0);
62
62
  return textureSample(uTexture, uSampler, uv) * a;
63
63
  }
64
- `;class G6 extends hi.Filter{uniformGroup;constructor(){const e=hi.GlProgram.from({vertex:hi.defaultFilterVert,fragment:j6,name:"wipe-filter"}),r=hi.GpuProgram.from({vertex:{source:Ld,entryPoint:"mainVertex"},fragment:{source:Ld,entryPoint:"mainFragment"}}),n=new hi.UniformGroup({uBrightness:{value:1,type:"f32"},uRevealFromRight:{value:0,type:"f32"}});super({glProgram:e,gpuProgram:r,resources:{wipeUniforms:n},padding:0}),this.uniformGroup=n}set brightness(e){this.uniformGroup.uniforms.uBrightness=e}set revealFromRight(e){this.uniformGroup.uniforms.uRevealFromRight=e?1:0}}const Ft={PlaybackPlay:"playback:play",PlaybackPause:"playback:pause",TimelineUpdated:"timeline:updated",TimelineBackgroundChanged:"timeline:backgroundChanged",ClipAdded:"clip:added",ClipSelected:"clip:selected",ClipUpdated:"clip:updated",ClipDeleted:"clip:deleted",ClipRestored:"clip:restored",ClipCopied:"clip:copied",ClipLoadFailed:"clip:loadFailed",ClipCaptureStarted:"clip:captureStarted",ClipCaptureCompleted:"clip:captureCompleted",ClipCaptureFailed:"clip:captureFailed",ClipUnresolved:"clip:unresolved",SelectionCleared:"selection:cleared",EditChanged:"edit:changed",EditUndo:"edit:undo",EditRedo:"edit:redo",TrackAdded:"track:added",TrackRemoved:"track:removed",DurationChanged:"duration:changed",OutputResized:"output:resized",OutputResolutionChanged:"output:resolutionChanged",OutputAspectRatioChanged:"output:aspectRatioChanged",OutputFpsChanged:"output:fpsChanged",OutputFormatChanged:"output:formatChanged",OutputDestinationsChanged:"output:destinationsChanged",MergeFieldChanged:"mergefield:changed",TimelineResized:"timeline:resized"},Fe={CanvasClipClicked:"canvas:clipClicked",CanvasClipDoubleClicked:"canvas:clipDoubleClicked",CanvasBackgroundClicked:"canvas:backgroundClicked",FontCapabilitiesChanged:"font:capabilitiesChanged",Resolved:"resolved",PlayerAddedToTrack:"player:addedToTrack",PlayerMovedBetweenTracks:"player:movedBetweenTracks",PlayerRemovedFromTrack:"player:removedFromTrack",PlayerLoaded:"player:loaded",TrackContainerRemoved:"track:containerRemoved",ViewportSizeChanged:"viewport:sizeChanged",ViewportNeedsZoomToFit:"viewport:needsZoomToFit",ClipFocused:"clip:focused",ClipBlurred:"clip:blurred"};function W6(t,e,r){if(t.width===0||t.height===0)return 1;const n=e.width/t.width,i=e.height/t.height;switch(r??"crop"){case"crop":case"cover":return Math.max(n,i);case"contain":return Math.min(n,i);case"none":default:return 1}}function H6(t,e,r,n,i){if(i)return{x:n,y:n};if(t.width===0||t.height===0)return{x:n,y:n};const a=e.width/t.width,s=e.height/t.height;switch(r??"crop"){case"contain":{const o=Math.min(a,s)*n;return{x:o,y:o}}case"crop":{const o=Math.max(a,s)*n;return{x:o,y:o}}case"cover":return{x:a*n,y:s*n};case"none":default:return{x:n,y:n}}}function Y6(t,e,r){const n=e.width/2,i=e.height/2;switch(r??"crop"){case"cover":{const a=e.width/t.width,s=e.height/t.height;return{scaleX:a,scaleY:s,positionX:n,positionY:i}}case"crop":{const a=Math.max(e.width/t.width,e.height/t.height);return{scaleX:a,scaleY:a,positionX:n,positionY:i}}case"contain":{const a=Math.min(e.width/t.width,e.height/t.height);return{scaleX:a,scaleY:a,positionX:n,positionY:i}}case"none":default:return{scaleX:1,scaleY:1,positionX:n,positionY:i}}}function oL(t){return t}function br(t){return typeof t=="string"&&/^alias:\/\/[a-zA-Z0-9_-]*$/.test(t)}function Po(t){return t.replace(/^alias:\/\//,"")}let q6=class{static ButtonLeftClick=0;static ButtonRightClick=3};function X6(t,e,r,n){switch(r){case"topLeft":return{x:n.x*t.width,y:-n.y*t.height};case"topRight":return{x:(n.x+1)*t.width-e.width,y:-n.y*t.height};case"bottomLeft":return{x:n.x*t.width,y:(-n.y+1)*t.height-e.height};case"bottomRight":return{x:(n.x+1)*t.width-e.width,y:(-n.y+1)*t.height-e.height};case"left":return{x:n.x*t.width,y:(-n.y+.5)*t.height-e.height/2};case"right":return{x:(n.x+1)*t.width-e.width,y:(-n.y+.5)*t.height-e.height/2};case"top":return{x:(n.x+.5)*t.width-e.width/2,y:-n.y*t.height};case"bottom":return{x:(n.x+.5)*t.width-e.width/2,y:(-n.y+1)*t.height-e.height};case"center":default:return{x:(n.x+.5)*t.width-e.width/2,y:(-n.y+.5)*t.height-e.height/2}}}function K6(t,e,r,n){switch(r){case"topLeft":return{x:n.x/t.width,y:-(n.y/t.height)};case"topRight":return{x:(n.x+e.width)/t.width-1,y:-(n.y/t.height)};case"bottomLeft":return{x:n.x/t.width,y:-((n.y+e.height)/t.height-1)};case"bottomRight":return{x:(n.x+e.width)/t.width-1,y:-((n.y+e.height)/t.height-1)};case"left":return{x:n.x/t.width,y:-((n.y+e.height/2)/t.height-.5)};case"right":return{x:(n.x+e.width)/t.width-1,y:-((n.y+e.height/2)/t.height-.5)};case"top":return{x:(n.x+e.width/2)/t.width-.5,y:-(n.y/t.height)};case"bottom":return{x:(n.x+e.width/2)/t.width-.5,y:-((n.y+e.height)/t.height-1)};case"center":default:return{x:(n.x+e.width/2)/t.width-.5,y:-((n.y+e.height/2)/t.height-.5)}}}class J6{container;constructor(){this.container=new st.Container}getContainer(){return this.container}}var Ee=(t=>(t.Video="video",t.Image="image",t.Audio="audio",t.Text="text",t.RichText="rich-text",t.Luma="luma",t.Html="html",t.Html5="html5",t.Shape="shape",t.Caption="caption",t.Svg="svg",t.TextToImage="text-to-image",t.ImageToVideo="image-to-video",t.TextToSpeech="text-to-speech",t.RichCaption="rich-caption",t))(Ee||{});class Je extends J6{static DiscardedFrameCount=0;layer;shouldDispose;playerType;clipId=null;needsResolution=!1;edit;clipConfiguration;resolvedTiming;offsetXKeyframeBuilder;offsetYKeyframeBuilder;scaleKeyframeBuilder;opacityKeyframeBuilder;rotationKeyframeBuilder;skewXKeyframeBuilder;skewYKeyframeBuilder;maskXKeyframeBuilder;wipeBrightnessBuilder;wipeInFromRight=!1;wipeOutFromRight=!1;wipeOutStart=Number.POSITIVE_INFINITY;wipeFilter=null;wipeMask;lumaWrapper;contentContainer;constructor(e,r,n){super(),this.edit=e,this.layer=0,this.shouldDispose=!1,this.playerType=n,this.clipConfiguration=r,this.resolvedTiming={start:r.start,length:r.length},this.wipeMask=null,this.lumaWrapper=new st.Container,this.contentContainer=new st.Container,this.lumaWrapper.addChild(this.contentContainer),this.getContainer().addChild(this.lumaWrapper)}reconfigureAfterRestore(){this.configureKeyframes()}async reloadAsset(){}configureKeyframes(){const e=this.getLength(),r=this.clipConfiguration,n=typeof r.offset?.x=="number"?r.offset.x:0,i=typeof r.offset?.y=="number"?r.offset.y:0,a=typeof r.scale=="number"?r.scale:1,s=typeof r.opacity=="number"?r.opacity:1,o=typeof r.transform?.rotate?.angle=="number"?r.transform.rotate.angle:0,u=typeof r.transform?.skew?.x=="number"?r.transform.skew.x:0,l=typeof r.transform?.skew?.y=="number"?r.transform.skew.y:0;if(this.offsetXKeyframeBuilder=new Mn(n,e,"additive"),this.offsetYKeyframeBuilder=new Mn(i,e,"additive"),this.scaleKeyframeBuilder=new Mn(a,e,"multiplicative"),this.opacityKeyframeBuilder=new Mn(s,e,"multiplicative",{min:0,max:1}),this.rotationKeyframeBuilder=new Mn(o,e,"additive"),this.skewXKeyframeBuilder=new Mn(u,e,"additive"),this.skewYKeyframeBuilder=new Mn(l,e,"additive"),this.clipHasKeyframes()){Array.isArray(r.scale)&&this.scaleKeyframeBuilder.addLayer(r.scale),Array.isArray(r.opacity)&&this.opacityKeyframeBuilder.addLayer(r.opacity),Array.isArray(r.offset?.x)&&this.offsetXKeyframeBuilder.addLayer(r.offset.x),Array.isArray(r.offset?.y)&&this.offsetYKeyframeBuilder.addLayer(r.offset.y),Array.isArray(r.transform?.rotate?.angle)&&this.rotationKeyframeBuilder.addLayer(r.transform.rotate.angle),Array.isArray(r.transform?.skew?.x)&&this.skewXKeyframeBuilder.addLayer(r.transform.skew.x),Array.isArray(r.transform?.skew?.y)&&this.skewYKeyframeBuilder.addLayer(r.transform.skew.y);return}const c={...r,start:this.getStart(),length:e},h=new Z6(c).buildRelative(this.edit.size,this.getSize()),p=new U6(c).buildRelative();this.offsetXKeyframeBuilder.addLayer(h.offsetXKeyframes),this.offsetYKeyframeBuilder.addLayer(h.offsetYKeyframes),this.scaleKeyframeBuilder.addLayer(h.scaleKeyframes),this.opacityKeyframeBuilder.addLayer(h.opacityKeyframes),this.rotationKeyframeBuilder.addLayer(h.rotationKeyframes),this.offsetXKeyframeBuilder.addLayer(p.in.offsetXKeyframes),this.offsetYKeyframeBuilder.addLayer(p.in.offsetYKeyframes),this.scaleKeyframeBuilder.addLayer(p.in.scaleKeyframes),this.opacityKeyframeBuilder.addLayer(p.in.opacityKeyframes),this.rotationKeyframeBuilder.addLayer(p.in.rotationKeyframes),this.offsetXKeyframeBuilder.addLayer(p.out.offsetXKeyframes),this.offsetYKeyframeBuilder.addLayer(p.out.offsetYKeyframes),this.scaleKeyframeBuilder.addLayer(p.out.scaleKeyframes),this.opacityKeyframeBuilder.addLayer(p.out.opacityKeyframes),this.rotationKeyframeBuilder.addLayer(p.out.rotationKeyframes);const g=[...p.in.maskXKeyframes,...p.out.maskXKeyframes];g.length&&(this.maskXKeyframeBuilder=new Pn(g,e));const y=[...p.in.brightnessKeyframes,...p.out.brightnessKeyframes];y.length&&(this.wipeBrightnessBuilder=new Pn(y,e),this.wipeInFromRight=p.in.wipeFromRight,this.wipeOutFromRight=p.out.wipeFromRight,this.wipeOutStart=p.out.brightnessKeyframes[0]?.start??Number.POSITIVE_INFINITY)}async load(){this.lumaWrapper?.destroyed&&(this.lumaWrapper=new st.Container,this.getContainer().addChild(this.lumaWrapper)),this.contentContainer?.destroyed&&(this.contentContainer=new st.Container,this.lumaWrapper.addChild(this.contentContainer)),this.getContainer().sortableChildren=!0,this.getContainer().cursor="pointer",this.getContainer().eventMode="static",this.getContainer().on?.("pointerdown",this.onPointerDown.bind(this))}update(e,r){this.applyPlayheadState()}applyPlayheadState(){if(this.getContainer().visible=this.isActive(),this.getContainer().zIndex=1e5-this.layer*100,!this.isActive())return;const e=this.getPivot(),r=this.getPosition(),n=this.getContainerScale();this.getContainer().scale.set(n.x,n.y),this.getContainer().pivot.set(e.x,e.y),this.getContainer().position.set(r.x+e.x,r.y+e.y);const i=this.getRotation();this.contentContainer.alpha=this.getOpacity(),this.getContainer().angle=i;const a=this.getSkew();this.getContainer().skew?.set(a.x*(Math.PI/180),a.y*(Math.PI/180)),this.clipConfiguration.width&&this.clipConfiguration.height&&this.applyFixedDimensions(),this.updateWipeMask(),this.updateWipeFilter(),this.shouldDiscardFrame()&&(this.contentContainer.alpha=0)}updateWipeMask(){if(!this.maskXKeyframeBuilder){this.wipeMask&&(this.getContainer().mask=null,this.wipeMask.destroy(),this.wipeMask=null);return}const e=this.maskXKeyframeBuilder.getValue(this.getPlaybackTime()),r=this.getSize();this.wipeMask||(this.wipeMask=new st.Graphics,this.getContainer().addChild(this.wipeMask),this.getContainer().mask=this.wipeMask),this.wipeMask.clear(),this.wipeMask.rect(0,0,r.width*e,r.height),this.wipeMask.fill(16777215)}updateWipeFilter(){if(!this.wipeBrightnessBuilder){this.removeWipeFilter();return}this.wipeFilter||(this.wipeFilter=new G6,this.contentContainer.filters=[this.wipeFilter]);const e=this.getPlaybackTime();this.wipeFilter.brightness=this.wipeBrightnessBuilder.getValue(e),this.wipeFilter.revealFromRight=e>=this.wipeOutStart?this.wipeOutFromRight:this.wipeInFromRight}removeWipeFilter(){this.wipeFilter&&(this.contentContainer.filters=[],this.wipeFilter.destroy(),this.wipeFilter=null)}dispose(){this.wipeMask?.destroy(),this.wipeMask=null,this.wipeFilter?.destroy(),this.wipeFilter=null,this.contentContainer?.destroy(),this.lumaWrapper?.destroy()}getStart(){return this.resolvedTiming.start}getLength(){return this.resolvedTiming.length}getEnd(){return this.resolvedTiming.start+this.resolvedTiming.length}getTimingIntent(){if(this.clipId){const e=this.edit.getDocumentClipById(this.clipId);if(e){let r;e.start==="auto"?r="auto":(br(e.start),r=e.start);let n;return e.length==="auto"||e.length==="end"||br(e.length),n=e.length,{start:r,length:n}}}return{start:this.clipConfiguration.start,length:this.clipConfiguration.length}}getResolvedTiming(){return{...this.resolvedTiming}}setResolvedTiming(e){this.resolvedTiming={...e},this.clipConfiguration.start=e.start,this.clipConfiguration.length=e.length}getExportableClip(){const e=structuredClone(this.clipConfiguration),r=this.getTimingIntent();return e.start=r.start,e.length=r.length,e}getPlaybackTime(){const e=this.edit.playbackTime-this.getStart();return e<0?0:e>this.getLength()?this.getLength():e}getContentSize(){return this.getSize()}getDisplaySize(){return{width:this.clipConfiguration.width??this.edit.size.width,height:this.clipConfiguration.height??this.edit.size.height}}getContentContainer(){return this.contentContainer}getLumaWrapper(){return this.lumaWrapper}getOpacity(){return this.opacityKeyframeBuilder?.getValue(this.getPlaybackTime())??1}getPosition(){const e={x:this.offsetXKeyframeBuilder?.getValue(this.getPlaybackTime())??0,y:this.offsetYKeyframeBuilder?.getValue(this.getPlaybackTime())??0};return X6(this.edit.size,this.getSize(),this.clipConfiguration.position??"center",e)}getPivot(){const e=this.getSize();return{x:e.width/2,y:e.height/2}}calculateMoveOffset(e,r){const n=this.getPosition(),i={x:n.x+e,y:n.y+r},a=K6(this.edit.size,this.getSize(),this.clipConfiguration.position??"center",i);return{x:a.x,y:a.y}}getFitScale(){const e={width:this.clipConfiguration.width??this.edit.size.width,height:this.clipConfiguration.height??this.edit.size.height},r=this.getContentSize(),n=this.clipConfiguration.fit??"crop";return W6(r,e,n)}getScale(){return(this.scaleKeyframeBuilder?.getValue(this.getPlaybackTime())??1)*this.getFitScale()}getContainerScale(){const e=this.scaleKeyframeBuilder?.getValue(this.getPlaybackTime())??1,r=this.getContentSize(),n=this.clipConfiguration.fit??"crop",i=!!(this.clipConfiguration.width&&this.clipConfiguration.height);return H6(r,this.edit.size,n,e,i)}getRotation(){return this.rotationKeyframeBuilder?.getValue(this.getPlaybackTime())??0}getSkew(){return{x:this.skewXKeyframeBuilder?.getValue(this.getPlaybackTime())??0,y:this.skewYKeyframeBuilder?.getValue(this.getPlaybackTime())??0}}isActive(){return this.edit.playbackTime>=this.getStart()&&this.edit.playbackTime<this.getEnd()}async prepareStaticRender(){}endStaticRender(){}shouldDiscardFrame(){return this.getPlaybackTime()<Je.DiscardedFrameCount}onPointerDown(e){e.button===q6.ButtonLeftClick&&this.edit.getInternalEvents().emit(Fe.CanvasClipClicked,{player:this})}clipHasKeyframes(){return[this.clipConfiguration.scale,this.clipConfiguration.opacity,this.clipConfiguration.offset?.x,this.clipConfiguration.offset?.y,this.clipConfiguration.transform?.rotate?.angle,this.clipConfiguration.transform?.skew?.x,this.clipConfiguration.transform?.skew?.y].some(e=>e&&typeof e!="number")}applyFixedDimensions(){const e=this.clipConfiguration.width,r=this.clipConfiguration.height;if(!e||!r)return;const n=this.contentContainer.children.find(v=>v instanceof st.Sprite);if(!n?.texture)return;const i=n.texture.width,a=n.texture.height,s=this.clipConfiguration.fit||"crop",o=this.contentContainer.mask;let u;if(o instanceof st.Graphics)u=o;else if(!o)u=new st.Graphics,this.contentContainer.addChild(u),this.contentContainer.mask=u;else return;const{asset:l}=this.clipConfiguration,c=l&&"border"in l&&l.border&&typeof l.border=="object"?l.border.width??0:0,h=c/2;u.clear(),u.rect(-h,-h,e+c,r+c),u.fill(16777215);const p=this.scaleKeyframeBuilder?.getValue(this.getPlaybackTime())??1;n.anchor.set(.5,.5);const E=Y6({width:i,height:a},{width:e,height:r},s);n.scale.set(E.scaleX,E.scaleY),n.position.set(E.positionX,E.positionY),this.contentContainer.scale.set(p,p),this.contentContainer.position.set(e/2*(1-p),r/2*(1-p))}applyAnchorPositioning(e,r,n,i){const a=i.width,s=i.height;if(!!i.mask){i.position.set(0,0);return}const u=(e??"center").toLowerCase();let l=0,c=0;u.includes("left")||u==="left"?l=0:u.includes("right")||u==="right"?l=r-a:l=(r-a)/2,u.includes("top")||u==="top"?c=0:u.includes("bottom")||u==="bottom"?c=n-s:c=(n-s)/2,i.position.set(l,c)}supportsEdgeResize(){return!1}onDimensionsChanged(){}notifyDimensionsChanged(){this.onDimensionsChanged()}}const Zd=new Set(["text-to-image","image-to-video","text-to-speech"]),Q6=new Set(["image","video","audio"]),t_={"text-to-image":"image","image-to-video":"video","text-to-speech":"mic",image:"image",video:"video",audio:"mic"};function Ud(t){return typeof t=="string"&&t.trim().length>0}function an(t){if(typeof t!="object"||t===null||!("type"in t))return!1;const{type:e}=t;return typeof e!="string"?!1:Zd.has(e)?!0:Q6.has(e)&&Ud(t.prompt)}function Mo(t){return an(t)?Zd.has(t.type)?!0:!Ud(t.src):!1}function jd(t){return an(t)?t_[t.type]??null:null}function bc(t){return"id"in t&&typeof t.id=="string"}const Gd=new WeakMap;function e_(t){let e=Gd.get(t);return e||(e=[...t].sort((r,n)=>r.start-n.start),Gd.set(t,e)),e}function Wd(t,e){const r=t.find(s=>bc(s)&&s.id===e);if(!r||!bc(r)||!r.asset||!an(r.asset))return null;const n=jd(r.asset),i=e_(t);let a=0;for(const s of i){if(bc(s)&&s.id===e)break;s.asset&&jd(s.asset)===n&&(a+=1)}return a+1}function r_(t){const e=t*137.5%360;return[e,(e+30)%360,(e+60)%360,(e+90)%360,(e+120)%360]}function rs(t,e,r){const n=t/360,i=e/100,a=r/100;let s,o,u;{const p=(E,v,C)=>{let I=C;return I<0&&(I+=1),I>1&&(I-=1),I<.16666666666666666?E+(v-E)*6*I:I<.5?v:I<.6666666666666666?E+(v-E)*(.6666666666666666-I)*6:E},g=a+i-a*i,y=2*a-g;s=p(y,g,n+1/3),o=p(y,g,n),u=p(y,g,n-1/3)}const l=Math.round(s*255)*65536,c=Math.round(o*255)*256,h=Math.round(u*255);return l+c+h}function i_(t){return{"text-to-image":"Image","image-to-video":"Video","text-to-speech":"Audio",image:"Image",video:"Video",audio:"Audio"}[t]||t}function n_(t,e=60){return t.length<=e?t:`${t.substring(0,e-3)}...`}class is{static Name="AudioLoadParser";id;name;extension;validAudioExtensions;constructor(){this.id=is.Name,this.name=is.Name,this.extension={type:[st.ExtensionType.LoadParser],priority:st.LoaderParserPriority.Normal,ref:null},this.validAudioExtensions=["mp3","mpeg","ogg","wav"]}test(e){const r=e.split("?")[0]?.split(".").pop()??"";return this.validAudioExtensions.includes(r)}async load(e,r,n){return new Promise(i=>{const a={src:e},s=new Howl(a);s.on("load",()=>i(s)),s.on("loaderror",()=>i(null))})}unload(e){e?.unload()}}class a_ extends Je{audioResource;isPlaying;volumeKeyframeBuilder;syncTimer;constructor(e,r){super(e,r,Ee.Audio),this.audioResource=null,this.isPlaying=!1,this.syncTimer=0}async load(){await super.load();const e=this.clipConfiguration.asset,r=e.src;if(!r)throw new Error("Audio asset has no src to load.");const n={src:r,parser:is.Name},i=await this.edit.assetLoader.load(r,n);if(!(i instanceof Od.Howl))throw new Error(`Invalid audio source '${e.src}'.`);this.audioResource=i;const s=typeof e.volume=="number"?e.volume:1;this.volumeKeyframeBuilder=new Pn(this.createVolumeKeyframes(e,s),this.getLength(),s),this.audioResource.volume(this.getVolume()),this.configureKeyframes()}update(e,r){super.update(e,r);const{trim:n=0}=this.clipConfiguration.asset;if(this.syncTimer+=r,this.getContainer().alpha=0,!this.audioResource)return;const i=this.edit.isPlaying&&this.isActive(),a=this.getPlaybackTime();i&&(this.isPlaying||(this.isPlaying=!0,this.audioResource.volume(this.getVolume()),this.audioResource.seek(a+n),this.audioResource.play()),this.audioResource.volume()!==this.getVolume()&&this.audioResource.volume(this.getVolume()),Math.abs(this.audioResource.seek()-n-a)>.1&&this.audioResource.seek(a+n)),this.isPlaying&&!i&&(this.isPlaying=!1,this.audioResource.pause());const s=this.syncTimer>100;!this.edit.isPlaying&&this.isActive()&&s&&(this.syncTimer=0,this.audioResource.seek(a+n))}dispose(){this.audioResource&&(this.audioResource.stop(),this.audioResource.unload()),this.audioResource=null,super.dispose()}async reloadAsset(){this.audioResource&&(this.audioResource.stop(),this.audioResource.unload()),this.audioResource=null,this.isPlaying=!1,this.syncTimer=0;const e=this.clipConfiguration.asset,{src:r}=e;if(!r)throw new Error("Audio asset has no src to load.");const n={src:r,parser:is.Name},i=await this.edit.assetLoader.load(r,n);if(!(i instanceof Od.Howl))throw new Error(`Invalid audio source '${e.src}'.`);this.audioResource=i,this.audioResource.volume(this.getVolume())}reconfigureAfterRestore(){super.reconfigureAfterRestore();const e=this.clipConfiguration.asset,r=typeof e.volume=="number"?e.volume:1;this.volumeKeyframeBuilder=new Pn(this.createVolumeKeyframes(e,r),this.getLength(),r)}getSize(){return{width:0,height:0}}getVolume(){return this.volumeKeyframeBuilder.getValue(this.getPlaybackTime())}getCurrentDrift(){if(!this.audioResource)return 0;const{trim:e=0}=this.clipConfiguration.asset,r=this.audioResource.seek(),n=this.getPlaybackTime();return Math.abs(r-e-n)}createVolumeKeyframes(e,r){const{effect:n,volume:i}=e;if(!n||n==="none"||Array.isArray(i))return i??1;const a=this.getLength(),s=Math.min(2,a/2);return n==="fadeIn"?[{from:0,to:r,start:0,length:s}]:n==="fadeOut"?[{from:r,to:0,start:a-s,length:s}]:[{from:0,to:r,start:0,length:s},{from:r,to:0,start:a-s,length:s}]}}function zo(t){const e=t.trim().replace(",","."),r=e.split(":");if(r.length===3){const n=parseInt(r[0],10),i=parseInt(r[1],10),a=parseFloat(r[2]);return n*3600+i*60+a}if(r.length===2){const n=parseInt(r[0],10),i=parseFloat(r[1]);return n*60+i}return parseFloat(e)||0}function s_(t){const e=[],r=t.split(/\r?\n/);let n=0;for(;n<r.length&&!r[n].includes("-->");)n+=1;for(;n<r.length;){const i=r[n].trim();if(i.includes("-->")){const[a,s]=i.split("-->").map(c=>c.trim().split(" ")[0]),o=zo(a),u=zo(s),l=[];for(n+=1;n<r.length&&r[n].trim()!==""&&!r[n].includes("-->");){const c=r[n].trim();c.startsWith("NOTE")||l.push(c),n+=1}l.length>0&&e.push({start:o,end:u,text:l.join(`
64
+ `;class G6 extends hi.Filter{uniformGroup;constructor(){const e=hi.GlProgram.from({vertex:hi.defaultFilterVert,fragment:j6,name:"wipe-filter"}),r=hi.GpuProgram.from({vertex:{source:Ld,entryPoint:"mainVertex"},fragment:{source:Ld,entryPoint:"mainFragment"}}),n=new hi.UniformGroup({uBrightness:{value:1,type:"f32"},uRevealFromRight:{value:0,type:"f32"}});super({glProgram:e,gpuProgram:r,resources:{wipeUniforms:n},padding:0}),this.uniformGroup=n}set brightness(e){this.uniformGroup.uniforms.uBrightness=e}set revealFromRight(e){this.uniformGroup.uniforms.uRevealFromRight=e?1:0}}const Ft={PlaybackPlay:"playback:play",PlaybackPause:"playback:pause",TimelineUpdated:"timeline:updated",TimelineBackgroundChanged:"timeline:backgroundChanged",ClipAdded:"clip:added",ClipSelected:"clip:selected",ClipUpdated:"clip:updated",ClipDeleted:"clip:deleted",ClipRestored:"clip:restored",ClipCopied:"clip:copied",ClipLoadFailed:"clip:loadFailed",ClipCaptureStarted:"clip:captureStarted",ClipCaptureCompleted:"clip:captureCompleted",ClipCaptureFailed:"clip:captureFailed",ClipUnresolved:"clip:unresolved",SelectionCleared:"selection:cleared",EditChanged:"edit:changed",EditUndo:"edit:undo",EditRedo:"edit:redo",TrackAdded:"track:added",TrackRemoved:"track:removed",DurationChanged:"duration:changed",OutputResized:"output:resized",OutputResolutionChanged:"output:resolutionChanged",OutputAspectRatioChanged:"output:aspectRatioChanged",OutputFpsChanged:"output:fpsChanged",OutputFormatChanged:"output:formatChanged",OutputDestinationsChanged:"output:destinationsChanged",MergeFieldChanged:"mergefield:changed",TimelineResized:"timeline:resized"},Fe={CanvasClipClicked:"canvas:clipClicked",CanvasClipDoubleClicked:"canvas:clipDoubleClicked",CanvasBackgroundClicked:"canvas:backgroundClicked",FontCapabilitiesChanged:"font:capabilitiesChanged",Resolved:"resolved",PlayerAddedToTrack:"player:addedToTrack",PlayerMovedBetweenTracks:"player:movedBetweenTracks",PlayerRemovedFromTrack:"player:removedFromTrack",PlayerLoaded:"player:loaded",TrackContainerRemoved:"track:containerRemoved",ViewportSizeChanged:"viewport:sizeChanged",ViewportNeedsZoomToFit:"viewport:needsZoomToFit",ClipFocused:"clip:focused",ClipBlurred:"clip:blurred"};function W6(t,e,r){if(t.width===0||t.height===0)return 1;const n=e.width/t.width,i=e.height/t.height;switch(r??"crop"){case"crop":case"cover":return Math.max(n,i);case"contain":return Math.min(n,i);case"none":default:return 1}}function H6(t,e,r,n,i){if(i)return{x:n,y:n};if(t.width===0||t.height===0)return{x:n,y:n};const a=e.width/t.width,s=e.height/t.height;switch(r??"crop"){case"contain":{const o=Math.min(a,s)*n;return{x:o,y:o}}case"crop":{const o=Math.max(a,s)*n;return{x:o,y:o}}case"cover":return{x:a*n,y:s*n};case"none":default:return{x:n,y:n}}}function Y6(t,e,r){const n=e.width/2,i=e.height/2;switch(r??"crop"){case"cover":{const a=e.width/t.width,s=e.height/t.height;return{scaleX:a,scaleY:s,positionX:n,positionY:i}}case"crop":{const a=Math.max(e.width/t.width,e.height/t.height);return{scaleX:a,scaleY:a,positionX:n,positionY:i}}case"contain":{const a=Math.min(e.width/t.width,e.height/t.height);return{scaleX:a,scaleY:a,positionX:n,positionY:i}}case"none":default:return{scaleX:1,scaleY:1,positionX:n,positionY:i}}}function oL(t){return t}function br(t){return typeof t=="string"&&/^alias:\/\/[a-zA-Z0-9_-]*$/.test(t)}function Po(t){return t.replace(/^alias:\/\//,"")}let q6=class{static ButtonLeftClick=0;static ButtonRightClick=3};function X6(t,e,r,n){switch(r){case"topLeft":return{x:n.x*t.width,y:-n.y*t.height};case"topRight":return{x:(n.x+1)*t.width-e.width,y:-n.y*t.height};case"bottomLeft":return{x:n.x*t.width,y:(-n.y+1)*t.height-e.height};case"bottomRight":return{x:(n.x+1)*t.width-e.width,y:(-n.y+1)*t.height-e.height};case"left":return{x:n.x*t.width,y:(-n.y+.5)*t.height-e.height/2};case"right":return{x:(n.x+1)*t.width-e.width,y:(-n.y+.5)*t.height-e.height/2};case"top":return{x:(n.x+.5)*t.width-e.width/2,y:-n.y*t.height};case"bottom":return{x:(n.x+.5)*t.width-e.width/2,y:(-n.y+1)*t.height-e.height};case"center":default:return{x:(n.x+.5)*t.width-e.width/2,y:(-n.y+.5)*t.height-e.height/2}}}function K6(t,e,r,n){switch(r){case"topLeft":return{x:n.x/t.width,y:-(n.y/t.height)};case"topRight":return{x:(n.x+e.width)/t.width-1,y:-(n.y/t.height)};case"bottomLeft":return{x:n.x/t.width,y:-((n.y+e.height)/t.height-1)};case"bottomRight":return{x:(n.x+e.width)/t.width-1,y:-((n.y+e.height)/t.height-1)};case"left":return{x:n.x/t.width,y:-((n.y+e.height/2)/t.height-.5)};case"right":return{x:(n.x+e.width)/t.width-1,y:-((n.y+e.height/2)/t.height-.5)};case"top":return{x:(n.x+e.width/2)/t.width-.5,y:-(n.y/t.height)};case"bottom":return{x:(n.x+e.width/2)/t.width-.5,y:-((n.y+e.height)/t.height-1)};case"center":default:return{x:(n.x+e.width/2)/t.width-.5,y:-((n.y+e.height/2)/t.height-.5)}}}class J6{container;constructor(){this.container=new st.Container}getContainer(){return this.container}}var Ee=(t=>(t.Video="video",t.Image="image",t.Audio="audio",t.Text="text",t.RichText="rich-text",t.Luma="luma",t.Html="html",t.Html5="html5",t.Shape="shape",t.Caption="caption",t.Svg="svg",t.TextToImage="text-to-image",t.ImageToVideo="image-to-video",t.TextToSpeech="text-to-speech",t.RichCaption="rich-caption",t))(Ee||{});class Je extends J6{static DiscardedFrameCount=0;layer;shouldDispose;playerType;clipId=null;needsResolution=!1;edit;clipConfiguration;resolvedTiming;offsetXKeyframeBuilder;offsetYKeyframeBuilder;scaleKeyframeBuilder;opacityKeyframeBuilder;rotationKeyframeBuilder;skewXKeyframeBuilder;skewYKeyframeBuilder;maskXKeyframeBuilder;wipeBrightnessBuilder;wipeInFromRight=!1;wipeOutFromRight=!1;wipeOutStart=Number.POSITIVE_INFINITY;wipeFilter=null;wipeMask;lumaWrapper;contentContainer;constructor(e,r,n){super(),this.edit=e,this.layer=0,this.shouldDispose=!1,this.playerType=n,this.clipConfiguration=r,this.resolvedTiming={start:r.start,length:r.length},this.wipeMask=null,this.lumaWrapper=new st.Container,this.contentContainer=new st.Container,this.lumaWrapper.addChild(this.contentContainer),this.getContainer().addChild(this.lumaWrapper)}reconfigureAfterRestore(){this.configureKeyframes()}async reloadAsset(){}configureKeyframes(){const e=this.getLength(),r=this.clipConfiguration,n=typeof r.offset?.x=="number"?r.offset.x:0,i=typeof r.offset?.y=="number"?r.offset.y:0,a=typeof r.scale=="number"?r.scale:1,s=typeof r.opacity=="number"?r.opacity:1,o=typeof r.transform?.rotate?.angle=="number"?r.transform.rotate.angle:0,u=typeof r.transform?.skew?.x=="number"?r.transform.skew.x:0,l=typeof r.transform?.skew?.y=="number"?r.transform.skew.y:0;if(this.offsetXKeyframeBuilder=new Mn(n,e,"additive"),this.offsetYKeyframeBuilder=new Mn(i,e,"additive"),this.scaleKeyframeBuilder=new Mn(a,e,"multiplicative"),this.opacityKeyframeBuilder=new Mn(s,e,"multiplicative",{min:0,max:1}),this.rotationKeyframeBuilder=new Mn(o,e,"additive"),this.skewXKeyframeBuilder=new Mn(u,e,"additive"),this.skewYKeyframeBuilder=new Mn(l,e,"additive"),this.clipHasKeyframes()){Array.isArray(r.scale)&&this.scaleKeyframeBuilder.addLayer(r.scale),Array.isArray(r.opacity)&&this.opacityKeyframeBuilder.addLayer(r.opacity),Array.isArray(r.offset?.x)&&this.offsetXKeyframeBuilder.addLayer(r.offset.x),Array.isArray(r.offset?.y)&&this.offsetYKeyframeBuilder.addLayer(r.offset.y),Array.isArray(r.transform?.rotate?.angle)&&this.rotationKeyframeBuilder.addLayer(r.transform.rotate.angle),Array.isArray(r.transform?.skew?.x)&&this.skewXKeyframeBuilder.addLayer(r.transform.skew.x),Array.isArray(r.transform?.skew?.y)&&this.skewYKeyframeBuilder.addLayer(r.transform.skew.y);return}const c={...r,start:this.getStart(),length:e},h=new Z6(c).buildRelative(this.edit.size,this.getSize()),p=new U6(c).buildRelative();this.offsetXKeyframeBuilder.addLayer(h.offsetXKeyframes),this.offsetYKeyframeBuilder.addLayer(h.offsetYKeyframes),this.scaleKeyframeBuilder.addLayer(h.scaleKeyframes),this.opacityKeyframeBuilder.addLayer(h.opacityKeyframes),this.rotationKeyframeBuilder.addLayer(h.rotationKeyframes),this.offsetXKeyframeBuilder.addLayer(p.in.offsetXKeyframes),this.offsetYKeyframeBuilder.addLayer(p.in.offsetYKeyframes),this.scaleKeyframeBuilder.addLayer(p.in.scaleKeyframes),this.opacityKeyframeBuilder.addLayer(p.in.opacityKeyframes),this.rotationKeyframeBuilder.addLayer(p.in.rotationKeyframes),this.offsetXKeyframeBuilder.addLayer(p.out.offsetXKeyframes),this.offsetYKeyframeBuilder.addLayer(p.out.offsetYKeyframes),this.scaleKeyframeBuilder.addLayer(p.out.scaleKeyframes),this.opacityKeyframeBuilder.addLayer(p.out.opacityKeyframes),this.rotationKeyframeBuilder.addLayer(p.out.rotationKeyframes);const g=[...p.in.maskXKeyframes,...p.out.maskXKeyframes];g.length&&(this.maskXKeyframeBuilder=new Pn(g,e));const y=[...p.in.brightnessKeyframes,...p.out.brightnessKeyframes];y.length&&(this.wipeBrightnessBuilder=new Pn(y,e),this.wipeInFromRight=p.in.wipeFromRight,this.wipeOutFromRight=p.out.wipeFromRight,this.wipeOutStart=p.out.brightnessKeyframes[0]?.start??Number.POSITIVE_INFINITY)}async load(){this.lumaWrapper?.destroyed&&(this.lumaWrapper=new st.Container,this.getContainer().addChild(this.lumaWrapper)),this.contentContainer?.destroyed&&(this.contentContainer=new st.Container,this.lumaWrapper.addChild(this.contentContainer)),this.getContainer().sortableChildren=!0,this.getContainer().cursor="pointer",this.getContainer().eventMode="static",this.getContainer().on?.("pointerdown",this.onPointerDown.bind(this))}update(e,r){this.applyPlayheadState()}applyPlayheadState(){if(this.getContainer().visible=this.isActive(),this.getContainer().zIndex=1e5-this.layer*100,!this.isActive())return;const e=this.getPivot(),r=this.getPosition(),n=this.getContainerScale();this.getContainer().scale.set(n.x,n.y),this.getContainer().pivot.set(e.x,e.y),this.getContainer().position.set(r.x+e.x,r.y+e.y);const i=this.getRotation();this.contentContainer.alpha=this.getOpacity(),this.getContainer().angle=i;const a=this.getSkew();this.getContainer().skew?.set(a.x*(Math.PI/180),a.y*(Math.PI/180)),this.clipConfiguration.width&&this.clipConfiguration.height&&this.applyFixedDimensions(),this.updateWipeMask(),this.updateWipeFilter(),this.shouldDiscardFrame()&&(this.contentContainer.alpha=0)}updateWipeMask(){if(!this.maskXKeyframeBuilder){this.wipeMask&&(this.getContainer().mask=null,this.wipeMask.destroy(),this.wipeMask=null);return}const e=this.maskXKeyframeBuilder.getValue(this.getPlaybackTime()),r=this.getSize();this.wipeMask||(this.wipeMask=new st.Graphics,this.getContainer().addChild(this.wipeMask),this.getContainer().mask=this.wipeMask),this.wipeMask.clear(),this.wipeMask.rect(0,0,r.width*e,r.height),this.wipeMask.fill(16777215)}updateWipeFilter(){if(!this.wipeBrightnessBuilder){this.removeWipeFilter();return}this.wipeFilter||(this.wipeFilter=new G6,this.contentContainer.filters=[this.wipeFilter]);const e=this.getPlaybackTime();this.wipeFilter.brightness=this.wipeBrightnessBuilder.getValue(e),this.wipeFilter.revealFromRight=e>=this.wipeOutStart?this.wipeOutFromRight:this.wipeInFromRight}removeWipeFilter(){this.wipeFilter&&(this.contentContainer.filters=[],this.wipeFilter.destroy(),this.wipeFilter=null)}dispose(){this.wipeMask?.destroy(),this.wipeMask=null,this.wipeFilter?.destroy(),this.wipeFilter=null,this.contentContainer?.destroy(),this.lumaWrapper?.destroy()}getStart(){return this.resolvedTiming.start}getLength(){return this.resolvedTiming.length}getEnd(){return this.resolvedTiming.start+this.resolvedTiming.length}getTimingIntent(){if(this.clipId){const e=this.edit.getDocumentClipById(this.clipId);if(e){let r;e.start==="auto"?r="auto":(br(e.start),r=e.start);let n;return e.length==="auto"||e.length==="end"||br(e.length),n=e.length,{start:r,length:n}}}return{start:this.clipConfiguration.start,length:this.clipConfiguration.length}}getResolvedTiming(){return{...this.resolvedTiming}}setResolvedTiming(e){this.resolvedTiming={...e},this.clipConfiguration.start=e.start,this.clipConfiguration.length=e.length}getExportableClip(){const e=structuredClone(this.clipConfiguration),r=this.getTimingIntent();return e.start=r.start,e.length=r.length,e}getPlaybackTime(){const e=this.edit.playbackTime-this.getStart();return e<0?0:e>this.getLength()?this.getLength():e}getAssetSpeed(){const{speed:e=1}=this.clipConfiguration.asset;return e}getSourceTime(){const{trim:e=0}=this.clipConfiguration.asset;return this.getAssetSpeed()*(e+this.getPlaybackTime())}getSourceDuration(){return null}getMaxLength(){const e=this.getSourceDuration();if(e===null)return null;const r=this.getAssetSpeed();if(r<=0)return null;const{trim:n=0}=this.clipConfiguration.asset;return Math.max(.1,e/r-n)}getContentSize(){return this.getSize()}getDisplaySize(){return{width:this.clipConfiguration.width??this.edit.size.width,height:this.clipConfiguration.height??this.edit.size.height}}getContentContainer(){return this.contentContainer}getLumaWrapper(){return this.lumaWrapper}getOpacity(){return this.opacityKeyframeBuilder?.getValue(this.getPlaybackTime())??1}getPosition(){const e={x:this.offsetXKeyframeBuilder?.getValue(this.getPlaybackTime())??0,y:this.offsetYKeyframeBuilder?.getValue(this.getPlaybackTime())??0};return X6(this.edit.size,this.getSize(),this.clipConfiguration.position??"center",e)}getPivot(){const e=this.getSize();return{x:e.width/2,y:e.height/2}}calculateMoveOffset(e,r){const n=this.getPosition(),i={x:n.x+e,y:n.y+r},a=K6(this.edit.size,this.getSize(),this.clipConfiguration.position??"center",i);return{x:a.x,y:a.y}}getFitScale(){const e={width:this.clipConfiguration.width??this.edit.size.width,height:this.clipConfiguration.height??this.edit.size.height},r=this.getContentSize(),n=this.clipConfiguration.fit??"crop";return W6(r,e,n)}getScale(){return(this.scaleKeyframeBuilder?.getValue(this.getPlaybackTime())??1)*this.getFitScale()}getContainerScale(){const e=this.scaleKeyframeBuilder?.getValue(this.getPlaybackTime())??1,r=this.getContentSize(),n=this.clipConfiguration.fit??"crop",i=!!(this.clipConfiguration.width&&this.clipConfiguration.height);return H6(r,this.edit.size,n,e,i)}getRotation(){return this.rotationKeyframeBuilder?.getValue(this.getPlaybackTime())??0}getSkew(){return{x:this.skewXKeyframeBuilder?.getValue(this.getPlaybackTime())??0,y:this.skewYKeyframeBuilder?.getValue(this.getPlaybackTime())??0}}isActive(){return this.edit.playbackTime>=this.getStart()&&this.edit.playbackTime<this.getEnd()}async prepareStaticRender(){}endStaticRender(){}shouldDiscardFrame(){return this.getPlaybackTime()<Je.DiscardedFrameCount}onPointerDown(e){e.button===q6.ButtonLeftClick&&this.edit.getInternalEvents().emit(Fe.CanvasClipClicked,{player:this})}clipHasKeyframes(){return[this.clipConfiguration.scale,this.clipConfiguration.opacity,this.clipConfiguration.offset?.x,this.clipConfiguration.offset?.y,this.clipConfiguration.transform?.rotate?.angle,this.clipConfiguration.transform?.skew?.x,this.clipConfiguration.transform?.skew?.y].some(e=>e&&typeof e!="number")}applyFixedDimensions(){const e=this.clipConfiguration.width,r=this.clipConfiguration.height;if(!e||!r)return;const n=this.contentContainer.children.find(v=>v instanceof st.Sprite);if(!n?.texture)return;const i=n.texture.width,a=n.texture.height,s=this.clipConfiguration.fit||"crop",o=this.contentContainer.mask;let u;if(o instanceof st.Graphics)u=o;else if(!o)u=new st.Graphics,this.contentContainer.addChild(u),this.contentContainer.mask=u;else return;const{asset:l}=this.clipConfiguration,c=l&&"border"in l&&l.border&&typeof l.border=="object"?l.border.width??0:0,h=c/2;u.clear(),u.rect(-h,-h,e+c,r+c),u.fill(16777215);const p=this.scaleKeyframeBuilder?.getValue(this.getPlaybackTime())??1;n.anchor.set(.5,.5);const E=Y6({width:i,height:a},{width:e,height:r},s);n.scale.set(E.scaleX,E.scaleY),n.position.set(E.positionX,E.positionY),this.contentContainer.scale.set(p,p),this.contentContainer.position.set(e/2*(1-p),r/2*(1-p))}applyAnchorPositioning(e,r,n,i){const a=i.width,s=i.height;if(!!i.mask){i.position.set(0,0);return}const u=(e??"center").toLowerCase();let l=0,c=0;u.includes("left")||u==="left"?l=0:u.includes("right")||u==="right"?l=r-a:l=(r-a)/2,u.includes("top")||u==="top"?c=0:u.includes("bottom")||u==="bottom"?c=n-s:c=(n-s)/2,i.position.set(l,c)}supportsEdgeResize(){return!1}onDimensionsChanged(){}notifyDimensionsChanged(){this.onDimensionsChanged()}}const Zd=new Set(["text-to-image","image-to-video","text-to-speech"]),Q6=new Set(["image","video","audio"]),t_={"text-to-image":"image","image-to-video":"video","text-to-speech":"mic",image:"image",video:"video",audio:"mic"};function Ud(t){return typeof t=="string"&&t.trim().length>0}function an(t){if(typeof t!="object"||t===null||!("type"in t))return!1;const{type:e}=t;return typeof e!="string"?!1:Zd.has(e)?!0:Q6.has(e)&&Ud(t.prompt)}function Mo(t){return an(t)?Zd.has(t.type)?!0:!Ud(t.src):!1}function jd(t){return an(t)?t_[t.type]??null:null}function bc(t){return"id"in t&&typeof t.id=="string"}const Gd=new WeakMap;function e_(t){let e=Gd.get(t);return e||(e=[...t].sort((r,n)=>r.start-n.start),Gd.set(t,e)),e}function Wd(t,e){const r=t.find(s=>bc(s)&&s.id===e);if(!r||!bc(r)||!r.asset||!an(r.asset))return null;const n=jd(r.asset),i=e_(t);let a=0;for(const s of i){if(bc(s)&&s.id===e)break;s.asset&&jd(s.asset)===n&&(a+=1)}return a+1}function r_(t){const e=t*137.5%360;return[e,(e+30)%360,(e+60)%360,(e+90)%360,(e+120)%360]}function rs(t,e,r){const n=t/360,i=e/100,a=r/100;let s,o,u;{const p=(E,v,C)=>{let I=C;return I<0&&(I+=1),I>1&&(I-=1),I<.16666666666666666?E+(v-E)*6*I:I<.5?v:I<.6666666666666666?E+(v-E)*(.6666666666666666-I)*6:E},g=a+i-a*i,y=2*a-g;s=p(y,g,n+1/3),o=p(y,g,n),u=p(y,g,n-1/3)}const l=Math.round(s*255)*65536,c=Math.round(o*255)*256,h=Math.round(u*255);return l+c+h}function i_(t){return{"text-to-image":"Image","image-to-video":"Video","text-to-speech":"Audio",image:"Image",video:"Video",audio:"Audio"}[t]||t}function n_(t,e=60){return t.length<=e?t:`${t.substring(0,e-3)}...`}class is{static Name="AudioLoadParser";id;name;extension;validAudioExtensions;constructor(){this.id=is.Name,this.name=is.Name,this.extension={type:[st.ExtensionType.LoadParser],priority:st.LoaderParserPriority.Normal,ref:null},this.validAudioExtensions=["mp3","mpeg","ogg","wav"]}test(e){const r=e.split("?")[0]?.split(".").pop()??"";return this.validAudioExtensions.includes(r)}async load(e,r,n){return new Promise(i=>{const a={src:e},s=new Howl(a);s.on("load",()=>i(s)),s.on("loaderror",()=>i(null))})}unload(e){e?.unload()}}class a_ extends Je{audioResource;isPlaying;volumeKeyframeBuilder;syncTimer;constructor(e,r){super(e,r,Ee.Audio),this.audioResource=null,this.isPlaying=!1,this.syncTimer=0}async load(){await super.load();const e=this.clipConfiguration.asset,r=e.src;if(!r)throw new Error("Audio asset has no src to load.");const n={src:r,parser:is.Name},i=await this.edit.assetLoader.load(r,n);if(!(i instanceof Od.Howl))throw new Error(`Invalid audio source '${e.src}'.`);this.audioResource=i;const s=typeof e.volume=="number"?e.volume:1;this.volumeKeyframeBuilder=new Pn(this.createVolumeKeyframes(e,s),this.getLength(),s),this.audioResource.volume(this.getVolume()),this.configureKeyframes()}update(e,r){if(super.update(e,r),this.syncTimer+=r,this.getContainer().alpha=0,!this.audioResource)return;const n=this.getAssetSpeed(),i=this.getSourceTime(),a=this.edit.isPlaying&&this.isActive()&&n>0;a&&(this.isPlaying||(this.isPlaying=!0,this.audioResource.volume(this.getVolume()),this.audioResource.rate(n),this.audioResource.seek(i),this.audioResource.play()),this.audioResource.volume()!==this.getVolume()&&this.audioResource.volume(this.getVolume()),this.audioResource.rate()!==n&&this.audioResource.rate(n),Math.abs(this.audioResource.seek()-i)>.1&&this.audioResource.seek(i)),this.isPlaying&&!a&&(this.isPlaying=!1,this.audioResource.pause());const s=this.syncTimer>100;!this.edit.isPlaying&&this.isActive()&&s&&(this.syncTimer=0,this.audioResource.seek(i))}dispose(){this.audioResource&&(this.audioResource.stop(),this.audioResource.unload()),this.audioResource=null,super.dispose()}async reloadAsset(){this.audioResource&&(this.audioResource.stop(),this.audioResource.unload()),this.audioResource=null,this.isPlaying=!1,this.syncTimer=0;const e=this.clipConfiguration.asset,{src:r}=e;if(!r)throw new Error("Audio asset has no src to load.");const n={src:r,parser:is.Name},i=await this.edit.assetLoader.load(r,n);if(!(i instanceof Od.Howl))throw new Error(`Invalid audio source '${e.src}'.`);this.audioResource=i,this.audioResource.volume(this.getVolume())}reconfigureAfterRestore(){super.reconfigureAfterRestore();const e=this.clipConfiguration.asset,r=typeof e.volume=="number"?e.volume:1;this.volumeKeyframeBuilder=new Pn(this.createVolumeKeyframes(e,r),this.getLength(),r)}getSize(){return{width:0,height:0}}getVolume(){return this.volumeKeyframeBuilder.getValue(this.getPlaybackTime())}getSourceDuration(){const e=this.audioResource?.duration();return typeof e=="number"&&e>0?e:null}getCurrentDrift(){return this.audioResource?Math.abs(this.audioResource.seek()-this.getSourceTime()):0}createVolumeKeyframes(e,r){const{effect:n,volume:i}=e;if(!n||n==="none"||Array.isArray(i))return i??1;const a=this.getLength(),s=Math.min(2,a/2);return n==="fadeIn"?[{from:0,to:r,start:0,length:s}]:n==="fadeOut"?[{from:r,to:0,start:a-s,length:s}]:[{from:0,to:r,start:0,length:s},{from:r,to:0,start:a-s,length:s}]}}function zo(t){const e=t.trim().replace(",","."),r=e.split(":");if(r.length===3){const n=parseInt(r[0],10),i=parseInt(r[1],10),a=parseFloat(r[2]);return n*3600+i*60+a}if(r.length===2){const n=parseInt(r[0],10),i=parseFloat(r[1]);return n*60+i}return parseFloat(e)||0}function s_(t){const e=[],r=t.split(/\r?\n/);let n=0;for(;n<r.length&&!r[n].includes("-->");)n+=1;for(;n<r.length;){const i=r[n].trim();if(i.includes("-->")){const[a,s]=i.split("-->").map(c=>c.trim().split(" ")[0]),o=zo(a),u=zo(s),l=[];for(n+=1;n<r.length&&r[n].trim()!==""&&!r[n].includes("-->");){const c=r[n].trim();c.startsWith("NOTE")||l.push(c),n+=1}l.length>0&&e.push({start:o,end:u,text:l.join(`
65
65
  `)})}else n+=1}return e}function o_(t){const e=[],r=t.split(/\r?\n/);let n=0;for(;n<r.length;){const i=r[n].trim();if(/^\d+$/.test(i)||i==="")n+=1;else if(i.includes("-->")){const[a,s]=i.split("-->").map(c=>c.trim()),o=zo(a),u=zo(s),l=[];for(n+=1;n<r.length&&r[n].trim()!=="";)l.push(r[n].trim()),n+=1;l.length>0&&e.push({start:o,end:u,text:l.join(`
66
66
  `)})}else n+=1}return e}function u_(t){return t.trim().startsWith("WEBVTT")?s_(t):o_(t)}function l_(t,e){return t.find(r=>e>=r.start&&e<=r.end)??null}var c_=Object.create,Vo=Object.defineProperty,f_=Object.getOwnPropertyDescriptor,Hd=Object.getOwnPropertyNames,h_=Object.getPrototypeOf,d_=Object.prototype.hasOwnProperty,Yd=t=>{throw TypeError(t)},p_=(t,e,r)=>e in t?Vo(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,m_=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Ze=(t,e)=>function(){return e||(0,t[Hd(t)[0]])((e={exports:{}}).exports,e),e.exports},zi=(t,e)=>{for(var r in e)Vo(t,r,{get:e[r],enumerable:!0})},g_=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Hd(e))!d_.call(t,i)&&i!==r&&Vo(t,i,{get:()=>e[i],enumerable:!(n=f_(e,i))||n.enumerable});return t},sn=(t,e,r)=>(r=t!=null?c_(h_(t)):{},g_(Vo(r,"default",{value:t,enumerable:!0}),t)),zt=(t,e,r)=>p_(t,typeof e!="symbol"?e+"":e,r),wc=(t,e,r)=>e.has(t)||Yd("Cannot "+r),k=(t,e,r)=>(wc(t,e,"read from private field"),r?r.call(t):e.get(t)),ne=(t,e,r)=>e.has(t)?Yd("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),Mt=(t,e,r,n)=>(wc(t,e,"write to private field"),e.set(t,r),r),_t=(t,e,r)=>(wc(t,e,"access private method"),r),_c=(t,e,r,n)=>({set _(i){Mt(t,e,i)},get _(){return k(t,e,n)}}),qd;function Y(t,e,r){function n(o,u){if(o._zod||Object.defineProperty(o,"_zod",{value:{def:u,constr:s,traits:new Set},enumerable:!1}),o._zod.traits.has(t))return;o._zod.traits.add(t),e(o,u);const l=s.prototype,c=Object.keys(l);for(let h=0;h<c.length;h++){const p=c[h];p in o||(o[p]=l[p].bind(o))}}const i=r?.Parent??Object;class a extends i{}Object.defineProperty(a,"name",{value:t});function s(o){var u;const l=r?.Parent?new a:this;n(l,o),(u=l._zod).deferred??(u.deferred=[]);for(const c of l._zod.deferred)c();return l}return Object.defineProperty(s,"init",{value:n}),Object.defineProperty(s,Symbol.hasInstance,{value:o=>r?.Parent&&o instanceof r.Parent?!0:o?._zod?.traits?.has(t)}),Object.defineProperty(s,"name",{value:t}),s}let da=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},Xd=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}};(qd=globalThis).__zod_globalConfig??(qd.__zod_globalConfig={});const xc=globalThis.__zod_globalConfig;function Vi(t){return xc}function Kd(t){const e=Object.values(t).filter(n=>typeof n=="number");return Object.entries(t).filter(([n,i])=>e.indexOf(+n)===-1).map(([n,i])=>i)}function Cc(t,e){return typeof e=="bigint"?e.toString():e}function Oo(t){return{get value(){{const e=t();return Object.defineProperty(this,"value",{value:e}),e}}}}function Ac(t){return t==null}function Ec(t){const e=t.startsWith("^")?1:0,r=t.endsWith("$")?t.length-1:t.length;return t.slice(e,r)}function y_(t,e){const r=t/e,n=Math.round(r),i=Number.EPSILON*Math.max(Math.abs(r),1);return Math.abs(r-n)<i?0:r-n}const Jd=Symbol("evaluating");function ye(t,e,r){let n;Object.defineProperty(t,e,{get(){if(n!==Jd)return n===void 0&&(n=Jd,n=r()),n},set(i){Object.defineProperty(t,e,{value:i})},configurable:!0})}function zn(t,e,r){Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!0,configurable:!0})}function on(...t){const e={};for(const r of t){const n=Object.getOwnPropertyDescriptors(r);Object.assign(e,n)}return Object.defineProperties({},e)}function Qd(t){return JSON.stringify(t)}function v_(t){return t.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}const tp="captureStackTrace"in Error?Error.captureStackTrace:(...t)=>{};function ns(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}const b_=Oo(()=>{if(xc.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{const t=Function;return new t(""),!0}catch{return!1}});function pa(t){if(ns(t)===!1)return!1;const e=t.constructor;if(e===void 0||typeof e!="function")return!0;const r=e.prototype;return!(ns(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function ep(t){return pa(t)?{...t}:Array.isArray(t)?[...t]:t instanceof Map?new Map(t):t instanceof Set?new Set(t):t}const w_=new Set(["string","number","symbol"]);function ma(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function un(t,e,r){const n=new t._zod.constr(e??t._zod.def);return(!e||r?.parent)&&(n._zod.parent=t),n}function It(t){const e=t;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function __(t){return Object.keys(t).filter(e=>t[e]._zod.optin==="optional"&&t[e]._zod.optout==="optional")}const x_={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function C_(t,e){const r=t._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");const a=on(t._zod.def,{get shape(){const s={};for(const o in e){if(!(o in r.shape))throw new Error(`Unrecognized key: "${o}"`);e[o]&&(s[o]=r.shape[o])}return zn(this,"shape",s),s},checks:[]});return un(t,a)}function A_(t,e){const r=t._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const a=on(t._zod.def,{get shape(){const s={...t._zod.def.shape};for(const o in e){if(!(o in r.shape))throw new Error(`Unrecognized key: "${o}"`);e[o]&&delete s[o]}return zn(this,"shape",s),s},checks:[]});return un(t,a)}function E_(t,e){if(!pa(e))throw new Error("Invalid input to extend: expected a plain object");const r=t._zod.def.checks;if(r&&r.length>0){const a=t._zod.def.shape;for(const s in e)if(Object.getOwnPropertyDescriptor(a,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}const i=on(t._zod.def,{get shape(){const a={...t._zod.def.shape,...e};return zn(this,"shape",a),a}});return un(t,i)}function k_(t,e){if(!pa(e))throw new Error("Invalid input to safeExtend: expected a plain object");const r=on(t._zod.def,{get shape(){const n={...t._zod.def.shape,...e};return zn(this,"shape",n),n}});return un(t,r)}function S_(t,e){if(t._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");const r=on(t._zod.def,{get shape(){const n={...t._zod.def.shape,...e._zod.def.shape};return zn(this,"shape",n),n},get catchall(){return e._zod.def.catchall},checks:e._zod.def.checks??[]});return un(t,r)}function D_(t,e,r){const i=e._zod.def.checks;if(i&&i.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");const s=on(e._zod.def,{get shape(){const o=e._zod.def.shape,u={...o};if(r)for(const l in r){if(!(l in o))throw new Error(`Unrecognized key: "${l}"`);r[l]&&(u[l]=t?new t({type:"optional",innerType:o[l]}):o[l])}else for(const l in o)u[l]=t?new t({type:"optional",innerType:o[l]}):o[l];return zn(this,"shape",u),u},checks:[]});return un(e,s)}function F_(t,e,r){const n=on(e._zod.def,{get shape(){const i=e._zod.def.shape,a={...i};if(r)for(const s in r){if(!(s in a))throw new Error(`Unrecognized key: "${s}"`);r[s]&&(a[s]=new t({type:"nonoptional",innerType:i[s]}))}else for(const s in i)a[s]=new t({type:"nonoptional",innerType:i[s]});return zn(this,"shape",a),a}});return un(e,n)}function ga(t,e=0){if(t.aborted===!0)return!0;for(let r=e;r<t.issues.length;r++)if(t.issues[r]?.continue!==!0)return!0;return!1}function I_(t,e=0){if(t.aborted===!0)return!0;for(let r=e;r<t.issues.length;r++)if(t.issues[r]?.continue===!1)return!0;return!1}function ya(t,e){return e.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(t),r})}function Ro(t){return typeof t=="string"?t:t?.message}function Oi(t,e,r){const n=t.message?t.message:Ro(t.inst?._zod.def?.error?.(t))??Ro(e?.error?.(t))??Ro(r.customError?.(t))??Ro(r.localeError?.(t))??"Invalid input",{inst:i,continue:a,input:s,...o}=t;return o.path??(o.path=[]),o.message=n,e?.reportInput&&(o.input=s),o}function kc(t){return Array.isArray(t)?"array":typeof t=="string"?"string":"unknown"}function as(...t){const[e,r,n]=t;return typeof e=="string"?{message:e,code:"custom",input:r,inst:n}:{...e}}const rp=(t,e)=>{t.name="$ZodError",Object.defineProperty(t,"_zod",{value:t._zod,enumerable:!1}),Object.defineProperty(t,"issues",{value:e,enumerable:!1}),t.message=JSON.stringify(e,Cc,2),Object.defineProperty(t,"toString",{value:()=>t.message,enumerable:!1})},ip=Y("$ZodError",rp),np=Y("$ZodError",rp,{Parent:Error});function N_(t,e=r=>r.message){const r={},n=[];for(const i of t.issues)i.path.length>0?(r[i.path[0]]=r[i.path[0]]||[],r[i.path[0]].push(e(i))):n.push(e(i));return{formErrors:n,fieldErrors:r}}function B_(t,e=r=>r.message){const r={_errors:[]},n=(i,a=[])=>{for(const s of i.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(o=>n({issues:o},[...a,...s.path]));else if(s.code==="invalid_key")n({issues:s.issues},[...a,...s.path]);else if(s.code==="invalid_element")n({issues:s.issues},[...a,...s.path]);else{const o=[...a,...s.path];if(o.length===0)r._errors.push(e(s));else{let u=r,l=0;for(;l<o.length;){const c=o[l];l===o.length-1?(u[c]=u[c]||{_errors:[]},u[c]._errors.push(e(s))):u[c]=u[c]||{_errors:[]},u=u[c],l++}}}};return n(t),r}const Sc=t=>(e,r,n,i)=>{const a=n?{...n,async:!1}:{async:!1},s=e._zod.run({value:r,issues:[]},a);if(s instanceof Promise)throw new da;if(s.issues.length){const o=new(i?.Err??t)(s.issues.map(u=>Oi(u,a,Vi())));throw tp(o,i?.callee),o}return s.value},Dc=t=>async(e,r,n,i)=>{const a=n?{...n,async:!0}:{async:!0};let s=e._zod.run({value:r,issues:[]},a);if(s instanceof Promise&&(s=await s),s.issues.length){const o=new(i?.Err??t)(s.issues.map(u=>Oi(u,a,Vi())));throw tp(o,i?.callee),o}return s.value},$o=t=>(e,r,n)=>{const i=n?{...n,async:!1}:{async:!1},a=e._zod.run({value:r,issues:[]},i);if(a instanceof Promise)throw new da;return a.issues.length?{success:!1,error:new(t??ip)(a.issues.map(s=>Oi(s,i,Vi())))}:{success:!0,data:a.value}},T_=$o(np),Lo=t=>async(e,r,n)=>{const i=n?{...n,async:!0}:{async:!0};let a=e._zod.run({value:r,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new t(a.issues.map(s=>Oi(s,i,Vi())))}:{success:!0,data:a.value}},P_=Lo(np),M_=t=>(e,r,n)=>{const i=n?{...n,direction:"backward"}:{direction:"backward"};return Sc(t)(e,r,i)},z_=t=>(e,r,n)=>Sc(t)(e,r,n),V_=t=>async(e,r,n)=>{const i=n?{...n,direction:"backward"}:{direction:"backward"};return Dc(t)(e,r,i)},O_=t=>async(e,r,n)=>Dc(t)(e,r,n),R_=t=>(e,r,n)=>{const i=n?{...n,direction:"backward"}:{direction:"backward"};return $o(t)(e,r,i)},$_=t=>(e,r,n)=>$o(t)(e,r,n),L_=t=>async(e,r,n)=>{const i=n?{...n,direction:"backward"}:{direction:"backward"};return Lo(t)(e,r,i)},Z_=t=>async(e,r,n)=>Lo(t)(e,r,n),U_=/^[cC][0-9a-z]{6,}$/,j_=/^[0-9a-z]+$/,G_=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,W_=/^[0-9a-vA-V]{20}$/,H_=/^[A-Za-z0-9]{27}$/,Y_=/^[a-zA-Z0-9_-]{21}$/,q_=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,X_=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,ap=t=>t?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${t}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,K_=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,J_="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function Q_(){return new RegExp(J_,"u")}const tx=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ex=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,rx=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,ix=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,nx=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,sp=/^[A-Za-z0-9_-]*$/,ax=/^https?$/,sx=/^\+[1-9]\d{6,14}$/,op="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",ox=new RegExp(`^${op}$`);function up(t){const e="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof t.precision=="number"?t.precision===-1?`${e}`:t.precision===0?`${e}:[0-5]\\d`:`${e}:[0-5]\\d\\.\\d{${t.precision}}`:`${e}(?::[0-5]\\d(?:\\.\\d+)?)?`}function ux(t){return new RegExp(`^${up(t)}$`)}function lx(t){const e=up({precision:t.precision}),r=["Z"];t.local&&r.push(""),t.offset&&r.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const n=`${e}(?:${r.join("|")})`;return new RegExp(`^${op}T(?:${n})$`)}const cx=t=>{const e=t?`[\\s\\S]{${t?.minimum??0},${t?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${e}$`)},fx=/^-?\d+$/,lp=/^-?\d+(?:\.\d+)?$/,hx=/^(?:true|false)$/i,dx=/^null$/i,px=/^[^A-Z]*$/,mx=/^[^a-z]*$/,wr=Y("$ZodCheck",(t,e)=>{var r;t._zod??(t._zod={}),t._zod.def=e,(r=t._zod).onattach??(r.onattach=[])}),cp={number:"number",bigint:"bigint",object:"date"},fp=Y("$ZodCheckLessThan",(t,e)=>{wr.init(t,e);const r=cp[typeof e.value];t._zod.onattach.push(n=>{const i=n._zod.bag,a=(e.inclusive?i.maximum:i.exclusiveMaximum)??Number.POSITIVE_INFINITY;e.value<a&&(e.inclusive?i.maximum=e.value:i.exclusiveMaximum=e.value)}),t._zod.check=n=>{(e.inclusive?n.value<=e.value:n.value<e.value)||n.issues.push({origin:r,code:"too_big",maximum:typeof e.value=="object"?e.value.getTime():e.value,input:n.value,inclusive:e.inclusive,inst:t,continue:!e.abort})}}),hp=Y("$ZodCheckGreaterThan",(t,e)=>{wr.init(t,e);const r=cp[typeof e.value];t._zod.onattach.push(n=>{const i=n._zod.bag,a=(e.inclusive?i.minimum:i.exclusiveMinimum)??Number.NEGATIVE_INFINITY;e.value>a&&(e.inclusive?i.minimum=e.value:i.exclusiveMinimum=e.value)}),t._zod.check=n=>{(e.inclusive?n.value>=e.value:n.value>e.value)||n.issues.push({origin:r,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:n.value,inclusive:e.inclusive,inst:t,continue:!e.abort})}}),gx=Y("$ZodCheckMultipleOf",(t,e)=>{wr.init(t,e),t._zod.onattach.push(r=>{var n;(n=r._zod.bag).multipleOf??(n.multipleOf=e.value)}),t._zod.check=r=>{if(typeof r.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?r.value%e.value===BigInt(0):y_(r.value,e.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:e.value,input:r.value,inst:t,continue:!e.abort})}}),yx=Y("$ZodCheckNumberFormat",(t,e)=>{wr.init(t,e),e.format=e.format||"float64";const r=e.format?.includes("int"),n=r?"int":"number",[i,a]=x_[e.format];t._zod.onattach.push(s=>{const o=s._zod.bag;o.format=e.format,o.minimum=i,o.maximum=a,r&&(o.pattern=fx)}),t._zod.check=s=>{const o=s.value;if(r){if(!Number.isInteger(o)){s.issues.push({expected:n,format:e.format,code:"invalid_type",continue:!1,input:o,inst:t});return}if(!Number.isSafeInteger(o)){o>0?s.issues.push({input:o,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,inclusive:!0,continue:!e.abort}):s.issues.push({input:o,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,inclusive:!0,continue:!e.abort});return}}o<i&&s.issues.push({origin:"number",input:o,code:"too_small",minimum:i,inclusive:!0,inst:t,continue:!e.abort}),o>a&&s.issues.push({origin:"number",input:o,code:"too_big",maximum:a,inclusive:!0,inst:t,continue:!e.abort})}}),vx=Y("$ZodCheckMaxLength",(t,e)=>{var r;wr.init(t,e),(r=t._zod.def).when??(r.when=n=>{const i=n.value;return!Ac(i)&&i.length!==void 0}),t._zod.onattach.push(n=>{const i=n._zod.bag.maximum??Number.POSITIVE_INFINITY;e.maximum<i&&(n._zod.bag.maximum=e.maximum)}),t._zod.check=n=>{const i=n.value;if(i.length<=e.maximum)return;const s=kc(i);n.issues.push({origin:s,code:"too_big",maximum:e.maximum,inclusive:!0,input:i,inst:t,continue:!e.abort})}}),bx=Y("$ZodCheckMinLength",(t,e)=>{var r;wr.init(t,e),(r=t._zod.def).when??(r.when=n=>{const i=n.value;return!Ac(i)&&i.length!==void 0}),t._zod.onattach.push(n=>{const i=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;e.minimum>i&&(n._zod.bag.minimum=e.minimum)}),t._zod.check=n=>{const i=n.value;if(i.length>=e.minimum)return;const s=kc(i);n.issues.push({origin:s,code:"too_small",minimum:e.minimum,inclusive:!0,input:i,inst:t,continue:!e.abort})}}),wx=Y("$ZodCheckLengthEquals",(t,e)=>{var r;wr.init(t,e),(r=t._zod.def).when??(r.when=n=>{const i=n.value;return!Ac(i)&&i.length!==void 0}),t._zod.onattach.push(n=>{const i=n._zod.bag;i.minimum=e.length,i.maximum=e.length,i.length=e.length}),t._zod.check=n=>{const i=n.value,a=i.length;if(a===e.length)return;const s=kc(i),o=a>e.length;n.issues.push({origin:s,...o?{code:"too_big",maximum:e.length}:{code:"too_small",minimum:e.length},inclusive:!0,exact:!0,input:n.value,inst:t,continue:!e.abort})}}),Zo=Y("$ZodCheckStringFormat",(t,e)=>{var r,n;wr.init(t,e),t._zod.onattach.push(i=>{const a=i._zod.bag;a.format=e.format,e.pattern&&(a.patterns??(a.patterns=new Set),a.patterns.add(e.pattern))}),e.pattern?(r=t._zod).check??(r.check=i=>{e.pattern.lastIndex=0,!e.pattern.test(i.value)&&i.issues.push({origin:"string",code:"invalid_format",format:e.format,input:i.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:t,continue:!e.abort})}):(n=t._zod).check??(n.check=()=>{})}),_x=Y("$ZodCheckRegex",(t,e)=>{Zo.init(t,e),t._zod.check=r=>{e.pattern.lastIndex=0,!e.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:e.pattern.toString(),inst:t,continue:!e.abort})}}),xx=Y("$ZodCheckLowerCase",(t,e)=>{e.pattern??(e.pattern=px),Zo.init(t,e)}),Cx=Y("$ZodCheckUpperCase",(t,e)=>{e.pattern??(e.pattern=mx),Zo.init(t,e)}),Ax=Y("$ZodCheckIncludes",(t,e)=>{wr.init(t,e);const r=ma(e.includes),n=new RegExp(typeof e.position=="number"?`^.{${e.position}}${r}`:r);e.pattern=n,t._zod.onattach.push(i=>{const a=i._zod.bag;a.patterns??(a.patterns=new Set),a.patterns.add(n)}),t._zod.check=i=>{i.value.includes(e.includes,e.position)||i.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:e.includes,input:i.value,inst:t,continue:!e.abort})}}),Ex=Y("$ZodCheckStartsWith",(t,e)=>{wr.init(t,e);const r=new RegExp(`^${ma(e.prefix)}.*`);e.pattern??(e.pattern=r),t._zod.onattach.push(n=>{const i=n._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(r)}),t._zod.check=n=>{n.value.startsWith(e.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:e.prefix,input:n.value,inst:t,continue:!e.abort})}}),kx=Y("$ZodCheckEndsWith",(t,e)=>{wr.init(t,e);const r=new RegExp(`.*${ma(e.suffix)}$`);e.pattern??(e.pattern=r),t._zod.onattach.push(n=>{const i=n._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(r)}),t._zod.check=n=>{n.value.endsWith(e.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:e.suffix,input:n.value,inst:t,continue:!e.abort})}}),Sx=Y("$ZodCheckOverwrite",(t,e)=>{wr.init(t,e),t._zod.check=r=>{r.value=e.tx(r.value)}});let Dx=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if(typeof e=="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}const n=e.split(`
67
67
  `).filter(s=>s),i=Math.min(...n.map(s=>s.length-s.trimStart().length)),a=n.map(s=>s.slice(i)).map(s=>" ".repeat(this.indent*2)+s);for(const s of a)this.content.push(s)}compile(){const e=Function,r=this?.args,i=[...(this?.content??[""]).map(a=>` ${a}`)];return new e(...r,i.join(`
@@ -394,6 +394,6 @@ ${xD(n)}
394
394
  `),r.trim()}function tV(t){const e=[];let r=0;const n=t.length,i=t.indexOf(`
395
395
  `,r);if(i===-1)return e;for(r=i+1;r<n&&(r=f2(t,r),!(r>=n));){const a=na(t,r),s=t.substring(r,a);if(s.startsWith("NOTE")||s.startsWith("STYLE")||s.startsWith("REGION")){r=Xh(t,a+1);continue}const o=s.indexOf("-->");let u;if(o!==-1)u=s,r=a+1;else{if(r=a+1,r>=n)break;const E=na(t,r),v=t.substring(r,E);if(v.indexOf("-->")===-1){r=Xh(t,E+1);continue}u=v,r=E+1}const l=rV(u);if(!l){r=Xh(t,r);continue}let c=[];for(;r<n;){const E=na(t,r),v=t.substring(r,E);if(r=E+1,v.length===0)break;c.push(v)}if(c.length===0)continue;const h=c.join(" "),{cleanText:p,timestamps:g}=aV(h),y=l2(p).trim();y.length!==0&&(l.endMs<=l.startMs||e.push({startMs:l.startMs,endMs:l.endMs,text:y,inlineTimestamps:g}))}return e}function eV(t){const e=[];let r=0;const n=t.length;for(;r<n&&(r=f2(t,r),!(r>=n));){let i=na(t,r),a=t.substring(r,i);if(r=i+1,a.indexOf("-->")===-1){if(r>=n)break;i=na(t,r),a=t.substring(r,i),r=i+1}if(a.indexOf("-->")===-1)continue;const s=iV(a);if(!s)continue;let o=[];for(;r<n;){const c=na(t,r),h=t.substring(r,c);if(r=c+1,h.length===0)break;o.push(h)}if(o.length===0)continue;const u=o.join(" "),l=l2(u).trim();l.length!==0&&(s.endMs<=s.startMs||e.push({startMs:s.startMs,endMs:s.endMs,text:l,inlineTimestamps:[]}))}return e}function rV(t){const e=t.indexOf("-->");if(e===-1)return null;const r=t.substring(0,e).trim(),n=t.substring(e+3).trim(),i=n.indexOf(" "),a=i===-1?n:n.substring(0,i),s=o2(r),o=o2(a);return s<0||o<0?null:{startMs:s,endMs:o}}function iV(t){const e=t.indexOf("-->");if(e===-1)return null;const r=t.substring(0,e).trim(),n=t.substring(e+3).trim(),i=u2(r),a=u2(n);return i<0||a<0?null:{startMs:i,endMs:a}}function o2(t){const e=t.lastIndexOf(".");if(e===-1)return-1;const r=t.substring(e+1),n=Sr(r);if(n<0)return-1;const a=t.substring(0,e).split(":");if(a.length===2){const s=Sr(a[0]),o=Sr(a[1]);return s<0||o<0?-1:s*6e4+o*1e3+n}if(a.length===3){const s=Sr(a[0]),o=Sr(a[1]),u=Sr(a[2]);return s<0||o<0||u<0?-1:s*36e5+o*6e4+u*1e3+n}return-1}function u2(t){const e=t.lastIndexOf(",");if(e===-1)return-1;const r=t.substring(e+1),n=Sr(r);if(n<0)return-1;const a=t.substring(0,e).split(":");if(a.length!==3)return-1;const s=Sr(a[0]),o=Sr(a[1]),u=Sr(a[2]);return s<0||o<0||u<0?-1:s*36e5+o*6e4+u*1e3+n}function Sr(t){let e=0;for(let r=0;r<t.length;r++){const n=t.charCodeAt(r);if(n<48||n>57)return-1;e=e*10+(n-48)}return e}var nV=/<[^>]+>/g;function l2(t){return t.replace(nV,"")}var c2=/<(\d{2}:)?(\d{2}):(\d{2}\.\d{3})>/g;function aV(t){const e=[];let r="",n=0,i;for(c2.lastIndex=0;(i=c2.exec(t))!==null;){r+=t.substring(n,i.index);const a=r.length,s=i[1]?i[1].substring(0,i[1].length-1):"00",o=i[2],u=i[3],l=u.indexOf("."),c=u.substring(0,l),h=u.substring(l+1),p=Sr(s),g=Sr(o),y=Sr(c),E=Sr(h);if(p>=0&&g>=0&&y>=0&&E>=0){const v=p*36e5+g*6e4+y*1e3+E;e.push({timeMs:v,position:a})}n=i.index+i[0].length}return r+=t.substring(n),{cleanText:r,timestamps:e}}function sV(t){const e=t.text.split(/\s+/).filter(r=>r.length>0);return e.length===0?[]:e.length===1?[{text:e[0],start:t.startMs,end:t.endMs}]:t.inlineTimestamps.length>0?oV(e,t):uV(e,t.startMs,t.endMs)}function oV(t,e){const r=[];let n=0;for(let o=0;o<t.length;o++)r.push(n),n+=t[o].length+1;const i=[...e.inlineTimestamps].sort((o,u)=>o.position-u.position),a=new Array(t.length);a[0]=e.startMs;for(let o=1;o<t.length;o++){const u=r[o];let l=-1;for(let c=0;c<i.length;c++)i[c].position<=u&&(l=c);l>=0?a[o]=i[l].timeMs:a[o]=a[o-1]}const s=[];for(let o=0;o<t.length;o++){const u=a[o],l=o<t.length-1?a[o+1]:e.endMs;s.push({text:t[o],start:u,end:Math.max(l,u)})}return s}function uV(t,e,r){const n=t.reduce((o,u)=>o+u.length,0),i=r-e,a=[];let s=e;for(let o=0;o<t.length;o++){const u=s;if(o===t.length-1)a.push({text:t[o],start:u,end:r});else{const l=t[o].length/n,c=Math.round(l*i);s=u+c,a.push({text:t[o],start:u,end:s})}}return a}function na(t,e){const r=t.indexOf(`
396
396
  `,e);return r===-1?t.length:r}function f2(t,e){for(;e<t.length;){const r=t.charCodeAt(e);if(r===10||r===13||r===32||r===9)e++;else break}return e}function Xh(t,e){for(;e<t.length;){const r=na(t,e),n=t.substring(e,r);if(e=r+1,n.length===0)break}return e}var lV="https://js.shotstack.io/canvas/fonts/Roboto-Regular.ttf";Ah.setFallbackLoader(async t=>{const e=(t.family??"Roboto").toLowerCase(),r=`${t.weight??"400"}`;if(e==="roboto"&&r==="400")return Oh(lV)});async function cV(t={}){const e=t.width??Ge.DEFAULTS.width,r=t.height??Ge.DEFAULTS.height,n=t.pixelRatio??Ge.DEFAULTS.pixelRatio,i="https://js.shotstack.io/canvas/hb.wasm";let a;try{a=await Ah.getSharedInstance(i)}catch(v){throw new Error(`Failed to initialize font registry: ${v instanceof Error?v.message:String(v)}`)}const s=new R3(a),o=yM({fetchText:async v=>{try{const C=await fetch(v);return C.ok?await C.text():void 0}catch{return}},renderSvgToPng:async(v,C)=>{const I=await Gb(v,C);return{png:I.png,width:I.width,height:I.height}}}),u=new Map,l=new Map,c=v=>`${v??"400"}`,h=v=>String(v??"normal").toLowerCase().trim()==="italic"?"italic":"normal",p=(v,C,I)=>`${v}__${c(C)}__${h(I)}`,g=async(v,C)=>{const I={family:C.family,weight:c(C.weight),style:h(C.style)},x=`${v}|${p(I.family,I.weight,I.style)}`,A=l.get(x);if(A)return A;const S=(async()=>{if(a.hasRegisteredFace(I))return;const w=await Oh(v);await a.registerFromBytes(w,I)})();return l.set(x,S),S},y=async v=>{const C={family:v.family,weight:c(v.weight),style:h(v.style)},I=`${v.src}|${p(C.family,C.weight,C.style)}`,x=u.get(I);if(x)return x;const A=(async()=>{if(a.hasRegisteredFace(C))return;const S=await Oh(v.src);await a.registerFromBytes(S,C)})();return u.set(I,A),A};async function E(v){try{if(v.customFonts)for(const I of v.customFonts)try{await y(I)}catch(x){console.warn(`Skipping custom font "${I.family}" from ${I.src}: ${x instanceof Error?x.message:String(x)}`)}return v.font??{family:"Open Sans",weight:"400",size:48,color:"#000000",opacity:1}}catch(C){throw C instanceof Error?C:new Error(`Failed to ensure fonts: ${String(C)}`)}}return{validate(v){const C=L8.safeParse(v);if(!C.success){const I=C.error.issues.map(x=>x.message).join(". ");throw new Error(`Validation failed: ${I}`)}return{value:C.data}},async registerFontFromUrl(v,C){try{await g(v,C)}catch(I){throw new Error(`Failed to register font "${C.family}" from URL ${v}: ${I instanceof Error?I.message:String(I)}`)}},async registerFontFromFile(v,C){try{let I;if(typeof v=="string"){await g(v,C);return}else try{I=await v.arrayBuffer()}catch(A){throw new Error(`Failed to read Blob as ArrayBuffer: ${A instanceof Error?A.message:String(A)}`)}const x={family:C.family,weight:c(C.weight),style:h(C.style)};if(a.hasRegisteredFace(x))return;await a.registerFromBytes(I,x)}catch(I){throw I instanceof Error?I:new Error(`Failed to register font "${C.family}" from ${typeof v=="string"?v:"Blob"}: ${String(I)}`)}},async renderFrame(v,C,I){try{const x=await E(v),A={family:x.family,weight:`${x.weight}`};let S;try{const ot=v.padding?typeof v.padding=="number"?{top:v.padding,right:v.padding,bottom:v.padding,left:v.padding}:v.padding:{top:0,right:0,bottom:0,left:0};S=await s.layout({text:v.text,width:(v.width??e)-ot.left-ot.right,letterSpacing:v.style?.letterSpacing??0,wordSpacing:typeof v.style?.wordSpacing=="number"?v.style.wordSpacing:0,fontSize:x.size,lineHeight:v.style?.lineHeight??1.2,desc:A,textTransform:v.style?.textTransform??"none"})}catch(ot){throw new Error(`Failed to layout text: ${ot instanceof Error?ot.message:String(ot)}`)}const w=v.padding?typeof v.padding=="number"?{top:v.padding,right:v.padding,bottom:v.padding,left:v.padding}:v.padding:{top:0,right:0,bottom:0,left:0},Z=v.border?.width??0,T=(v.width??e)+Z*2,L=(v.height??r)+Z*2,N=n,G={x:0,y:0,width:(v.width??e)-w.left-w.right,height:(v.height??r)-w.top-w.bottom},z=v.width??e,rt=v.height??r;let X;try{X=await xM({canvas:{width:T,height:L,pixelRatio:N},textRect:G,lines:S,contentRect:{width:z,height:rt},font:{family:x.family,size:x.size,weight:`${x.weight}`,color:x.color,opacity:x.opacity,background:x.background},style:{lineHeight:v.style?.lineHeight??1.2,textDecoration:v.style?.textDecoration??"none",gradient:v.style?.gradient},stroke:v.stroke,shadow:v.shadow,align:{horizontal:v.align?.horizontal??"center",vertical:v.align?.vertical??"middle"},background:v.background?{color:v.background.color,opacity:v.background.opacity,borderRadius:typeof v.background.borderRadius=="number"?v.background.borderRadius:Number(v.background.borderRadius)||0,wrap:v.background.wrap===!0}:void 0,border:v.border,padding:v.padding,glyphPathProvider:(ot,pt)=>a.glyphPath(pt||A,ot),getUnitsPerEm:ot=>a.getUnitsPerEm(ot||A),isColorEmojiFont:ot=>a.isColorEmojiFont(ot),emojiImage:o})}catch(ot){throw new Error(`Failed to build draw operations: ${ot instanceof Error?ot.message:String(ot)}`)}try{return CM(X,S,{t:C,fontSize:x.size,clipDuration:I,anim:v.animation?{preset:v.animation.preset,speed:v.animation.speed,duration:v.animation.duration,style:v.animation.style,direction:v.animation.direction}:void 0})}catch(ot){throw new Error(`Failed to apply animation: ${ot instanceof Error?ot.message:String(ot)}`)}}catch(x){throw x instanceof Error?x:new Error(`Failed to render frame at time ${C}s: ${String(x)}`)}},createRenderer(v){try{return zh(v)}catch(C){throw new Error(`Failed to create renderer: ${C instanceof Error?C.message:String(C)}`)}},destroy(){try{a.release()}catch(v){console.error(`Error during cleanup: ${v instanceof Error?v.message:String(v)}`)}}}}const h2=[{displayName:"Roboto",filename:"KFOmCnqEu92Fr1Me5WZLCzYlKw",category:"sans-serif",url:"https://fonts.gstatic.com/s/roboto/v50/KFOmCnqEu92Fr1Me5WZLCzYlKw.ttf",weight:400,isVariable:!0},{displayName:"Open Sans",filename:"mem8YaGs126MiZpBA-U1UpcaXcl0Aw",category:"sans-serif",url:"https://fonts.gstatic.com/s/opensans/v44/mem8YaGs126MiZpBA-U1UpcaXcl0Aw.ttf",weight:400,isVariable:!0},{displayName:"Google Sans",filename:"4UaGrENHsxJlGDuGo1OIlI3JyJ98KhtH",category:"sans-serif",url:"https://fonts.gstatic.com/s/googlesans/v67/4UaGrENHsxJlGDuGo1OIlI3JyJ98KhtH.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans JP",filename:"-F62fjtqLzI2JPCgQBnw7HFoxgIO2lZ9hg",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansjp/v56/-F62fjtqLzI2JPCgQBnw7HFoxgIO2lZ9hg.ttf",weight:400,isVariable:!0},{displayName:"Inter",filename:"UcCo3FwrK3iLTfvlaQc78lA2",category:"sans-serif",url:"https://fonts.gstatic.com/s/inter/v20/UcCo3FwrK3iLTfvlaQc78lA2.ttf",weight:400,isVariable:!0},{displayName:"Montserrat",filename:"JTUSjIg1_i6t8kCHKm45xW5rygbi49c",category:"sans-serif",url:"https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm45xW5rygbi49c.ttf",weight:400,isVariable:!0},{displayName:"Poppins",filename:"pxiEyp8kv8JHgFVrFJDUc1NECPY",category:"sans-serif",url:"https://fonts.gstatic.com/s/poppins/v24/pxiEyp8kv8JHgFVrFJDUc1NECPY.ttf",weight:400,isVariable:!1},{displayName:"Lato",filename:"S6uyw4BMUTPHvxk6XweuBCY",category:"sans-serif",url:"https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHvxk6XweuBCY.ttf",weight:400,isVariable:!1},{displayName:"Roboto Condensed",filename:"ieVl2ZhZI2eCN5jzbjEETS9weq8-59WxDCs5cvI",category:"sans-serif",url:"https://fonts.gstatic.com/s/robotocondensed/v31/ieVl2ZhZI2eCN5jzbjEETS9weq8-59WxDCs5cvI.ttf",weight:400,isVariable:!0},{displayName:"Arimo",filename:"P5sMzZCDf9_T_20eziBMjI-u",category:"sans-serif",url:"https://fonts.gstatic.com/s/arimo/v35/P5sMzZCDf9_T_20eziBMjI-u.ttf",weight:400,isVariable:!0},{displayName:"Roboto Mono",filename:"L0x5DF4xlVMF-BfR8bXMIghMoX6-XqKC",category:"monospace",url:"https://fonts.gstatic.com/s/robotomono/v31/L0x5DF4xlVMF-BfR8bXMIghMoX6-XqKC.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans",filename:"o-0IIpQlx3QUlC5A4PNb4j5Ba_2c7A",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosans/v42/o-0IIpQlx3QUlC5A4PNb4j5Ba_2c7A.ttf",weight:400,isVariable:!0},{displayName:"Oswald",filename:"TK3iWkUHHAIjg75GHjUHte5fKg",category:"sans-serif",url:"https://fonts.gstatic.com/s/oswald/v57/TK3iWkUHHAIjg75GHjUHte5fKg.ttf",weight:400,isVariable:!0},{displayName:"Raleway",filename:"1Ptug8zYS_SKggPN-CoCTqluHfE",category:"sans-serif",url:"https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPN-CoCTqluHfE.ttf",weight:400,isVariable:!0},{displayName:"Nunito Sans",filename:"pe0qMImSLYBIv1o4X1M8cfe6Kdpickwp",category:"sans-serif",url:"https://fonts.gstatic.com/s/nunitosans/v19/pe0qMImSLYBIv1o4X1M8cfe6Kdpickwp.ttf",weight:400,isVariable:!0},{displayName:"Nunito",filename:"XRXV3I6Li01BKof4MuyAbsrVcA",category:"sans-serif",url:"https://fonts.gstatic.com/s/nunito/v32/XRXV3I6Li01BKof4MuyAbsrVcA.ttf",weight:400,isVariable:!0},{displayName:"Playfair Display",filename:"nuFiD-vYSZviVYUb_rj3ij__anPXPTvSgWE_-xU",category:"serif",url:"https://fonts.gstatic.com/s/playfairdisplay/v40/nuFiD-vYSZviVYUb_rj3ij__anPXPTvSgWE_-xU.ttf",weight:400,isVariable:!0},{displayName:"Rubik",filename:"iJWKBXyIfDnIV4nGp32S0H3f",category:"sans-serif",url:"https://fonts.gstatic.com/s/rubik/v31/iJWKBXyIfDnIV4nGp32S0H3f.ttf",weight:400,isVariable:!0},{displayName:"Ubuntu",filename:"4iCs6KVjbNBYlgo6eAT3v02QFg",category:"sans-serif",url:"https://fonts.gstatic.com/s/ubuntu/v21/4iCs6KVjbNBYlgo6eAT3v02QFg.ttf",weight:400,isVariable:!1},{displayName:"Roboto Slab",filename:"BngMUXZYTXPIvIBgJJSb6tfK7KSJ4ACD",category:"serif",url:"https://fonts.gstatic.com/s/robotoslab/v36/BngMUXZYTXPIvIBgJJSb6tfK7KSJ4ACD.ttf",weight:400,isVariable:!0},{displayName:"DM Sans",filename:"rP2Hp2ywxg089UriOZSCHBeHFl0",category:"sans-serif",url:"https://fonts.gstatic.com/s/dmsans/v17/rP2Hp2ywxg089UriOZSCHBeHFl0.ttf",weight:400,isVariable:!0},{displayName:"Merriweather",filename:"u-440qyriQwlOrhSvowK_l5OeyxNV-bnrw",category:"serif",url:"https://fonts.gstatic.com/s/merriweather/v33/u-440qyriQwlOrhSvowK_l5OeyxNV-bnrw.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans KR",filename:"PbykFmXiEBPT4ITbgNA5Cgm21nTs4JMMuA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanskr/v39/PbykFmXiEBPT4ITbgNA5Cgm21nTs4JMMuA.ttf",weight:400,isVariable:!0},{displayName:"Work Sans",filename:"QGYsz_wNahGAdqQ43RhPe6rol_lQ4A",category:"sans-serif",url:"https://fonts.gstatic.com/s/worksans/v24/QGYsz_wNahGAdqQ43RhPe6rol_lQ4A.ttf",weight:400,isVariable:!0},{displayName:"PT Sans",filename:"jizaRExUiTo99u79P0WOxOGMMDQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/ptsans/v18/jizaRExUiTo99u79P0WOxOGMMDQ.ttf",weight:400,isVariable:!1},{displayName:"Lora",filename:"0QIvMX1D_JOuAw3xItNPh_A",category:"serif",url:"https://fonts.gstatic.com/s/lora/v37/0QIvMX1D_JOuAw3xItNPh_A.ttf",weight:400,isVariable:!0},{displayName:"Mulish",filename:"1Ptvg83HX_SGhgqU2AAsQqB3BA",category:"sans-serif",url:"https://fonts.gstatic.com/s/mulish/v18/1Ptvg83HX_SGhgqU2AAsQqB3BA.ttf",weight:400,isVariable:!0},{displayName:"Kanit",filename:"nKKZ-Go6G5tXcoaSEQGodLxA",category:"sans-serif",url:"https://fonts.gstatic.com/s/kanit/v17/nKKZ-Go6G5tXcoaSEQGodLxA.ttf",weight:400,isVariable:!1},{displayName:"Quicksand",filename:"6xKtdSZaM9iE8KbpRA_RLF4MQOPiPg",category:"sans-serif",url:"https://fonts.gstatic.com/s/quicksand/v37/6xKtdSZaM9iE8KbpRA_RLF4MQOPiPg.ttf",weight:400,isVariable:!0},{displayName:"Manrope",filename:"xn7gYHE41ni1AdIRsgC7S9XdZN8",category:"sans-serif",url:"https://fonts.gstatic.com/s/manrope/v20/xn7gYHE41ni1AdIRsgC7S9XdZN8.ttf",weight:400,isVariable:!0},{displayName:"Archivo Black",filename:"HTxqL289NzCGg4MzN6KJ7eW6OYuP_x7yx3A",category:"sans-serif",url:"https://fonts.gstatic.com/s/archivoblack/v23/HTxqL289NzCGg4MzN6KJ7eW6OYuP_x7yx3A.ttf",weight:400,isVariable:!1},{displayName:"Archivo",filename:"k3kQo8UDI-1M0wlSTd7iL0nAMaM",category:"sans-serif",url:"https://fonts.gstatic.com/s/archivo/v25/k3kQo8UDI-1M0wlSTd7iL0nAMaM.ttf",weight:400,isVariable:!0},{displayName:"Fjalla One",filename:"Yq6R-LCAWCX3-6Ky7FAFnOZwkxgtUb8",category:"sans-serif",url:"https://fonts.gstatic.com/s/fjallaone/v16/Yq6R-LCAWCX3-6Ky7FAFnOZwkxgtUb8.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans TC",filename:"-nF7OG829Oofr2wohFbTp9iFPysLA_ZJ1g",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanstc/v39/-nF7OG829Oofr2wohFbTp9iFPysLA_ZJ1g.ttf",weight:400,isVariable:!0},{displayName:"Outfit",filename:"QGYvz_MVcBeNP4N5s0Frc4H0ng",category:"sans-serif",url:"https://fonts.gstatic.com/s/outfit/v15/QGYvz_MVcBeNP4N5s0Frc4H0ng.ttf",weight:400,isVariable:!0},{displayName:"Fira Sans",filename:"va9E4kDNxMZdWfMOD5VfkILKSTbndQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/firasans/v18/va9E4kDNxMZdWfMOD5VfkILKSTbndQ.ttf",weight:400,isVariable:!1},{displayName:"Inconsolata",filename:"QldKNThLqRwH-OJ1UHjlKFle7KlmxuHx",category:"monospace",url:"https://fonts.gstatic.com/s/inconsolata/v37/QldKNThLqRwH-OJ1UHjlKFle7KlmxuHx.ttf",weight:400,isVariable:!0},{displayName:"Figtree",filename:"_Xms-HUzqDCFdgfMq4O3DIZs3ik",category:"sans-serif",url:"https://fonts.gstatic.com/s/figtree/v9/_Xms-HUzqDCFdgfMq4O3DIZs3ik.ttf",weight:400,isVariable:!0},{displayName:"Bebas Neue",filename:"JTUSjIg69CK48gW7PXooxW5rygbi49c",category:"sans-serif",url:"https://fonts.gstatic.com/s/bebasneue/v16/JTUSjIg69CK48gW7PXooxW5rygbi49c.ttf",weight:400,isVariable:!1},{displayName:"IBM Plex Sans",filename:"zYXgKVElMYYaJe8bpLHnCwDKtdbUFI5NadY",category:"sans-serif",url:"https://fonts.gstatic.com/s/ibmplexsans/v23/zYXgKVElMYYaJe8bpLHnCwDKtdbUFI5NadY.ttf",weight:400,isVariable:!0},{displayName:"Source Sans 3",filename:"nwpStKy2OAdR1K-IwhWudF-R7wgQZMrc9HY",category:"sans-serif",url:"https://fonts.gstatic.com/s/sourcesans3/v19/nwpStKy2OAdR1K-IwhWudF-R7wgQZMrc9HY.ttf",weight:400,isVariable:!0},{displayName:"Barlow",filename:"7cHpv4kjgoGqM7EPC8E46HsxnA",category:"sans-serif",url:"https://fonts.gstatic.com/s/barlow/v13/7cHpv4kjgoGqM7EPC8E46HsxnA.ttf",weight:400,isVariable:!1},{displayName:"Hind Siliguri",filename:"ijwTs5juQtsyLLR5jN4cxBEofJvQxuk0Nig",category:"sans-serif",url:"https://fonts.gstatic.com/s/hindsiliguri/v14/ijwTs5juQtsyLLR5jN4cxBEofJvQxuk0Nig.ttf",weight:400,isVariable:!1},{displayName:"Gravitas One",filename:"5h1diZ4hJ3cblKy3LWakKQmaDWRNr3DzbQ",category:"display",url:"https://fonts.gstatic.com/s/gravitasone/v21/5h1diZ4hJ3cblKy3LWakKQmaDWRNr3DzbQ.ttf",weight:400,isVariable:!1},{displayName:"Prompt",filename:"-W__XJnvUD7dzB26Z9AcZkIzeg",category:"sans-serif",url:"https://fonts.gstatic.com/s/prompt/v12/-W__XJnvUD7dzB26Z9AcZkIzeg.ttf",weight:400,isVariable:!1},{displayName:"Titillium Web",filename:"NaPecZTIAOhVxoMyOr9n_E7fRMTsDIRSfr0",category:"sans-serif",url:"https://fonts.gstatic.com/s/titilliumweb/v19/NaPecZTIAOhVxoMyOr9n_E7fRMTsDIRSfr0.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif",filename:"ga6Iaw1J5X9T9RW6j9bNTFAcaRi_bMQ",category:"serif",url:"https://fonts.gstatic.com/s/notoserif/v33/ga6Iaw1J5X9T9RW6j9bNTFAcaRi_bMQ.ttf",weight:400,isVariable:!0},{displayName:"Karla",filename:"qkBbXvYC6trAT4RSJN225aZO",category:"sans-serif",url:"https://fonts.gstatic.com/s/karla/v33/qkBbXvYC6trAT4RSJN225aZO.ttf",weight:400,isVariable:!0},{displayName:"Bungee",filename:"N0bU2SZBIuF2PU_ECn50Kd_PmA",category:"display",url:"https://fonts.gstatic.com/s/bungee/v17/N0bU2SZBIuF2PU_ECn50Kd_PmA.ttf",weight:400,isVariable:!1},{displayName:"PT Serif",filename:"EJRVQgYoZZY2vCFuvDFRxL6ddjb-",category:"serif",url:"https://fonts.gstatic.com/s/ptserif/v19/EJRVQgYoZZY2vCFuvDFRxL6ddjb-.ttf",weight:400,isVariable:!1},{displayName:"Heebo",filename:"NGS6v5_NC0k9P-HxR7BDsbMB",category:"sans-serif",url:"https://fonts.gstatic.com/s/heebo/v28/NGS6v5_NC0k9P-HxR7BDsbMB.ttf",weight:400,isVariable:!0},{displayName:"Saira",filename:"memwYa2wxmKQyOkgR5IdU6Uf",category:"sans-serif",url:"https://fonts.gstatic.com/s/saira/v23/memwYa2wxmKQyOkgR5IdU6Uf.ttf",weight:400,isVariable:!0},{displayName:"Jost",filename:"92zatBhPNqw77oPX4xYlbxM",category:"sans-serif",url:"https://fonts.gstatic.com/s/jost/v20/92zatBhPNqw77oPX4xYlbxM.ttf",weight:400,isVariable:!0},{displayName:"Dancing Script",filename:"If2RXTr6YS-zF4S-kcSWSVi_swLngOAliz4X",category:"handwriting",url:"https://fonts.gstatic.com/s/dancingscript/v29/If2RXTr6YS-zF4S-kcSWSVi_swLngOAliz4X.ttf",weight:400,isVariable:!0},{displayName:"Bricolage Grotesque",filename:"3y996as8bTXq_nANBjzKo3IeZx8z6up5H--HGN6NLPo",category:"sans-serif",url:"https://fonts.gstatic.com/s/bricolagegrotesque/v9/3y996as8bTXq_nANBjzKo3IeZx8z6up5H--HGN6NLPo.ttf",weight:400,isVariable:!0},{displayName:"Share Tech",filename:"7cHtv4Uyi5K0OeZ7bohUwHoDmTcibrA",category:"sans-serif",url:"https://fonts.gstatic.com/s/sharetech/v23/7cHtv4Uyi5K0OeZ7bohUwHoDmTcibrA.ttf",weight:400,isVariable:!1},{displayName:"Libre Baskerville",filename:"kmKnZrc3Hgbbcjq75U4uslyuy4kn0pNeYRI4CN2V",category:"serif",url:"https://fonts.gstatic.com/s/librebaskerville/v24/kmKnZrc3Hgbbcjq75U4uslyuy4kn0pNeYRI4CN2V.ttf",weight:400,isVariable:!0},{displayName:"Smooch Sans",filename:"c4mk1n5uGsXss2LJh1QH6ad91qa3WFv8",category:"sans-serif",url:"https://fonts.gstatic.com/s/smoochsans/v15/c4mk1n5uGsXss2LJh1QH6ad91qa3WFv8.ttf",weight:400,isVariable:!0},{displayName:"Source Code Pro",filename:"HI_SiYsKILxRpg3hIP6sJ7fM7PqVOuHXvMY3xw",category:"monospace",url:"https://fonts.gstatic.com/s/sourcecodepro/v31/HI_SiYsKILxRpg3hIP6sJ7fM7PqVOuHXvMY3xw.ttf",weight:400,isVariable:!0},{displayName:"Plus Jakarta Sans",filename:"LDIoaomQNQcsA88c7O9yZ4KMCoOg4Jox2S2CgOva",category:"sans-serif",url:"https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Jox2S2CgOva.ttf",weight:400,isVariable:!0},{displayName:"EB Garamond",filename:"SlGUmQSNjdsmc35JDF1K5FRyQjgdYxPJ",category:"serif",url:"https://fonts.gstatic.com/s/ebgaramond/v32/SlGUmQSNjdsmc35JDF1K5FRyQjgdYxPJ.ttf",weight:400,isVariable:!0},{displayName:"Libre Franklin",filename:"jizDREVItHgc8qDIbSTKq4XkRhUY0TY7ikbI",category:"sans-serif",url:"https://fonts.gstatic.com/s/librefranklin/v20/jizDREVItHgc8qDIbSTKq4XkRhUY0TY7ikbI.ttf",weight:400,isVariable:!0},{displayName:"Cairo",filename:"SLXGc1nY6HkvamImRJqExst1",category:"sans-serif",url:"https://fonts.gstatic.com/s/cairo/v31/SLXGc1nY6HkvamImRJqExst1.ttf",weight:400,isVariable:!0},{displayName:"Josefin Sans",filename:"Qw3aZQNVED7rKGKxtqIqX5EkCnZ5dHw8iw",category:"sans-serif",url:"https://fonts.gstatic.com/s/josefinsans/v34/Qw3aZQNVED7rKGKxtqIqX5EkCnZ5dHw8iw.ttf",weight:400,isVariable:!0},{displayName:"Anton",filename:"1Ptgg87LROyAm0K08i4gS7lu",category:"sans-serif",url:"https://fonts.gstatic.com/s/anton/v27/1Ptgg87LROyAm0K08i4gS7lu.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif JP",filename:"xn7mYHs72GKoTvER4Gn3b5eMXN6kYkY0T84",category:"serif",url:"https://fonts.gstatic.com/s/notoserifjp/v33/xn7mYHs72GKoTvER4Gn3b5eMXN6kYkY0T84.ttf",weight:400,isVariable:!0},{displayName:"Tinos",filename:"buE4poGnedXvwgX8dGVh8TI-",category:"serif",url:"https://fonts.gstatic.com/s/tinos/v25/buE4poGnedXvwgX8dGVh8TI-.ttf",weight:400,isVariable:!1},{displayName:"Public Sans",filename:"ijwRs572Xtc6ZYQws9YVwkNBdp_yw_k0",category:"sans-serif",url:"https://fonts.gstatic.com/s/publicsans/v21/ijwRs572Xtc6ZYQws9YVwkNBdp_yw_k0.ttf",weight:400,isVariable:!0},{displayName:"Schibsted Grotesk",filename:"Jqz55SSPQuCQF3t8uOwiUL-taUTtaq9BYSsBdjFP",category:"sans-serif",url:"https://fonts.gstatic.com/s/schibstedgrotesk/v7/Jqz55SSPQuCQF3t8uOwiUL-taUTtaq9BYSsBdjFP.ttf",weight:400,isVariable:!0},{displayName:"Nanum Gothic",filename:"PN_3Rfi-oW3hYwmKDpxS7F_z_tLfxno73g",category:"sans-serif",url:"https://fonts.gstatic.com/s/nanumgothic/v26/PN_3Rfi-oW3hYwmKDpxS7F_z_tLfxno73g.ttf",weight:400,isVariable:!1},{displayName:"Mukta",filename:"iJWKBXyXfDDVXYnGp32S0H3f",category:"sans-serif",url:"https://fonts.gstatic.com/s/mukta/v17/iJWKBXyXfDDVXYnGp32S0H3f.ttf",weight:400,isVariable:!1},{displayName:"Dosis",filename:"HhyaU5sn9vOmLwlvAfSKEZZL",category:"sans-serif",url:"https://fonts.gstatic.com/s/dosis/v34/HhyaU5sn9vOmLwlvAfSKEZZL.ttf",weight:400,isVariable:!0},{displayName:"Bitter",filename:"rax8HiqOu8IVPmnLeIZoDDlCmg",category:"serif",url:"https://fonts.gstatic.com/s/bitter/v40/rax8HiqOu8IVPmnLeIZoDDlCmg.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans SC",filename:"k3kXo84MPvpLmixcA63oeALhKYiJ-Q7m8w",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssc/v40/k3kXo84MPvpLmixcA63oeALhKYiJ-Q7m8w.ttf",weight:400,isVariable:!0},{displayName:"Cabin",filename:"u-4x0qWljRw-Pe839fxqmjRv",category:"sans-serif",url:"https://fonts.gstatic.com/s/cabin/v35/u-4x0qWljRw-Pe839fxqmjRv.ttf",weight:400,isVariable:!0},{displayName:"Barlow Condensed",filename:"HTx3L3I-JCGChYJ8VI-L6OO_au7B2xbZ23n3pKg",category:"sans-serif",url:"https://fonts.gstatic.com/s/barlowcondensed/v13/HTx3L3I-JCGChYJ8VI-L6OO_au7B2xbZ23n3pKg.ttf",weight:400,isVariable:!1},{displayName:"Roboto Flex",filename:"NaPccZLOBv5T3oB7Cb4i0wu9TsDOCZRS",category:"sans-serif",url:"https://fonts.gstatic.com/s/robotoflex/v30/NaPccZLOBv5T3oB7Cb4i0wu9TsDOCZRS.ttf",weight:400,isVariable:!0},{displayName:"Changa One",filename:"xfu00W3wXn3QLUJXhzq46AbouLfbK64",category:"display",url:"https://fonts.gstatic.com/s/changaone/v22/xfu00W3wXn3QLUJXhzq46AbouLfbK64.ttf",weight:400,isVariable:!1},{displayName:"Ramabhadra",filename:"EYq2maBOwqRW9P1SQ83LehNGX5uWw3o",category:"sans-serif",url:"https://fonts.gstatic.com/s/ramabhadra/v17/EYq2maBOwqRW9P1SQ83LehNGX5uWw3o.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Telugu",filename:"0FlPVOGZlE2Rrtr-HmgkMWJNjJ5_XS_eTyer338",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanstelugu/v30/0FlPVOGZlE2Rrtr-HmgkMWJNjJ5_XS_eTyer338.ttf",weight:400,isVariable:!0},{displayName:"Anek Telugu",filename:"LhWhMVrUNvsddMtYGCx4Fd9dGNWQg_am",category:"sans-serif",url:"https://fonts.gstatic.com/s/anektelugu/v13/LhWhMVrUNvsddMtYGCx4Fd9dGNWQg_am.ttf",weight:400,isVariable:!0},{displayName:"Pacifico",filename:"FwZY7-Qmy14u9lezJ96A4sijpFu_",category:"handwriting",url:"https://fonts.gstatic.com/s/pacifico/v23/FwZY7-Qmy14u9lezJ96A4sijpFu_.ttf",weight:400,isVariable:!1},{displayName:"Space Grotesk",filename:"V8mDoQDjQSkFtoMM3T6r8E7mDbZyCts0DqQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/spacegrotesk/v22/V8mDoQDjQSkFtoMM3T6r8E7mDbZyCts0DqQ.ttf",weight:400,isVariable:!0},{displayName:"Assistant",filename:"2sDcZGJYnIjSi6H75xkDb2-4C7wFZQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/assistant/v24/2sDcZGJYnIjSi6H75xkDb2-4C7wFZQ.ttf",weight:400,isVariable:!0},{displayName:"Slabo 27px",filename:"mFT0WbgBwKPR_Z4hGN2qsxgJ1EJ7i90",category:"serif",url:"https://fonts.gstatic.com/s/slabo27px/v16/mFT0WbgBwKPR_Z4hGN2qsxgJ1EJ7i90.ttf",weight:400,isVariable:!1},{displayName:"Red Hat Display",filename:"8vIQ7wUr0m80wwYf0QCXZzYzUoTQ-jSgZYvdCQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/redhatdisplay/v21/8vIQ7wUr0m80wwYf0QCXZzYzUoTQ-jSgZYvdCQ.ttf",weight:400,isVariable:!0},{displayName:"Hind",filename:"5aU69_a8oxmIRG5yBROzkDM",category:"sans-serif",url:"https://fonts.gstatic.com/s/hind/v18/5aU69_a8oxmIRG5yBROzkDM.ttf",weight:400,isVariable:!1},{displayName:"Oxygen",filename:"2sDfZG1Wl4Lcnbu6iUcnZ0SkAg",category:"sans-serif",url:"https://fonts.gstatic.com/s/oxygen/v16/2sDfZG1Wl4Lcnbu6iUcnZ0SkAg.ttf",weight:400,isVariable:!1},{displayName:"Exo 2",filename:"7cHmv4okm5zmbuYvIe804WIo",category:"sans-serif",url:"https://fonts.gstatic.com/s/exo2/v26/7cHmv4okm5zmbuYvIe804WIo.ttf",weight:400,isVariable:!0},{displayName:"Lexend",filename:"wlpwgwvFAVdoq2_f_K4V0WdXaQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/lexend/v26/wlpwgwvFAVdoq2_f_K4V0WdXaQ.ttf",weight:400,isVariable:!0},{displayName:"Alfa Slab One",filename:"6NUQ8FmMKwSEKjnm5-4v-4Jh6dVretWvYmE",category:"display",url:"https://fonts.gstatic.com/s/alfaslabone/v21/6NUQ8FmMKwSEKjnm5-4v-4Jh6dVretWvYmE.ttf",weight:400,isVariable:!1},{displayName:"Inter Tight",filename:"NGSwv5HMAFg6IuGlBNMjxIsA-6lMQHe9",category:"sans-serif",url:"https://fonts.gstatic.com/s/intertight/v9/NGSwv5HMAFg6IuGlBNMjxIsA-6lMQHe9.ttf",weight:400,isVariable:!0},{displayName:"Lobster",filename:"neILzCirqoswsqX9_oWsMqEzSJQ",category:"display",url:"https://fonts.gstatic.com/s/lobster/v32/neILzCirqoswsqX9_oWsMqEzSJQ.ttf",weight:400,isVariable:!1},{displayName:"Urbanist",filename:"L0x-DF02iFML4hGCyPqiZyxEimK3",category:"sans-serif",url:"https://fonts.gstatic.com/s/urbanist/v18/L0x-DF02iFML4hGCyPqiZyxEimK3.ttf",weight:400,isVariable:!0},{displayName:"Crimson Text",filename:"wlp2gwHKFkZgtmSR3NB0oRJvaAJSA_JN3Q",category:"serif",url:"https://fonts.gstatic.com/s/crimsontext/v19/wlp2gwHKFkZgtmSR3NB0oRJvaAJSA_JN3Q.ttf",weight:400,isVariable:!1},{displayName:"Overpass",filename:"qFdH35WCmI96Ajtm82GiWdrCwwcJ",category:"sans-serif",url:"https://fonts.gstatic.com/s/overpass/v19/qFdH35WCmI96Ajtm82GiWdrCwwcJ.ttf",weight:400,isVariable:!0},{displayName:"Lobster Two",filename:"BngMUXZGTXPUvIoyV6yN59fK7KSJ4ACD",category:"display",url:"https://fonts.gstatic.com/s/lobstertwo/v22/BngMUXZGTXPUvIoyV6yN59fK7KSJ4ACD.ttf",weight:400,isVariable:!1},{displayName:"Cormorant Garamond",filename:"co3bmX5slCNuHLi8bLeY9MK7whWMhyjornFLsS6V7w",category:"serif",url:"https://fonts.gstatic.com/s/cormorantgaramond/v21/co3bmX5slCNuHLi8bLeY9MK7whWMhyjornFLsS6V7w.ttf",weight:400,isVariable:!0},{displayName:"Comfortaa",filename:"1Ptsg8LJRfWJmhDAuUsISotrDfGGxA",category:"display",url:"https://fonts.gstatic.com/s/comfortaa/v47/1Ptsg8LJRfWJmhDAuUsISotrDfGGxA.ttf",weight:400,isVariable:!0},{displayName:"Sora",filename:"xMQbuFFYT72X_QIjD4e2OX8",category:"sans-serif",url:"https://fonts.gstatic.com/s/sora/v17/xMQbuFFYT72X_QIjD4e2OX8.ttf",weight:400,isVariable:!0},{displayName:"Arvo",filename:"tDbD2oWUg0MKmSAa7Lzr7vs",category:"serif",url:"https://fonts.gstatic.com/s/arvo/v23/tDbD2oWUg0MKmSAa7Lzr7vs.ttf",weight:400,isVariable:!1},{displayName:"M PLUS Rounded 1c",filename:"VdGEAYIAV6gnpUpoWwNkYvrugw9RuPWGzr8C7vav",category:"sans-serif",url:"https://fonts.gstatic.com/s/mplusrounded1c/v20/VdGEAYIAV6gnpUpoWwNkYvrugw9RuPWGzr8C7vav.ttf",weight:400,isVariable:!1},{displayName:"PT Sans Narrow",filename:"BngRUXNadjH0qYEzV7ab-oWlsYCByxyKeuDp",category:"sans-serif",url:"https://fonts.gstatic.com/s/ptsansnarrow/v19/BngRUXNadjH0qYEzV7ab-oWlsYCByxyKeuDp.ttf",weight:400,isVariable:!1},{displayName:"Tajawal",filename:"Iura6YBj_oCad4k1rzaLCr5IlLA",category:"sans-serif",url:"https://fonts.gstatic.com/s/tajawal/v12/Iura6YBj_oCad4k1rzaLCr5IlLA.ttf",weight:400,isVariable:!1},{displayName:"Caveat",filename:"Wnz6HAc5bAfYB2QLYTwZqg_MPQ",category:"handwriting",url:"https://fonts.gstatic.com/s/caveat/v23/Wnz6HAc5bAfYB2QLYTwZqg_MPQ.ttf",weight:400,isVariable:!0},{displayName:"DM Serif Display",filename:"-nFnOHM81r4j6k0gjAW3mujVU2B2K_d709jy92k",category:"serif",url:"https://fonts.gstatic.com/s/dmserifdisplay/v17/-nFnOHM81r4j6k0gjAW3mujVU2B2K_d709jy92k.ttf",weight:400,isVariable:!1},{displayName:"Rajdhani",filename:"LDIxapCSOBg7S-QT7q4AOeekWPrP",category:"sans-serif",url:"https://fonts.gstatic.com/s/rajdhani/v17/LDIxapCSOBg7S-QT7q4AOeekWPrP.ttf",weight:400,isVariable:!1},{displayName:"Abel",filename:"MwQ5bhbm2POE6VhLPJp6qGI",category:"sans-serif",url:"https://fonts.gstatic.com/s/abel/v18/MwQ5bhbm2POE6VhLPJp6qGI.ttf",weight:400,isVariable:!1},{displayName:"Fira Sans Condensed",filename:"wEOhEADFm8hSaQTFG18FErVhsC9x-tarYfHnrMtVbx8",category:"sans-serif",url:"https://fonts.gstatic.com/s/firasanscondensed/v11/wEOhEADFm8hSaQTFG18FErVhsC9x-tarYfHnrMtVbx8.ttf",weight:400,isVariable:!1},{displayName:"Teko",filename:"LYjNdG7kmE0gTaR3pCtBtVs",category:"sans-serif",url:"https://fonts.gstatic.com/s/teko/v23/LYjNdG7kmE0gTaR3pCtBtVs.ttf",weight:400,isVariable:!0},{displayName:"Merriweather Sans",filename:"2-c99IRs1JiJN1FRAMjTN5zd9vgsFEXySDTL8wtf",category:"sans-serif",url:"https://fonts.gstatic.com/s/merriweathersans/v28/2-c99IRs1JiJN1FRAMjTN5zd9vgsFEXySDTL8wtf.ttf",weight:400,isVariable:!0},{displayName:"Almarai",filename:"tsstApxBaigK_hnnc1qPonC3vqc",category:"sans-serif",url:"https://fonts.gstatic.com/s/almarai/v19/tsstApxBaigK_hnnc1qPonC3vqc.ttf",weight:400,isVariable:!1},{displayName:"Source Serif 4",filename:"vEFI2_tTDB4M7-auWDN0ahZJW2gc-NaXXq7H",category:"serif",url:"https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW2gc-NaXXq7H.ttf",weight:400,isVariable:!0},{displayName:"Satisfy",filename:"rP2Hp2yn6lkG50LoOZSCHBeHFl0",category:"handwriting",url:"https://fonts.gstatic.com/s/satisfy/v22/rP2Hp2yn6lkG50LoOZSCHBeHFl0.ttf",weight:400,isVariable:!1},{displayName:"Asap",filename:"KFOoCniXp96a-zwU4UROGzY",category:"sans-serif",url:"https://fonts.gstatic.com/s/asap/v34/KFOoCniXp96a-zwU4UROGzY.ttf",weight:400,isVariable:!0},{displayName:"Lexend Deca",filename:"K2F1fZFYk-dHSE0UPPuwQ6qgLS76ZHOM",category:"sans-serif",url:"https://fonts.gstatic.com/s/lexenddeca/v25/K2F1fZFYk-dHSE0UPPuwQ6qgLS76ZHOM.ttf",weight:400,isVariable:!0},{displayName:"Domine",filename:"L0x8DFMnlVwD4h3RvPCmRSlUig",category:"serif",url:"https://fonts.gstatic.com/s/domine/v25/L0x8DFMnlVwD4h3RvPCmRSlUig.ttf",weight:400,isVariable:!0},{displayName:"Shadows Into Light",filename:"UqyNK9UOIntux_czAvDQx_ZcHqZXBNQDcsr4xzSMYA",category:"handwriting",url:"https://fonts.gstatic.com/s/shadowsintolight/v22/UqyNK9UOIntux_czAvDQx_ZcHqZXBNQDcsr4xzSMYA.ttf",weight:400,isVariable:!1},{displayName:"Barlow Semi Condensed",filename:"wlpvgxjLBV1hqnzfr-F8sEYMB0Yybp0mudRnf4CrCEo4gg",category:"sans-serif",url:"https://fonts.gstatic.com/s/barlowsemicondensed/v16/wlpvgxjLBV1hqnzfr-F8sEYMB0Yybp0mudRnf4CrCEo4gg.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Arabic",filename:"nwpPtLGrOAZMl5nJ_wfgRg3DrWFZQML36H986K0",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansarabic/v33/nwpPtLGrOAZMl5nJ_wfgRg3DrWFZQML36H986K0.ttf",weight:400,isVariable:!0},{displayName:"Lilita One",filename:"i7dPIFZ9Zz-WBtRtedDbUEZ2RFq7AwU",category:"display",url:"https://fonts.gstatic.com/s/lilitaone/v17/i7dPIFZ9Zz-WBtRtedDbUEZ2RFq7AwU.ttf",weight:400,isVariable:!1},{displayName:"Indie Flower",filename:"m8JVjfNVeKWVnh3QMuKkFcZlbkGG1dKEDw",category:"handwriting",url:"https://fonts.gstatic.com/s/indieflower/v24/m8JVjfNVeKWVnh3QMuKkFcZlbkGG1dKEDw.ttf",weight:400,isVariable:!1},{displayName:"Play",filename:"6aez4K2oVqwIjtI8Hp8Tx3A",category:"sans-serif",url:"https://fonts.gstatic.com/s/play/v21/6aez4K2oVqwIjtI8Hp8Tx3A.ttf",weight:400,isVariable:!1},{displayName:"Chakra Petch",filename:"cIf6MapbsEk7TDLdtEz1BwkmmKBhSL7Y1Q",category:"sans-serif",url:"https://fonts.gstatic.com/s/chakrapetch/v13/cIf6MapbsEk7TDLdtEz1BwkmmKBhSL7Y1Q.ttf",weight:400,isVariable:!1},{displayName:"IBM Plex Mono",filename:"-F63fjptAgt5VM-kVkqdyU8n5igg1l9kn-s",category:"monospace",url:"https://fonts.gstatic.com/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n5igg1l9kn-s.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Thai",filename:"iJWdBXeUZi_OHPqn4wq6hQ2_hah-5c-dUX0x",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansthai/v29/iJWdBXeUZi_OHPqn4wq6hQ2_hah-5c-dUX0x.ttf",weight:400,isVariable:!0},{displayName:"Varela Round",filename:"w8gdH283Tvk__Lua32TysjIvoMGOD9gxZw",category:"sans-serif",url:"https://fonts.gstatic.com/s/varelaround/v21/w8gdH283Tvk__Lua32TysjIvoMGOD9gxZw.ttf",weight:400,isVariable:!1},{displayName:"Cinzel",filename:"8vIJ7ww63mVu7gtL8W76HEdHMg",category:"serif",url:"https://fonts.gstatic.com/s/cinzel/v26/8vIJ7ww63mVu7gtL8W76HEdHMg.ttf",weight:400,isVariable:!0},{displayName:"Questrial",filename:"QdVUSTchPBm7nuUeVf7EuStkm20oJA",category:"sans-serif",url:"https://fonts.gstatic.com/s/questrial/v19/QdVUSTchPBm7nuUeVf7EuStkm20oJA.ttf",weight:400,isVariable:!1},{displayName:"Maven Pro",filename:"7Au9p_AqnyWWAxW2Wk32ym4JMFge0g",category:"sans-serif",url:"https://fonts.gstatic.com/s/mavenpro/v40/7Au9p_AqnyWWAxW2Wk32ym4JMFge0g.ttf",weight:400,isVariable:!0},{displayName:"M PLUS 1p",filename:"e3tjeuShHdiFyPFzBRro-D4Ec2jKqw",category:"sans-serif",url:"https://fonts.gstatic.com/s/mplus1p/v33/e3tjeuShHdiFyPFzBRro-D4Ec2jKqw.ttf",weight:400,isVariable:!1},{displayName:"Orbitron",filename:"yMJRMIlzdpvBhQQL_Tq8fSx5i814",category:"sans-serif",url:"https://fonts.gstatic.com/s/orbitron/v35/yMJRMIlzdpvBhQQL_Tq8fSx5i814.ttf",weight:400,isVariable:!0},{displayName:"IBM Plex Serif",filename:"jizDREVNn1dOx-zrZ2X3pZvkThUY0TY7ikbI",category:"serif",url:"https://fonts.gstatic.com/s/ibmplexserif/v20/jizDREVNn1dOx-zrZ2X3pZvkThUY0TY7ikbI.ttf",weight:400,isVariable:!1},{displayName:"Abril Fatface",filename:"zOL64pLDlL1D99S8g8PtiKchm-BsjOLhZBY",category:"display",url:"https://fonts.gstatic.com/s/abrilfatface/v25/zOL64pLDlL1D99S8g8PtiKchm-BsjOLhZBY.ttf",weight:400,isVariable:!1},{displayName:"Bodoni Moda",filename:"aFTQ7PxzY382XsXX63LUYKSNQqn0X0BO",category:"serif",url:"https://fonts.gstatic.com/s/bodonimoda/v28/aFTQ7PxzY382XsXX63LUYKSNQqn0X0BO.ttf",weight:400,isVariable:!0},{displayName:"Kalam",filename:"YA9dr0Wd4kDdMuhWMibDszkB",category:"handwriting",url:"https://fonts.gstatic.com/s/kalam/v18/YA9dr0Wd4kDdMuhWMibDszkB.ttf",weight:400,isVariable:!1},{displayName:"Instrument Serif",filename:"jizBRFtNs2ka5fXjeivQ4LroWlx-2zIZj1bIkNo",category:"serif",url:"https://fonts.gstatic.com/s/instrumentserif/v5/jizBRFtNs2ka5fXjeivQ4LroWlx-2zIZj1bIkNo.ttf",weight:400,isVariable:!1},{displayName:"Fredoka",filename:"X7nl4b87HvSqjb_WOCaQ4MTgAgk",category:"sans-serif",url:"https://fonts.gstatic.com/s/fredoka/v17/X7nl4b87HvSqjb_WOCaQ4MTgAgk.ttf",weight:400,isVariable:!0},{displayName:"Exo",filename:"4UaOrEtFpBIidHSi-DP-5g",category:"sans-serif",url:"https://fonts.gstatic.com/s/exo/v25/4UaOrEtFpBIidHSi-DP-5g.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Symbols",filename:"rP2dp3q65FkAtHfwd-eIS2brbDN6gwn8wq-72bOY",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssymbols/v47/rP2dp3q65FkAtHfwd-eIS2brbDN6gwn8wq-72bOY.ttf",weight:400,isVariable:!0},{displayName:"Archivo Narrow",filename:"tss0ApVBdCYD5Q7hcxTE1ArZ0Yb3g31S2s8p",category:"sans-serif",url:"https://fonts.gstatic.com/s/archivonarrow/v35/tss0ApVBdCYD5Q7hcxTE1ArZ0Yb3g31S2s8p.ttf",weight:400,isVariable:!0},{displayName:"Zilla Slab",filename:"dFa6ZfeM_74wlPZtksIFWj0w_HyIRlE",category:"serif",url:"https://fonts.gstatic.com/s/zillaslab/v12/dFa6ZfeM_74wlPZtksIFWj0w_HyIRlE.ttf",weight:400,isVariable:!1},{displayName:"Great Vibes",filename:"RWmMoKWR9v4ksMfaWd_JN-XCg6UKDXlq",category:"handwriting",url:"https://fonts.gstatic.com/s/greatvibes/v21/RWmMoKWR9v4ksMfaWd_JN-XCg6UKDXlq.ttf",weight:400,isVariable:!1},{displayName:"ABeeZee",filename:"esDR31xSG-6AGleN6tKukbcHCpE",category:"sans-serif",url:"https://fonts.gstatic.com/s/abeezee/v23/esDR31xSG-6AGleN6tKukbcHCpE.ttf",weight:400,isVariable:!1},{displayName:"Nanum Myeongjo",filename:"9Btx3DZF0dXLMZlywRbVRNhxy1LreHQ8juyl",category:"serif",url:"https://fonts.gstatic.com/s/nanummyeongjo/v31/9Btx3DZF0dXLMZlywRbVRNhxy1LreHQ8juyl.ttf",weight:400,isVariable:!1},{displayName:"Unbounded",filename:"Yq6W-LOTXCb04q32xlpAvMxenxE0SA",category:"sans-serif",url:"https://fonts.gstatic.com/s/unbounded/v12/Yq6W-LOTXCb04q32xlpAvMxenxE0SA.ttf",weight:400,isVariable:!0},{displayName:"Zen Kaku Gothic New",filename:"gNMYW2drQpDw0GjzrVNFf_valaDBcznOkjtiTWz5UGA",category:"sans-serif",url:"https://fonts.gstatic.com/s/zenkakugothicnew/v18/gNMYW2drQpDw0GjzrVNFf_valaDBcznOkjtiTWz5UGA.ttf",weight:400,isVariable:!1},{displayName:"Marcellus",filename:"wEO_EBrOk8hQLDvIAF8FUfAL3EsHiA",category:"serif",url:"https://fonts.gstatic.com/s/marcellus/v14/wEO_EBrOk8hQLDvIAF8FUfAL3EsHiA.ttf",weight:400,isVariable:!1},{displayName:"JetBrains Mono",filename:"tDbV2o-flEEny0FZhsfKu5WU4yD8MQCPTFrV",category:"monospace",url:"https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbV2o-flEEny0FZhsfKu5WU4yD8MQCPTFrV.ttf",weight:400,isVariable:!0},{displayName:"Sofia Sans",filename:"Yq6R-LCVXSLy9uPBwlATnOZwkxgtUb8",category:"sans-serif",url:"https://fonts.gstatic.com/s/sofiasans/v20/Yq6R-LCVXSLy9uPBwlATnOZwkxgtUb8.ttf",weight:400,isVariable:!0},{displayName:"Be Vietnam Pro",filename:"QdVPSTAyLFyeg_IDWvOJmVES_EwwD3s6ZKAi",category:"sans-serif",url:"https://fonts.gstatic.com/s/bevietnampro/v12/QdVPSTAyLFyeg_IDWvOJmVES_EwwD3s6ZKAi.ttf",weight:400,isVariable:!1},{displayName:"Google Sans Flex",filename:"t5t7IQcYNIWbFgDgAAzZ34auoVyXipusfhcat2c",category:"sans-serif",url:"https://fonts.gstatic.com/s/googlesansflex/v16/t5t7IQcYNIWbFgDgAAzZ34auoVyXipusfhcat2c.ttf",weight:400,isVariable:!0},{displayName:"Albert Sans",filename:"i7dOIFdwYjGaAMFtZd_QA2ZcalayGhyV",category:"sans-serif",url:"https://fonts.gstatic.com/s/albertsans/v4/i7dOIFdwYjGaAMFtZd_QA2ZcalayGhyV.ttf",weight:400,isVariable:!0},{displayName:"DM Mono",filename:"aFTU7PB1QTsUX8KYhh2aBYyMcKw",category:"monospace",url:"https://fonts.gstatic.com/s/dmmono/v16/aFTU7PB1QTsUX8KYhh2aBYyMcKw.ttf",weight:400,isVariable:!1},{displayName:"Permanent Marker",filename:"Fh4uPib9Iyv2ucM6pGQMWimMp004HaqIfrT5nlk",category:"handwriting",url:"https://fonts.gstatic.com/s/permanentmarker/v16/Fh4uPib9Iyv2ucM6pGQMWimMp004HaqIfrT5nlk.ttf",weight:400,isVariable:!1},{displayName:"Signika",filename:"vEFR2_JTCgwQ5ejvK1YsB3hod0k",category:"sans-serif",url:"https://fonts.gstatic.com/s/signika/v29/vEFR2_JTCgwQ5ejvK1YsB3hod0k.ttf",weight:400,isVariable:!0},{displayName:"IBM Plex Sans Arabic",filename:"Qw3CZRtWPQCuHme67tEYUIx3Kh0PHR9N6bs61vSbfdlA",category:"sans-serif",url:"https://fonts.gstatic.com/s/ibmplexsansarabic/v14/Qw3CZRtWPQCuHme67tEYUIx3Kh0PHR9N6bs61vSbfdlA.ttf",weight:400,isVariable:!1},{displayName:"Instrument Sans",filename:"pxicypc9vsFDm051Uf6KVwgkfoSrSGNAom-wpw",category:"sans-serif",url:"https://fonts.gstatic.com/s/instrumentsans/v4/pxicypc9vsFDm051Uf6KVwgkfoSrSGNAom-wpw.ttf",weight:400,isVariable:!0},{displayName:"Titan One",filename:"mFTzWbsGxbbS_J5cQcjykzIn2Etikg",category:"display",url:"https://fonts.gstatic.com/s/titanone/v17/mFTzWbsGxbbS_J5cQcjykzIn2Etikg.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif KR",filename:"3Jn7SDn90Gmq2mr3blnHaTZXduBp1ONyKHQ",category:"serif",url:"https://fonts.gstatic.com/s/notoserifkr/v31/3Jn7SDn90Gmq2mr3blnHaTZXduBp1ONyKHQ.ttf",weight:400,isVariable:!0},{displayName:"Spectral",filename:"rnCr-xNNww_2s0amA-M-mHnOSOuk",category:"serif",url:"https://fonts.gstatic.com/s/spectral/v15/rnCr-xNNww_2s0amA-M-mHnOSOuk.ttf",weight:400,isVariable:!1},{displayName:"Sanchez",filename:"Ycm2sZJORluHnXbITm5b_BwE1l0",category:"serif",url:"https://fonts.gstatic.com/s/sanchez/v17/Ycm2sZJORluHnXbITm5b_BwE1l0.ttf",weight:400,isVariable:!1},{displayName:"Rethink Sans",filename:"AMOWz4SDuXOMCPfdoglY9JQ0U1K2w9lb4g",category:"sans-serif",url:"https://fonts.gstatic.com/s/rethinksans/v7/AMOWz4SDuXOMCPfdoglY9JQ0U1K2w9lb4g.ttf",weight:400,isVariable:!0},{displayName:"Vollkorn",filename:"0yb9GDoxxrvAnPhYGykuYkw2rQg1",category:"serif",url:"https://fonts.gstatic.com/s/vollkorn/v30/0yb9GDoxxrvAnPhYGykuYkw2rQg1.ttf",weight:400,isVariable:!0},{displayName:"Noto Kufi Arabic",filename:"CSRk4ydQnPyaDxEXLFF6LZVLKrodnOQPF2KpMzE",category:"sans-serif",url:"https://fonts.gstatic.com/s/notokufiarabic/v27/CSRk4ydQnPyaDxEXLFF6LZVLKrodnOQPF2KpMzE.ttf",weight:400,isVariable:!0},{displayName:"Google Sans Code",filename:"pxifyogzv91QhV44Z_GQBHsGf5PuaElurmapvvM",category:"monospace",url:"https://fonts.gstatic.com/s/googlesanscode/v14/pxifyogzv91QhV44Z_GQBHsGf5PuaElurmapvvM.ttf",weight:400,isVariable:!0},{displayName:"Cormorant",filename:"H4clBXOCl9bbnla_nHIa6JG8iqeuag",category:"serif",url:"https://fonts.gstatic.com/s/cormorant/v24/H4clBXOCl9bbnla_nHIa6JG8iqeuag.ttf",weight:400,isVariable:!0},{displayName:"Noto Serif SC",filename:"H4chBXePl9DZ0Xe7gG9cyOj7oqacbzhqDtg",category:"serif",url:"https://fonts.gstatic.com/s/notoserifsc/v35/H4chBXePl9DZ0Xe7gG9cyOj7oqacbzhqDtg.ttf",weight:400,isVariable:!0},{displayName:"Bree Serif",filename:"4UaHrEJCrhhnVA3DgluAx63j5pN1MwI",category:"serif",url:"https://fonts.gstatic.com/s/breeserif/v18/4UaHrEJCrhhnVA3DgluAx63j5pN1MwI.ttf",weight:400,isVariable:!1},{displayName:"Sarabun",filename:"DtVjJx26TKEr37c9WBJDnlQN9gk",category:"sans-serif",url:"https://fonts.gstatic.com/s/sarabun/v17/DtVjJx26TKEr37c9WBJDnlQN9gk.ttf",weight:400,isVariable:!1},{displayName:"Geologica",filename:"oY1c8evIr7j9P3TN9YwXCv5xY4QBLw",category:"sans-serif",url:"https://fonts.gstatic.com/s/geologica/v5/oY1c8evIr7j9P3TN9YwXCv5xY4QBLw.ttf",weight:400,isVariable:!0},{displayName:"Saira Condensed",filename:"EJROQgErUN8XuHNEtX81i9TmEkrfpeFE-IyCrw",category:"sans-serif",url:"https://fonts.gstatic.com/s/sairacondensed/v12/EJROQgErUN8XuHNEtX81i9TmEkrfpeFE-IyCrw.ttf",weight:400,isVariable:!1},{displayName:"Geist",filename:"gyByhwUxId8gMHwbElSvO5Tc",category:"sans-serif",url:"https://fonts.gstatic.com/s/geist/v4/gyByhwUxId8gMHwbElSvO5Tc.ttf",weight:400,isVariable:!0},{displayName:"Onest",filename:"gNMKW3F-SZuj7ymY8ncKEZez",category:"sans-serif",url:"https://fonts.gstatic.com/s/onest/v9/gNMKW3F-SZuj7ymY8ncKEZez.ttf",weight:400,isVariable:!0},{displayName:"Rowdies",filename:"ptRJTieMYPNBAK21zrdJwObZNQo",category:"display",url:"https://fonts.gstatic.com/s/rowdies/v19/ptRJTieMYPNBAK21zrdJwObZNQo.ttf",weight:400,isVariable:!1},{displayName:"League Spartan",filename:"kJEqBuEW6A0lliaV_m88ja5TwsZ3J5i1DJZg",category:"sans-serif",url:"https://fonts.gstatic.com/s/leaguespartan/v15/kJEqBuEW6A0lliaV_m88ja5TwsZ3J5i1DJZg.ttf",weight:400,isVariable:!0},{displayName:"Catamaran",filename:"o-0IIpQoyXQa2RxT7-5b4j5Ba_2c7A",category:"sans-serif",url:"https://fonts.gstatic.com/s/catamaran/v28/o-0IIpQoyXQa2RxT7-5b4j5Ba_2c7A.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Display",filename:"RLplK4fy6r6tOBEJg0IAKzqdFZVZxokvfn_BDLxR",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansdisplay/v30/RLplK4fy6r6tOBEJg0IAKzqdFZVZxokvfn_BDLxR.ttf",weight:400,isVariable:!0},{displayName:"Montserrat Alternates",filename:"mFTvWacfw6zH4dthXcyms1lPpC8I_b0juU0J7K3RCJ1b0w",category:"sans-serif",url:"https://fonts.gstatic.com/s/montserratalternates/v18/mFTvWacfw6zH4dthXcyms1lPpC8I_b0juU0J7K3RCJ1b0w.ttf",weight:400,isVariable:!1},{displayName:"Advent Pro",filename:"V8mAoQfxVT4Dvddr_yOwtT2nKb5ZFtI",category:"sans-serif",url:"https://fonts.gstatic.com/s/adventpro/v33/V8mAoQfxVT4Dvddr_yOwtT2nKb5ZFtI.ttf",weight:400,isVariable:!0},{displayName:"Roboto Serif",filename:"R70djywflP6FLr3gZx7K8Uy0Vxn9R5ShnA",category:"serif",url:"https://fonts.gstatic.com/s/robotoserif/v17/R70djywflP6FLr3gZx7K8Uy0Vxn9R5ShnA.ttf",weight:400,isVariable:!0},{displayName:"Hind Madurai",filename:"f0Xx0e2p98ZvDXdZQIOcpqjn8Y0DceA0OQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/hindmadurai/v13/f0Xx0e2p98ZvDXdZQIOcpqjn8Y0DceA0OQ.ttf",weight:400,isVariable:!1},{displayName:"Frank Ruhl Libre",filename:"j8_w6_fAw7jrcalD7oKYNX0QfAnPa7fv4JjnmY4",category:"serif",url:"https://fonts.gstatic.com/s/frankruhllibre/v23/j8_w6_fAw7jrcalD7oKYNX0QfAnPa7fv4JjnmY4.ttf",weight:400,isVariable:!0},{displayName:"Acme",filename:"RrQfboBx-C5_bx3Lb23lzLk",category:"sans-serif",url:"https://fonts.gstatic.com/s/acme/v27/RrQfboBx-C5_bx3Lb23lzLk.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif TC",filename:"XLYgIZb5bJNDGYxLBibeHZ0BhncESXFtUsM",category:"serif",url:"https://fonts.gstatic.com/s/notoseriftc/v35/XLYgIZb5bJNDGYxLBibeHZ0BhncESXFtUsM.ttf",weight:400,isVariable:!0},{displayName:"Space Mono",filename:"i7dPIFZifjKcF5UAWdDRUEZ2RFq7AwU",category:"monospace",url:"https://fonts.gstatic.com/s/spacemono/v17/i7dPIFZifjKcF5UAWdDRUEZ2RFq7AwU.ttf",weight:400,isVariable:!1},{displayName:"Oleo Script",filename:"rax5HieDvtMOe0iICsUccBhasU7Q8Cad",category:"display",url:"https://fonts.gstatic.com/s/oleoscript/v15/rax5HieDvtMOe0iICsUccBhasU7Q8Cad.ttf",weight:400,isVariable:!1},{displayName:"Alegreya",filename:"4UaBrEBBsBhlBjvfkRLmzanB44N1",category:"serif",url:"https://fonts.gstatic.com/s/alegreya/v39/4UaBrEBBsBhlBjvfkRLmzanB44N1.ttf",weight:400,isVariable:!0},{displayName:"Encode Sans",filename:"LDI2apOFNxEwR-Bd1O9uYMOsc-bGkqIw",category:"sans-serif",url:"https://fonts.gstatic.com/s/encodesans/v23/LDI2apOFNxEwR-Bd1O9uYMOsc-bGkqIw.ttf",weight:400,isVariable:!0},{displayName:"Alegreya Sans",filename:"5aUz9_-1phKLFgshYDvh6Vwt3V1nvEVXlm4",category:"sans-serif",url:"https://fonts.gstatic.com/s/alegreyasans/v26/5aUz9_-1phKLFgshYDvh6Vwt3V1nvEVXlm4.ttf",weight:400,isVariable:!1},{displayName:"Newsreader",filename:"cY9AfjOCX1hbuyalUrK479n4jaBGNpY",category:"serif",url:"https://fonts.gstatic.com/s/newsreader/v26/cY9AfjOCX1hbuyalUrK479n4jaBGNpY.ttf",weight:400,isVariable:!0},{displayName:"Unna",filename:"AYCEpXzofN0NCpgBlGHCWFM",category:"serif",url:"https://fonts.gstatic.com/s/unna/v25/AYCEpXzofN0NCpgBlGHCWFM.ttf",weight:400,isVariable:!1},{displayName:"Luckiest Guy",filename:"_gP_1RrxsjcxVyin9l9n_j2RStR3qDpraA",category:"display",url:"https://fonts.gstatic.com/s/luckiestguy/v25/_gP_1RrxsjcxVyin9l9n_j2RStR3qDpraA.ttf",weight:400,isVariable:!1},{displayName:"Hanken Grotesk",filename:"ieVn2YZDLWuGJpnzaiwFXS9tYupa7dGTCTs5",category:"sans-serif",url:"https://fonts.gstatic.com/s/hankengrotesk/v12/ieVn2YZDLWuGJpnzaiwFXS9tYupa7dGTCTs5.ttf",weight:400,isVariable:!0},{displayName:"Creepster",filename:"AlZy_zVUqJz4yMrniH4hdXf4XB0Tow",category:"display",url:"https://fonts.gstatic.com/s/creepster/v13/AlZy_zVUqJz4yMrniH4hdXf4XB0Tow.ttf",weight:400,isVariable:!1},{displayName:"Rubik Mono One",filename:"UqyJK8kPP3hjw6ANTdfRk9YSN-8wRqQrc_j9",category:"sans-serif",url:"https://fonts.gstatic.com/s/rubikmonoone/v20/UqyJK8kPP3hjw6ANTdfRk9YSN-8wRqQrc_j9.ttf",weight:400,isVariable:!1},{displayName:"STIX Two Text",filename:"YA9Vr02F12Xkf5whdwKf11l0l7mGiv_Q7dA",category:"serif",url:"https://fonts.gstatic.com/s/stixtwotext/v18/YA9Vr02F12Xkf5whdwKf11l0l7mGiv_Q7dA.ttf",weight:400,isVariable:!0},{displayName:"Amiri",filename:"J7aRnpd8CGxBHqUpvrIw74NL",category:"serif",url:"https://fonts.gstatic.com/s/amiri/v30/J7aRnpd8CGxBHqUpvrIw74NL.ttf",weight:400,isVariable:!1},{displayName:"Russo One",filename:"Z9XUDmZRWg6M1LvRYsH-yMOInrib9Q",category:"sans-serif",url:"https://fonts.gstatic.com/s/russoone/v18/Z9XUDmZRWg6M1LvRYsH-yMOInrib9Q.ttf",weight:400,isVariable:!1},{displayName:"Zen Maru Gothic",filename:"o-0SIpIxzW5b-RxT-6A8jWAtCp-k7UJmNLGG9A",category:"sans-serif",url:"https://fonts.gstatic.com/s/zenmarugothic/v19/o-0SIpIxzW5b-RxT-6A8jWAtCp-k7UJmNLGG9A.ttf",weight:400,isVariable:!1},{displayName:"Cardo",filename:"wlp_gwjKBV1pqiv_1oAZ2H5O",category:"serif",url:"https://fonts.gstatic.com/s/cardo/v21/wlp_gwjKBV1pqiv_1oAZ2H5O.ttf",weight:400,isVariable:!1},{displayName:"Atkinson Hyperlegible",filename:"9Bt23C1KxNDXMspQ1lPyU89-1h6ONRlW45GE5ZgpewSSbQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/atkinsonhyperlegible/v12/9Bt23C1KxNDXMspQ1lPyU89-1h6ONRlW45GE5ZgpewSSbQ.ttf",weight:400,isVariable:!1},{displayName:"Amatic SC",filename:"TUZyzwprpvBS1izr_vO0De6ecZQf1A",category:"handwriting",url:"https://fonts.gstatic.com/s/amaticsc/v28/TUZyzwprpvBS1izr_vO0De6ecZQf1A.ttf",weight:400,isVariable:!1},{displayName:"Signika Negative",filename:"E218_cfngu7HiRpPX3ZpNE4kY5zKUvKrrpno9zY",category:"sans-serif",url:"https://fonts.gstatic.com/s/signikanegative/v26/E218_cfngu7HiRpPX3ZpNE4kY5zKUvKrrpno9zY.ttf",weight:400,isVariable:!0},{displayName:"Chivo",filename:"va9I4kzIxd1KFoBvS-J3kbDP",category:"sans-serif",url:"https://fonts.gstatic.com/s/chivo/v21/va9I4kzIxd1KFoBvS-J3kbDP.ttf",weight:400,isVariable:!0},{displayName:"Noticia Text",filename:"VuJ2dNDF2Yv9qppOePKYRP1GYTFZt0rNpQ",category:"serif",url:"https://fonts.gstatic.com/s/noticiatext/v16/VuJ2dNDF2Yv9qppOePKYRP1GYTFZt0rNpQ.ttf",weight:400,isVariable:!1},{displayName:"Yanone Kaffeesatz",filename:"3y976aknfjLm_3lMKjiMgmUUYBs04b8cFeulHc6N",category:"sans-serif",url:"https://fonts.gstatic.com/s/yanonekaffeesatz/v32/3y976aknfjLm_3lMKjiMgmUUYBs04b8cFeulHc6N.ttf",weight:400,isVariable:!0},{displayName:"Libre Caslon Text",filename:"DdT878IGsGw1aF1JU10PUbTvNNaDMcq_3eNrHgO1",category:"serif",url:"https://fonts.gstatic.com/s/librecaslontext/v5/DdT878IGsGw1aF1JU10PUbTvNNaDMcq_3eNrHgO1.ttf",weight:400,isVariable:!1},{displayName:"Righteous",filename:"1cXxaUPXBpj2rGoU7C9mj3uEicG01A",category:"display",url:"https://fonts.gstatic.com/s/righteous/v18/1cXxaUPXBpj2rGoU7C9mj3uEicG01A.ttf",weight:400,isVariable:!1},{displayName:"Prata",filename:"6xKhdSpbNNCT-vWIAG_5LWwJ",category:"serif",url:"https://fonts.gstatic.com/s/prata/v22/6xKhdSpbNNCT-vWIAG_5LWwJ.ttf",weight:400,isVariable:!1},{displayName:"Changa",filename:"2-cm9JNi2YuVOUcUYZa_Wu_lpA",category:"sans-serif",url:"https://fonts.gstatic.com/s/changa/v29/2-cm9JNi2YuVOUcUYZa_Wu_lpA.ttf",weight:400,isVariable:!0},{displayName:"Antic Slab",filename:"bWt97fPFfRzkCa9Jlp6IWcJWXW5p5Qo",category:"serif",url:"https://fonts.gstatic.com/s/anticslab/v17/bWt97fPFfRzkCa9Jlp6IWcJWXW5p5Qo.ttf",weight:400,isVariable:!1},{displayName:"Libre Barcode 39",filename:"-nFnOHM08vwC6h8Li1eQnP_AHzI2K_d709jy92k",category:"display",url:"https://fonts.gstatic.com/s/librebarcode39/v25/-nFnOHM08vwC6h8Li1eQnP_AHzI2K_d709jy92k.ttf",weight:400,isVariable:!1},{displayName:"News Cycle",filename:"CSR64z1Qlv-GDxkbKVQ_TOcATNt_pOU",category:"sans-serif",url:"https://fonts.gstatic.com/s/newscycle/v26/CSR64z1Qlv-GDxkbKVQ_TOcATNt_pOU.ttf",weight:400,isVariable:!1},{displayName:"Delius",filename:"PN_xRfK0pW_9e1rtYcI-jT3L_w",category:"handwriting",url:"https://fonts.gstatic.com/s/delius/v21/PN_xRfK0pW_9e1rtYcI-jT3L_w.ttf",weight:400,isVariable:!1},{displayName:"Comic Neue",filename:"4UaHrEJDsxBrF37olUeDx63j5pN1MwI",category:"handwriting",url:"https://fonts.gstatic.com/s/comicneue/v9/4UaHrEJDsxBrF37olUeDx63j5pN1MwI.ttf",weight:400,isVariable:!1},{displayName:"Literata",filename:"or3hQ6P12-iJxAIgLbT3LLQ1niPn",category:"serif",url:"https://fonts.gstatic.com/s/literata/v40/or3hQ6P12-iJxAIgLbT3LLQ1niPn.ttf",weight:400,isVariable:!0},{displayName:"Alata",filename:"PbytFmztEwbIofe6xKcRQEOX",category:"sans-serif",url:"https://fonts.gstatic.com/s/alata/v12/PbytFmztEwbIofe6xKcRQEOX.ttf",weight:400,isVariable:!1},{displayName:"Syne",filename:"8vIH7w4qzmVxq2dB9Uz_DEc",category:"sans-serif",url:"https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxq2dB9Uz_DEc.ttf",weight:400,isVariable:!0},{displayName:"Martel",filename:"PN_xRfK9oXHga0XtYcI-jT3L_w",category:"serif",url:"https://fonts.gstatic.com/s/martel/v12/PN_xRfK9oXHga0XtYcI-jT3L_w.ttf",weight:400,isVariable:!1},{displayName:"Yellowtail",filename:"OZpGg_pnoDtINPfRIlLotlzNwED-b4g",category:"handwriting",url:"https://fonts.gstatic.com/s/yellowtail/v25/OZpGg_pnoDtINPfRIlLotlzNwED-b4g.ttf",weight:400,isVariable:!1},{displayName:"Fraunces",filename:"6NUV8FyLNQOQZAnv9awPnugMyM1A",category:"serif",url:"https://fonts.gstatic.com/s/fraunces/v38/6NUV8FyLNQOQZAnv9awPnugMyM1A.ttf",weight:400,isVariable:!0},{displayName:"Kumbh Sans",filename:"c4ml1n92AsfhuCq6tVsauodX-Kq-QUI",category:"sans-serif",url:"https://fonts.gstatic.com/s/kumbhsans/v27/c4ml1n92AsfhuCq6tVsauodX-Kq-QUI.ttf",weight:400,isVariable:!0},{displayName:"DM Serif Text",filename:"rnCu-xZa_krGokauCeNq1wWyafOPXHIJErY",category:"serif",url:"https://fonts.gstatic.com/s/dmseriftext/v13/rnCu-xZa_krGokauCeNq1wWyafOPXHIJErY.ttf",weight:400,isVariable:!1},{displayName:"Courgette",filename:"wEO_EBrAnc9BLjLQAUkFUfAL3EsHiA",category:"handwriting",url:"https://fonts.gstatic.com/s/courgette/v19/wEO_EBrAnc9BLjLQAUkFUfAL3EsHiA.ttf",weight:400,isVariable:!1},{displayName:"Crimson Pro",filename:"q5uDsoa5M_tv7IihmnkabDRcq4BYCdKi",category:"serif",url:"https://fonts.gstatic.com/s/crimsonpro/v28/q5uDsoa5M_tv7IihmnkabDRcq4BYCdKi.ttf",weight:400,isVariable:!0},{displayName:"PT Sans Caption",filename:"0FlMVP6Hrxmt7-fsUFhlFXNIlpcqfQXwQy6yxg",category:"sans-serif",url:"https://fonts.gstatic.com/s/ptsanscaption/v20/0FlMVP6Hrxmt7-fsUFhlFXNIlpcqfQXwQy6yxg.ttf",weight:400,isVariable:!1},{displayName:"Andada Pro",filename:"HhyRU5Qi9-SuOEhPe4LtMI5gSbkI5_E",category:"serif",url:"https://fonts.gstatic.com/s/andadapro/v24/HhyRU5Qi9-SuOEhPe4LtMI5gSbkI5_E.ttf",weight:400,isVariable:!0},{displayName:"Tenor Sans",filename:"bx6ANxqUneKx06UkIXISr3JyC22IyqI",category:"sans-serif",url:"https://fonts.gstatic.com/s/tenorsans/v21/bx6ANxqUneKx06UkIXISr3JyC22IyqI.ttf",weight:400,isVariable:!1},{displayName:"Courier Prime",filename:"u-450q2lgwslOqpF_6gQ8kELWwZjW-_-tvg",category:"monospace",url:"https://fonts.gstatic.com/s/courierprime/v11/u-450q2lgwslOqpF_6gQ8kELWwZjW-_-tvg.ttf",weight:400,isVariable:!1},{displayName:"Paytone One",filename:"0nksC9P7MfYHj2oFtYm2CiTqivr9iBq_",category:"sans-serif",url:"https://fonts.gstatic.com/s/paytoneone/v25/0nksC9P7MfYHj2oFtYm2CiTqivr9iBq_.ttf",weight:400,isVariable:!1},{displayName:"Shippori Mincho",filename:"VdGGAZweH5EbgHY6YExcZfDoj0BA2_-C7LoS7g",category:"serif",url:"https://fonts.gstatic.com/s/shipporimincho/v17/VdGGAZweH5EbgHY6YExcZfDoj0BA2_-C7LoS7g.ttf",weight:400,isVariable:!1},{displayName:"Readex Pro",filename:"SLXNc1bJ7HE5YDoGPuzj59NebXZkiSo",category:"sans-serif",url:"https://fonts.gstatic.com/s/readexpro/v27/SLXNc1bJ7HE5YDoGPuzj59NebXZkiSo.ttf",weight:400,isVariable:!0},{displayName:"Alumni Sans",filename:"nwpQtKqkOwdO2aOIwhWudF-i5QwyYdrc",category:"sans-serif",url:"https://fonts.gstatic.com/s/alumnisans/v20/nwpQtKqkOwdO2aOIwhWudF-i5QwyYdrc.ttf",weight:400,isVariable:!0},{displayName:"Gothic A1",filename:"CSR94z5ZnPydRjlCCwl6bM0uQNJmvQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/gothica1/v18/CSR94z5ZnPydRjlCCwl6bM0uQNJmvQ.ttf",weight:400,isVariable:!1},{displayName:"Sawarabi Mincho",filename:"8QIRdiDaitzr7brc8ahpxt6GcIJTLahP46UDUw",category:"serif",url:"https://fonts.gstatic.com/s/sawarabimincho/v20/8QIRdiDaitzr7brc8ahpxt6GcIJTLahP46UDUw.ttf",weight:400,isVariable:!1},{displayName:"League Gothic",filename:"qFdC35CBi4tvBz81xy7WG7ep4h8ij1I7LLE",category:"sans-serif",url:"https://fonts.gstatic.com/s/leaguegothic/v13/qFdC35CBi4tvBz81xy7WG7ep4h8ij1I7LLE.ttf",weight:400,isVariable:!1},{displayName:"Actor",filename:"wEOzEBbCkc5cO3ekXygtUMIO",category:"sans-serif",url:"https://fonts.gstatic.com/s/actor/v18/wEOzEBbCkc5cO3ekXygtUMIO.ttf",weight:400,isVariable:!1},{displayName:"Red Hat Text",filename:"RrQXbohi_ic6B3yVSzGBrMxgb60sE8yZPA",category:"sans-serif",url:"https://fonts.gstatic.com/s/redhattext/v19/RrQXbohi_ic6B3yVSzGBrMxgb60sE8yZPA.ttf",weight:400,isVariable:!0},{displayName:"Passion One",filename:"PbynFmL8HhTPqbjUzux3JHuW_Frg6YoV",category:"display",url:"https://fonts.gstatic.com/s/passionone/v20/PbynFmL8HhTPqbjUzux3JHuW_Frg6YoV.ttf",weight:400,isVariable:!1},{displayName:"Noto Naskh Arabic",filename:"RrQKbpV-9Dd1b1OAGA6M9PkyDuVBeO2BF1yELmgy",category:"serif",url:"https://fonts.gstatic.com/s/notonaskharabic/v44/RrQKbpV-9Dd1b1OAGA6M9PkyDuVBeO2BF1yELmgy.ttf",weight:400,isVariable:!0},{displayName:"Encode Sans Condensed",filename:"j8_16_LD37rqfuwxyIuaZhE6cRXOLtm2gfTGgaWNDw8VIw",category:"sans-serif",url:"https://fonts.gstatic.com/s/encodesanscondensed/v11/j8_16_LD37rqfuwxyIuaZhE6cRXOLtm2gfTGgaWNDw8VIw.ttf",weight:400,isVariable:!1},{displayName:"Golos Text",filename:"q5uCsoe9Lv5t7Meb31EcIxR2hYxREMs",category:"sans-serif",url:"https://fonts.gstatic.com/s/golostext/v7/q5uCsoe9Lv5t7Meb31EcIxR2hYxREMs.ttf",weight:400,isVariable:!0},{displayName:"Crete Round",filename:"55xoey1sJNPjPiv1ZZZrxJ1827zAKnxN",category:"serif",url:"https://fonts.gstatic.com/s/creteround/v16/55xoey1sJNPjPiv1ZZZrxJ1827zAKnxN.ttf",weight:400,isVariable:!1},{displayName:"Baskervville",filename:"YA9Ur0yU4l_XOrogbkun3kQgt5OohvbJ9A",category:"serif",url:"https://fonts.gstatic.com/s/baskervville/v20/YA9Ur0yU4l_XOrogbkun3kQgt5OohvbJ9A.ttf",weight:400,isVariable:!0},{displayName:"Patua One",filename:"ZXuke1cDvLCKLDcimxBI5PNvNA9LuA",category:"display",url:"https://fonts.gstatic.com/s/patuaone/v22/ZXuke1cDvLCKLDcimxBI5PNvNA9LuA.ttf",weight:400,isVariable:!1},{displayName:"Kaushan Script",filename:"vm8vdRfvXFLG3OLnsO15WYS5DF7_ytN3M48a",category:"handwriting",url:"https://fonts.gstatic.com/s/kaushanscript/v19/vm8vdRfvXFLG3OLnsO15WYS5DF7_ytN3M48a.ttf",weight:400,isVariable:!1},{displayName:"IBM Plex Sans Condensed",filename:"Gg8lN4UfRSqiPg7Jn2ZI12V4DCEwkj1E4LVeHbauwq_jhJsM",category:"sans-serif",url:"https://fonts.gstatic.com/s/ibmplexsanscondensed/v15/Gg8lN4UfRSqiPg7Jn2ZI12V4DCEwkj1E4LVeHbauwq_jhJsM.ttf",weight:400,isVariable:!1},{displayName:"Hammersmith One",filename:"qWcyB624q4L_C4jGQ9IK0O_dFlnbshsks4MRXw",category:"sans-serif",url:"https://fonts.gstatic.com/s/hammersmithone/v18/qWcyB624q4L_C4jGQ9IK0O_dFlnbshsks4MRXw.ttf",weight:400,isVariable:!1},{displayName:"Allura",filename:"9oRPNYsQpS4zjuAPjAIXPtrrGA",category:"handwriting",url:"https://fonts.gstatic.com/s/allura/v23/9oRPNYsQpS4zjuAPjAIXPtrrGA.ttf",weight:400,isVariable:!1},{displayName:"Young Serif",filename:"3qTpojO2nS2VtkB3KtkQZ2t61EcYaQ7F",category:"serif",url:"https://fonts.gstatic.com/s/youngserif/v2/3qTpojO2nS2VtkB3KtkQZ2t61EcYaQ7F.ttf",weight:400,isVariable:!1},{displayName:"Gloria Hallelujah",filename:"LYjYdHv3kUk9BMV96EIswT9DIbW-MLSy3TKEvkCF",category:"handwriting",url:"https://fonts.gstatic.com/s/gloriahallelujah/v24/LYjYdHv3kUk9BMV96EIswT9DIbW-MLSy3TKEvkCF.ttf",weight:400,isVariable:!1},{displayName:"Philosopher",filename:"vEFV2_5QCwIS4_Dhez5jcVBpRUwU08qe",category:"sans-serif",url:"https://fonts.gstatic.com/s/philosopher/v21/vEFV2_5QCwIS4_Dhez5jcVBpRUwU08qe.ttf",weight:400,isVariable:!1},{displayName:"Old Standard TT",filename:"MwQubh3o1vLImiwAVvYawgcf2eVurVC5RHdCZg",category:"serif",url:"https://fonts.gstatic.com/s/oldstandardtt/v22/MwQubh3o1vLImiwAVvYawgcf2eVurVC5RHdCZg.ttf",weight:400,isVariable:!1},{displayName:"Commissioner",filename:"tDbL2o2WnlgI0FNDgduEk4jajCr4EwWfTA",category:"sans-serif",url:"https://fonts.gstatic.com/s/commissioner/v24/tDbL2o2WnlgI0FNDgduEk4jajCr4EwWfTA.ttf",weight:400,isVariable:!0},{displayName:"Nanum Gothic Coding",filename:"8QIVdjzHisX_8vv59_xMxtPFW4IXROwsy6QxVs1X7tc",category:"handwriting",url:"https://fonts.gstatic.com/s/nanumgothiccoding/v27/8QIVdjzHisX_8vv59_xMxtPFW4IXROwsy6QxVs1X7tc.ttf",weight:400,isVariable:!1},{displayName:"Viga",filename:"xMQbuFFdSaiX_QIjD4e2OX8",category:"sans-serif",url:"https://fonts.gstatic.com/s/viga/v15/xMQbuFFdSaiX_QIjD4e2OX8.ttf",weight:400,isVariable:!1},{displayName:"Sawarabi Gothic",filename:"x3d4ckfVaqqa-BEj-I9mE65u3k3NBSk3E2YljQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/sawarabigothic/v16/x3d4ckfVaqqa-BEj-I9mE65u3k3NBSk3E2YljQ.ttf",weight:400,isVariable:!1},{displayName:"Aleo",filename:"c4mv1nF8G8_s8ArD0D1ogoY",category:"serif",url:"https://fonts.gstatic.com/s/aleo/v16/c4mv1nF8G8_s8ArD0D1ogoY.ttf",weight:400,isVariable:!0},{displayName:"Press Start 2P",filename:"e3t4euO8T-267oIAQAu6jDQyK0nSgPJE4580",category:"display",url:"https://fonts.gstatic.com/s/pressstart2p/v16/e3t4euO8T-267oIAQAu6jDQyK0nSgPJE4580.ttf",weight:400,isVariable:!1},{displayName:"Quattrocento",filename:"OZpEg_xvsDZQL_LKIF7q4jPHxGL7f4jFuA",category:"serif",url:"https://fonts.gstatic.com/s/quattrocento/v24/OZpEg_xvsDZQL_LKIF7q4jPHxGL7f4jFuA.ttf",weight:400,isVariable:!1},{displayName:"Cantarell",filename:"B50NF7ZDq37KMUvlO01Ji6hqHK-CLA",category:"sans-serif",url:"https://fonts.gstatic.com/s/cantarell/v18/B50NF7ZDq37KMUvlO01Ji6hqHK-CLA.ttf",weight:400,isVariable:!1},{displayName:"Asap Condensed",filename:"pxidypY1o9NHyXh3WvSbGSggdNeLYk1Mq3ap",category:"sans-serif",url:"https://fonts.gstatic.com/s/asapcondensed/v18/pxidypY1o9NHyXh3WvSbGSggdNeLYk1Mq3ap.ttf",weight:400,isVariable:!1},{displayName:"Didact Gothic",filename:"ahcfv8qz1zt6hCC5G4F_P4ASpUySp0LlcyQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/didactgothic/v21/ahcfv8qz1zt6hCC5G4F_P4ASpUySp0LlcyQ.ttf",weight:400,isVariable:!1},{displayName:"Gruppo",filename:"WwkfxPmzE06v_ZWFWXDAOIEQUQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/gruppo/v23/WwkfxPmzE06v_ZWFWXDAOIEQUQ.ttf",weight:400,isVariable:!1},{displayName:"Sacramento",filename:"buEzpo6gcdjy0EiZMBUG0CoV_NxLeiw",category:"handwriting",url:"https://fonts.gstatic.com/s/sacramento/v17/buEzpo6gcdjy0EiZMBUG0CoV_NxLeiw.ttf",weight:400,isVariable:!1},{displayName:"Francois One",filename:"_Xmr-H4zszafZw3A-KPSZutNxgKQu_avAg",category:"sans-serif",url:"https://fonts.gstatic.com/s/francoisone/v22/_Xmr-H4zszafZw3A-KPSZutNxgKQu_avAg.ttf",weight:400,isVariable:!1},{displayName:"Fugaz One",filename:"rax_HiWKp9EAITukFslMBBJek0vA8A",category:"display",url:"https://fonts.gstatic.com/s/fugazone/v21/rax_HiWKp9EAITukFslMBBJek0vA8A.ttf",weight:400,isVariable:!1},{displayName:"Oxanium",filename:"RrQQboN_4yJ0JmiMS2XO0LBBd4Y",category:"display",url:"https://fonts.gstatic.com/s/oxanium/v21/RrQQboN_4yJ0JmiMS2XO0LBBd4Y.ttf",weight:400,isVariable:!0},{displayName:"Bangers",filename:"FeVQS0BTqb0h60ACL5la2bxii28",category:"display",url:"https://fonts.gstatic.com/s/bangers/v25/FeVQS0BTqb0h60ACL5la2bxii28.ttf",weight:400,isVariable:!1},{displayName:"Rammetto One",filename:"LhWiMV3HOfMbMetJG3lQDpp9Mvuciu-_SQ",category:"display",url:"https://fonts.gstatic.com/s/rammettoone/v21/LhWiMV3HOfMbMetJG3lQDpp9Mvuciu-_SQ.ttf",weight:400,isVariable:!1},{displayName:"Ubuntu Condensed",filename:"u-4k0rCzjgs5J7oXnJcM_0kACGMtf-fVqvHoJXw",category:"sans-serif",url:"https://fonts.gstatic.com/s/ubuntucondensed/v17/u-4k0rCzjgs5J7oXnJcM_0kACGMtf-fVqvHoJXw.ttf",weight:400,isVariable:!1},{displayName:"Fira Code",filename:"uU9NCBsR6Z2vfE9aq3bR2t6CilKOdQ",category:"monospace",url:"https://fonts.gstatic.com/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bR2t6CilKOdQ.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Devanagari",filename:"TuGOUUFzXI5FBtUq5a8bjKYTZjtRU6Sgv2lRdRhtCC4d",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansdevanagari/v30/TuGOUUFzXI5FBtUq5a8bjKYTZjtRU6Sgv2lRdRhtCC4d.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Mono",filename:"BngRUXNETWXI6LwhGYvaxZikqYCByxyKeuDp",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmono/v37/BngRUXNETWXI6LwhGYvaxZikqYCByxyKeuDp.ttf",weight:400,isVariable:!0},{displayName:"El Messiri",filename:"K2F0fZBRmr9vQ1pHEey6AoqKAyLzfWo",category:"sans-serif",url:"https://fonts.gstatic.com/s/elmessiri/v25/K2F0fZBRmr9vQ1pHEey6AoqKAyLzfWo.ttf",weight:400,isVariable:!0},{displayName:"Yantramanav",filename:"flU8Rqu5zY00QEpyWJYWN6f0V-dRCQ41",category:"sans-serif",url:"https://fonts.gstatic.com/s/yantramanav/v15/flU8Rqu5zY00QEpyWJYWN6f0V-dRCQ41.ttf",weight:400,isVariable:!1},{displayName:"Josefin Slab",filename:"lW-5wjwOK3Ps5GSJlNNkMalXrQSuJsv4Pw",category:"serif",url:"https://fonts.gstatic.com/s/josefinslab/v29/lW-5wjwOK3Ps5GSJlNNkMalXrQSuJsv4Pw.ttf",weight:400,isVariable:!0},{displayName:"Baloo 2",filename:"wXKrE3kTposypRyd11_WAewrhXY",category:"display",url:"https://fonts.gstatic.com/s/baloo2/v23/wXKrE3kTposypRyd11_WAewrhXY.ttf",weight:400,isVariable:!0},{displayName:"Sen",filename:"6xKjdSxYI9_Hm_-MImrpLQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/sen/v12/6xKjdSxYI9_Hm_-MImrpLQ.ttf",weight:400,isVariable:!0},{displayName:"Zeyada",filename:"11hAGpPTxVPUbgZDNGatWKaZ3g",category:"handwriting",url:"https://fonts.gstatic.com/s/zeyada/v22/11hAGpPTxVPUbgZDNGatWKaZ3g.ttf",weight:400,isVariable:!1},{displayName:"Patrick Hand",filename:"LDI1apSQOAYtSuYWp8ZhfYeMWcjKm7sp8g",category:"handwriting",url:"https://fonts.gstatic.com/s/patrickhand/v25/LDI1apSQOAYtSuYWp8ZhfYeMWcjKm7sp8g.ttf",weight:400,isVariable:!1},{displayName:"Eczar",filename:"BXRlvF3Pi-DLmw0iBu9y8Hf0",category:"serif",url:"https://fonts.gstatic.com/s/eczar/v27/BXRlvF3Pi-DLmw0iBu9y8Hf0.ttf",weight:400,isVariable:!0},{displayName:"Mitr",filename:"pxiLypw5ucZFyTsyMJj_b1o",category:"sans-serif",url:"https://fonts.gstatic.com/s/mitr/v13/pxiLypw5ucZFyTsyMJj_b1o.ttf",weight:400,isVariable:!1},{displayName:"BIZ UDPGothic",filename:"hES36X5pHAIBjmS84VL0Bue83nUMQWkMUAk",category:"sans-serif",url:"https://fonts.gstatic.com/s/bizudpgothic/v16/hES36X5pHAIBjmS84VL0Bue83nUMQWkMUAk.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Tamil",filename:"ieVm2YdFI3GCY6SyQy1KfStzYKZ6x_-fACIgaw",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanstamil/v31/ieVm2YdFI3GCY6SyQy1KfStzYKZ6x_-fACIgaw.ttf",weight:400,isVariable:!0},{displayName:"Rokkitt",filename:"qFdE35qfgYFjGy5hoEGId9bL2h4",category:"serif",url:"https://fonts.gstatic.com/s/rokkitt/v39/qFdE35qfgYFjGy5hoEGId9bL2h4.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Bengali",filename:"Cn-sJsCGWQxOjaGwMQ6fIiMywrNJIlaxvBuclp_T",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansbengali/v33/Cn-sJsCGWQxOjaGwMQ6fIiMywrNJIlaxvBuclp_T.ttf",weight:400,isVariable:!0},{displayName:"Quattrocento Sans",filename:"va9c4lja2NVIDdIAAoMR5MfuElaRB3zOvU7eHGHJ",category:"sans-serif",url:"https://fonts.gstatic.com/s/quattrocentosans/v22/va9c4lja2NVIDdIAAoMR5MfuElaRB3zOvU7eHGHJ.ttf",weight:400,isVariable:!1},{displayName:"Chango",filename:"2V0cKI0OB5U7WaJyz324TFUaAw",category:"display",url:"https://fonts.gstatic.com/s/chango/v29/2V0cKI0OB5U7WaJyz324TFUaAw.ttf",weight:400,isVariable:!1},{displayName:"Alexandria",filename:"UMBXrPdDqW66y0Y2usFeWirXArM58BY",category:"sans-serif",url:"https://fonts.gstatic.com/s/alexandria/v6/UMBXrPdDqW66y0Y2usFeWirXArM58BY.ttf",weight:400,isVariable:!0},{displayName:"Cookie",filename:"syky-y18lb0tSbfNlQCT9tPdpw",category:"handwriting",url:"https://fonts.gstatic.com/s/cookie/v23/syky-y18lb0tSbfNlQCT9tPdpw.ttf",weight:400,isVariable:!1},{displayName:"Epilogue",filename:"O4ZRFGj5hxF0EhjimmIjuAkalnmd",category:"sans-serif",url:"https://fonts.gstatic.com/s/epilogue/v20/O4ZRFGj5hxF0EhjimmIjuAkalnmd.ttf",weight:400,isVariable:!0},{displayName:"Libre Bodoni",filename:"_Xmr-H45qDWDYULr5OfyZudNxgKQu_avAg",category:"serif",url:"https://fonts.gstatic.com/s/librebodoni/v9/_Xmr-H45qDWDYULr5OfyZudNxgKQu_avAg.ttf",weight:400,isVariable:!0},{displayName:"Vazirmatn",filename:"Dxxo8j6PP2D_kU2muijVGs-XAmn4eg",category:"sans-serif",url:"https://fonts.gstatic.com/s/vazirmatn/v16/Dxxo8j6PP2D_kU2muijVGs-XAmn4eg.ttf",weight:400,isVariable:!0},{displayName:"Special Elite",filename:"XLYgIZbkc4JPUL5CVArUVL0nhncESXFtUsM",category:"display",url:"https://fonts.gstatic.com/s/specialelite/v20/XLYgIZbkc4JPUL5CVArUVL0nhncESXFtUsM.ttf",weight:400,isVariable:!1},{displayName:"Amaranth",filename:"KtkuALODe433f0j1zPnCF9GqwnzW",category:"sans-serif",url:"https://fonts.gstatic.com/s/amaranth/v19/KtkuALODe433f0j1zPnCF9GqwnzW.ttf",weight:400,isVariable:!1},{displayName:"Concert One",filename:"VEM1Ro9xs5PjtzCu-srDqRTlhv-CuVAQ",category:"display",url:"https://fonts.gstatic.com/s/concertone/v24/VEM1Ro9xs5PjtzCu-srDqRTlhv-CuVAQ.ttf",weight:400,isVariable:!1},{displayName:"Eater",filename:"mtG04_FCK7bOvpu2u3FwsXsR",category:"display",url:"https://fonts.gstatic.com/s/eater/v27/mtG04_FCK7bOvpu2u3FwsXsR.ttf",weight:400,isVariable:!1},{displayName:"Parisienne",filename:"E21i_d3kivvAkxhLEVZpcy96DuKuavM",category:"handwriting",url:"https://fonts.gstatic.com/s/parisienne/v14/E21i_d3kivvAkxhLEVZpcy96DuKuavM.ttf",weight:400,isVariable:!1},{displayName:"Tangerine",filename:"IurY6Y5j_oScZZow4VOBDpxNhLBQ4Q",category:"handwriting",url:"https://fonts.gstatic.com/s/tangerine/v18/IurY6Y5j_oScZZow4VOBDpxNhLBQ4Q.ttf",weight:400,isVariable:!1},{displayName:"Playfair",filename:"0nkrC9D7PO4KhmUJ5-bYRQDioeb0",category:"serif",url:"https://fonts.gstatic.com/s/playfair/v10/0nkrC9D7PO4KhmUJ5-bYRQDioeb0.ttf",weight:400,isVariable:!0},{displayName:"Playfair Display SC",filename:"ke85OhoaMkR6-hSn7kbHVoFf7ZfgMPr_pb4GEcM2M4s",category:"serif",url:"https://fonts.gstatic.com/s/playfairdisplaysc/v18/ke85OhoaMkR6-hSn7kbHVoFf7ZfgMPr_pb4GEcM2M4s.ttf",weight:400,isVariable:!1},{displayName:"Forum",filename:"6aey4Ky-Vb8Ew_IWMJMa3mnT",category:"display",url:"https://fonts.gstatic.com/s/forum/v19/6aey4Ky-Vb8Ew_IWMJMa3mnT.ttf",weight:400,isVariable:!1},{displayName:"Geist Mono",filename:"or3nQ6H-1_WfwkMZI_qYJrAXmzPnnks",category:"monospace",url:"https://fonts.gstatic.com/s/geistmono/v4/or3nQ6H-1_WfwkMZI_qYJrAXmzPnnks.ttf",weight:400,isVariable:!0},{displayName:"Krub",filename:"sZlLdRyC6CRYXkYQDLlTW6E",category:"sans-serif",url:"https://fonts.gstatic.com/s/krub/v11/sZlLdRyC6CRYXkYQDLlTW6E.ttf",weight:400,isVariable:!1},{displayName:"Kosugi Maru",filename:"0nksC9PgP_wGh21A2KeqGiTqivr9iBq_",category:"sans-serif",url:"https://fonts.gstatic.com/s/kosugimaru/v17/0nksC9PgP_wGh21A2KeqGiTqivr9iBq_.ttf",weight:400,isVariable:!1},{displayName:"Gilda Display",filename:"t5tmIRoYMoaYG0WEOh7HwMeR7TnFrpOHYh4",category:"serif",url:"https://fonts.gstatic.com/s/gildadisplay/v20/t5tmIRoYMoaYG0WEOh7HwMeR7TnFrpOHYh4.ttf",weight:400,isVariable:!1},{displayName:"Neuton",filename:"UMBTrPtMoH62xUZyyII7civlBw",category:"serif",url:"https://fonts.gstatic.com/s/neuton/v24/UMBTrPtMoH62xUZyyII7civlBw.ttf",weight:400,isVariable:!1},{displayName:"Architects Daughter",filename:"KtkxAKiDZI_td1Lkx62xHZHDtgO_Y-bvfY5q4szgE-Q",category:"handwriting",url:"https://fonts.gstatic.com/s/architectsdaughter/v20/KtkxAKiDZI_td1Lkx62xHZHDtgO_Y-bvfY5q4szgE-Q.ttf",weight:400,isVariable:!1},{displayName:"Italianno",filename:"dg4n_p3sv6gCJkwzT6Rnj5YpQwM-gg",category:"handwriting",url:"https://fonts.gstatic.com/s/italianno/v18/dg4n_p3sv6gCJkwzT6Rnj5YpQwM-gg.ttf",weight:400,isVariable:!1},{displayName:"Poiret One",filename:"UqyVK80NJXN4zfRgbdfbk5lWVscxdKE",category:"display",url:"https://fonts.gstatic.com/s/poiretone/v18/UqyVK80NJXN4zfRgbdfbk5lWVscxdKE.ttf",weight:400,isVariable:!1},{displayName:"Playball",filename:"TK3gWksYAxQ7jbsKcj8Dl-tPKo2t",category:"display",url:"https://fonts.gstatic.com/s/playball/v22/TK3gWksYAxQ7jbsKcj8Dl-tPKo2t.ttf",weight:400,isVariable:!1},{displayName:"Black Han Sans",filename:"ea8Aad44WunzF9a-dL6toA8r8nqVIXSkH-Hc",category:"sans-serif",url:"https://fonts.gstatic.com/s/blackhansans/v24/ea8Aad44WunzF9a-dL6toA8r8nqVIXSkH-Hc.ttf",weight:400,isVariable:!1},{displayName:"Pathway Gothic One",filename:"MwQrbgD32-KAvjkYGNUUxAtW7pEBwx-dTFxeb80flQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/pathwaygothicone/v16/MwQrbgD32-KAvjkYGNUUxAtW7pEBwx-dTFxeb80flQ.ttf",weight:400,isVariable:!1},{displayName:"Antonio",filename:"gNMEW3NwSYq_9WD3-HMoFIez5MI",category:"sans-serif",url:"https://fonts.gstatic.com/s/antonio/v22/gNMEW3NwSYq_9WD3-HMoFIez5MI.ttf",weight:400,isVariable:!0},{displayName:"Homemade Apple",filename:"Qw3EZQFXECDrI2q789EKQZJob3x9Vnksi4M7",category:"handwriting",url:"https://fonts.gstatic.com/s/homemadeapple/v24/Qw3EZQFXECDrI2q789EKQZJob3x9Vnksi4M7.ttf",weight:400,isVariable:!1},{displayName:"Sorts Mill Goudy",filename:"Qw3GZR9MED_6PSuS_50nEaVrfzgEXH0OjpM75PE",category:"serif",url:"https://fonts.gstatic.com/s/sortsmillgoudy/v16/Qw3GZR9MED_6PSuS_50nEaVrfzgEXH0OjpM75PE.ttf",weight:400,isVariable:!1},{displayName:"Rock Salt",filename:"MwQ0bhv11fWD6QsAVOZbsEk7hbBWrA",category:"handwriting",url:"https://fonts.gstatic.com/s/rocksalt/v24/MwQ0bhv11fWD6QsAVOZbsEk7hbBWrA.ttf",weight:400,isVariable:!1},{displayName:"Radio Canada",filename:"XRXT3ISXn0dBMcibU6jlAqrtcRADBHJ6ZA",category:"sans-serif",url:"https://fonts.gstatic.com/s/radiocanada/v26/XRXT3ISXn0dBMcibU6jlAqrtcRADBHJ6ZA.ttf",weight:400,isVariable:!0},{displayName:"Ropa Sans",filename:"EYqxmaNOzLlWtsZSScyKWjloU5KP2g",category:"sans-serif",url:"https://fonts.gstatic.com/s/ropasans/v16/EYqxmaNOzLlWtsZSScyKWjloU5KP2g.ttf",weight:400,isVariable:!1},{displayName:"Jura",filename:"z7NbdRfiaC4VbcNDUCRDzJ0",category:"sans-serif",url:"https://fonts.gstatic.com/s/jura/v34/z7NbdRfiaC4VbcNDUCRDzJ0.ttf",weight:400,isVariable:!0},{displayName:"Berkshire Swash",filename:"ptRRTi-cavZOGqCvnNJDl5m5XmNPrcQybX4pQA",category:"handwriting",url:"https://fonts.gstatic.com/s/berkshireswash/v22/ptRRTi-cavZOGqCvnNJDl5m5XmNPrcQybX4pQA.ttf",weight:400,isVariable:!1},{displayName:"Gelasio",filename:"cIf9MaFfvUQxTTqSxCmrYGkHgIs",category:"serif",url:"https://fonts.gstatic.com/s/gelasio/v14/cIf9MaFfvUQxTTqSxCmrYGkHgIs.ttf",weight:400,isVariable:!0},{displayName:"PT Mono",filename:"9oRONYoBnWILk-9ArCg5MtPyAcg",category:"monospace",url:"https://fonts.gstatic.com/s/ptmono/v14/9oRONYoBnWILk-9ArCg5MtPyAcg.ttf",weight:400,isVariable:!1},{displayName:"Saira Extra Condensed",filename:"-nFiOHYr-vcC7h8MklGBkrvmUG9rbpkisrTT70L11Ct8sw",category:"sans-serif",url:"https://fonts.gstatic.com/s/sairaextracondensed/v15/-nFiOHYr-vcC7h8MklGBkrvmUG9rbpkisrTT70L11Ct8sw.ttf",weight:400,isVariable:!1},{displayName:"Lexend Giga",filename:"PlI5Fl67Mah5Y8yMHE7lkVxEt8CwfGaD",category:"sans-serif",url:"https://fonts.gstatic.com/s/lexendgiga/v27/PlI5Fl67Mah5Y8yMHE7lkVxEt8CwfGaD.ttf",weight:400,isVariable:!0},{displayName:"Handlee",filename:"-F6xfjBsISg9aMakDmr6oilJ3ik",category:"handwriting",url:"https://fonts.gstatic.com/s/handlee/v20/-F6xfjBsISg9aMakDmr6oilJ3ik.ttf",weight:400,isVariable:!1},{displayName:"Bai Jamjuree",filename:"LDI1apSCOBt_aeQQ7ftydoaMWcjKm7sp8g",category:"sans-serif",url:"https://fonts.gstatic.com/s/baijamjuree/v13/LDI1apSCOBt_aeQQ7ftydoaMWcjKm7sp8g.ttf",weight:400,isVariable:!1},{displayName:"IBM Plex Sans JP",filename:"Z9XNDn9KbTDf6_f7dISNqYf_tvPT1Cr4iNJ-pwc",category:"sans-serif",url:"https://fonts.gstatic.com/s/ibmplexsansjp/v7/Z9XNDn9KbTDf6_f7dISNqYf_tvPT1Cr4iNJ-pwc.ttf",weight:400,isVariable:!1},{displayName:"Khand",filename:"TwMA-IINQlQQ0YpVWHU_TBqO",category:"sans-serif",url:"https://fonts.gstatic.com/s/khand/v22/TwMA-IINQlQQ0YpVWHU_TBqO.ttf",weight:400,isVariable:!1},{displayName:"Zen Old Mincho",filename:"tss0ApVaYytLwxTqcxfMyBveyYb3g31S2s8p",category:"serif",url:"https://fonts.gstatic.com/s/zenoldmincho/v13/tss0ApVaYytLwxTqcxfMyBveyYb3g31S2s8p.ttf",weight:400,isVariable:!1},{displayName:"Staatliches",filename:"HI_OiY8KO6hCsQSoAPmtMbectJG9O9PS",category:"display",url:"https://fonts.gstatic.com/s/staatliches/v15/HI_OiY8KO6hCsQSoAPmtMbectJG9O9PS.ttf",weight:400,isVariable:!1},{displayName:"Lusitana",filename:"CSR84z9ShvucWzsMKxhaRuMiSct_",category:"serif",url:"https://fonts.gstatic.com/s/lusitana/v14/CSR84z9ShvucWzsMKxhaRuMiSct_.ttf",weight:400,isVariable:!1},{displayName:"Taviraj",filename:"ahcZv8Cj3ylylTXzfO4hU-FwnU0",category:"serif",url:"https://fonts.gstatic.com/s/taviraj/v15/ahcZv8Cj3ylylTXzfO4hU-FwnU0.ttf",weight:400,isVariable:!1},{displayName:"Calistoga",filename:"6NUU8F2OJg6MeR7l4e0vtMYAwdRZfw",category:"display",url:"https://fonts.gstatic.com/s/calistoga/v18/6NUU8F2OJg6MeR7l4e0vtMYAwdRZfw.ttf",weight:400,isVariable:!1},{displayName:"Monoton",filename:"5h1aiZUrOngCibe4fkbBQ2S7FU8",category:"display",url:"https://fonts.gstatic.com/s/monoton/v22/5h1aiZUrOngCibe4fkbBQ2S7FU8.ttf",weight:400,isVariable:!1},{displayName:"Sofia Sans Condensed",filename:"r05EGKVS5aVKd567NYXawnFKJaTtoAuLnLcPrNDVemxE",category:"sans-serif",url:"https://fonts.gstatic.com/s/sofiasanscondensed/v6/r05EGKVS5aVKd567NYXawnFKJaTtoAuLnLcPrNDVemxE.ttf",weight:400,isVariable:!0},{displayName:"Blinker",filename:"cIf9MaFatEE-VTaPxCmrYGkHgIs",category:"sans-serif",url:"https://fonts.gstatic.com/s/blinker/v14/cIf9MaFatEE-VTaPxCmrYGkHgIs.ttf",weight:400,isVariable:!1},{displayName:"Macondo",filename:"RrQQboN9-iB1IXmOS2XO0LBBd4Y",category:"display",url:"https://fonts.gstatic.com/s/macondo/v27/RrQQboN9-iB1IXmOS2XO0LBBd4Y.ttf",weight:400,isVariable:!1},{displayName:"Quantico",filename:"rax-HiSdp9cPL3KIF4xsLjxSmlLZ",category:"sans-serif",url:"https://fonts.gstatic.com/s/quantico/v19/rax-HiSdp9cPL3KIF4xsLjxSmlLZ.ttf",weight:400,isVariable:!1},{displayName:"Alex Brush",filename:"SZc83FzrJKuqFbwMKk6EtUL57DtOmCc",category:"handwriting",url:"https://fonts.gstatic.com/s/alexbrush/v23/SZc83FzrJKuqFbwMKk6EtUL57DtOmCc.ttf",weight:400,isVariable:!1},{displayName:"Audiowide",filename:"l7gdbjpo0cum0ckerWCtkQXPExpQBw",category:"display",url:"https://fonts.gstatic.com/s/audiowide/v22/l7gdbjpo0cum0ckerWCtkQXPExpQBw.ttf",weight:400,isVariable:!1},{displayName:"M PLUS 1",filename:"R70ZjygA28ymD4HgBVu4si6cViv4",category:"sans-serif",url:"https://fonts.gstatic.com/s/mplus1/v15/R70ZjygA28ymD4HgBVu4si6cViv4.ttf",weight:400,isVariable:!0},{displayName:"Merienda",filename:"gNMHW3x8Qoy5_mf8uVMCOou6_dvg",category:"handwriting",url:"https://fonts.gstatic.com/s/merienda/v22/gNMHW3x8Qoy5_mf8uVMCOou6_dvg.ttf",weight:400,isVariable:!0},{displayName:"Faustina",filename:"XLYlIZPxYpJfTbZAFW-4F81Kp28v",category:"serif",url:"https://fonts.gstatic.com/s/faustina/v23/XLYlIZPxYpJfTbZAFW-4F81Kp28v.ttf",weight:400,isVariable:!0},{displayName:"Mukta Malar",filename:"MCoXzAXyz8LOE2FpJMxZqLv4LfQJwHbn",category:"sans-serif",url:"https://fonts.gstatic.com/s/muktamalar/v14/MCoXzAXyz8LOE2FpJMxZqLv4LfQJwHbn.ttf",weight:400,isVariable:!1},{displayName:"VT323",filename:"pxiKyp0ihIEF2hsYHpT2dkNE",category:"monospace",url:"https://fonts.gstatic.com/s/vt323/v18/pxiKyp0ihIEF2hsYHpT2dkNE.ttf",weight:400,isVariable:!1},{displayName:"Lustria",filename:"9oRONYodvDEyjuhOrCg5MtPyAcg",category:"serif",url:"https://fonts.gstatic.com/s/lustria/v14/9oRONYodvDEyjuhOrCg5MtPyAcg.ttf",weight:400,isVariable:!1},{displayName:"Yeseva One",filename:"OpNJno4ck8vc-xYpwWWxpipfWhXD00c",category:"display",url:"https://fonts.gstatic.com/s/yesevaone/v24/OpNJno4ck8vc-xYpwWWxpipfWhXD00c.ttf",weight:400,isVariable:!1},{displayName:"Amita",filename:"HhyaU5si9Om7PQlvAfSKEZZL",category:"handwriting",url:"https://fonts.gstatic.com/s/amita/v20/HhyaU5si9Om7PQlvAfSKEZZL.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans HK",filename:"nKKQ-GM_FYFRJvXzVXaAPe9hNHB3Eu7mOQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanshk/v35/nKKQ-GM_FYFRJvXzVXaAPe9hNHB3Eu7mOQ.ttf",weight:400,isVariable:!0},{displayName:"Reenie Beanie",filename:"z7NSdR76eDkaJKZJFkkjuvWxbP2_qoOgf_w",category:"handwriting",url:"https://fonts.gstatic.com/s/reeniebeanie/v22/z7NSdR76eDkaJKZJFkkjuvWxbP2_qoOgf_w.ttf",weight:400,isVariable:!1},{displayName:"Alice",filename:"OpNCnoEEmtHa6FcJpA_chzJ0",category:"serif",url:"https://fonts.gstatic.com/s/alice/v21/OpNCnoEEmtHa6FcJpA_chzJ0.ttf",weight:400,isVariable:!1},{displayName:"Volkhov",filename:"SlGQmQieoJcKemNeQTIOhHxzcD0",category:"serif",url:"https://fonts.gstatic.com/s/volkhov/v18/SlGQmQieoJcKemNeQTIOhHxzcD0.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Hebrew",filename:"or35Q7v33eiDljA1IufXTtVf7V6Rpko_aen0c78",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanshebrew/v50/or35Q7v33eiDljA1IufXTtVf7V6Rpko_aen0c78.ttf",weight:400,isVariable:!0},{displayName:"Arsenal",filename:"wXKrE3kQtZQ4pF3D11_WAewrhXY",category:"sans-serif",url:"https://fonts.gstatic.com/s/arsenal/v13/wXKrE3kQtZQ4pF3D11_WAewrhXY.ttf",weight:400,isVariable:!1},{displayName:"Monda",filename:"TK3tWkYFABsmjvpmNBsLvPdG",category:"sans-serif",url:"https://fonts.gstatic.com/s/monda/v19/TK3tWkYFABsmjvpmNBsLvPdG.ttf",weight:400,isVariable:!0},{displayName:"Dela Gothic One",filename:"hESp6XxvMDRA-2eD0lXpDa6QkBAGRUsJQAlbUA",category:"display",url:"https://fonts.gstatic.com/s/delagothicone/v19/hESp6XxvMDRA-2eD0lXpDa6QkBAGRUsJQAlbUA.ttf",weight:400,isVariable:!1},{displayName:"Pridi",filename:"2sDQZG5JnZLfkfWao2krbl29",category:"serif",url:"https://fonts.gstatic.com/s/pridi/v15/2sDQZG5JnZLfkfWao2krbl29.ttf",weight:400,isVariable:!1},{displayName:"Mada",filename:"7Auwp_0qnzeSTTXMLCrX0kU",category:"sans-serif",url:"https://fonts.gstatic.com/s/mada/v21/7Auwp_0qnzeSTTXMLCrX0kU.ttf",weight:400,isVariable:!0},{displayName:"Istok Web",filename:"3qTvojGmgSyUukBzKslZAWF-9kIIaQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/istokweb/v26/3qTvojGmgSyUukBzKslZAWF-9kIIaQ.ttf",weight:400,isVariable:!1},{displayName:"Gochi Hand",filename:"hES06XlsOjtJsgCkx1PkTo71-n0nXWA",category:"handwriting",url:"https://fonts.gstatic.com/s/gochihand/v25/hES06XlsOjtJsgCkx1PkTo71-n0nXWA.ttf",weight:400,isVariable:!1},{displayName:"Caveat Brush",filename:"EYq0maZfwr9S9-ETZc3fKXtMW7mT03pdQw",category:"handwriting",url:"https://fonts.gstatic.com/s/caveatbrush/v12/EYq0maZfwr9S9-ETZc3fKXtMW7mT03pdQw.ttf",weight:400,isVariable:!1},{displayName:"Abhaya Libre",filename:"e3tmeuGtX-Co5MNzeAOqinEge0PWovdU4w",category:"serif",url:"https://fonts.gstatic.com/s/abhayalibre/v18/e3tmeuGtX-Co5MNzeAOqinEge0PWovdU4w.ttf",weight:400,isVariable:!1},{displayName:"Anonymous Pro",filename:"rP2Bp2a15UIB7Un-bOeISG3pLlw89CH98Ko",category:"monospace",url:"https://fonts.gstatic.com/s/anonymouspro/v22/rP2Bp2a15UIB7Un-bOeISG3pLlw89CH98Ko.ttf",weight:400,isVariable:!1},{displayName:"Cuprum",filename:"dg4k_pLmvrkcOkB9IeFDh701Sg",category:"sans-serif",url:"https://fonts.gstatic.com/s/cuprum/v29/dg4k_pLmvrkcOkB9IeFDh701Sg.ttf",weight:400,isVariable:!0},{displayName:"Petrona",filename:"mtG64_NXL7bZo9XXsXVStGsRwCU",category:"serif",url:"https://fonts.gstatic.com/s/petrona/v36/mtG64_NXL7bZo9XXsXVStGsRwCU.ttf",weight:400,isVariable:!0},{displayName:"Vidaloka",filename:"7cHrv4c3ipenMKlEass8yn4hnCci",category:"serif",url:"https://fonts.gstatic.com/s/vidaloka/v19/7cHrv4c3ipenMKlEass8yn4hnCci.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Bengali",filename:"hYkUPvggTvnzO14VSXltirUdnnkt1pw8UZiHeH5yig",category:"serif",url:"https://fonts.gstatic.com/s/notoserifbengali/v31/hYkUPvggTvnzO14VSXltirUdnnkt1pw8UZiHeH5yig.ttf",weight:400,isVariable:!0},{displayName:"Hind Guntur",filename:"wXKvE3UZrok56nvamSuJd8Qqt3M7tMDT",category:"sans-serif",url:"https://fonts.gstatic.com/s/hindguntur/v14/wXKvE3UZrok56nvamSuJd8Qqt3M7tMDT.ttf",weight:400,isVariable:!1},{displayName:"Ultra",filename:"zOLy4prXmrtY-tT6yLOD6NxF",category:"serif",url:"https://fonts.gstatic.com/s/ultra/v25/zOLy4prXmrtY-tT6yLOD6NxF.ttf",weight:400,isVariable:!1},{displayName:"Pinyon Script",filename:"6xKpdSJbL9-e9LuoeQiDRQR8aOLQO4bhiDY",category:"handwriting",url:"https://fonts.gstatic.com/s/pinyonscript/v24/6xKpdSJbL9-e9LuoeQiDRQR8aOLQO4bhiDY.ttf",weight:400,isVariable:!1},{displayName:"Goldman",filename:"pe0uMIWbN4JFplR2LDJ4Bt-7G98",category:"display",url:"https://fonts.gstatic.com/s/goldman/v21/pe0uMIWbN4JFplR2LDJ4Bt-7G98.ttf",weight:400,isVariable:!1},{displayName:"Pontano Sans",filename:"qFdD35GdgYR8EzR6oBLDHa3qwjUMg1siNQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/pontanosans/v19/qFdD35GdgYR8EzR6oBLDHa3qwjUMg1siNQ.ttf",weight:400,isVariable:!0},{displayName:"Cousine",filename:"d6lIkaiiRdih4SpPzSMlzTbtz9k",category:"monospace",url:"https://fonts.gstatic.com/s/cousine/v29/d6lIkaiiRdih4SpPzSMlzTbtz9k.ttf",weight:400,isVariable:!1},{displayName:"Nanum Pen Script",filename:"daaDSSYiLGqEal3MvdA_FOL_3FkN2z7-aMFCcTU",category:"handwriting",url:"https://fonts.gstatic.com/s/nanumpenscript/v25/daaDSSYiLGqEal3MvdA_FOL_3FkN2z7-aMFCcTU.ttf",weight:400,isVariable:!1},{displayName:"Andika",filename:"mem_Ya6iyW-LwqgAbbwRWrwGVA",category:"sans-serif",url:"https://fonts.gstatic.com/s/andika/v27/mem_Ya6iyW-LwqgAbbwRWrwGVA.ttf",weight:400,isVariable:!1},{displayName:"Ubuntu Mono",filename:"KFOjCneDtsqEr0keqCMhbBc9AMX6lJBP",category:"monospace",url:"https://fonts.gstatic.com/s/ubuntumono/v19/KFOjCneDtsqEr0keqCMhbBc9AMX6lJBP.ttf",weight:400,isVariable:!1},{displayName:"Hind Vadodara",filename:"neINzCKvrIcn5pbuuuriV9tTcJXfrXsfvSo",category:"sans-serif",url:"https://fonts.gstatic.com/s/hindvadodara/v16/neINzCKvrIcn5pbuuuriV9tTcJXfrXsfvSo.ttf",weight:400,isVariable:!1},{displayName:"Pangolin",filename:"cY9GfjGcW0FPpi-tWPfK5d3aiLBG",category:"handwriting",url:"https://fonts.gstatic.com/s/pangolin/v12/cY9GfjGcW0FPpi-tWPfK5d3aiLBG.ttf",weight:400,isVariable:!1},{displayName:"Nothing You Could Do",filename:"oY1B8fbBpaP5OX3DtrRYf_Q2BPB1SnfZb0OJl1ol2Ymo",category:"handwriting",url:"https://fonts.gstatic.com/s/nothingyoucoulddo/v21/oY1B8fbBpaP5OX3DtrRYf_Q2BPB1SnfZb0OJl1ol2Ymo.ttf",weight:400,isVariable:!1},{displayName:"Unica One",filename:"DPEuYwWHyAYGVTSmalshdtffuEY7FA",category:"display",url:"https://fonts.gstatic.com/s/unicaone/v20/DPEuYwWHyAYGVTSmalshdtffuEY7FA.ttf",weight:400,isVariable:!1},{displayName:"Cinzel Decorative",filename:"daaCSScvJGqLYhG8nNt8KPPswUAPnh7URs1LaCyC",category:"display",url:"https://fonts.gstatic.com/s/cinzeldecorative/v19/daaCSScvJGqLYhG8nNt8KPPswUAPnh7URs1LaCyC.ttf",weight:400,isVariable:!1},{displayName:"Noto Nastaliq Urdu",filename:"LhW4MUPbN-oZdNFcBy1-DJYsEoTq5puHSPANO9blOA",category:"serif",url:"https://fonts.gstatic.com/s/notonastaliqurdu/v23/LhW4MUPbN-oZdNFcBy1-DJYsEoTq5puHSPANO9blOA.ttf",weight:400,isVariable:!0},{displayName:"Mr Dafoe",filename:"lJwE-pIzkS5NXuMMrGiqg7MCxz_C",category:"handwriting",url:"https://fonts.gstatic.com/s/mrdafoe/v15/lJwE-pIzkS5NXuMMrGiqg7MCxz_C.ttf",weight:400,isVariable:!1},{displayName:"Biryani",filename:"hv-WlzNxIFoO84YdTUwZPTh5T-s",category:"sans-serif",url:"https://fonts.gstatic.com/s/biryani/v15/hv-WlzNxIFoO84YdTUwZPTh5T-s.ttf",weight:400,isVariable:!1},{displayName:"Share Tech Mono",filename:"J7aHnp1uDWRBEqV98dVQztYldFc7pAsEIc3Xew",category:"monospace",url:"https://fonts.gstatic.com/s/sharetechmono/v16/J7aHnp1uDWRBEqV98dVQztYldFc7pAsEIc3Xew.ttf",weight:400,isVariable:!1},{displayName:"Bad Script",filename:"6NUT8F6PJgbFWQn47_x7lOwuzd1AZtw",category:"handwriting",url:"https://fonts.gstatic.com/s/badscript/v18/6NUT8F6PJgbFWQn47_x7lOwuzd1AZtw.ttf",weight:400,isVariable:!1},{displayName:"Gabarito",filename:"QGYtz_0dZAGKJJ4t3EtvUYTknuBJ",category:"display",url:"https://fonts.gstatic.com/s/gabarito/v9/QGYtz_0dZAGKJJ4t3EtvUYTknuBJ.ttf",weight:400,isVariable:!0},{displayName:"Fira Sans Extra Condensed",filename:"NaPKcYDaAO5dirw6IaFn7lPJFqXmS-M9Atn3wgda5fiku3efvE8",category:"sans-serif",url:"https://fonts.gstatic.com/s/firasansextracondensed/v11/NaPKcYDaAO5dirw6IaFn7lPJFqXmS-M9Atn3wgda5fiku3efvE8.ttf",weight:400,isVariable:!1},{displayName:"Boogaloo",filename:"kmK-Zq45GAvOdnaW6x1F_SrQo_1K",category:"display",url:"https://fonts.gstatic.com/s/boogaloo/v25/kmK-Zq45GAvOdnaW6x1F_SrQo_1K.ttf",weight:400,isVariable:!1},{displayName:"Martel Sans",filename:"h0GsssGi7VdzDgKjM-4d8ijfze-PPlUu",category:"sans-serif",url:"https://fonts.gstatic.com/s/martelsans/v14/h0GsssGi7VdzDgKjM-4d8ijfze-PPlUu.ttf",weight:400,isVariable:!1},{displayName:"Cabin Condensed",filename:"nwpMtK6mNhBK2err_hqkYhHRqmwaYOjZ5HZl8Q",category:"sans-serif",url:"https://fonts.gstatic.com/s/cabincondensed/v21/nwpMtK6mNhBK2err_hqkYhHRqmwaYOjZ5HZl8Q.ttf",weight:400,isVariable:!1},{displayName:"Saira Semi Condensed",filename:"U9MD6c-2-nnJkHxyCjRcnMHcWVWV1cWRRU8LYuceqGT-",category:"sans-serif",url:"https://fonts.gstatic.com/s/sairasemicondensed/v15/U9MD6c-2-nnJkHxyCjRcnMHcWVWV1cWRRU8LYuceqGT-.ttf",weight:400,isVariable:!1},{displayName:"Fira Mono",filename:"N0bX2SlFPv1weGeLZDtQIfTTkdbJYA",category:"monospace",url:"https://fonts.gstatic.com/s/firamono/v16/N0bX2SlFPv1weGeLZDtQIfTTkdbJYA.ttf",weight:400,isVariable:!1},{displayName:"Belanosima",filename:"3y9k6bI8ejDo_3MfCDSLxABbF3JBg54",category:"sans-serif",url:"https://fonts.gstatic.com/s/belanosima/v4/3y9k6bI8ejDo_3MfCDSLxABbF3JBg54.ttf",weight:400,isVariable:!1},{displayName:"Racing Sans One",filename:"sykr-yRtm7EvTrXNxkv5jfKKyDCwL3rmWpIBtA",category:"display",url:"https://fonts.gstatic.com/s/racingsansone/v17/sykr-yRtm7EvTrXNxkv5jfKKyDCwL3rmWpIBtA.ttf",weight:400,isVariable:!1},{displayName:"Cormorant Infant",filename:"HhyPU44g9vKiM1sORYSiWeAsLN993_Af2DsAXq4",category:"serif",url:"https://fonts.gstatic.com/s/cormorantinfant/v22/HhyPU44g9vKiM1sORYSiWeAsLN993_Af2DsAXq4.ttf",weight:400,isVariable:!0},{displayName:"Sofia",filename:"8QIHdirahM3j_vu-sowsrqjk",category:"handwriting",url:"https://fonts.gstatic.com/s/sofia/v15/8QIHdirahM3j_vu-sowsrqjk.ttf",weight:400,isVariable:!1},{displayName:"Syncopate",filename:"pe0sMIuPIYBCpEV5eFdyAv2-C99ycg",category:"sans-serif",url:"https://fonts.gstatic.com/s/syncopate/v24/pe0sMIuPIYBCpEV5eFdyAv2-C99ycg.ttf",weight:400,isVariable:!1},{displayName:"Sriracha",filename:"0nkrC9D4IuYBgWcI9ObYRQDioeb0",category:"handwriting",url:"https://fonts.gstatic.com/s/sriracha/v16/0nkrC9D4IuYBgWcI9ObYRQDioeb0.ttf",weight:400,isVariable:!1},{displayName:"Belleza",filename:"0nkoC9_pNeMfhX4BtcbyawzruP8",category:"sans-serif",url:"https://fonts.gstatic.com/s/belleza/v18/0nkoC9_pNeMfhX4BtcbyawzruP8.ttf",weight:400,isVariable:!1},{displayName:"Varela",filename:"DPEtYwqExx0AWHXJBBQFfvzDsQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/varela/v17/DPEtYwqExx0AWHXJBBQFfvzDsQ.ttf",weight:400,isVariable:!1},{displayName:"Tilt Warp",filename:"AlZy_zVDs5XpmO7yn3whdXf4XB0Tow",category:"display",url:"https://fonts.gstatic.com/s/tiltwarp/v18/AlZy_zVDs5XpmO7yn3whdXf4XB0Tow.ttf",weight:400,isVariable:!1},{displayName:"Ruda",filename:"k3kfo8YQJOpFmn8XadbJM0A",category:"sans-serif",url:"https://fonts.gstatic.com/s/ruda/v30/k3kfo8YQJOpFmn8XadbJM0A.ttf",weight:400,isVariable:!0},{displayName:"Georama",filename:"MCoTzAn438bIEyxFZaAS3pP5H_E",category:"sans-serif",url:"https://fonts.gstatic.com/s/georama/v15/MCoTzAn438bIEyxFZaAS3pP5H_E.ttf",weight:400,isVariable:!0},{displayName:"Anuphan",filename:"2sDeZGxYgY7LkLT0qW0Ja029G7w",category:"sans-serif",url:"https://fonts.gstatic.com/s/anuphan/v6/2sDeZGxYgY7LkLT0qW0Ja029G7w.ttf",weight:400,isVariable:!0},{displayName:"Black Ops One",filename:"qWcsB6-ypo7xBdr6Xshe96H3WDzRtjkho4M",category:"display",url:"https://fonts.gstatic.com/s/blackopsone/v21/qWcsB6-ypo7xBdr6Xshe96H3WDzRtjkho4M.ttf",weight:400,isVariable:!1},{displayName:"Lalezar",filename:"zrfl0HLVx-HwTP82UaDyIiL0RCg",category:"sans-serif",url:"https://fonts.gstatic.com/s/lalezar/v16/zrfl0HLVx-HwTP82UaDyIiL0RCg.ttf",weight:400,isVariable:!1},{displayName:"Cutive Mono",filename:"m8JWjfRfY7WVjVi2E-K9H5RFRG-K3Mud",category:"monospace",url:"https://fonts.gstatic.com/s/cutivemono/v23/m8JWjfRfY7WVjVi2E-K9H5RFRG-K3Mud.ttf",weight:400,isVariable:!1},{displayName:"GFS Didot",filename:"Jqzh5TybZ9vZMWFssvwiF-fGFSCGAA",category:"serif",url:"https://fonts.gstatic.com/s/gfsdidot/v18/Jqzh5TybZ9vZMWFssvwiF-fGFSCGAA.ttf",weight:400,isVariable:!1},{displayName:"Gudea",filename:"neIFzCqgsI0mp-CP9IGON7Ez",category:"sans-serif",url:"https://fonts.gstatic.com/s/gudea/v16/neIFzCqgsI0mp-CP9IGON7Ez.ttf",weight:400,isVariable:!1},{displayName:"Michroma",filename:"PN_zRfy9qWD8fEagAMg6rzjb_-Da",category:"sans-serif",url:"https://fonts.gstatic.com/s/michroma/v21/PN_zRfy9qWD8fEagAMg6rzjb_-Da.ttf",weight:400,isVariable:!1},{displayName:"Carter One",filename:"q5uCsoe5IOB2-pXv9UcNIxR2hYxREMs",category:"display",url:"https://fonts.gstatic.com/s/carterone/v18/q5uCsoe5IOB2-pXv9UcNIxR2hYxREMs.ttf",weight:400,isVariable:!1},{displayName:"Niramit",filename:"I_uuMpWdvgLdNxVLbbRQkiCvs5Y",category:"sans-serif",url:"https://fonts.gstatic.com/s/niramit/v12/I_uuMpWdvgLdNxVLbbRQkiCvs5Y.ttf",weight:400,isVariable:!1},{displayName:"Julius Sans One",filename:"1Pt2g8TAX_SGgBGUi0tGOYEga5W-xXEW6aGXHw",category:"sans-serif",url:"https://fonts.gstatic.com/s/juliussansone/v20/1Pt2g8TAX_SGgBGUi0tGOYEga5W-xXEW6aGXHw.ttf",weight:400,isVariable:!1},{displayName:"Marck Script",filename:"nwpTtK2oNgBA3Or78gapdwuCzyI-aMPF7Q",category:"handwriting",url:"https://fonts.gstatic.com/s/marckscript/v22/nwpTtK2oNgBA3Or78gapdwuCzyI-aMPF7Q.ttf",weight:400,isVariable:!1},{displayName:"Cedarville Cursive",filename:"yYL00g_a2veiudhUmxjo5VKkoqA-B_neJbBxw8BeTg",category:"handwriting",url:"https://fonts.gstatic.com/s/cedarvillecursive/v18/yYL00g_a2veiudhUmxjo5VKkoqA-B_neJbBxw8BeTg.ttf",weight:400,isVariable:!1},{displayName:"Squada One",filename:"BCasqZ8XsOrx4mcOk6MtWaA8WDBkHgs",category:"display",url:"https://fonts.gstatic.com/s/squadaone/v20/BCasqZ8XsOrx4mcOk6MtWaA8WDBkHgs.ttf",weight:400,isVariable:!1},{displayName:"Economica",filename:"Qw3fZQZaHCLgIWa29ZBrMcgAAl1lfQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/economica/v17/Qw3fZQZaHCLgIWa29ZBrMcgAAl1lfQ.ttf",weight:400,isVariable:!1},{displayName:"Pragati Narrow",filename:"vm8vdRf0T0bS1ffgsPB7WZ-mD17_ytN3M48a",category:"sans-serif",url:"https://fonts.gstatic.com/s/pragatinarrow/v15/vm8vdRf0T0bS1ffgsPB7WZ-mD17_ytN3M48a.ttf",weight:400,isVariable:!1},{displayName:"Tomorrow",filename:"WBLmrETNbFtZCeGqgSXVcWHALdio",category:"sans-serif",url:"https://fonts.gstatic.com/s/tomorrow/v19/WBLmrETNbFtZCeGqgSXVcWHALdio.ttf",weight:400,isVariable:!1},{displayName:"Mona Sans",filename:"o-0IIpQmx24alC5A4PNb4j5Ba_2c7A",category:"sans-serif",url:"https://fonts.gstatic.com/s/monasans/v4/o-0IIpQmx24alC5A4PNb4j5Ba_2c7A.ttf",weight:400,isVariable:!0},{displayName:"Noto Serif Display",filename:"buErppa9f8_vkXaZLAgP0G5Wi6QmA1QAcqRNOlqMKg",category:"serif",url:"https://fonts.gstatic.com/s/notoserifdisplay/v29/buErppa9f8_vkXaZLAgP0G5Wi6QmA1QAcqRNOlqMKg.ttf",weight:400,isVariable:!0},{displayName:"Arapey",filename:"-W__XJn-UDDA2RC6Z9AcZkIzeg",category:"serif",url:"https://fonts.gstatic.com/s/arapey/v17/-W__XJn-UDDA2RC6Z9AcZkIzeg.ttf",weight:400,isVariable:!1},{displayName:"Six Caps",filename:"6ae_4KGrU7VR7bNmabcS9XXaPCop",category:"sans-serif",url:"https://fonts.gstatic.com/s/sixcaps/v23/6ae_4KGrU7VR7bNmabcS9XXaPCop.ttf",weight:400,isVariable:!1},{displayName:"Afacad",filename:"6NUX8FKMIQOGaw6qhqYLvO0cyA",category:"sans-serif",url:"https://fonts.gstatic.com/s/afacad/v3/6NUX8FKMIQOGaw6qhqYLvO0cyA.ttf",weight:400,isVariable:!0},{displayName:"Itim",filename:"0nknC9ziJOYewARKkc7ZdwU",category:"handwriting",url:"https://fonts.gstatic.com/s/itim/v16/0nknC9ziJOYewARKkc7ZdwU.ttf",weight:400,isVariable:!1},{displayName:"Khula",filename:"OpNCnoEOns3V7FcJpA_chzJ0",category:"sans-serif",url:"https://fonts.gstatic.com/s/khula/v17/OpNCnoEOns3V7FcJpA_chzJ0.ttf",weight:400,isVariable:!1},{displayName:"Besley",filename:"PlI8FlO1MaNwaNGMWw2G-H1cnA",category:"serif",url:"https://fonts.gstatic.com/s/besley/v22/PlI8FlO1MaNwaNGMWw2G-H1cnA.ttf",weight:400,isVariable:!0},{displayName:"Averia Serif Libre",filename:"neIWzD2ms4wxr6GvjeD0X88SHPyX2xY-pQGOyYw2fw",category:"display",url:"https://fonts.gstatic.com/s/averiaseriflibre/v19/neIWzD2ms4wxr6GvjeD0X88SHPyX2xY-pQGOyYw2fw.ttf",weight:400,isVariable:!1},{displayName:"Akshar",filename:"Yq6V-LyHWTfz9rGyoxRktOdClg",category:"sans-serif",url:"https://fonts.gstatic.com/s/akshar/v17/Yq6V-LyHWTfz9rGyoxRktOdClg.ttf",weight:400,isVariable:!0},{displayName:"Coda",filename:"SLXHc1jY5nQ8JUIMapaN39I",category:"display",url:"https://fonts.gstatic.com/s/coda/v22/SLXHc1jY5nQ8JUIMapaN39I.ttf",weight:400,isVariable:!1},{displayName:"Damion",filename:"hv-XlzJ3KEUe_YZUbWY3MTFgVg",category:"handwriting",url:"https://fonts.gstatic.com/s/damion/v15/hv-XlzJ3KEUe_YZUbWY3MTFgVg.ttf",weight:400,isVariable:!1},{displayName:"Sofia Sans Extra Condensed",filename:"raxoHjafvdAIOju4GcIfJH0i7zi50X3zRtuLNiMS0cSpLE9Ukzek",category:"sans-serif",url:"https://fonts.gstatic.com/s/sofiasansextracondensed/v6/raxoHjafvdAIOju4GcIfJH0i7zi50X3zRtuLNiMS0cSpLE9Ukzek.ttf",weight:400,isVariable:!0},{displayName:"Sarala",filename:"uK_y4riEZv4o1w9RCh0TMv6EXw",category:"sans-serif",url:"https://fonts.gstatic.com/s/sarala/v14/uK_y4riEZv4o1w9RCh0TMv6EXw.ttf",weight:400,isVariable:!1},{displayName:"Shippori Mincho B1",filename:"wXK2E2wCr44tulPdnn-xbIpJ9RgT9-nyjqBr1lO97Q",category:"serif",url:"https://fonts.gstatic.com/s/shipporiminchob1/v24/wXK2E2wCr44tulPdnn-xbIpJ9RgT9-nyjqBr1lO97Q.ttf",weight:400,isVariable:!1},{displayName:"Zen Kaku Gothic Antique",filename:"6qLQKYkHvh-nlUpKPAdoVFBtfxDzIn1eCzpB21-g3RKjc4d7",category:"sans-serif",url:"https://fonts.gstatic.com/s/zenkakugothicantique/v18/6qLQKYkHvh-nlUpKPAdoVFBtfxDzIn1eCzpB21-g3RKjc4d7.ttf",weight:400,isVariable:!1},{displayName:"Alegreya Sans SC",filename:"mtGh4-RGJqfMvt7P8FUr0Q1j-Hf1Nk5v9ixALYs",category:"sans-serif",url:"https://fonts.gstatic.com/s/alegreyasanssc/v24/mtGh4-RGJqfMvt7P8FUr0Q1j-Hf1Nk5v9ixALYs.ttf",weight:400,isVariable:!1},{displayName:"Adamina",filename:"j8_r6-DH1bjoc-dwu-reETl4Bno",category:"serif",url:"https://fonts.gstatic.com/s/adamina/v22/j8_r6-DH1bjoc-dwu-reETl4Bno.ttf",weight:400,isVariable:!1},{displayName:"Secular One",filename:"8QINdiTajsj_87rMuMdKypDlMul7LJpK",category:"sans-serif",url:"https://fonts.gstatic.com/s/secularone/v14/8QINdiTajsj_87rMuMdKypDlMul7LJpK.ttf",weight:400,isVariable:!1},{displayName:"Shrikhand",filename:"a8IbNovtLWfR7T7bMJwbBIiQ0zhMtA",category:"display",url:"https://fonts.gstatic.com/s/shrikhand/v17/a8IbNovtLWfR7T7bMJwbBIiQ0zhMtA.ttf",weight:400,isVariable:!1},{displayName:"Yrsa",filename:"wlp-gwnQFlxs5QvV-IwQwWc",category:"serif",url:"https://fonts.gstatic.com/s/yrsa/v25/wlp-gwnQFlxs5QvV-IwQwWc.ttf",weight:400,isVariable:!0},{displayName:"Allison",filename:"X7nl4b88AP2nkbvZOCaQ4MTgAgk",category:"handwriting",url:"https://fonts.gstatic.com/s/allison/v13/X7nl4b88AP2nkbvZOCaQ4MTgAgk.ttf",weight:400,isVariable:!1},{displayName:"Bevan",filename:"4iCj6KZ0a9NXjF8aUir7tlSJ",category:"serif",url:"https://fonts.gstatic.com/s/bevan/v26/4iCj6KZ0a9NXjF8aUir7tlSJ.ttf",weight:400,isVariable:!1},{displayName:"Balsamiq Sans",filename:"P5sEzZiAbNrN8SB3lQQX7Pnc8dkdIYdNHzs",category:"display",url:"https://fonts.gstatic.com/s/balsamiqsans/v15/P5sEzZiAbNrN8SB3lQQX7Pnc8dkdIYdNHzs.ttf",weight:400,isVariable:!1},{displayName:"Jua",filename:"co3KmW9ljjAjc-DZCsKgsg",category:"sans-serif",url:"https://fonts.gstatic.com/s/jua/v18/co3KmW9ljjAjc-DZCsKgsg.ttf",weight:400,isVariable:!1},{displayName:"Chewy",filename:"uK_94ruUb-k-wk5xIDMfO-ed",category:"display",url:"https://fonts.gstatic.com/s/chewy/v18/uK_94ruUb-k-wk5xIDMfO-ed.ttf",weight:400,isVariable:!1},{displayName:"Leckerli One",filename:"V8mCoQH8VCsNttEnxnGQ-1itLZxcBtItFw",category:"handwriting",url:"https://fonts.gstatic.com/s/leckerlione/v22/V8mCoQH8VCsNttEnxnGQ-1itLZxcBtItFw.ttf",weight:400,isVariable:!1},{displayName:"Nixie One",filename:"lW-8wjkKLXjg5y2o2uUoUOFzpS-yLw",category:"display",url:"https://fonts.gstatic.com/s/nixieone/v17/lW-8wjkKLXjg5y2o2uUoUOFzpS-yLw.ttf",weight:400,isVariable:!1},{displayName:"Reddit Sans",filename:"EYq3maFOxq1T_-ETdN7EKTNscZef2mNE",category:"sans-serif",url:"https://fonts.gstatic.com/s/redditsans/v6/EYq3maFOxq1T_-ETdN7EKTNscZef2mNE.ttf",weight:400,isVariable:!0},{displayName:"Mrs Saint Delafield",filename:"v6-IGZDIOVXH9xtmTZfRagunqBw5WC62cK4tLsubB2w",category:"handwriting",url:"https://fonts.gstatic.com/s/mrssaintdelafield/v14/v6-IGZDIOVXH9xtmTZfRagunqBw5WC62cK4tLsubB2w.ttf",weight:400,isVariable:!1},{displayName:"BenchNine",filename:"ahcbv8612zF4jxrwMosrV8N1jU2gog",category:"sans-serif",url:"https://fonts.gstatic.com/s/benchnine/v17/ahcbv8612zF4jxrwMosrV8N1jU2gog.ttf",weight:400,isVariable:!1},{displayName:"Rochester",filename:"6ae-4KCqVa4Zy6Fif-Uy31vWNTMwoQ",category:"handwriting",url:"https://fonts.gstatic.com/s/rochester/v24/6ae-4KCqVa4Zy6Fif-Uy31vWNTMwoQ.ttf",weight:400,isVariable:!1},{displayName:"Atkinson Hyperlegible Next",filename:"NaPNcYPdHfdVxJw0IfIP0lvYFqijb-UxCtm5_wdGsdiOlXuWpVZ-",category:"sans-serif",url:"https://fonts.gstatic.com/s/atkinsonhyperlegiblenext/v7/NaPNcYPdHfdVxJw0IfIP0lvYFqijb-UxCtm5_wdGsdiOlXuWpVZ-.ttf",weight:400,isVariable:!0},{displayName:"Ms Madi",filename:"HTxsL2UxNnOji5E1N-DPiI7QAYo",category:"handwriting",url:"https://fonts.gstatic.com/s/msmadi/v2/HTxsL2UxNnOji5E1N-DPiI7QAYo.ttf",weight:400,isVariable:!1},{displayName:"Palanquin",filename:"9XUnlJ90n1fBFg7ceXwsdlFMzLC2Zw",category:"sans-serif",url:"https://fonts.gstatic.com/s/palanquin/v17/9XUnlJ90n1fBFg7ceXwsdlFMzLC2Zw.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Malayalam",filename:"sJoY3K5XjsSdcnzn071rL37lpAOsUThnF5k90TZO69o",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmalayalam/v29/sJoY3K5XjsSdcnzn071rL37lpAOsUThnF5k90TZO69o.ttf",weight:400,isVariable:!0},{displayName:"Lateef",filename:"hESw6XVnNCxEvkbMpheEZo_H_w",category:"serif",url:"https://fonts.gstatic.com/s/lateef/v35/hESw6XVnNCxEvkbMpheEZo_H_w.ttf",weight:400,isVariable:!1},{displayName:"La Belle Aurore",filename:"RrQIbot8-mNYKnGNDkWlocovHeIIG-eFNVmULg",category:"handwriting",url:"https://fonts.gstatic.com/s/labelleaurore/v23/RrQIbot8-mNYKnGNDkWlocovHeIIG-eFNVmULg.ttf",weight:400,isVariable:!1},{displayName:"Sansita",filename:"QldONTRRphEb_-V7HBm7TXFf3qw",category:"sans-serif",url:"https://fonts.gstatic.com/s/sansita/v12/QldONTRRphEb_-V7HBm7TXFf3qw.ttf",weight:400,isVariable:!1},{displayName:"Do Hyeon",filename:"TwMN-I8CRRU2zM86HFE3ZwaH__-C",category:"sans-serif",url:"https://fonts.gstatic.com/s/dohyeon/v21/TwMN-I8CRRU2zM86HFE3ZwaH__-C.ttf",weight:400,isVariable:!1},{displayName:"IBM Plex Sans Thai",filename:"m8JPje1VVIzcq1HzJq2AEdo2Tj_qvLq8DtwhZcNaUg",category:"sans-serif",url:"https://fonts.gstatic.com/s/ibmplexsansthai/v11/m8JPje1VVIzcq1HzJq2AEdo2Tj_qvLq8DtwhZcNaUg.ttf",weight:400,isVariable:!1},{displayName:"Reem Kufi",filename:"2sDcZGJLip7W2J7v7wQDb2-4C7wFZQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/reemkufi/v28/2sDcZGJLip7W2J7v7wQDb2-4C7wFZQ.ttf",weight:400,isVariable:!0},{displayName:"Tektur",filename:"XoHn2YHtS7q969kNAR4Jt9Yxlw",category:"display",url:"https://fonts.gstatic.com/s/tektur/v6/XoHn2YHtS7q969kNAR4Jt9Yxlw.ttf",weight:400,isVariable:!0},{displayName:"Kaisei Decol",filename:"bMrwmSqP45sidWf3QmfFW6iyW1EP22OjoA",category:"serif",url:"https://fonts.gstatic.com/s/kaiseidecol/v11/bMrwmSqP45sidWf3QmfFW6iyW1EP22OjoA.ttf",weight:400,isVariable:!1},{displayName:"Basic",filename:"xfu_0WLxV2_XKQN34lDVyR7D",category:"sans-serif",url:"https://fonts.gstatic.com/s/basic/v18/xfu_0WLxV2_XKQN34lDVyR7D.ttf",weight:400,isVariable:!1},{displayName:"Judson",filename:"FeVRS0Fbvbc14VxRD7N01bV7kg",category:"serif",url:"https://fonts.gstatic.com/s/judson/v20/FeVRS0Fbvbc14VxRD7N01bV7kg.ttf",weight:400,isVariable:!1},{displayName:"Wix Madefor Text",filename:"-W_lXI_oSymQ8Qj-Apx3HGN_Hu1RViIb5gwfsj4",category:"sans-serif",url:"https://fonts.gstatic.com/s/wixmadefortext/v17/-W_lXI_oSymQ8Qj-Apx3HGN_Hu1RViIb5gwfsj4.ttf",weight:400,isVariable:!0},{displayName:"Pirata One",filename:"I_urMpiDvgLdLh0fAtoftiiEr5_BdZ8",category:"display",url:"https://fonts.gstatic.com/s/pirataone/v23/I_urMpiDvgLdLh0fAtoftiiEr5_BdZ8.ttf",weight:400,isVariable:!1},{displayName:"Bona Nova SC",filename:"mem5YaShyGWDiYdPG_c1Af4-VeJoCqeDjg",category:"serif",url:"https://fonts.gstatic.com/s/bonanovasc/v1/mem5YaShyGWDiYdPG_c1Af4-VeJoCqeDjg.ttf",weight:400,isVariable:!1},{displayName:"Covered By Your Grace",filename:"QGYwz-AZahWOJJI9kykWW9mD6opopoqXSOS0FgItq6bFIg",category:"handwriting",url:"https://fonts.gstatic.com/s/coveredbyyourgrace/v17/QGYwz-AZahWOJJI9kykWW9mD6opopoqXSOS0FgItq6bFIg.ttf",weight:400,isVariable:!1},{displayName:"Potta One",filename:"FeVSS05Bp6cy7xI-YfxQ3Z5nm29Gww",category:"display",url:"https://fonts.gstatic.com/s/pottaone/v19/FeVSS05Bp6cy7xI-YfxQ3Z5nm29Gww.ttf",weight:400,isVariable:!1},{displayName:"Fredericka the Great",filename:"9Bt33CxNwt7aOctW2xjbCstzwVKsIBVV-9Skz7Ylch2L",category:"display",url:"https://fonts.gstatic.com/s/frederickathegreat/v23/9Bt33CxNwt7aOctW2xjbCstzwVKsIBVV-9Skz7Ylch2L.ttf",weight:400,isVariable:!1},{displayName:"Livvic",filename:"rnCp-x1S2hzjrlfnb-k6unzeSA",category:"sans-serif",url:"https://fonts.gstatic.com/s/livvic/v15/rnCp-x1S2hzjrlfnb-k6unzeSA.ttf",weight:400,isVariable:!1},{displayName:"Spline Sans",filename:"_6_7ED73Uf-2WfU2LzycEYAlkiw_SQ5j",category:"sans-serif",url:"https://fonts.gstatic.com/s/splinesans/v16/_6_7ED73Uf-2WfU2LzycEYAlkiw_SQ5j.ttf",weight:400,isVariable:!0},{displayName:"Hachi Maru Pop",filename:"HI_TiYoRLqpLrEiMAuO9Ysfz7rW1EM_btd8u",category:"handwriting",url:"https://fonts.gstatic.com/s/hachimarupop/v23/HI_TiYoRLqpLrEiMAuO9Ysfz7rW1EM_btd8u.ttf",weight:400,isVariable:!1},{displayName:"Wix Madefor Display",filename:"SZcl3EX9IbbyeJ8aOluD52KXgUA_7Ed1OVbkA0VeBNE",category:"sans-serif",url:"https://fonts.gstatic.com/s/wixmadefordisplay/v12/SZcl3EX9IbbyeJ8aOluD52KXgUA_7Ed1OVbkA0VeBNE.ttf",weight:400,isVariable:!0},{displayName:"Nova Square",filename:"RrQUbo9-9DV7b06QHgSWsZhARYMgGtWA",category:"display",url:"https://fonts.gstatic.com/s/novasquare/v27/RrQUbo9-9DV7b06QHgSWsZhARYMgGtWA.ttf",weight:400,isVariable:!1},{displayName:"Funnel Sans",filename:"OpNIno8Dg9bX6Bsp3Wq69Qp1dBnKyl7c",category:"sans-serif",url:"https://fonts.gstatic.com/s/funnelsans/v3/OpNIno8Dg9bX6Bsp3Wq69Qp1dBnKyl7c.ttf",weight:400,isVariable:!0},{displayName:"Londrina Solid",filename:"flUhRq6sw40kQEJxWNgkLuudGcNZIhI8tIHh",category:"display",url:"https://fonts.gstatic.com/s/londrinasolid/v19/flUhRq6sw40kQEJxWNgkLuudGcNZIhI8tIHh.ttf",weight:400,isVariable:!1},{displayName:"MuseoModerno",filename:"zrfi0HnU0_7wWdMrFcWqSEXVXAPqgALaow",category:"display",url:"https://fonts.gstatic.com/s/museomoderno/v29/zrfi0HnU0_7wWdMrFcWqSEXVXAPqgALaow.ttf",weight:400,isVariable:!0},{displayName:"Rufina",filename:"Yq6V-LyURyLy-aKyoxRktOdClg",category:"serif",url:"https://fonts.gstatic.com/s/rufina/v17/Yq6V-LyURyLy-aKyoxRktOdClg.ttf",weight:400,isVariable:!1},{displayName:"Overpass Mono",filename:"_Xmq-H86tzKDdAPa-KPQZ-AC5ii-t_-2G38",category:"monospace",url:"https://fonts.gstatic.com/s/overpassmono/v21/_Xmq-H86tzKDdAPa-KPQZ-AC5ii-t_-2G38.ttf",weight:400,isVariable:!0},{displayName:"Allerta Stencil",filename:"HTx0L209KT-LmIE9N7OR6eiycOeF-zz313DuvQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/allertastencil/v24/HTx0L209KT-LmIE9N7OR6eiycOeF-zz313DuvQ.ttf",weight:400,isVariable:!1},{displayName:"Armata",filename:"gokvH63_HV5jQ-E9lD53Q2u_mQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/armata/v21/gokvH63_HV5jQ-E9lD53Q2u_mQ.ttf",weight:400,isVariable:!1},{displayName:"Aboreto",filename:"5DCXAKLhwDDQ4N8blKTeA2yuxSY",category:"display",url:"https://fonts.gstatic.com/s/aboreto/v2/5DCXAKLhwDDQ4N8blKTeA2yuxSY.ttf",weight:400,isVariable:!1},{displayName:"Just Another Hand",filename:"845CNN4-AJyIGvIou-6yJKyptyOpOcr_BmmlS5aw",category:"handwriting",url:"https://fonts.gstatic.com/s/justanotherhand/v21/845CNN4-AJyIGvIou-6yJKyptyOpOcr_BmmlS5aw.ttf",weight:400,isVariable:!1},{displayName:"K2D",filename:"J7aTnpF2V0ETd68tnLcg7w",category:"sans-serif",url:"https://fonts.gstatic.com/s/k2d/v13/J7aTnpF2V0ETd68tnLcg7w.ttf",weight:400,isVariable:!1},{displayName:"Palanquin Dark",filename:"xn75YHgl1nqmANMB-26xC7yuF_6OTEo9VtfE",category:"sans-serif",url:"https://fonts.gstatic.com/s/palanquindark/v17/xn75YHgl1nqmANMB-26xC7yuF_6OTEo9VtfE.ttf",weight:400,isVariable:!1},{displayName:"Kreon",filename:"t5tuIRIUKY-TFEXAeWm_rb7p",category:"serif",url:"https://fonts.gstatic.com/s/kreon/v40/t5tuIRIUKY-TFEXAeWm_rb7p.ttf",weight:400,isVariable:!0},{displayName:"Grandstander",filename:"ga6KawtA-GpSsTWrnNHPCSIWbTq6fMRRMw",category:"display",url:"https://fonts.gstatic.com/s/grandstander/v20/ga6KawtA-GpSsTWrnNHPCSIWbTq6fMRRMw.ttf",weight:400,isVariable:!0},{displayName:"Gloock",filename:"Iurb6YFw84WUY4N5jxylBrdRjQ",category:"serif",url:"https://fonts.gstatic.com/s/gloock/v8/Iurb6YFw84WUY4N5jxylBrdRjQ.ttf",weight:400,isVariable:!1},{displayName:"Neucha",filename:"q5uGsou0JOdh94bvugNsCxVEgA",category:"handwriting",url:"https://fonts.gstatic.com/s/neucha/v18/q5uGsou0JOdh94bvugNsCxVEgA.ttf",weight:400,isVariable:!1},{displayName:"Charm",filename:"7cHmv4oii5K0MeYvIe804WIo",category:"handwriting",url:"https://fonts.gstatic.com/s/charm/v14/7cHmv4oii5K0MeYvIe804WIo.ttf",weight:400,isVariable:!1},{displayName:"Marcellus SC",filename:"ke8iOgUHP1dg-Rmi6RWjbLEPgdydGKikhA",category:"serif",url:"https://fonts.gstatic.com/s/marcellussc/v14/ke8iOgUHP1dg-Rmi6RWjbLEPgdydGKikhA.ttf",weight:400,isVariable:!1},{displayName:"Fahkwang",filename:"Noax6Uj3zpmBOgbNpNqPsr1ZPTZ4",category:"sans-serif",url:"https://fonts.gstatic.com/s/fahkwang/v18/Noax6Uj3zpmBOgbNpNqPsr1ZPTZ4.ttf",weight:400,isVariable:!1},{displayName:"Shadows Into Light Two",filename:"4iC86LVlZsRSjQhpWGedwyOoW-0A6_kpsyNmlAvNGLNnIF0",category:"handwriting",url:"https://fonts.gstatic.com/s/shadowsintolighttwo/v19/4iC86LVlZsRSjQhpWGedwyOoW-0A6_kpsyNmlAvNGLNnIF0.ttf",weight:400,isVariable:!1},{displayName:"Electrolize",filename:"cIf5Ma1dtE0zSiGSiED7AUEGso5tQafB",category:"sans-serif",url:"https://fonts.gstatic.com/s/electrolize/v20/cIf5Ma1dtE0zSiGSiED7AUEGso5tQafB.ttf",weight:400,isVariable:!1},{displayName:"Ovo",filename:"yYLl0h7Wyfzjy4Q5_3WVxA",category:"serif",url:"https://fonts.gstatic.com/s/ovo/v18/yYLl0h7Wyfzjy4Q5_3WVxA.ttf",weight:400,isVariable:!1},{displayName:"Yatra One",filename:"C8ch4copsHzj8p7NaF0xw1OBbRDvXw",category:"display",url:"https://fonts.gstatic.com/s/yatraone/v16/C8ch4copsHzj8p7NaF0xw1OBbRDvXw.ttf",weight:400,isVariable:!1},{displayName:"Days One",filename:"mem9YaCnxnKRiYZOCLYVeLkWVNBt",category:"sans-serif",url:"https://fonts.gstatic.com/s/daysone/v19/mem9YaCnxnKRiYZOCLYVeLkWVNBt.ttf",weight:400,isVariable:!1},{displayName:"Lemonada",filename:"0QIjMXFD9oygTWy_R_tOtfWm8qTX",category:"display",url:"https://fonts.gstatic.com/s/lemonada/v31/0QIjMXFD9oygTWy_R_tOtfWm8qTX.ttf",weight:400,isVariable:!0},{displayName:"Pattaya",filename:"ea8ZadcqV_zkHY-XNdCn92ZEmVs",category:"sans-serif",url:"https://fonts.gstatic.com/s/pattaya/v18/ea8ZadcqV_zkHY-XNdCn92ZEmVs.ttf",weight:400,isVariable:!1},{displayName:"Italiana",filename:"QldNNTtLsx4E__B0XTmRY31Wx7Vv",category:"sans-serif",url:"https://fonts.gstatic.com/s/italiana/v21/QldNNTtLsx4E__B0XTmRY31Wx7Vv.ttf",weight:400,isVariable:!1},{displayName:"Kiwi Maru",filename:"R70YjykGkuuDep-hRg6YmACQXzLhTg",category:"serif",url:"https://fonts.gstatic.com/s/kiwimaru/v20/R70YjykGkuuDep-hRg6YmACQXzLhTg.ttf",weight:400,isVariable:!1},{displayName:"Sintony",filename:"XoHm2YDqR7-98cVUITQnu98ojjs",category:"sans-serif",url:"https://fonts.gstatic.com/s/sintony/v17/XoHm2YDqR7-98cVUITQnu98ojjs.ttf",weight:400,isVariable:!1},{displayName:"Alef",filename:"FeVfS0NQpLYgrjJbC5FxxbU",category:"sans-serif",url:"https://fonts.gstatic.com/s/alef/v24/FeVfS0NQpLYgrjJbC5FxxbU.ttf",weight:400,isVariable:!1},{displayName:"Chonburi",filename:"8AtqGs-wOpGRTBq66IWaFr3biAfZ",category:"display",url:"https://fonts.gstatic.com/s/chonburi/v14/8AtqGs-wOpGRTBq66IWaFr3biAfZ.ttf",weight:400,isVariable:!1},{displayName:"Laila",filename:"LYjMdG_8nE8jDIRdiidIrEIu",category:"serif",url:"https://fonts.gstatic.com/s/laila/v20/LYjMdG_8nE8jDIRdiidIrEIu.ttf",weight:400,isVariable:!1},{displayName:"Aclonica",filename:"K2FyfZJVlfNNSEBXGb7TCI6oBjLz",category:"sans-serif",url:"https://fonts.gstatic.com/s/aclonica/v25/K2FyfZJVlfNNSEBXGb7TCI6oBjLz.ttf",weight:400,isVariable:!1},{displayName:"Corben",filename:"LYjDdGzzklQtCMp9oAlEpVs3VQ",category:"display",url:"https://fonts.gstatic.com/s/corben/v23/LYjDdGzzklQtCMp9oAlEpVs3VQ.ttf",weight:400,isVariable:!1},{displayName:"Cabin Sketch",filename:"QGYpz_kZZAGCONcK2A4bGOjMn9JM6fnuKg",category:"display",url:"https://fonts.gstatic.com/s/cabinsketch/v23/QGYpz_kZZAGCONcK2A4bGOjMn9JM6fnuKg.ttf",weight:400,isVariable:!1},{displayName:"Darker Grotesque",filename:"U9MH6cuh-mLQlC4BKCtayOfARkSVm7beJWcKUOI",category:"sans-serif",url:"https://fonts.gstatic.com/s/darkergrotesque/v10/U9MH6cuh-mLQlC4BKCtayOfARkSVm7beJWcKUOI.ttf",weight:400,isVariable:!0},{displayName:"Enriqueta",filename:"goksH6L7AUFrRvV44HVTS0CjkP1Yog",category:"serif",url:"https://fonts.gstatic.com/s/enriqueta/v19/goksH6L7AUFrRvV44HVTS0CjkP1Yog.ttf",weight:400,isVariable:!1},{displayName:"Stardos Stencil",filename:"X7n94bcuGPC8hrvEOHXOgaKCc2TR71R3tiSx0g",category:"display",url:"https://fonts.gstatic.com/s/stardosstencil/v15/X7n94bcuGPC8hrvEOHXOgaKCc2TR71R3tiSx0g.ttf",weight:400,isVariable:!1},{displayName:"Kameron",filename:"vm82dR7vXErQxuznsL4wL-XIYH8",category:"serif",url:"https://fonts.gstatic.com/s/kameron/v18/vm82dR7vXErQxuznsL4wL-XIYH8.ttf",weight:400,isVariable:!0},{displayName:"Bowlby One SC",filename:"DtVlJxerQqQm37tzN3wMug9Pzgj8owhNjuE",category:"display",url:"https://fonts.gstatic.com/s/bowlbyonesc/v27/DtVlJxerQqQm37tzN3wMug9Pzgj8owhNjuE.ttf",weight:400,isVariable:!1},{displayName:"Karma",filename:"va9I4kzAzMZRGIBvS-J3kbDP",category:"serif",url:"https://fonts.gstatic.com/s/karma/v18/va9I4kzAzMZRGIBvS-J3kbDP.ttf",weight:400,isVariable:!1},{displayName:"Alatsi",filename:"TK3iWkUJAxQ2nLNGHjUHte5fKg",category:"sans-serif",url:"https://fonts.gstatic.com/s/alatsi/v14/TK3iWkUJAxQ2nLNGHjUHte5fKg.ttf",weight:400,isVariable:!1},{displayName:"BIZ UDGothic",filename:"daafSTouBF7RUjnbt8p3LuKttQN98z_MbQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/bizudgothic/v12/daafSTouBF7RUjnbt8p3LuKttQN98z_MbQ.ttf",weight:400,isVariable:!1},{displayName:"M PLUS 2",filename:"7Au8p_Eq3gO_OGbGGgLW4EAFOUEH",category:"sans-serif",url:"https://fonts.gstatic.com/s/mplus2/v15/7Au8p_Eq3gO_OGbGGgLW4EAFOUEH.ttf",weight:400,isVariable:!0},{displayName:"Mali",filename:"N0ba2SRONuN4eCrODlxxOd8",category:"handwriting",url:"https://fonts.gstatic.com/s/mali/v13/N0ba2SRONuN4eCrODlxxOd8.ttf",weight:400,isVariable:!1},{displayName:"Rozha One",filename:"AlZy_zVFtYP12Zncg2khdXf4XB0Tow",category:"serif",url:"https://fonts.gstatic.com/s/rozhaone/v17/AlZy_zVFtYP12Zncg2khdXf4XB0Tow.ttf",weight:400,isVariable:!1},{displayName:"Red Rose",filename:"QdVVSTYiLBjouPgEUbLkkwVoknQx",category:"display",url:"https://fonts.gstatic.com/s/redrose/v25/QdVVSTYiLBjouPgEUbLkkwVoknQx.ttf",weight:400,isVariable:!0},{displayName:"Limelight",filename:"XLYkIZL7aopJVbZJHDuYPeNGrnY2TA",category:"display",url:"https://fonts.gstatic.com/s/limelight/v21/XLYkIZL7aopJVbZJHDuYPeNGrnY2TA.ttf",weight:400,isVariable:!1},{displayName:"Cormorant Upright",filename:"VuJrdM3I2Y35poFONtLdafkUCHw1y2vVjjTkeMnz",category:"serif",url:"https://fonts.gstatic.com/s/cormorantupright/v19/VuJrdM3I2Y35poFONtLdafkUCHw1y2vVjjTkeMnz.ttf",weight:400,isVariable:!1},{displayName:"Herr Von Muellerhoff",filename:"WBL6rFjRZkREW8WqmCWYLgCkQKXb4CAft3c6_qJY3QPQ",category:"handwriting",url:"https://fonts.gstatic.com/s/herrvonmuellerhoff/v23/WBL6rFjRZkREW8WqmCWYLgCkQKXb4CAft3c6_qJY3QPQ.ttf",weight:400,isVariable:!1},{displayName:"Anek Bangla",filename:"_gP81R38qTExHg-17BhM6mSxYPp7oSNy",category:"sans-serif",url:"https://fonts.gstatic.com/s/anekbangla/v16/_gP81R38qTExHg-17BhM6mSxYPp7oSNy.ttf",weight:400,isVariable:!0},{displayName:"Anek Latin",filename:"co3DmWZulTRoU4a8dqrWk6Pjp3Di8U0",category:"sans-serif",url:"https://fonts.gstatic.com/s/aneklatin/v11/co3DmWZulTRoU4a8dqrWk6Pjp3Di8U0.ttf",weight:400,isVariable:!0},{displayName:"Yuji Mai",filename:"ZgNQjPxdJ7DEHrS0gC38hmHmNpCO",category:"serif",url:"https://fonts.gstatic.com/s/yujimai/v8/ZgNQjPxdJ7DEHrS0gC38hmHmNpCO.ttf",weight:400,isVariable:!1},{displayName:"Goudy Bookletter 1911",filename:"sykt-z54laciWfKv-kX8krex0jDiD2HbY6I5tRbXZ4IXAA",category:"serif",url:"https://fonts.gstatic.com/s/goudybookletter1911/v21/sykt-z54laciWfKv-kX8krex0jDiD2HbY6I5tRbXZ4IXAA.ttf",weight:400,isVariable:!1},{displayName:"Nanum Brush Script",filename:"wXK2E2wfpokopxzthSqPbcR5_gVaxazyjqBr1lO97Q",category:"handwriting",url:"https://fonts.gstatic.com/s/nanumbrushscript/v26/wXK2E2wfpokopxzthSqPbcR5_gVaxazyjqBr1lO97Q.ttf",weight:400,isVariable:!1},{displayName:"Inria Serif",filename:"fC1lPYxPY3rXxEndZJAzN0SsfSzNr0Ck",category:"serif",url:"https://fonts.gstatic.com/s/inriaserif/v18/fC1lPYxPY3rXxEndZJAzN0SsfSzNr0Ck.ttf",weight:400,isVariable:!1},{displayName:"Podkova",filename:"K2FxfZ1EmftJSV9VWJ75JoKhHys",category:"serif",url:"https://fonts.gstatic.com/s/podkova/v33/K2FxfZ1EmftJSV9VWJ75JoKhHys.ttf",weight:400,isVariable:!0},{displayName:"Rye",filename:"r05XGLJT86YDFpTsXOqx4w",category:"display",url:"https://fonts.gstatic.com/s/rye/v17/r05XGLJT86YDFpTsXOqx4w.ttf",weight:400,isVariable:!1},{displayName:"Mandali",filename:"LhWlMVbYOfASNfNUVFk1ZPdcKtA",category:"sans-serif",url:"https://fonts.gstatic.com/s/mandali/v16/LhWlMVbYOfASNfNUVFk1ZPdcKtA.ttf",weight:400,isVariable:!1},{displayName:"Protest Revolution",filename:"11hcGofZ0kXBbxQXFB7MJsjtqnVw6Z2s8PIzTG1nQw",category:"display",url:"https://fonts.gstatic.com/s/protestrevolution/v2/11hcGofZ0kXBbxQXFB7MJsjtqnVw6Z2s8PIzTG1nQw.ttf",weight:400,isVariable:!1},{displayName:"Gantari",filename:"jVyK7nvyB2HL8iZyFEUkpiwFR80",category:"sans-serif",url:"https://fonts.gstatic.com/s/gantari/v4/jVyK7nvyB2HL8iZyFEUkpiwFR80.ttf",weight:400,isVariable:!0},{displayName:"Major Mono Display",filename:"RWmVoLyb5fEqtsfBX9PDZIGr2tFubRhLCn2QIndPww",category:"monospace",url:"https://fonts.gstatic.com/s/majormonodisplay/v18/RWmVoLyb5fEqtsfBX9PDZIGr2tFubRhLCn2QIndPww.ttf",weight:400,isVariable:!1},{displayName:"Lexend Exa",filename:"UMBXrPdOoHOnxExyjdBeWirXArM58BY",category:"sans-serif",url:"https://fonts.gstatic.com/s/lexendexa/v35/UMBXrPdOoHOnxExyjdBeWirXArM58BY.ttf",weight:400,isVariable:!0},{displayName:"Nobile",filename:"m8JTjflSeaOVl1i2XqfXeLVdbw",category:"sans-serif",url:"https://fonts.gstatic.com/s/nobile/v19/m8JTjflSeaOVl1i2XqfXeLVdbw.ttf",weight:400,isVariable:!1},{displayName:"PT Serif Caption",filename:"ieVl2ZhbGCW-JoW6S34pSDpqYKU059WxDCs5cvI",category:"serif",url:"https://fonts.gstatic.com/s/ptserifcaption/v18/ieVl2ZhbGCW-JoW6S34pSDpqYKU059WxDCs5cvI.ttf",weight:400,isVariable:!1},{displayName:"Suez One",filename:"taiJGmd_EZ6rqscQgNFJkIqg-I0w",category:"serif",url:"https://fonts.gstatic.com/s/suezone/v15/taiJGmd_EZ6rqscQgNFJkIqg-I0w.ttf",weight:400,isVariable:!1},{displayName:"Caudex",filename:"esDQ311QOP6BJUrIyviAnb4eEw",category:"serif",url:"https://fonts.gstatic.com/s/caudex/v19/esDQ311QOP6BJUrIyviAnb4eEw.ttf",weight:400,isVariable:!1},{displayName:"Fustat",filename:"NaPZcZ_aHO9Iy5t7T_hDoyqlZQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/fustat/v4/NaPZcZ_aHO9Iy5t7T_hDoyqlZQ.ttf",weight:400,isVariable:!0},{displayName:"Castoro",filename:"1q2GY5yMCld3-O4cHYhEzOYenEU",category:"serif",url:"https://fonts.gstatic.com/s/castoro/v20/1q2GY5yMCld3-O4cHYhEzOYenEU.ttf",weight:400,isVariable:!1},{displayName:"Amiko",filename:"WwkQxPq1DFK04tqlc17MMZgJ",category:"sans-serif",url:"https://fonts.gstatic.com/s/amiko/v15/WwkQxPq1DFK04tqlc17MMZgJ.ttf",weight:400,isVariable:!1},{displayName:"Antic",filename:"TuGfUVB8XY5DRaZLodgzydtk",category:"sans-serif",url:"https://fonts.gstatic.com/s/antic/v20/TuGfUVB8XY5DRaZLodgzydtk.ttf",weight:400,isVariable:!1},{displayName:"Candal",filename:"XoHn2YH6T7-t_8cNAR4Jt9Yxlw",category:"sans-serif",url:"https://fonts.gstatic.com/s/candal/v16/XoHn2YH6T7-t_8cNAR4Jt9Yxlw.ttf",weight:400,isVariable:!1},{displayName:"Glegoo",filename:"_Xmt-HQyrTKWaw2Ji6mZAI91xw",category:"serif",url:"https://fonts.gstatic.com/s/glegoo/v17/_Xmt-HQyrTKWaw2Ji6mZAI91xw.ttf",weight:400,isVariable:!1},{displayName:"Host Grotesk",filename:"co3BmWBnlCJ3U42vbbfdwMjpo1Ln4U3Qrw",category:"sans-serif",url:"https://fonts.gstatic.com/s/hostgrotesk/v5/co3BmWBnlCJ3U42vbbfdwMjpo1Ln4U3Qrw.ttf",weight:400,isVariable:!0},{displayName:"Athiti",filename:"pe0vMISdLIZIv1w4DBhWCtaiAg",category:"sans-serif",url:"https://fonts.gstatic.com/s/athiti/v14/pe0vMISdLIZIv1w4DBhWCtaiAg.ttf",weight:400,isVariable:!1},{displayName:"Proza Libre",filename:"LYjGdGHgj0k1DIQRyUEyyHovftvXWYyz",category:"sans-serif",url:"https://fonts.gstatic.com/s/prozalibre/v9/LYjGdGHgj0k1DIQRyUEyyHovftvXWYyz.ttf",weight:400,isVariable:!1},{displayName:"Bungee Spice",filename:"nwpTtK2nIhxE0q-IwgSpZBqCzyI-aMPF7Q",category:"display",url:"https://fonts.gstatic.com/s/bungeespice/v15/nwpTtK2nIhxE0q-IwgSpZBqCzyI-aMPF7Q.ttf",weight:400,isVariable:!1},{displayName:"Brygada 1918",filename:"pe0pMI6eKpdGqlF5LANrM--aA_Rue1UwVg",category:"serif",url:"https://fonts.gstatic.com/s/brygada1918/v27/pe0pMI6eKpdGqlF5LANrM--aA_Rue1UwVg.ttf",weight:400,isVariable:!0},{displayName:"Aldrich",filename:"MCoTzAn-1s3IGyJMZaAS3pP5H_E",category:"sans-serif",url:"https://fonts.gstatic.com/s/aldrich/v22/MCoTzAn-1s3IGyJMZaAS3pP5H_E.ttf",weight:400,isVariable:!1},{displayName:"Spinnaker",filename:"w8gYH2oyX-I0_rvR6Hmn3HwLqOqSBg",category:"sans-serif",url:"https://fonts.gstatic.com/s/spinnaker/v21/w8gYH2oyX-I0_rvR6Hmn3HwLqOqSBg.ttf",weight:400,isVariable:!1},{displayName:"Share",filename:"i7dEIFliZjKNF5VNHLq2cV5d",category:"sans-serif",url:"https://fonts.gstatic.com/s/share/v20/i7dEIFliZjKNF5VNHLq2cV5d.ttf",weight:400,isVariable:!1},{displayName:"Krona One",filename:"jAnEgHdjHcjgfIb1ZcUCMY-h3cWkWg",category:"sans-serif",url:"https://fonts.gstatic.com/s/kronaone/v15/jAnEgHdjHcjgfIb1ZcUCMY-h3cWkWg.ttf",weight:400,isVariable:!1},{displayName:"Hepta Slab",filename:"ea8cadoyU_jkHdalebHv025vhVKUE3E",category:"serif",url:"https://fonts.gstatic.com/s/heptaslab/v25/ea8cadoyU_jkHdalebHv025vhVKUE3E.ttf",weight:400,isVariable:!0},{displayName:"Sevillana",filename:"KFOlCnWFscmDt1Bfiy1vAx05IsDqlA",category:"display",url:"https://fonts.gstatic.com/s/sevillana/v25/KFOlCnWFscmDt1Bfiy1vAx05IsDqlA.ttf",weight:400,isVariable:!1},{displayName:"Caprasimo",filename:"esDT31JQOPuXIUGBp72klZUCGpG-GQ",category:"display",url:"https://fonts.gstatic.com/s/caprasimo/v6/esDT31JQOPuXIUGBp72klZUCGpG-GQ.ttf",weight:400,isVariable:!1},{displayName:"Oranienbaum",filename:"OZpHg_txtzZKMuXLIVrx-3zn7kz3dpHc",category:"serif",url:"https://fonts.gstatic.com/s/oranienbaum/v16/OZpHg_txtzZKMuXLIVrx-3zn7kz3dpHc.ttf",weight:400,isVariable:!1},{displayName:"Bellota Text",filename:"0FlTVP2VnlWS4f3-UE9hHXMB-dMOdS7sSg",category:"display",url:"https://fonts.gstatic.com/s/bellotatext/v20/0FlTVP2VnlWS4f3-UE9hHXMB-dMOdS7sSg.ttf",weight:400,isVariable:!1},{displayName:"Grand Hotel",filename:"7Au7p_IgjDKdCRWuR1azpmQNEl0O0kEx",category:"handwriting",url:"https://fonts.gstatic.com/s/grandhotel/v21/7Au7p_IgjDKdCRWuR1azpmQNEl0O0kEx.ttf",weight:400,isVariable:!1},{displayName:"Coming Soon",filename:"qWcuB6mzpYL7AJ2VfdQR1u-SUjjzsykh",category:"handwriting",url:"https://fonts.gstatic.com/s/comingsoon/v20/qWcuB6mzpYL7AJ2VfdQR1u-SUjjzsykh.ttf",weight:400,isVariable:!1},{displayName:"Murecho",filename:"q5uHsoq3NOBn_I-gmilCBxxdmYU",category:"sans-serif",url:"https://fonts.gstatic.com/s/murecho/v17/q5uHsoq3NOBn_I-gmilCBxxdmYU.ttf",weight:400,isVariable:!0},{displayName:"Radley",filename:"LYjDdGzinEIjCN19oAlEpVs3VQ",category:"serif",url:"https://fonts.gstatic.com/s/radley/v24/LYjDdGzinEIjCN19oAlEpVs3VQ.ttf",weight:400,isVariable:!1},{displayName:"Averia Libre",filename:"2V0aKIcMGZEnV6xygz7eNjEiAqPJZ2Xx8w",category:"display",url:"https://fonts.gstatic.com/s/averialibre/v16/2V0aKIcMGZEnV6xygz7eNjEiAqPJZ2Xx8w.ttf",weight:400,isVariable:!1},{displayName:"Ma Shan Zheng",filename:"NaPecZTRCLxvwo41b4gvzkXaRMTsDIRSfr0",category:"handwriting",url:"https://fonts.gstatic.com/s/mashanzheng/v14/NaPecZTRCLxvwo41b4gvzkXaRMTsDIRSfr0.ttf",weight:400,isVariable:!1},{displayName:"Lexend Peta",filename:"BXRvvFPGjeLPh0kCfI4OkE_1c8Tf1IW3",category:"sans-serif",url:"https://fonts.gstatic.com/s/lexendpeta/v30/BXRvvFPGjeLPh0kCfI4OkE_1c8Tf1IW3.ttf",weight:400,isVariable:!0},{displayName:"Mate",filename:"m8JdjftRd7WZ2z28WoXSaLU",category:"serif",url:"https://fonts.gstatic.com/s/mate/v19/m8JdjftRd7WZ2z28WoXSaLU.ttf",weight:400,isVariable:!1},{displayName:"Metrophobic",filename:"sJoA3LZUhMSAPV_u0qwiAT-J737FPEEL",category:"sans-serif",url:"https://fonts.gstatic.com/s/metrophobic/v24/sJoA3LZUhMSAPV_u0qwiAT-J737FPEEL.ttf",weight:400,isVariable:!1},{displayName:"Caladea",filename:"kJEzBugZ7AAjhybUjR93-9IztOc",category:"serif",url:"https://fonts.gstatic.com/s/caladea/v8/kJEzBugZ7AAjhybUjR93-9IztOc.ttf",weight:400,isVariable:!1},{displayName:"Rakkas",filename:"Qw3cZQlNHiblL3j_lttPOeMcCw",category:"display",url:"https://fonts.gstatic.com/s/rakkas/v22/Qw3cZQlNHiblL3j_lttPOeMcCw.ttf",weight:400,isVariable:!1},{displayName:"Arbutus Slab",filename:"oY1Z8e7OuLXkJGbXtr5ba7ZVa68dJlaFAQ",category:"serif",url:"https://fonts.gstatic.com/s/arbutusslab/v17/oY1Z8e7OuLXkJGbXtr5ba7ZVa68dJlaFAQ.ttf",weight:400,isVariable:!1},{displayName:"Gowun Batang",filename:"ijwSs5nhRMIjYsdSgcMa3wRhXLH-yuAtLw",category:"serif",url:"https://fonts.gstatic.com/s/gowunbatang/v12/ijwSs5nhRMIjYsdSgcMa3wRhXLH-yuAtLw.ttf",weight:400,isVariable:!1},{displayName:"Silkscreen",filename:"m8JXjfVPf62XiF7kO-i9ULRvamODxdI",category:"display",url:"https://fonts.gstatic.com/s/silkscreen/v6/m8JXjfVPf62XiF7kO-i9ULRvamODxdI.ttf",weight:400,isVariable:!1},{displayName:"Bellefair",filename:"kJExBuYY6AAuhiXUxG19__A2pOdvDA",category:"serif",url:"https://fonts.gstatic.com/s/bellefair/v15/kJExBuYY6AAuhiXUxG19__A2pOdvDA.ttf",weight:400,isVariable:!1},{displayName:"Montagu Slab",filename:"6qLHKZIQtB_zv0xUaXRDWkYlFlnXaxIyYw",category:"serif",url:"https://fonts.gstatic.com/s/montaguslab/v17/6qLHKZIQtB_zv0xUaXRDWkYlFlnXaxIyYw.ttf",weight:400,isVariable:!0},{displayName:"Graduate",filename:"C8cg4cs3o2n15t_2YxgR6X2NZAn2",category:"serif",url:"https://fonts.gstatic.com/s/graduate/v19/C8cg4cs3o2n15t_2YxgR6X2NZAn2.ttf",weight:400,isVariable:!1},{displayName:"Oooh Baby",filename:"2sDcZGJWgJTT2Jf76xQDb2-4C7wFZQ",category:"handwriting",url:"https://fonts.gstatic.com/s/ooohbaby/v4/2sDcZGJWgJTT2Jf76xQDb2-4C7wFZQ.ttf",weight:400,isVariable:!1},{displayName:"Average Sans",filename:"1Ptpg8fLXP2dlAXR-HlJJNJPBdqazVoK4A",category:"sans-serif",url:"https://fonts.gstatic.com/s/averagesans/v17/1Ptpg8fLXP2dlAXR-HlJJNJPBdqazVoK4A.ttf",weight:400,isVariable:!1},{displayName:"Norican",filename:"MwQ2bhXp1eSBqjkPGJJRtGs-lbA",category:"handwriting",url:"https://fonts.gstatic.com/s/norican/v16/MwQ2bhXp1eSBqjkPGJJRtGs-lbA.ttf",weight:400,isVariable:!1},{displayName:"Familjen Grotesk",filename:"Qw3GZR9ZHiDnImG6-NEMQ41wby8WXH0OjpM75PE",category:"sans-serif",url:"https://fonts.gstatic.com/s/familjengrotesk/v11/Qw3GZR9ZHiDnImG6-NEMQ41wby8WXH0OjpM75PE.ttf",weight:400,isVariable:!0},{displayName:"Tiro Bangla",filename:"IFSgHe1Tm95E3O8b5i2V8MG9-UPeuz4i",category:"serif",url:"https://fonts.gstatic.com/s/tirobangla/v6/IFSgHe1Tm95E3O8b5i2V8MG9-UPeuz4i.ttf",weight:400,isVariable:!1},{displayName:"UnifrakturMaguntia",filename:"WWXPlieVYwiGNomYU-ciRLRvEmK7oaVun2xNNgNa1A",category:"display",url:"https://fonts.gstatic.com/s/unifrakturmaguntia/v22/WWXPlieVYwiGNomYU-ciRLRvEmK7oaVun2xNNgNa1A.ttf",weight:400,isVariable:!1},{displayName:"Jockey One",filename:"HTxpL2g2KjCFj4x8WI6ArIb7HYOk4xc",category:"sans-serif",url:"https://fonts.gstatic.com/s/jockeyone/v23/HTxpL2g2KjCFj4x8WI6ArIb7HYOk4xc.ttf",weight:400,isVariable:!1},{displayName:"Cormorant Unicase",filename:"HI_QiZUaILtOqhqgDeXoF_n1_fTGX-vTnsMnx3C9",category:"serif",url:"https://fonts.gstatic.com/s/cormorantunicase/v25/HI_QiZUaILtOqhqgDeXoF_n1_fTGX-vTnsMnx3C9.ttf",weight:400,isVariable:!1},{displayName:"Kosugi",filename:"pxiFyp4_v8FCjlI4NLr6f1pdEQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/kosugi/v19/pxiFyp4_v8FCjlI4NLr6f1pdEQ.ttf",weight:400,isVariable:!1},{displayName:"Anaheim",filename:"8vII7w042Wp87g4G0UTUEE5eK_w",category:"sans-serif",url:"https://fonts.gstatic.com/s/anaheim/v17/8vII7w042Wp87g4G0UTUEE5eK_w.ttf",weight:400,isVariable:!0},{displayName:"Rancho",filename:"46kulbzmXjLaqZRlbWXgd0RY1g",category:"handwriting",url:"https://fonts.gstatic.com/s/rancho/v22/46kulbzmXjLaqZRlbWXgd0RY1g.ttf",weight:400,isVariable:!1},{displayName:"Cantata One",filename:"PlI5Fl60Nb5obNzNe2jslVxEt8CwfGaD",category:"serif",url:"https://fonts.gstatic.com/s/cantataone/v16/PlI5Fl60Nb5obNzNe2jslVxEt8CwfGaD.ttf",weight:400,isVariable:!1},{displayName:"Glory",filename:"q5uJsoi9Lf1w5sfPkC1gAgxd",category:"sans-serif",url:"https://fonts.gstatic.com/s/glory/v18/q5uJsoi9Lf1w5sfPkC1gAgxd.ttf",weight:400,isVariable:!0},{displayName:"Dongle",filename:"sJoF3Ltdjt6VPkqmveRPah6RxA",category:"sans-serif",url:"https://fonts.gstatic.com/s/dongle/v16/sJoF3Ltdjt6VPkqmveRPah6RxA.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Hebrew",filename:"k3kKo9MMPvpLmixYH7euCwmkS9Dohi_-2KiSGg-H",category:"serif",url:"https://fonts.gstatic.com/s/notoserifhebrew/v30/k3kKo9MMPvpLmixYH7euCwmkS9Dohi_-2KiSGg-H.ttf",weight:400,isVariable:!0},{displayName:"Annie Use Your Telescope",filename:"daaLSS4tI2qYYl3Jq9s_Hu74xwktnlKxH6osGVGjlDfB3UUVZA",category:"handwriting",url:"https://fonts.gstatic.com/s/annieuseyourtelescope/v20/daaLSS4tI2qYYl3Jq9s_Hu74xwktnlKxH6osGVGjlDfB3UUVZA.ttf",weight:400,isVariable:!1},{displayName:"REM",filename:"Wnz3HAIoSDydZjovaRcFow",category:"sans-serif",url:"https://fonts.gstatic.com/s/rem/v4/Wnz3HAIoSDydZjovaRcFow.ttf",weight:400,isVariable:!0},{displayName:"Koulen",filename:"AMOQz46as3KIBPeWgnA9kuYMUg",category:"display",url:"https://fonts.gstatic.com/s/koulen/v30/AMOQz46as3KIBPeWgnA9kuYMUg.ttf",weight:400,isVariable:!1},{displayName:"SUSE",filename:"MwQ5bhb078Wt6VhLPJp6qGI",category:"sans-serif",url:"https://fonts.gstatic.com/s/suse/v4/MwQ5bhb078Wt6VhLPJp6qGI.ttf",weight:400,isVariable:!0},{displayName:"Baloo Da 2",filename:"2-ci9J9j0IaUMQZwAJyJcu7XoZFDf2Q",category:"display",url:"https://fonts.gstatic.com/s/balooda2/v26/2-ci9J9j0IaUMQZwAJyJcu7XoZFDf2Q.ttf",weight:400,isVariable:!0},{displayName:"Solway",filename:"AMOQz46Cs2uTAOCWgnA9kuYMUg",category:"serif",url:"https://fonts.gstatic.com/s/solway/v19/AMOQz46Cs2uTAOCWgnA9kuYMUg.ttf",weight:400,isVariable:!1},{displayName:"Kristi",filename:"uK_y4ricdeU6zwdRCh0TMv6EXw",category:"handwriting",url:"https://fonts.gstatic.com/s/kristi/v23/uK_y4ricdeU6zwdRCh0TMv6EXw.ttf",weight:400,isVariable:!1},{displayName:"Hanuman",filename:"VuJxdNvD15HhpJJBeKbXOIFneRo",category:"serif",url:"https://fonts.gstatic.com/s/hanuman/v24/VuJxdNvD15HhpJJBeKbXOIFneRo.ttf",weight:400,isVariable:!0},{displayName:"Big Shoulders",filename:"qFdC35CPh40oITJ69S3GFqy54h8ij1I7LLE",category:"display",url:"https://fonts.gstatic.com/s/bigshoulders/v4/qFdC35CPh40oITJ69S3GFqy54h8ij1I7LLE.ttf",weight:400,isVariable:!0},{displayName:"Monsieur La Doulaise",filename:"_Xmz-GY4rjmCbQfc-aPRaa4pqV340p7EZl5ewkEU4HTy",category:"handwriting",url:"https://fonts.gstatic.com/s/monsieurladoulaise/v20/_Xmz-GY4rjmCbQfc-aPRaa4pqV340p7EZl5ewkEU4HTy.ttf",weight:400,isVariable:!1},{displayName:"Bayon",filename:"9XUrlJNmn0LPFl-pOhYEd2NJ",category:"sans-serif",url:"https://fonts.gstatic.com/s/bayon/v36/9XUrlJNmn0LPFl-pOhYEd2NJ.ttf",weight:400,isVariable:!1},{displayName:"Dawning of a New Day",filename:"t5t_IQMbOp2SEwuncwLRjMfIg1yYit_nAz8bhWJGNoBE",category:"handwriting",url:"https://fonts.gstatic.com/s/dawningofanewday/v22/t5t_IQMbOp2SEwuncwLRjMfIg1yYit_nAz8bhWJGNoBE.ttf",weight:400,isVariable:!1},{displayName:"Mochiy Pop One",filename:"QdVPSTA9Jh-gg-5XZP2UmU4O9kwwD3s6ZKAi",category:"sans-serif",url:"https://fonts.gstatic.com/s/mochiypopone/v12/QdVPSTA9Jh-gg-5XZP2UmU4O9kwwD3s6ZKAi.ttf",weight:400,isVariable:!1},{displayName:"Alegreya SC",filename:"taiOGmRtCJ62-O0HhNEa-a6o05E5abe_",category:"serif",url:"https://fonts.gstatic.com/s/alegreyasc/v26/taiOGmRtCJ62-O0HhNEa-a6o05E5abe_.ttf",weight:400,isVariable:!1},{displayName:"Cairo Play",filename:"wXKuE3QSpo4vpRz_mz6FJeQAmX8yrdk",category:"sans-serif",url:"https://fonts.gstatic.com/s/cairoplay/v13/wXKuE3QSpo4vpRz_mz6FJeQAmX8yrdk.ttf",weight:400,isVariable:!0},{displayName:"Trirong",filename:"7r3GqXNgp8wxdOdOr4wi2aZg-ug",category:"serif",url:"https://fonts.gstatic.com/s/trirong/v17/7r3GqXNgp8wxdOdOr4wi2aZg-ug.ttf",weight:400,isVariable:!1},{displayName:"Allerta",filename:"TwMO-IAHRlkbx940UnEdSQqO5uY",category:"sans-serif",url:"https://fonts.gstatic.com/s/allerta/v19/TwMO-IAHRlkbx940UnEdSQqO5uY.ttf",weight:400,isVariable:!1},{displayName:"Azeret Mono",filename:"3XFuErsiyJsY9O_Gepph-EHmb_jU3eRL",category:"monospace",url:"https://fonts.gstatic.com/s/azeretmono/v21/3XFuErsiyJsY9O_Gepph-EHmb_jU3eRL.ttf",weight:400,isVariable:!0},{displayName:"Contrail One",filename:"eLGbP-j_JA-kG0_Zo51noafdZUvt_c092w",category:"display",url:"https://fonts.gstatic.com/s/contrailone/v21/eLGbP-j_JA-kG0_Zo51noafdZUvt_c092w.ttf",weight:400,isVariable:!1},{displayName:"Kantumruy Pro",filename:"1q2AY5aECkp34vEBSPFOmJxwpETLeo2gm2U",category:"sans-serif",url:"https://fonts.gstatic.com/s/kantumruypro/v12/1q2AY5aECkp34vEBSPFOmJxwpETLeo2gm2U.ttf",weight:400,isVariable:!0},{displayName:"Overlock",filename:"Z9XVDmdMWRiN1_T9Z4Te4u2El6GC",category:"display",url:"https://fonts.gstatic.com/s/overlock/v19/Z9XVDmdMWRiN1_T9Z4Te4u2El6GC.ttf",weight:400,isVariable:!1},{displayName:"Chivo Mono",filename:"mFT0WbgRxKvF_Z5eQMO9sxgJ1EJ7i90",category:"monospace",url:"https://fonts.gstatic.com/s/chivomono/v11/mFT0WbgRxKvF_Z5eQMO9sxgJ1EJ7i90.ttf",weight:400,isVariable:!0},{displayName:"Geo",filename:"CSRz4zRZlufVL3BmQjlCbQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/geo/v23/CSRz4zRZlufVL3BmQjlCbQ.ttf",weight:400,isVariable:!1},{displayName:"Rampart One",filename:"K2F1fZFGl_JSR1tAWNG9R6qgLS76ZHOM",category:"display",url:"https://fonts.gstatic.com/s/rampartone/v13/K2F1fZFGl_JSR1tAWNG9R6qgLS76ZHOM.ttf",weight:400,isVariable:!1},{displayName:"ADLaM Display",filename:"KFOhCnGXkPOLlhx6jD8_b1ZECsHYkYBPY3o",category:"display",url:"https://fonts.gstatic.com/s/adlamdisplay/v1/KFOhCnGXkPOLlhx6jD8_b1ZECsHYkYBPY3o.ttf",weight:400,isVariable:!1},{displayName:"Wallpoet",filename:"f0X10em2_8RnXVVdUNbu7cXP8L8G",category:"display",url:"https://fonts.gstatic.com/s/wallpoet/v21/f0X10em2_8RnXVVdUNbu7cXP8L8G.ttf",weight:400,isVariable:!1},{displayName:"DotGothic16",filename:"v6-QGYjBJFKgyw5nSoDAGE7L435YPFrT",category:"sans-serif",url:"https://fonts.gstatic.com/s/dotgothic16/v21/v6-QGYjBJFKgyw5nSoDAGE7L435YPFrT.ttf",weight:400,isVariable:!1},{displayName:"BioRhyme",filename:"1cXwaULHBpDMsHYW_HxGpVWIgNit",category:"serif",url:"https://fonts.gstatic.com/s/biorhyme/v21/1cXwaULHBpDMsHYW_HxGpVWIgNit.ttf",weight:400,isVariable:!0},{displayName:"Libre Barcode 128",filename:"cIfnMbdUsUoiW3O_hVviCwVjuLtXeJ_A_gMk0izH",category:"display",url:"https://fonts.gstatic.com/s/librebarcode128/v31/cIfnMbdUsUoiW3O_hVviCwVjuLtXeJ_A_gMk0izH.ttf",weight:400,isVariable:!1},{displayName:"Vina Sans",filename:"m8JQjfZKf6-d2273MP7zcJ5BZmqa3A",category:"display",url:"https://fonts.gstatic.com/s/vinasans/v8/m8JQjfZKf6-d2273MP7zcJ5BZmqa3A.ttf",weight:400,isVariable:!1},{displayName:"Libre Barcode 39 Text",filename:"sJoa3KhViNKANw_E3LwoDXvs5Un0HQ1vT-031RRL-9rYaw",category:"display",url:"https://fonts.gstatic.com/s/librebarcode39text/v32/sJoa3KhViNKANw_E3LwoDXvs5Un0HQ1vT-031RRL-9rYaw.ttf",weight:400,isVariable:!1},{displayName:"Petit Formal Script",filename:"B50TF6xQr2TXJBnGOFME6u5OR83oRP5qoHnqP4gZSiE",category:"handwriting",url:"https://fonts.gstatic.com/s/petitformalscript/v19/B50TF6xQr2TXJBnGOFME6u5OR83oRP5qoHnqP4gZSiE.ttf",weight:400,isVariable:!1},{displayName:"Faster One",filename:"H4ciBXCHmdfClFb-vWhfyLuShq63czE",category:"display",url:"https://fonts.gstatic.com/s/fasterone/v20/H4ciBXCHmdfClFb-vWhfyLuShq63czE.ttf",weight:400,isVariable:!1},{displayName:"Parkinsans",filename:"-W_7XJXvQyPb1QfpBpRrTkMBf50kbiM",category:"sans-serif",url:"https://fonts.gstatic.com/s/parkinsans/v3/-W_7XJXvQyPb1QfpBpRrTkMBf50kbiM.ttf",weight:400,isVariable:!0},{displayName:"Love Ya Like A Sister",filename:"R70EjzUBlOqPeouhFDfR80-0FhOqJubN-Be78nZcsGGycA",category:"display",url:"https://fonts.gstatic.com/s/loveyalikeasister/v23/R70EjzUBlOqPeouhFDfR80-0FhOqJubN-Be78nZcsGGycA.ttf",weight:400,isVariable:!1},{displayName:"Arizonia",filename:"neIIzCemt4A5qa7mv6WGHK06UY30",category:"handwriting",url:"https://fonts.gstatic.com/s/arizonia/v23/neIIzCemt4A5qa7mv6WGHK06UY30.ttf",weight:400,isVariable:!1},{displayName:"Schoolbell",filename:"92zQtBZWOrcgoe-fgnJIVxIQ6mRqfiQ",category:"handwriting",url:"https://fonts.gstatic.com/s/schoolbell/v18/92zQtBZWOrcgoe-fgnJIVxIQ6mRqfiQ.ttf",weight:400,isVariable:!1},{displayName:"Honk",filename:"m8JdjftUea-X2z28WoXSaLU",category:"display",url:"https://fonts.gstatic.com/s/honk/v6/m8JdjftUea-X2z28WoXSaLU.ttf",weight:400,isVariable:!1},{displayName:"Klee One",filename:"LDIxapCLNRc6A8oT4q4AOeekWPrP",category:"handwriting",url:"https://fonts.gstatic.com/s/kleeone/v13/LDIxapCLNRc6A8oT4q4AOeekWPrP.ttf",weight:400,isVariable:!1},{displayName:"Oxygen Mono",filename:"h0GsssGg9FxgDgCjLeAd7ijfze-PPlUu",category:"monospace",url:"https://fonts.gstatic.com/s/oxygenmono/v15/h0GsssGg9FxgDgCjLeAd7ijfze-PPlUu.ttf",weight:400,isVariable:!1},{displayName:"ZCOOL XiaoWei",filename:"i7dMIFFrTRywPpUVX9_RJyM1YFKQHwyVd3U",category:"sans-serif",url:"https://fonts.gstatic.com/s/zcoolxiaowei/v15/i7dMIFFrTRywPpUVX9_RJyM1YFKQHwyVd3U.ttf",weight:400,isVariable:!1},{displayName:"Waiting for the Sunrise",filename:"WBL1rFvOYl9CEv2i1mO6KUW8RKWJ2zoXoz5JsYZQ9h_ZYk5J",category:"handwriting",url:"https://fonts.gstatic.com/s/waitingforthesunrise/v23/WBL1rFvOYl9CEv2i1mO6KUW8RKWJ2zoXoz5JsYZQ9h_ZYk5J.ttf",weight:400,isVariable:!1},{displayName:"Trocchi",filename:"qWcqB6WkuIDxDZLcDrtUvMeTYD0",category:"serif",url:"https://fonts.gstatic.com/s/trocchi/v19/qWcqB6WkuIDxDZLcDrtUvMeTYD0.ttf",weight:400,isVariable:!1},{displayName:"Hina Mincho",filename:"2sDaZGBRhpXa2Jjz5w5LAGW8KbkVZTHR",category:"serif",url:"https://fonts.gstatic.com/s/hinamincho/v16/2sDaZGBRhpXa2Jjz5w5LAGW8KbkVZTHR.ttf",weight:400,isVariable:!1},{displayName:"Telex",filename:"ieVw2Y1fKWmIO9fTB1piKFIf",category:"sans-serif",url:"https://fonts.gstatic.com/s/telex/v18/ieVw2Y1fKWmIO9fTB1piKFIf.ttf",weight:400,isVariable:!1},{displayName:"Sigmar One",filename:"co3DmWZ8kjZuErj9Ta3dk6Pjp3Di8U0",category:"display",url:"https://fonts.gstatic.com/s/sigmarone/v20/co3DmWZ8kjZuErj9Ta3dk6Pjp3Di8U0.ttf",weight:400,isVariable:!1},{displayName:"Halant",filename:"u-4-0qaujRI2PbsX39Jmky12eg",category:"serif",url:"https://fonts.gstatic.com/s/halant/v17/u-4-0qaujRI2PbsX39Jmky12eg.ttf",weight:400,isVariable:!1},{displayName:"Yesteryear",filename:"dg4g_p78rroaKl8kRKo1r7wHTwonmyw",category:"handwriting",url:"https://fonts.gstatic.com/s/yesteryear/v21/dg4g_p78rroaKl8kRKo1r7wHTwonmyw.ttf",weight:400,isVariable:!1},{displayName:"Fondamento",filename:"4UaHrEJGsxNmFTPDnkaJx63j5pN1MwI",category:"handwriting",url:"https://fonts.gstatic.com/s/fondamento/v22/4UaHrEJGsxNmFTPDnkaJx63j5pN1MwI.ttf",weight:400,isVariable:!1},{displayName:"Knewave",filename:"sykz-yx0lLcxQaSItSq9-trEvlQ",category:"display",url:"https://fonts.gstatic.com/s/knewave/v15/sykz-yx0lLcxQaSItSq9-trEvlQ.ttf",weight:400,isVariable:!1},{displayName:"Croissant One",filename:"3y9n6bU9bTPg4m8NDy3Kq24UM3pqn5cdJ-4",category:"display",url:"https://fonts.gstatic.com/s/croissantone/v28/3y9n6bU9bTPg4m8NDy3Kq24UM3pqn5cdJ-4.ttf",weight:400,isVariable:!1},{displayName:"Agbalumo",filename:"55xvey5uMdT2N37KZcMFirl08KDJ",category:"display",url:"https://fonts.gstatic.com/s/agbalumo/v6/55xvey5uMdT2N37KZcMFirl08KDJ.ttf",weight:400,isVariable:!1},{displayName:"RocknRoll One",filename:"kmK7ZqspGAfCeUiW6FFlmEC9guVhs7tfUxc",category:"sans-serif",url:"https://fonts.gstatic.com/s/rocknrollone/v16/kmK7ZqspGAfCeUiW6FFlmEC9guVhs7tfUxc.ttf",weight:400,isVariable:!1},{displayName:"Maitree",filename:"MjQGmil5tffhpBrkrtmmfJmDoL4",category:"serif",url:"https://fonts.gstatic.com/s/maitree/v11/MjQGmil5tffhpBrkrtmmfJmDoL4.ttf",weight:400,isVariable:!1},{displayName:"Style Script",filename:"vm8xdRX3SV7Z0aPa88xzW5npeFT76NZnMw",category:"handwriting",url:"https://fonts.gstatic.com/s/stylescript/v13/vm8xdRX3SV7Z0aPa88xzW5npeFT76NZnMw.ttf",weight:400,isVariable:!1},{displayName:"Bentham",filename:"VdGeAZQPEpYfmHglKWw7CJaK_y4",category:"serif",url:"https://fonts.gstatic.com/s/bentham/v20/VdGeAZQPEpYfmHglKWw7CJaK_y4.ttf",weight:400,isVariable:!1},{displayName:"Anton SC",filename:"4UaBrEBBsgltGn71sxLmzanB44N1",category:"sans-serif",url:"https://fonts.gstatic.com/s/antonsc/v1/4UaBrEBBsgltGn71sxLmzanB44N1.ttf",weight:400,isVariable:!1},{displayName:"Sniglet",filename:"cIf9MaFLtkE3UjaJxCmrYGkHgIs",category:"display",url:"https://fonts.gstatic.com/s/sniglet/v18/cIf9MaFLtkE3UjaJxCmrYGkHgIs.ttf",weight:400,isVariable:!1},{displayName:"Sofia Sans Semi Condensed",filename:"46k9laPnUDrQoNsWDCGXXxYlujh5Wv0nwP4RwxURgWQ-826XvcQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/sofiasanssemicondensed/v8/46k9laPnUDrQoNsWDCGXXxYlujh5Wv0nwP4RwxURgWQ-826XvcQ.ttf",weight:400,isVariable:!0},{displayName:"Calligraffitti",filename:"46k2lbT3XjDVqJw3DCmCFjE0vnFZM5ZBpYN-",category:"handwriting",url:"https://fonts.gstatic.com/s/calligraffitti/v20/46k2lbT3XjDVqJw3DCmCFjE0vnFZM5ZBpYN-.ttf",weight:400,isVariable:!1},{displayName:"Cormorant SC",filename:"0yb5GD4kxqXBmOVLG30OGwserDow9Tbu-Q",category:"serif",url:"https://fonts.gstatic.com/s/cormorantsc/v19/0yb5GD4kxqXBmOVLG30OGwserDow9Tbu-Q.ttf",weight:400,isVariable:!1},{displayName:"Markazi Text",filename:"syk0-ydym6AtQaiEtX7yhqblpn-UJ1H6Uw",category:"serif",url:"https://fonts.gstatic.com/s/markazitext/v28/syk0-ydym6AtQaiEtX7yhqblpn-UJ1H6Uw.ttf",weight:400,isVariable:!0},{displayName:"Niconne",filename:"w8gaH2QvRug1_rTfrQut2F4OuOo",category:"handwriting",url:"https://fonts.gstatic.com/s/niconne/v16/w8gaH2QvRug1_rTfrQut2F4OuOo.ttf",weight:400,isVariable:!1},{displayName:"Tilt Neon",filename:"E21l_d7gguXdwD9LEFYsUwVUAuu3cw",category:"display",url:"https://fonts.gstatic.com/s/tiltneon/v12/E21l_d7gguXdwD9LEFYsUwVUAuu3cw.ttf",weight:400,isVariable:!1},{displayName:"Irish Grover",filename:"buExpoi6YtLz2QW7LA4flVgf-P5Oaiw4cw",category:"display",url:"https://fonts.gstatic.com/s/irishgrover/v23/buExpoi6YtLz2QW7LA4flVgf-P5Oaiw4cw.ttf",weight:400,isVariable:!1},{displayName:"Libre Caslon Display",filename:"TuGOUUFxWphYQ6YI6q9Xp61FQzxDRKmzr2lRdRhtCC4d",category:"serif",url:"https://fonts.gstatic.com/s/librecaslondisplay/v18/TuGOUUFxWphYQ6YI6q9Xp61FQzxDRKmzr2lRdRhtCC4d.ttf",weight:400,isVariable:!1},{displayName:"Yusei Magic",filename:"yYLt0hbAyuCmoo5wlhPkpjHR-tdfcIT_",category:"sans-serif",url:"https://fonts.gstatic.com/s/yuseimagic/v16/yYLt0hbAyuCmoo5wlhPkpjHR-tdfcIT_.ttf",weight:400,isVariable:!1},{displayName:"IM Fell English",filename:"Ktk1ALSLW8zDe0rthJysWrnLsAz3F6mZVY9Y5w",category:"serif",url:"https://fonts.gstatic.com/s/imfellenglish/v14/Ktk1ALSLW8zDe0rthJysWrnLsAz3F6mZVY9Y5w.ttf",weight:400,isVariable:!1},{displayName:"Encode Sans Semi Condensed",filename:"3qT4oiKqnDuUtQUEHMoXcmspmy55SFWrXFRp9FTOG2yR_sVPRsjp",category:"sans-serif",url:"https://fonts.gstatic.com/s/encodesanssemicondensed/v11/3qT4oiKqnDuUtQUEHMoXcmspmy55SFWrXFRp9FTOG2yR_sVPRsjp.ttf",weight:400,isVariable:!1},{displayName:"Edu SA Beginner",filename:"rnCw-xRb1x-1lHXnLaZZ2xOoLIGFWFAMArZKqQ",category:"handwriting",url:"https://fonts.gstatic.com/s/edusabeginner/v5/rnCw-xRb1x-1lHXnLaZZ2xOoLIGFWFAMArZKqQ.ttf",weight:400,isVariable:!0},{displayName:"Funnel Display",filename:"B50WF7FGv37QNVWgE0ga--4PbY6aB4oWgWHB",category:"display",url:"https://fonts.gstatic.com/s/funneldisplay/v3/B50WF7FGv37QNVWgE0ga--4PbY6aB4oWgWHB.ttf",weight:400,isVariable:!0},{displayName:"Mountains of Christmas",filename:"3y9w6a4zcCnn5X0FDyrKi2ZRUBIy8uxoUo7ePNamMPNpJpc",category:"display",url:"https://fonts.gstatic.com/s/mountainsofchristmas/v24/3y9w6a4zcCnn5X0FDyrKi2ZRUBIy8uxoUo7ePNamMPNpJpc.ttf",weight:400,isVariable:!1},{displayName:"Marmelad",filename:"Qw3eZQdSHj_jK2e-8tFLG-YMC0R8",category:"sans-serif",url:"https://fonts.gstatic.com/s/marmelad/v19/Qw3eZQdSHj_jK2e-8tFLG-YMC0R8.ttf",weight:400,isVariable:!1},{displayName:"Fragment Mono",filename:"4iCr6K5wfMRRjxp0DA6-2CLnN4RNh4UI_1U",category:"monospace",url:"https://fonts.gstatic.com/s/fragmentmono/v6/4iCr6K5wfMRRjxp0DA6-2CLnN4RNh4UI_1U.ttf",weight:400,isVariable:!1},{displayName:"Licorice",filename:"t5tjIR8TMomTCAyjNk23hqLgzCHu",category:"handwriting",url:"https://fonts.gstatic.com/s/licorice/v8/t5tjIR8TMomTCAyjNk23hqLgzCHu.ttf",weight:400,isVariable:!1},{displayName:"Carlito",filename:"3Jn9SDPw3m-pk039PDCLTXUETuE",category:"sans-serif",url:"https://fonts.gstatic.com/s/carlito/v4/3Jn9SDPw3m-pk039PDCLTXUETuE.ttf",weight:400,isVariable:!1},{displayName:"Charis SIL",filename:"oPWK_kV3l-s-Q8govXvKrPrmYjZ2Xn0",category:"serif",url:"https://fonts.gstatic.com/s/charissil/v2/oPWK_kV3l-s-Q8govXvKrPrmYjZ2Xn0.ttf",weight:400,isVariable:!1},{displayName:"Lexend Zetta",filename:"ll87K2KYXje7CdOFnEWcU8soliQejRR7AQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/lexendzetta/v32/ll87K2KYXje7CdOFnEWcU8soliQejRR7AQ.ttf",weight:400,isVariable:!0},{displayName:"Meddon",filename:"kmK8ZqA2EgDNeHTZhBdB3y_Aow",category:"handwriting",url:"https://fonts.gstatic.com/s/meddon/v27/kmK8ZqA2EgDNeHTZhBdB3y_Aow.ttf",weight:400,isVariable:!1},{displayName:"Rosario",filename:"xfux0WDhWW_fOEoY6FT3zA7DpL4",category:"sans-serif",url:"https://fonts.gstatic.com/s/rosario/v35/xfux0WDhWW_fOEoY6FT3zA7DpL4.ttf",weight:400,isVariable:!0},{displayName:"Pixelify Sans",filename:"CHylV-3HFUT7aC4iv1TxGDR9FnoOimlReJw",category:"display",url:"https://fonts.gstatic.com/s/pixelifysans/v3/CHylV-3HFUT7aC4iv1TxGDR9FnoOimlReJw.ttf",weight:400,isVariable:!0},{displayName:"Over the Rainbow",filename:"11haGoXG1k_HKhMLUWz7Mc7vvW5upvOm9NA2XG0",category:"handwriting",url:"https://fonts.gstatic.com/s/overtherainbow/v23/11haGoXG1k_HKhMLUWz7Mc7vvW5upvOm9NA2XG0.ttf",weight:400,isVariable:!1},{displayName:"Freeman",filename:"S6u9w4NGQiLN8nh-ew-FGC_p9dw",category:"display",url:"https://fonts.gstatic.com/s/freeman/v1/S6u9w4NGQiLN8nh-ew-FGC_p9dw.ttf",weight:400,isVariable:!1},{displayName:"IBM Plex Sans KR",filename:"vEFK2-VJISZe3O_rc3ZVYh4aTwNO8tK1W77HtMo",category:"sans-serif",url:"https://fonts.gstatic.com/s/ibmplexsanskr/v11/vEFK2-VJISZe3O_rc3ZVYh4aTwNO8tK1W77HtMo.ttf",weight:400,isVariable:!1},{displayName:"Flow Circular",filename:"lJwB-pc4j2F-H8YKuyvfxdZ45ifpWdr2rIg",category:"display",url:"https://fonts.gstatic.com/s/flowcircular/v15/lJwB-pc4j2F-H8YKuyvfxdZ45ifpWdr2rIg.ttf",weight:400,isVariable:!1},{displayName:"Encode Sans Expanded",filename:"c4m_1mF4GcnstG_Jh1QH6ac4hNLeNyeYUqoiIwdAd5Ab",category:"sans-serif",url:"https://fonts.gstatic.com/s/encodesansexpanded/v12/c4m_1mF4GcnstG_Jh1QH6ac4hNLeNyeYUqoiIwdAd5Ab.ttf",weight:400,isVariable:!1},{displayName:"Average",filename:"fC1hPYBHe23MxA7rIeJwVWytTyk",category:"serif",url:"https://fonts.gstatic.com/s/average/v19/fC1hPYBHe23MxA7rIeJwVWytTyk.ttf",weight:400,isVariable:!1},{displayName:"Manjari",filename:"k3kQo8UPMOBO2w1UTd7iL0nAMaM",category:"sans-serif",url:"https://fonts.gstatic.com/s/manjari/v14/k3kQo8UPMOBO2w1UTd7iL0nAMaM.ttf",weight:400,isVariable:!1},{displayName:"Fjord One",filename:"zOL-4pbEnKBY_9S1jNKr6e5As-FeiQ",category:"serif",url:"https://fonts.gstatic.com/s/fjordone/v22/zOL-4pbEnKBY_9S1jNKr6e5As-FeiQ.ttf",weight:400,isVariable:!1},{displayName:"BIZ UDPMincho",filename:"ypvfbXOBrmYppy7oWWTg1_58nhhYtUb0gZk",category:"serif",url:"https://fonts.gstatic.com/s/bizudpmincho/v11/ypvfbXOBrmYppy7oWWTg1_58nhhYtUb0gZk.ttf",weight:400,isVariable:!1},{displayName:"Baloo Bhaijaan 2",filename:"zYX9KUwuEqdVGqM8tPDdAA_Y-_bMMIZmdd_qFmo",category:"display",url:"https://fonts.gstatic.com/s/baloobhaijaan2/v21/zYX9KUwuEqdVGqM8tPDdAA_Y-_bMMIZmdd_qFmo.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Math",filename:"7Aump_cpkSecTWaHRlH2hyV5UHkG-V048PW0",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmath/v18/7Aump_cpkSecTWaHRlH2hyV5UHkG-V048PW0.ttf",weight:400,isVariable:!1},{displayName:"DynaPuff",filename:"z7NXdRvsZDIVHbYPMgxC_pjcTeWU",category:"display",url:"https://fonts.gstatic.com/s/dynapuff/v9/z7NXdRvsZDIVHbYPMgxC_pjcTeWU.ttf",weight:400,isVariable:!0},{displayName:"TikTok Sans",filename:"70lXu7g-Lm8OXGnh_Ow1sV3OEJeJRVdC",category:"sans-serif",url:"https://fonts.gstatic.com/s/tiktoksans/v7/70lXu7g-Lm8OXGnh_Ow1sV3OEJeJRVdC.ttf",weight:400,isVariable:!0},{displayName:"Hahmlet",filename:"BngIUXpCQ3nKpIo0V_jQjP_L3qE",category:"serif",url:"https://fonts.gstatic.com/s/hahmlet/v21/BngIUXpCQ3nKpIo0V_jQjP_L3qE.ttf",weight:400,isVariable:!0},{displayName:"Scada",filename:"RLpxK5Pv5qumeWJoxzUobkvv",category:"sans-serif",url:"https://fonts.gstatic.com/s/scada/v16/RLpxK5Pv5qumeWJoxzUobkvv.ttf",weight:400,isVariable:!1},{displayName:"Ibarra Real Nova",filename:"sZlfdQiA-DBIDCcaWtQzL4BZHoiDoHxSENxuLuE",category:"serif",url:"https://fonts.gstatic.com/s/ibarrarealnova/v30/sZlfdQiA-DBIDCcaWtQzL4BZHoiDoHxSENxuLuE.ttf",weight:400,isVariable:!0},{displayName:"Antic Didone",filename:"RWmPoKKX6u8sp8fIWdnDKqDiqYsGBGBzCw",category:"serif",url:"https://fonts.gstatic.com/s/anticdidone/v17/RWmPoKKX6u8sp8fIWdnDKqDiqYsGBGBzCw.ttf",weight:400,isVariable:!1},{displayName:"Radio Canada Big",filename:"LYjZdHrinEImAoQewU0hyTsPFra4eJSY8z6Np1k",category:"sans-serif",url:"https://fonts.gstatic.com/s/radiocanadabig/v3/LYjZdHrinEImAoQewU0hyTsPFra4eJSY8z6Np1k.ttf",weight:400,isVariable:!0},{displayName:"Kufam",filename:"C8ct4cY7pG7w_p6CLDwZwmGE",category:"sans-serif",url:"https://fonts.gstatic.com/s/kufam/v26/C8ct4cY7pG7w_p6CLDwZwmGE.ttf",weight:400,isVariable:!0},{displayName:"Gabriela",filename:"qkBWXvsO6sreR8E-b_m-zrpHmRzC",category:"serif",url:"https://fonts.gstatic.com/s/gabriela/v23/qkBWXvsO6sreR8E-b_m-zrpHmRzC.ttf",weight:400,isVariable:!1},{displayName:"Skranji",filename:"OZpDg_dtriVFNerMYzuuklTm3Ek",category:"display",url:"https://fonts.gstatic.com/s/skranji/v14/OZpDg_dtriVFNerMYzuuklTm3Ek.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Sinhala",filename:"yMJIMJBya43H0SUF_WmcBEEf4rQVO3ny-WmZp1A3",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssinhala/v36/yMJIMJBya43H0SUF_WmcBEEf4rQVO3ny-WmZp1A3.ttf",weight:400,isVariable:!0},{displayName:"Bubblegum Sans",filename:"AYCSpXb_Z9EORv1M5QTjEzMEtdaHzoPPb7R4",category:"display",url:"https://fonts.gstatic.com/s/bubblegumsans/v22/AYCSpXb_Z9EORv1M5QTjEzMEtdaHzoPPb7R4.ttf",weight:400,isVariable:!1},{displayName:"Megrim",filename:"46kulbz5WjvLqJZlbWXgd0RY1g",category:"display",url:"https://fonts.gstatic.com/s/megrim/v18/46kulbz5WjvLqJZlbWXgd0RY1g.ttf",weight:400,isVariable:!1},{displayName:"Mansalva",filename:"aWB4m0aacbtDfvq5NJllI47vdyBg",category:"handwriting",url:"https://fonts.gstatic.com/s/mansalva/v16/aWB4m0aacbtDfvq5NJllI47vdyBg.ttf",weight:400,isVariable:!1},{displayName:"AR One Sans",filename:"TUZ0zwhrmbFp0Srr_tH6fuSaU5EP1H3r",category:"sans-serif",url:"https://fonts.gstatic.com/s/aronesans/v6/TUZ0zwhrmbFp0Srr_tH6fuSaU5EP1H3r.ttf",weight:400,isVariable:!0},{displayName:"Grenze Gotisch",filename:"Fh4sPjjqNDz1osh_jX9YfjudpAhKF66qe6T5",category:"display",url:"https://fonts.gstatic.com/s/grenzegotisch/v20/Fh4sPjjqNDz1osh_jX9YfjudpAhKF66qe6T5.ttf",weight:400,isVariable:!0},{displayName:"Carrois Gothic",filename:"Z9XPDmFATg-N1PLtLOOxvIHl9ZmD3i7ajcJ-",category:"sans-serif",url:"https://fonts.gstatic.com/s/carroisgothic/v17/Z9XPDmFATg-N1PLtLOOxvIHl9ZmD3i7ajcJ-.ttf",weight:400,isVariable:!1},{displayName:"Bowlby One",filename:"taiPGmVuC4y96PFeqp8smo6C_Z0wcK4",category:"display",url:"https://fonts.gstatic.com/s/bowlbyone/v25/taiPGmVuC4y96PFeqp8smo6C_Z0wcK4.ttf",weight:400,isVariable:!1},{displayName:"Bungee Inline",filename:"Gg8zN58UcgnlCweMrih332VuDGJ1-FEglsc",category:"display",url:"https://fonts.gstatic.com/s/bungeeinline/v19/Gg8zN58UcgnlCweMrih332VuDGJ1-FEglsc.ttf",weight:400,isVariable:!1},{displayName:"Turret Road",filename:"pxiAypMgpcBFjE84Zv-fE3tFOvODSVFF",category:"display",url:"https://fonts.gstatic.com/s/turretroad/v11/pxiAypMgpcBFjE84Zv-fE3tFOvODSVFF.ttf",weight:400,isVariable:!1},{displayName:"Inria Sans",filename:"ptRMTiqXYfZMCOiVj9kQ5O7yKQNute8",category:"sans-serif",url:"https://fonts.gstatic.com/s/inriasans/v15/ptRMTiqXYfZMCOiVj9kQ5O7yKQNute8.ttf",weight:400,isVariable:!1},{displayName:"Fauna One",filename:"wlpzgwTPBVpjpCuwkuEx2UxLYClOCg",category:"serif",url:"https://fonts.gstatic.com/s/faunaone/v16/wlpzgwTPBVpjpCuwkuEx2UxLYClOCg.ttf",weight:400,isVariable:!1},{displayName:"Cherry Bomb One",filename:"y83DW4od1h6KlV3c6JJhRhGOdhrKDNpF41fr-w",category:"display",url:"https://fonts.gstatic.com/s/cherrybombone/v11/y83DW4od1h6KlV3c6JJhRhGOdhrKDNpF41fr-w.ttf",weight:400,isVariable:!1},{displayName:"IM Fell English SC",filename:"a8IENpD3CDX-4zrWfr1VY879qFF05pZLO4gOg0shzA",category:"serif",url:"https://fonts.gstatic.com/s/imfellenglishsc/v16/a8IENpD3CDX-4zrWfr1VY879qFF05pZLO4gOg0shzA.ttf",weight:400,isVariable:!1},{displayName:"Ubuntu Sans",filename:"co3CmWd6mSRtB7_9UaLWwIPJiXzr6FTJ",category:"sans-serif",url:"https://fonts.gstatic.com/s/ubuntusans/v4/co3CmWd6mSRtB7_9UaLWwIPJiXzr6FTJ.ttf",weight:400,isVariable:!0},{displayName:"Recursive",filename:"8vIK7wMr0mhh-RQChyHeFGxbO_zo-w",category:"sans-serif",url:"https://fonts.gstatic.com/s/recursive/v44/8vIK7wMr0mhh-RQChyHeFGxbO_zo-w.ttf",weight:400,isVariable:!0},{displayName:"Copse",filename:"11hPGpDKz1rGb0djHkihUb-A",category:"serif",url:"https://fonts.gstatic.com/s/copse/v16/11hPGpDKz1rGb0djHkihUb-A.ttf",weight:400,isVariable:!1},{displayName:"Qwitcher Grypen",filename:"pxicypclp9tDilN9RrC5BSI1dZmrSGNAom-wpw",category:"handwriting",url:"https://fonts.gstatic.com/s/qwitchergrypen/v8/pxicypclp9tDilN9RrC5BSI1dZmrSGNAom-wpw.ttf",weight:400,isVariable:!1},{displayName:"Kelly Slab",filename:"-W_7XJX0Rz3cxUnJC5t6TkMBf50kbiM",category:"display",url:"https://fonts.gstatic.com/s/kellyslab/v18/-W_7XJX0Rz3cxUnJC5t6TkMBf50kbiM.ttf",weight:400,isVariable:!1},{displayName:"Piazzolla",filename:"N0bX2SlTPu5rIkWIZjVQIfTTkdbJYA",category:"serif",url:"https://fonts.gstatic.com/s/piazzolla/v40/N0bX2SlTPu5rIkWIZjVQIfTTkdbJYA.ttf",weight:400,isVariable:!0},{displayName:"Inknut Antiqua",filename:"Y4GSYax7VC4ot_qNB4nYpBdaKXUD6pzxRwYB",category:"serif",url:"https://fonts.gstatic.com/s/inknutantiqua/v16/Y4GSYax7VC4ot_qNB4nYpBdaKXUD6pzxRwYB.ttf",weight:400,isVariable:!1},{displayName:"Quintessential",filename:"fdNn9sOGq31Yjnh3qWU14DdtjY5wS7kmAyxM",category:"handwriting",url:"https://fonts.gstatic.com/s/quintessential/v24/fdNn9sOGq31Yjnh3qWU14DdtjY5wS7kmAyxM.ttf",weight:400,isVariable:!1},{displayName:"Saira Stencil One",filename:"SLXSc03I6HkvZGJ1GvvipLoYSTEL9AsMawif2YQ2",category:"display",url:"https://fonts.gstatic.com/s/sairastencilone/v18/SLXSc03I6HkvZGJ1GvvipLoYSTEL9AsMawif2YQ2.ttf",weight:400,isVariable:!1},{displayName:"Chelsea Market",filename:"BCawqZsHqfr89WNP_IApC8tzKBhlLA4uKkWk",category:"display",url:"https://fonts.gstatic.com/s/chelseamarket/v14/BCawqZsHqfr89WNP_IApC8tzKBhlLA4uKkWk.ttf",weight:400,isVariable:!1},{displayName:"Zen Dots",filename:"XRXX3ICfm00IGoesQeaETM_FcCIG",category:"display",url:"https://fonts.gstatic.com/s/zendots/v14/XRXX3ICfm00IGoesQeaETM_FcCIG.ttf",weight:400,isVariable:!1},{displayName:"Uncial Antiqua",filename:"N0bM2S5WOex4OUbESzoESK-i-PfRS5VBBSSF",category:"display",url:"https://fonts.gstatic.com/s/uncialantiqua/v22/N0bM2S5WOex4OUbESzoESK-i-PfRS5VBBSSF.ttf",weight:400,isVariable:!1},{displayName:"Spectral SC",filename:"KtkpALCRZonmalTgyPmRfvWi6WDfFpuc",category:"serif",url:"https://fonts.gstatic.com/s/spectralsc/v15/KtkpALCRZonmalTgyPmRfvWi6WDfFpuc.ttf",weight:400,isVariable:!1},{displayName:"Kadwa",filename:"rnCm-x5V0g7iphTHRcc2s2XH",category:"serif",url:"https://fonts.gstatic.com/s/kadwa/v13/rnCm-x5V0g7iphTHRcc2s2XH.ttf",weight:400,isVariable:!1},{displayName:"KoHo",filename:"K2F-fZ5fmddNBikefJbSOos",category:"sans-serif",url:"https://fonts.gstatic.com/s/koho/v18/K2F-fZ5fmddNBikefJbSOos.ttf",weight:400,isVariable:!1},{displayName:"Rambla",filename:"snfrs0ip98hx6mr0I7IONthkwQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/rambla/v14/snfrs0ip98hx6mr0I7IONthkwQ.ttf",weight:400,isVariable:!1},{displayName:"Mouse Memoirs",filename:"t5tmIRoSNJ-PH0WNNgDYxdSb7TnFrpOHYh4",category:"sans-serif",url:"https://fonts.gstatic.com/s/mousememoirs/v19/t5tmIRoSNJ-PH0WNNgDYxdSb7TnFrpOHYh4.ttf",weight:400,isVariable:!1},{displayName:"IBM Plex Sans Hebrew",filename:"BCa2qYENg9Kw1mpLpO0bGM5lfHAAZHhDXH2l8Fk3rSaM",category:"sans-serif",url:"https://fonts.gstatic.com/s/ibmplexsanshebrew/v12/BCa2qYENg9Kw1mpLpO0bGM5lfHAAZHhDXH2l8Fk3rSaM.ttf",weight:400,isVariable:!1},{displayName:"Agdasima",filename:"PN_zRfyxp2f1fUCgAMg6rzjb_-Da",category:"sans-serif",url:"https://fonts.gstatic.com/s/agdasima/v5/PN_zRfyxp2f1fUCgAMg6rzjb_-Da.ttf",weight:400,isVariable:!1},{displayName:"Beth Ellen",filename:"WwkbxPW2BE-3rb_JNT-qEIAiVNo5xNY",category:"handwriting",url:"https://fonts.gstatic.com/s/bethellen/v22/WwkbxPW2BE-3rb_JNT-qEIAiVNo5xNY.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Kannada",filename:"8vIS7xs32H97qzQKnzfeXycxXZyUmz6kR47NCV5Z",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanskannada/v31/8vIS7xs32H97qzQKnzfeXycxXZyUmz6kR47NCV5Z.ttf",weight:400,isVariable:!0},{displayName:"Voltaire",filename:"1Pttg8PcRfSblAvGvQooYKVnBOif",category:"sans-serif",url:"https://fonts.gstatic.com/s/voltaire/v23/1Pttg8PcRfSblAvGvQooYKVnBOif.ttf",weight:400,isVariable:!1},{displayName:"Birthstone",filename:"8AtsGs2xO4yLRhy87sv_HLn5jRfZHzM",category:"handwriting",url:"https://fonts.gstatic.com/s/birthstone/v16/8AtsGs2xO4yLRhy87sv_HLn5jRfZHzM.ttf",weight:400,isVariable:!1},{displayName:"Baloo Thambi 2",filename:"cY9cfjeOW0NHpmOQXranrbDyu4hHBJOxZQPp",category:"display",url:"https://fonts.gstatic.com/s/baloothambi2/v22/cY9cfjeOW0NHpmOQXranrbDyu4hHBJOxZQPp.ttf",weight:400,isVariable:!0},{displayName:"Syne Mono",filename:"K2FzfZNHj_FHBmRbFvHzIqCkDyvqZA",category:"monospace",url:"https://fonts.gstatic.com/s/synemono/v16/K2FzfZNHj_FHBmRbFvHzIqCkDyvqZA.ttf",weight:400,isVariable:!1},{displayName:"Atma",filename:"uK_84rqWc-Eom25bDj8WIv4",category:"display",url:"https://fonts.gstatic.com/s/atma/v19/uK_84rqWc-Eom25bDj8WIv4.ttf",weight:400,isVariable:!1},{displayName:"Marvel",filename:"nwpVtKeoNgBV0qaIkV7ED366zg",category:"sans-serif",url:"https://fonts.gstatic.com/s/marvel/v17/nwpVtKeoNgBV0qaIkV7ED366zg.ttf",weight:400,isVariable:!1},{displayName:"Hurricane",filename:"pe0sMIuULZxTolZ5YldyAv2-C99ycg",category:"handwriting",url:"https://fonts.gstatic.com/s/hurricane/v9/pe0sMIuULZxTolZ5YldyAv2-C99ycg.ttf",weight:400,isVariable:!1},{displayName:"Nova Mono",filename:"Cn-0JtiGWQ5Ajb--MRKfYGxYrdM9Sg",category:"monospace",url:"https://fonts.gstatic.com/s/novamono/v23/Cn-0JtiGWQ5Ajb--MRKfYGxYrdM9Sg.ttf",weight:400,isVariable:!1},{displayName:"Lekton",filename:"SZc43FDmLaWmWpBeXxfonUPL6Q",category:"monospace",url:"https://fonts.gstatic.com/s/lekton/v21/SZc43FDmLaWmWpBeXxfonUPL6Q.ttf",weight:400,isVariable:!1},{displayName:"Pathway Extreme",filename:"neITzCC3pJ0rsaH2_sD-QttXPfDVqVkarSqSwA",category:"sans-serif",url:"https://fonts.gstatic.com/s/pathwayextreme/v7/neITzCC3pJ0rsaH2_sD-QttXPfDVqVkarSqSwA.ttf",weight:400,isVariable:!0},{displayName:"Libre Barcode 39 Extended Text",filename:"eLG1P_rwIgOiDA7yrs9LoKaYRVLQ1YldrrOnnL7xPO4jNP68fLIiPopNNA",category:"display",url:"https://fonts.gstatic.com/s/librebarcode39extendedtext/v30/eLG1P_rwIgOiDA7yrs9LoKaYRVLQ1YldrrOnnL7xPO4jNP68fLIiPopNNA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Georgian",filename:"PlIgFke5O6RzLfvNNVSitxkr76PRHBCiaf5GGPq86g",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansgeorgian/v48/PlIgFke5O6RzLfvNNVSitxkr76PRHBCiaf5GGPq86g.ttf",weight:400,isVariable:!0},{displayName:"Baloo Chettan 2",filename:"vm8udRbmXEva26PK-NtuX4ynWEzf4P17OpYDlg",category:"display",url:"https://fonts.gstatic.com/s/baloochettan2/v23/vm8udRbmXEva26PK-NtuX4ynWEzf4P17OpYDlg.ttf",weight:400,isVariable:!0},{displayName:"Della Respira",filename:"RLp5K5v44KaueWI6iEJQBiGPRfkSu6EuTHo",category:"serif",url:"https://fonts.gstatic.com/s/dellarespira/v24/RLp5K5v44KaueWI6iEJQBiGPRfkSu6EuTHo.ttf",weight:400,isVariable:!1},{displayName:"Alike",filename:"HI_EiYEYI6BIoEjBSZXAQ4-d",category:"serif",url:"https://fonts.gstatic.com/s/alike/v22/HI_EiYEYI6BIoEjBSZXAQ4-d.ttf",weight:400,isVariable:!1},{displayName:"Amarante",filename:"xMQXuF1KTa6EvGx9bq-3C3rAmD-b",category:"display",url:"https://fonts.gstatic.com/s/amarante/v30/xMQXuF1KTa6EvGx9bq-3C3rAmD-b.ttf",weight:400,isVariable:!1},{displayName:"Quando",filename:"xMQVuFNaVa6YuW0pC6WzKX_QmA",category:"serif",url:"https://fonts.gstatic.com/s/quando/v18/xMQVuFNaVa6YuW0pC6WzKX_QmA.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Devanagari",filename:"x3d-cl3IZKmUqiMk48ZHXJ5jwU-DZGRSaQ4djEWqKMxsKw",category:"serif",url:"https://fonts.gstatic.com/s/notoserifdevanagari/v34/x3d-cl3IZKmUqiMk48ZHXJ5jwU-DZGRSaQ4djEWqKMxsKw.ttf",weight:400,isVariable:!0},{displayName:"IM Fell DW Pica",filename:"2sDGZGRQotv9nbn2qSl0TxXVYNw9ZAPUvi88MQ",category:"serif",url:"https://fonts.gstatic.com/s/imfelldwpica/v16/2sDGZGRQotv9nbn2qSl0TxXVYNw9ZAPUvi88MQ.ttf",weight:400,isVariable:!1},{displayName:"McLaren",filename:"2EbnL-ZuAXFqZFXISYYf8z2Yt_c",category:"display",url:"https://fonts.gstatic.com/s/mclaren/v19/2EbnL-ZuAXFqZFXISYYf8z2Yt_c.ttf",weight:400,isVariable:!1},{displayName:"Qwigley",filename:"1cXzaU3UGJb5tGoCuVxsi1mBmcE",category:"handwriting",url:"https://fonts.gstatic.com/s/qwigley/v20/1cXzaU3UGJb5tGoCuVxsi1mBmcE.ttf",weight:400,isVariable:!1},{displayName:"Magra",filename:"uK_94ruaZus72k5xIDMfO-ed",category:"sans-serif",url:"https://fonts.gstatic.com/s/magra/v15/uK_94ruaZus72k5xIDMfO-ed.ttf",weight:400,isVariable:!1},{displayName:"Sunflower",filename:"RWmPoKeF8fUjqIj7Vc-06MfiqYsGBGBzCw",category:"sans-serif",url:"https://fonts.gstatic.com/s/sunflower/v18/RWmPoKeF8fUjqIj7Vc-06MfiqYsGBGBzCw.ttf",weight:300,isVariable:!1},{displayName:"Xanh Mono",filename:"R70YjykVmvKCep-vWhSYmACQXzLhTg",category:"monospace",url:"https://fonts.gstatic.com/s/xanhmono/v19/R70YjykVmvKCep-vWhSYmACQXzLhTg.ttf",weight:400,isVariable:!1},{displayName:"Barriecito",filename:"WWXXlj-CbBOSLY2QTuY_KdUiYwTO0MU",category:"display",url:"https://fonts.gstatic.com/s/barriecito/v18/WWXXlj-CbBOSLY2QTuY_KdUiYwTO0MU.ttf",weight:400,isVariable:!1},{displayName:"Metamorphous",filename:"Wnz8HA03aAXcC39ZEX5y1330PCCthTsmaQ",category:"display",url:"https://fonts.gstatic.com/s/metamorphous/v22/Wnz8HA03aAXcC39ZEX5y1330PCCthTsmaQ.ttf",weight:400,isVariable:!1},{displayName:"David Libre",filename:"snfus0W_99N64iuYSvp4W_l86p6TYS-Y",category:"serif",url:"https://fonts.gstatic.com/s/davidlibre/v17/snfus0W_99N64iuYSvp4W_l86p6TYS-Y.ttf",weight:400,isVariable:!1},{displayName:"Fresca",filename:"6ae94K--SKgCzbM2Gr0W13DKPA",category:"sans-serif",url:"https://fonts.gstatic.com/s/fresca/v24/6ae94K--SKgCzbM2Gr0W13DKPA.ttf",weight:400,isVariable:!1},{displayName:"Cambay",filename:"SLXJc1rY6H0_ZDsGbrSIz9JsaA",category:"sans-serif",url:"https://fonts.gstatic.com/s/cambay/v14/SLXJc1rY6H0_ZDsGbrSIz9JsaA.ttf",weight:400,isVariable:!1},{displayName:"Bokor",filename:"m8JcjfpeeaqTiR2WdInbcaxE",category:"display",url:"https://fonts.gstatic.com/s/bokor/v32/m8JcjfpeeaqTiR2WdInbcaxE.ttf",weight:400,isVariable:!1},{displayName:"Zalando Sans Expanded",filename:"JTUJjJci8Cy470GaeFwsix1hi3aTmrgRwU-Dq0Y6QX5Mog",category:"sans-serif",url:"https://fonts.gstatic.com/s/zalandosansexpanded/v2/JTUJjJci8Cy470GaeFwsix1hi3aTmrgRwU-Dq0Y6QX5Mog.ttf",weight:400,isVariable:!0},{displayName:"Corinthia",filename:"wEO_EBrAnchaJyPMHE0FUfAL3EsHiA",category:"handwriting",url:"https://fonts.gstatic.com/s/corinthia/v13/wEO_EBrAnchaJyPMHE0FUfAL3EsHiA.ttf",weight:400,isVariable:!1},{displayName:"Fanwood Text",filename:"3XFtErwl05Ad_vSCF6Fq7xXGRdbY1P1Sbg",category:"serif",url:"https://fonts.gstatic.com/s/fanwoodtext/v17/3XFtErwl05Ad_vSCF6Fq7xXGRdbY1P1Sbg.ttf",weight:400,isVariable:!1},{displayName:"Kurale",filename:"4iCs6KV9e9dXjho6eAT3v02QFg",category:"serif",url:"https://fonts.gstatic.com/s/kurale/v14/4iCs6KV9e9dXjho6eAT3v02QFg.ttf",weight:400,isVariable:!1},{displayName:"Seaweed Script",filename:"bx6cNx6Tne2pxOATYE8C_Rsoe0WJ-KcGVbLW",category:"display",url:"https://fonts.gstatic.com/s/seaweedscript/v17/bx6cNx6Tne2pxOATYE8C_Rsoe0WJ-KcGVbLW.ttf",weight:400,isVariable:!1},{displayName:"ZCOOL KuaiLe",filename:"tssqApdaRQokwFjFJjvM6h2WpozzoXhC2g",category:"sans-serif",url:"https://fonts.gstatic.com/s/zcoolkuaile/v20/tssqApdaRQokwFjFJjvM6h2WpozzoXhC2g.ttf",weight:400,isVariable:!1},{displayName:"B612 Mono",filename:"kmK_Zq85QVWbN1eW6lJl1wTcquRTtg",category:"monospace",url:"https://fonts.gstatic.com/s/b612mono/v16/kmK_Zq85QVWbN1eW6lJl1wTcquRTtg.ttf",weight:400,isVariable:!1},{displayName:"Zen Antique",filename:"AYCPpXPnd91Ma_Zf-Ri2JXJq7PKP5Z_G",category:"serif",url:"https://fonts.gstatic.com/s/zenantique/v14/AYCPpXPnd91Ma_Zf-Ri2JXJq7PKP5Z_G.ttf",weight:400,isVariable:!1},{displayName:"Encode Sans Semi Expanded",filename:"ke83OhAPMEZs-BDuzwftTNJ85JvwMOzE9d9Cca5TC4o_LyjgOXc",category:"sans-serif",url:"https://fonts.gstatic.com/s/encodesanssemiexpanded/v20/ke83OhAPMEZs-BDuzwftTNJ85JvwMOzE9d9Cca5TC4o_LyjgOXc.ttf",weight:400,isVariable:!1},{displayName:"Baloo Paaji 2",filename:"i7dMIFFzbz-QHZUdV9_UGWZuYFKQHwyVd3U",category:"display",url:"https://fonts.gstatic.com/s/baloopaaji2/v29/i7dMIFFzbz-QHZUdV9_UGWZuYFKQHwyVd3U.ttf",weight:400,isVariable:!0},{displayName:"Meie Script",filename:"_LOImzDK7erRjhunIspaMjxn5IXg0WDz",category:"handwriting",url:"https://fonts.gstatic.com/s/meiescript/v22/_LOImzDK7erRjhunIspaMjxn5IXg0WDz.ttf",weight:400,isVariable:!1},{displayName:"Farro",filename:"i7dEIFl3byGNHZVNHLq2cV5d",category:"sans-serif",url:"https://fonts.gstatic.com/s/farro/v15/i7dEIFl3byGNHZVNHLq2cV5d.ttf",weight:400,isVariable:!1},{displayName:"Jaldi",filename:"or3sQ67z0_CI30NUZpD_B6g8",category:"sans-serif",url:"https://fonts.gstatic.com/s/jaldi/v14/or3sQ67z0_CI30NUZpD_B6g8.ttf",weight:400,isVariable:!1},{displayName:"Miriam Libre",filename:"DdTh798HsHwubBAqfkcBTL_vYJn_Teun9g",category:"sans-serif",url:"https://fonts.gstatic.com/s/miriamlibre/v19/DdTh798HsHwubBAqfkcBTL_vYJn_Teun9g.ttf",weight:400,isVariable:!0},{displayName:"Mako",filename:"H4coBX6Mmc_Z0ST09g478Lo",category:"sans-serif",url:"https://fonts.gstatic.com/s/mako/v19/H4coBX6Mmc_Z0ST09g478Lo.ttf",weight:400,isVariable:!1},{displayName:"Baloo Tamma 2",filename:"vEFX2_hCAgcR46PaajtrYlBbT0g21tqeR7c",category:"display",url:"https://fonts.gstatic.com/s/balootamma2/v20/vEFX2_hCAgcR46PaajtrYlBbT0g21tqeR7c.ttf",weight:400,isVariable:!0},{displayName:"Sue Ellen Francisco",filename:"wXK3E20CsoJ9j1DDkjHcQ5ZL8xRaxru9ropF2lqk9H4",category:"handwriting",url:"https://fonts.gstatic.com/s/sueellenfrancisco/v22/wXK3E20CsoJ9j1DDkjHcQ5ZL8xRaxru9ropF2lqk9H4.ttf",weight:400,isVariable:!1},{displayName:"Zain",filename:"syk8-y9lm7soANLHkSKW5tM",category:"sans-serif",url:"https://fonts.gstatic.com/s/zain/v4/syk8-y9lm7soANLHkSKW5tM.ttf",weight:400,isVariable:!1},{displayName:"Buenard",filename:"OD5DuM6Cyma8FnnsPzf9qGi9HL4",category:"serif",url:"https://fonts.gstatic.com/s/buenard/v22/OD5DuM6Cyma8FnnsPzf9qGi9HL4.ttf",weight:400,isVariable:!0},{displayName:"Ruslan Display",filename:"Gw6jwczl81XcIZuckK_e3UpfdzxrldyFvm1n",category:"display",url:"https://fonts.gstatic.com/s/ruslandisplay/v27/Gw6jwczl81XcIZuckK_e3UpfdzxrldyFvm1n.ttf",weight:400,isVariable:!1},{displayName:"Vibur",filename:"DPEiYwmEzw0QRjTpLjoJd-Xa",category:"handwriting",url:"https://fonts.gstatic.com/s/vibur/v24/DPEiYwmEzw0QRjTpLjoJd-Xa.ttf",weight:400,isVariable:!1},{displayName:"Gotu",filename:"o-0FIpksx3QOlH0Lioh6-hU",category:"sans-serif",url:"https://fonts.gstatic.com/s/gotu/v18/o-0FIpksx3QOlH0Lioh6-hU.ttf",weight:400,isVariable:!1},{displayName:"Inder",filename:"w8gUH2YoQe8_4vq6pw-P3U4O",category:"sans-serif",url:"https://fonts.gstatic.com/s/inder/v15/w8gUH2YoQe8_4vq6pw-P3U4O.ttf",weight:400,isVariable:!1},{displayName:"Pompiere",filename:"VEMyRoxis5Dwuyeov6Wt5jDtreOL",category:"display",url:"https://fonts.gstatic.com/s/pompiere/v21/VEMyRoxis5Dwuyeov6Wt5jDtreOL.ttf",weight:400,isVariable:!1},{displayName:"Germania One",filename:"Fh4yPjrqIyv2ucM2qzBjeS3ezAJONau6ew",category:"display",url:"https://fonts.gstatic.com/s/germaniaone/v21/Fh4yPjrqIyv2ucM2qzBjeS3ezAJONau6ew.ttf",weight:400,isVariable:!1},{displayName:"Rasa",filename:"xn7vYHIn1mWmTqJelgiQV9w",category:"serif",url:"https://fonts.gstatic.com/s/rasa/v27/xn7vYHIn1mWmTqJelgiQV9w.ttf",weight:400,isVariable:!0},{displayName:"Gluten",filename:"HhyVU5gk9fW7OUdPK9qGGI9STA",category:"display",url:"https://fonts.gstatic.com/s/gluten/v18/HhyVU5gk9fW7OUdPK9qGGI9STA.ttf",weight:400,isVariable:!0},{displayName:"Fuzzy Bubbles",filename:"6qLGKZMbrgv9pwtjPEVNV0F2NnP5Zxsreko",category:"handwriting",url:"https://fonts.gstatic.com/s/fuzzybubbles/v9/6qLGKZMbrgv9pwtjPEVNV0F2NnP5Zxsreko.ttf",weight:400,isVariable:!1},{displayName:"Aguafina Script",filename:"If2QXTv_ZzSxGIO30LemWEOmt1bHqs4pgicOrg",category:"handwriting",url:"https://fonts.gstatic.com/s/aguafinascript/v24/If2QXTv_ZzSxGIO30LemWEOmt1bHqs4pgicOrg.ttf",weight:400,isVariable:!1},{displayName:"Delius Unicase",filename:"845BNMEwEIOVT8BmgfSzIr_6mmLHd-73LXWs",category:"handwriting",url:"https://fonts.gstatic.com/s/deliusunicase/v30/845BNMEwEIOVT8BmgfSzIr_6mmLHd-73LXWs.ttf",weight:400,isVariable:!1},{displayName:"Gurajada",filename:"FwZY7-Qx308m-l-0Kd6A4sijpFu_",category:"sans-serif",url:"https://fonts.gstatic.com/s/gurajada/v22/FwZY7-Qx308m-l-0Kd6A4sijpFu_.ttf",weight:400,isVariable:!1},{displayName:"Coustard",filename:"3XFpErgg3YsZ5fqUU9UPvWXuROTd",category:"serif",url:"https://fonts.gstatic.com/s/coustard/v17/3XFpErgg3YsZ5fqUU9UPvWXuROTd.ttf",weight:400,isVariable:!1},{displayName:"Protest Strike",filename:"0QI5MXdf4Y67Rn6vBog67ZjFlpzW0gZOs7BX",category:"display",url:"https://fonts.gstatic.com/s/proteststrike/v2/0QI5MXdf4Y67Rn6vBog67ZjFlpzW0gZOs7BX.ttf",weight:400,isVariable:!1},{displayName:"Happy Monkey",filename:"K2F2fZZcl-9SXwl5F_C4R_OABwD2bWqVjw",category:"display",url:"https://fonts.gstatic.com/s/happymonkey/v15/K2F2fZZcl-9SXwl5F_C4R_OABwD2bWqVjw.ttf",weight:400,isVariable:!1},{displayName:"Thasadith",filename:"mtG44_1TIqPYrd_f5R1YsEkU0CWuFw",category:"sans-serif",url:"https://fonts.gstatic.com/s/thasadith/v13/mtG44_1TIqPYrd_f5R1YsEkU0CWuFw.ttf",weight:400,isVariable:!1},{displayName:"Euphoria Script",filename:"mFTpWb0X2bLb_cx6To2B8GpKoD5ak_ZT1D8x7Q",category:"handwriting",url:"https://fonts.gstatic.com/s/euphoriascript/v22/mFTpWb0X2bLb_cx6To2B8GpKoD5ak_ZT1D8x7Q.ttf",weight:400,isVariable:!1},{displayName:"Sansita Swashed",filename:"BXRzvFfZifTZgFlDDLgNkBydPKT31beyoRkJIA",category:"display",url:"https://fonts.gstatic.com/s/sansitaswashed/v23/BXRzvFfZifTZgFlDDLgNkBydPKT31beyoRkJIA.ttf",weight:400,isVariable:!0},{displayName:"Capriola",filename:"wXKoE3YSppcvo1PDln_8L-AinG8y",category:"sans-serif",url:"https://fonts.gstatic.com/s/capriola/v15/wXKoE3YSppcvo1PDln_8L-AinG8y.ttf",weight:400,isVariable:!1},{displayName:"Zalando Sans",filename:"FwZc7-Asy1Em_lq_aK3hpr-LpWm6_K7bkA",category:"sans-serif",url:"https://fonts.gstatic.com/s/zalandosans/v2/FwZc7-Asy1Em_lq_aK3hpr-LpWm6_K7bkA.ttf",weight:400,isVariable:!0},{displayName:"Mukta Mahee",filename:"XRXQ3IOIi0hcP8iVU67hA-vNWz4PDWtj",category:"sans-serif",url:"https://fonts.gstatic.com/s/muktamahee/v19/XRXQ3IOIi0hcP8iVU67hA-vNWz4PDWtj.ttf",weight:400,isVariable:!1},{displayName:"Slackey",filename:"N0bV2SdQO-5yM0-dKlRaJdbWgdY",category:"display",url:"https://fonts.gstatic.com/s/slackey/v29/N0bV2SdQO-5yM0-dKlRaJdbWgdY.ttf",weight:400,isVariable:!1},{displayName:"Voces",filename:"-F6_fjJyLyU8d4PBBG7YpzlJ",category:"sans-serif",url:"https://fonts.gstatic.com/s/voces/v24/-F6_fjJyLyU8d4PBBG7YpzlJ.ttf",weight:400,isVariable:!1},{displayName:"Afacad Flux",filename:"9oRKNYYQryMlneUPykRmTvvzM83LHq0O",category:"sans-serif",url:"https://fonts.gstatic.com/s/afacadflux/v4/9oRKNYYQryMlneUPykRmTvvzM83LHq0O.ttf",weight:400,isVariable:!0},{displayName:"Monomaniac One",filename:"4iC06K17YctZjx50EU-QlwPmcqRnqYkB5kwI",category:"sans-serif",url:"https://fonts.gstatic.com/s/monomaniacone/v15/4iC06K17YctZjx50EU-QlwPmcqRnqYkB5kwI.ttf",weight:400,isVariable:!1},{displayName:"Vast Shadow",filename:"pe0qMImKOZ1V62ZwbVY9dfe6Kdpickwp",category:"serif",url:"https://fonts.gstatic.com/s/vastshadow/v21/pe0qMImKOZ1V62ZwbVY9dfe6Kdpickwp.ttf",weight:400,isVariable:!1},{displayName:"Moul",filename:"nuF2D__FSo_3E-RYiJCy-00",category:"display",url:"https://fonts.gstatic.com/s/moul/v30/nuF2D__FSo_3E-RYiJCy-00.ttf",weight:400,isVariable:!1},{displayName:"Jaro",filename:"ea8WadQwV_r_XPbcEdiM628",category:"sans-serif",url:"https://fonts.gstatic.com/s/jaro/v8/ea8WadQwV_r_XPbcEdiM628.ttf",weight:400,isVariable:!1},{displayName:"Vujahday Script",filename:"RWmQoKGA8fEkrIPtSZ3_J7er2dUiDEtvAlaMKw",category:"handwriting",url:"https://fonts.gstatic.com/s/vujahdayscript/v10/RWmQoKGA8fEkrIPtSZ3_J7er2dUiDEtvAlaMKw.ttf",weight:400,isVariable:!1},{displayName:"MedievalSharp",filename:"EvOJzAlL3oU5AQl2mP5KdgptAq96MwvXLDk",category:"display",url:"https://fonts.gstatic.com/s/medievalsharp/v28/EvOJzAlL3oU5AQl2mP5KdgptAq96MwvXLDk.ttf",weight:400,isVariable:!1},{displayName:"Kaisei Opti",filename:"QldKNThJphYb8_g6c2nlIFle7KlmxuHx",category:"serif",url:"https://fonts.gstatic.com/s/kaiseiopti/v11/QldKNThJphYb8_g6c2nlIFle7KlmxuHx.ttf",weight:400,isVariable:!1},{displayName:"Shantell Sans",filename:"FeVWS0pCoLIo-lcdY7kjvNoQs250xsQuLFg",category:"display",url:"https://fonts.gstatic.com/s/shantellsans/v13/FeVWS0pCoLIo-lcdY7kjvNoQs250xsQuLFg.ttf",weight:400,isVariable:!0},{displayName:"Mr De Haviland",filename:"OpNVnooIhJj96FdB73296ksbOj3C4ULVNTlB",category:"handwriting",url:"https://fonts.gstatic.com/s/mrdehaviland/v15/OpNVnooIhJj96FdB73296ksbOj3C4ULVNTlB.ttf",weight:400,isVariable:!1},{displayName:"Rouge Script",filename:"LYjFdGbiklMoCIQOw1Ep3S4PVPXbUJWq9g",category:"handwriting",url:"https://fonts.gstatic.com/s/rougescript/v20/LYjFdGbiklMoCIQOw1Ep3S4PVPXbUJWq9g.ttf",weight:400,isVariable:!1},{displayName:"Coiny",filename:"gyByhwU1K989PXwbElSvO5Tc",category:"display",url:"https://fonts.gstatic.com/s/coiny/v17/gyByhwU1K989PXwbElSvO5Tc.ttf",weight:400,isVariable:!1},{displayName:"Arima",filename:"neIFzCqmt4Aup-CP9IGON7Ez",category:"display",url:"https://fonts.gstatic.com/s/arima/v7/neIFzCqmt4Aup-CP9IGON7Ez.ttf",weight:400,isVariable:!0},{displayName:"Mina",filename:"-nFzOGc18vARrz9j7i3y65o",category:"sans-serif",url:"https://fonts.gstatic.com/s/mina/v14/-nFzOGc18vARrz9j7i3y65o.ttf",weight:400,isVariable:!1},{displayName:"Supermercado One",filename:"OpNXnpQWg8jc_xps_Gi14kVVEXOn60b3MClBRTs",category:"display",url:"https://fonts.gstatic.com/s/supermercadoone/v29/OpNXnpQWg8jc_xps_Gi14kVVEXOn60b3MClBRTs.ttf",weight:400,isVariable:!1},{displayName:"Prosto One",filename:"OpNJno4VhNfK-RgpwWWxpipfWhXD00c",category:"display",url:"https://fonts.gstatic.com/s/prostoone/v21/OpNJno4VhNfK-RgpwWWxpipfWhXD00c.ttf",weight:400,isVariable:!1},{displayName:"Short Stack",filename:"bMrzmS2X6p0jZC6EcmPFX-SScX8D0nq6",category:"handwriting",url:"https://fonts.gstatic.com/s/shortstack/v16/bMrzmS2X6p0jZC6EcmPFX-SScX8D0nq6.ttf",weight:400,isVariable:!1},{displayName:"Molengo",filename:"I_uuMpWeuBzZNBtQbbRQkiCvs5Y",category:"sans-serif",url:"https://fonts.gstatic.com/s/molengo/v17/I_uuMpWeuBzZNBtQbbRQkiCvs5Y.ttf",weight:400,isVariable:!1},{displayName:"Expletus Sans",filename:"RLp5K5v5_bqufTYdnhFzDj2dRfkSu6EuTHo",category:"display",url:"https://fonts.gstatic.com/s/expletussans/v31/RLp5K5v5_bqufTYdnhFzDj2dRfkSu6EuTHo.ttf",weight:400,isVariable:!0},{displayName:"Sofadi One",filename:"JIA2UVBxdnVBuElZaMFGcDOIETkmYDU",category:"display",url:"https://fonts.gstatic.com/s/sofadione/v22/JIA2UVBxdnVBuElZaMFGcDOIETkmYDU.ttf",weight:400,isVariable:!1},{displayName:"Asul",filename:"VuJ-dNjKxYr46fMFXK78JIg",category:"serif",url:"https://fonts.gstatic.com/s/asul/v22/VuJ-dNjKxYr46fMFXK78JIg.ttf",weight:400,isVariable:!1},{displayName:"Lacquer",filename:"EYqzma1QwqpG4_BBB7-AXhttQ5I",category:"display",url:"https://fonts.gstatic.com/s/lacquer/v16/EYqzma1QwqpG4_BBB7-AXhttQ5I.ttf",weight:400,isVariable:!1},{displayName:"WindSong",filename:"KR1WBsyu-P-GFEW57r95HdG6vjH3",category:"handwriting",url:"https://fonts.gstatic.com/s/windsong/v13/KR1WBsyu-P-GFEW57r95HdG6vjH3.ttf",weight:400,isVariable:!1},{displayName:"Kranky",filename:"hESw6XVgJzlPsFnMpheEZo_H_w",category:"display",url:"https://fonts.gstatic.com/s/kranky/v29/hESw6XVgJzlPsFnMpheEZo_H_w.ttf",weight:400,isVariable:!1},{displayName:"Original Surfer",filename:"RWmQoKGZ9vIirYntXJ3_MbekzNMiDEtvAlaMKw",category:"display",url:"https://fonts.gstatic.com/s/originalsurfer/v25/RWmQoKGZ9vIirYntXJ3_MbekzNMiDEtvAlaMKw.ttf",weight:400,isVariable:!1},{displayName:"Cal Sans",filename:"fdN99sWUv3gWqXxqqSBbvloE4LZx",category:"sans-serif",url:"https://fonts.gstatic.com/s/calsans/v2/fdN99sWUv3gWqXxqqSBbvloE4LZx.ttf",weight:400,isVariable:!1},{displayName:"Mallanna",filename:"hv-Vlzx-KEQb84YaDGwzEzRwVvJ-",category:"sans-serif",url:"https://fonts.gstatic.com/s/mallanna/v15/hv-Vlzx-KEQb84YaDGwzEzRwVvJ-.ttf",weight:400,isVariable:!1},{displayName:"Give You Glory",filename:"8QIQdiHOgt3vv4LR7ahjw9-XYc1zB4ZD6rwa",category:"handwriting",url:"https://fonts.gstatic.com/s/giveyouglory/v17/8QIQdiHOgt3vv4LR7ahjw9-XYc1zB4ZD6rwa.ttf",weight:400,isVariable:!1},{displayName:"Modak",filename:"EJRYQgs1XtIEsnMH8BVZ76KU",category:"display",url:"https://fonts.gstatic.com/s/modak/v21/EJRYQgs1XtIEsnMH8BVZ76KU.ttf",weight:400,isVariable:!1},{displayName:"Aref Ruqaa",filename:"WwkbxPW1E165rajQKDulEIAiVNo5xNY",category:"serif",url:"https://fonts.gstatic.com/s/arefruqaa/v26/WwkbxPW1E165rajQKDulEIAiVNo5xNY.ttf",weight:400,isVariable:!1},{displayName:"Angkor",filename:"H4cmBXyAlsPdnlb-8iw-4Lqggw",category:"display",url:"https://fonts.gstatic.com/s/angkor/v35/H4cmBXyAlsPdnlb-8iw-4Lqggw.ttf",weight:400,isVariable:!1},{displayName:"Ephesis",filename:"uU9PCBUS8IerL2VG7xPb3vyHmlI",category:"handwriting",url:"https://fonts.gstatic.com/s/ephesis/v11/uU9PCBUS8IerL2VG7xPb3vyHmlI.ttf",weight:400,isVariable:!1},{displayName:"Bungee Shade",filename:"DtVkJxarWL0t2KdzK3oI_jks7iLSrwFUlw",category:"display",url:"https://fonts.gstatic.com/s/bungeeshade/v17/DtVkJxarWL0t2KdzK3oI_jks7iLSrwFUlw.ttf",weight:400,isVariable:!1},{displayName:"Kodchasan",filename:"1cXxaUPOAJv9sG4I-DJmj3uEicG01A",category:"sans-serif",url:"https://fonts.gstatic.com/s/kodchasan/v20/1cXxaUPOAJv9sG4I-DJmj3uEicG01A.ttf",weight:400,isVariable:!1},{displayName:"Bilbo Swash Caps",filename:"zrf-0GXbz-H3Wb4XBsGrTgq2PVmdqAPopiRfKp8",category:"handwriting",url:"https://fonts.gstatic.com/s/bilboswashcaps/v23/zrf-0GXbz-H3Wb4XBsGrTgq2PVmdqAPopiRfKp8.ttf",weight:400,isVariable:!1},{displayName:"Julee",filename:"TuGfUVB3RpZPQ6ZLodgzydtk",category:"handwriting",url:"https://fonts.gstatic.com/s/julee/v26/TuGfUVB3RpZPQ6ZLodgzydtk.ttf",weight:400,isVariable:!1},{displayName:"Sarina",filename:"-F6wfjF3ITQwasLhLkDUriBQxw",category:"display",url:"https://fonts.gstatic.com/s/sarina/v25/-F6wfjF3ITQwasLhLkDUriBQxw.ttf",weight:400,isVariable:!1},{displayName:"Battambang",filename:"uk-mEGe7raEw-HjkzZabDnWj4yxx7o8",category:"display",url:"https://fonts.gstatic.com/s/battambang/v26/uk-mEGe7raEw-HjkzZabDnWj4yxx7o8.ttf",weight:400,isVariable:!1},{displayName:"Tiro Devanagari Hindi",filename:"55xyezN7P8T4e0_CfIJrwdodg9HoYw0i-M9fSOkOfG0Y3A",category:"serif",url:"https://fonts.gstatic.com/s/tirodevanagarihindi/v5/55xyezN7P8T4e0_CfIJrwdodg9HoYw0i-M9fSOkOfG0Y3A.ttf",weight:400,isVariable:!1},{displayName:"Tienne",filename:"AYCKpX7pe9YCRP0LkEPHSFNyxw",category:"serif",url:"https://fonts.gstatic.com/s/tienne/v21/AYCKpX7pe9YCRP0LkEPHSFNyxw.ttf",weight:400,isVariable:!1},{displayName:"Mukta Vaani",filename:"3Jn5SD_-ynaxmxnEfVHPIF0FfORL0fNy",category:"sans-serif",url:"https://fonts.gstatic.com/s/muktavaani/v15/3Jn5SD_-ynaxmxnEfVHPIF0FfORL0fNy.ttf",weight:400,isVariable:!1},{displayName:"B612",filename:"3JnySDDxiSz32jm4GDigUXw",category:"sans-serif",url:"https://fonts.gstatic.com/s/b612/v13/3JnySDDxiSz32jm4GDigUXw.ttf",weight:400,isVariable:!1},{displayName:"Teachers",filename:"H4ckBXKVncXVmUGsgSY6wr-wg763",category:"sans-serif",url:"https://fonts.gstatic.com/s/teachers/v6/H4ckBXKVncXVmUGsgSY6wr-wg763.ttf",weight:400,isVariable:!0},{displayName:"Brawler",filename:"xn7gYHE3xXewAscGsgC7S9XdZN8",category:"serif",url:"https://fonts.gstatic.com/s/brawler/v20/xn7gYHE3xXewAscGsgC7S9XdZN8.ttf",weight:400,isVariable:!1},{displayName:"Viaoda Libre",filename:"vEFW2_lWCgoR6OKuRz9kcRVJb2IY2tOHXg",category:"display",url:"https://fonts.gstatic.com/s/viaodalibre/v20/vEFW2_lWCgoR6OKuRz9kcRVJb2IY2tOHXg.ttf",weight:400,isVariable:!1},{displayName:"Cutive",filename:"NaPZcZ_fHOhV3Ip7T_hDoyqlZQ",category:"serif",url:"https://fonts.gstatic.com/s/cutive/v24/NaPZcZ_fHOhV3Ip7T_hDoyqlZQ.ttf",weight:400,isVariable:!1},{displayName:"Anybody",filename:"VuJxdNvK2Ib2ppdWeKbXOIFneRo",category:"display",url:"https://fonts.gstatic.com/s/anybody/v13/VuJxdNvK2Ib2ppdWeKbXOIFneRo.ttf",weight:400,isVariable:!0},{displayName:"Rubik Glitch",filename:"qkBSXv8b_srFRYQVYrDKh9ZvmC7HONiSFQ",category:"display",url:"https://fonts.gstatic.com/s/rubikglitch/v2/qkBSXv8b_srFRYQVYrDKh9ZvmC7HONiSFQ.ttf",weight:400,isVariable:!1},{displayName:"Crafty Girls",filename:"va9B4kXI39VaDdlPJo8N_NvuQR37fF3Wlg",category:"handwriting",url:"https://fonts.gstatic.com/s/craftygirls/v16/va9B4kXI39VaDdlPJo8N_NvuQR37fF3Wlg.ttf",weight:400,isVariable:!1},{displayName:"Poetsen One",filename:"ke8hOgIaMUB37xCgvCntWtIvq_KREbG9",category:"display",url:"https://fonts.gstatic.com/s/poetsenone/v3/ke8hOgIaMUB37xCgvCntWtIvq_KREbG9.ttf",weight:400,isVariable:!1},{displayName:"Anek Malayalam",filename:"6qLZKZActRTs_mZAJUZWWkhke1PTSRciY1M1",category:"sans-serif",url:"https://fonts.gstatic.com/s/anekmalayalam/v18/6qLZKZActRTs_mZAJUZWWkhke1PTSRciY1M1.ttf",weight:400,isVariable:!0},{displayName:"Goblin One",filename:"CSR64z1ZnOqZRjRCBVY_TOcATNt_pOU",category:"display",url:"https://fonts.gstatic.com/s/goblinone/v28/CSR64z1ZnOqZRjRCBVY_TOcATNt_pOU.ttf",weight:400,isVariable:!1},{displayName:"Vesper Libre",filename:"bx6CNxyWnf-uxPdXDHUD_Rd4D0-N2qIWVQ",category:"serif",url:"https://fonts.gstatic.com/s/vesperlibre/v21/bx6CNxyWnf-uxPdXDHUD_Rd4D0-N2qIWVQ.ttf",weight:400,isVariable:!1},{displayName:"Allan",filename:"ea8XadU7WuTxEtb2P9SF8nZE",category:"display",url:"https://fonts.gstatic.com/s/allan/v26/ea8XadU7WuTxEtb2P9SF8nZE.ttf",weight:400,isVariable:!1},{displayName:"Special Gothic Condensed One",filename:"R70Njzwei_mJM7OsFDzX7EL9NBO6IPvd-Avolzh49w7PUZt_5YtxbX8",category:"sans-serif",url:"https://fonts.gstatic.com/s/specialgothiccondensedone/v2/R70Njzwei_mJM7OsFDzX7EL9NBO6IPvd-Avolzh49w7PUZt_5YtxbX8.ttf",weight:400,isVariable:!1},{displayName:"Walter Turncoat",filename:"snfys0Gs98ln43n0d-14ULoToe67YB2dQ5ZPqQ",category:"handwriting",url:"https://fonts.gstatic.com/s/walterturncoat/v24/snfys0Gs98ln43n0d-14ULoToe67YB2dQ5ZPqQ.ttf",weight:400,isVariable:!1},{displayName:"Esteban",filename:"r05bGLZE-bdGdN-GdOuD5jokU8E",category:"serif",url:"https://fonts.gstatic.com/s/esteban/v16/r05bGLZE-bdGdN-GdOuD5jokU8E.ttf",weight:400,isVariable:!1},{displayName:"Elsie",filename:"BCanqZABrez54yYu9slAeLgX",category:"display",url:"https://fonts.gstatic.com/s/elsie/v26/BCanqZABrez54yYu9slAeLgX.ttf",weight:400,isVariable:!1},{displayName:"Poly",filename:"MQpb-W6wKNitRLCAq2Lpris",category:"serif",url:"https://fonts.gstatic.com/s/poly/v18/MQpb-W6wKNitRLCAq2Lpris.ttf",weight:400,isVariable:!1},{displayName:"Oregano",filename:"If2IXTPxciS3H4S2kZffPznO3yM",category:"display",url:"https://fonts.gstatic.com/s/oregano/v17/If2IXTPxciS3H4S2kZffPznO3yM.ttf",weight:400,isVariable:!1},{displayName:"Gowun Dodum",filename:"3Jn5SD_00GqwlBnWc1TUJF0FfORL0fNy",category:"sans-serif",url:"https://fonts.gstatic.com/s/gowundodum/v12/3Jn5SD_00GqwlBnWc1TUJF0FfORL0fNy.ttf",weight:400,isVariable:!1},{displayName:"Anek Devanagari",filename:"jVyS7nP0CGrUsxB-QiRgw0NlLaV39ifscRzoQA",category:"sans-serif",url:"https://fonts.gstatic.com/s/anekdevanagari/v17/jVyS7nP0CGrUsxB-QiRgw0NlLaV39ifscRzoQA.ttf",weight:400,isVariable:!0},{displayName:"Poller One",filename:"ahccv82n0TN3gia5E4Bud-lbgUS5u0s",category:"display",url:"https://fonts.gstatic.com/s/pollerone/v25/ahccv82n0TN3gia5E4Bud-lbgUS5u0s.ttf",weight:400,isVariable:!1},{displayName:"Federo",filename:"iJWFBX-cbD_ETsbmjVOe2WTG7Q",category:"sans-serif",url:"https://fonts.gstatic.com/s/federo/v20/iJWFBX-cbD_ETsbmjVOe2WTG7Q.ttf",weight:400,isVariable:!1},{displayName:"Slabo 13px",filename:"11hEGp_azEvXZUdSBzzRcKer2wkYnvI",category:"serif",url:"https://fonts.gstatic.com/s/slabo13px/v17/11hEGp_azEvXZUdSBzzRcKer2wkYnvI.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Myanmar",filename:"AlZq_y1ZtY3ymOryg38hOCSdOnFq0En23OU4o1AC",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmyanmar/v27/AlZq_y1ZtY3ymOryg38hOCSdOnFq0En23OU4o1AC.ttf",weight:400,isVariable:!0},{displayName:"Gaegu",filename:"TuGfUVB6Up9NU6ZLodgzydtk",category:"handwriting",url:"https://fonts.gstatic.com/s/gaegu/v23/TuGfUVB6Up9NU6ZLodgzydtk.ttf",weight:400,isVariable:!1},{displayName:"Sedgwick Ave",filename:"uK_04rKEYuguzAcSYRdWTJq8Xmg1Vcf5JA",category:"handwriting",url:"https://fonts.gstatic.com/s/sedgwickave/v13/uK_04rKEYuguzAcSYRdWTJq8Xmg1Vcf5JA.ttf",weight:400,isVariable:!1},{displayName:"Iceland",filename:"rax9HiuFsdMNOnWPWKxGADBbg0s",category:"display",url:"https://fonts.gstatic.com/s/iceland/v22/rax9HiuFsdMNOnWPWKxGADBbg0s.ttf",weight:400,isVariable:!1},{displayName:"Kalnia",filename:"11hAGpPCwUbbYwZDNGatWKaZ3g",category:"serif",url:"https://fonts.gstatic.com/s/kalnia/v6/11hAGpPCwUbbYwZDNGatWKaZ3g.ttf",weight:400,isVariable:!0},{displayName:"Imprima",filename:"VEMxRoN7sY3yuy-7-oWHyDzktPo",category:"sans-serif",url:"https://fonts.gstatic.com/s/imprima/v19/VEMxRoN7sY3yuy-7-oWHyDzktPo.ttf",weight:400,isVariable:!1},{displayName:"Iceberg",filename:"8QIJdijAiM7o-qnZuIgOq7jkAOw",category:"display",url:"https://fonts.gstatic.com/s/iceberg/v26/8QIJdijAiM7o-qnZuIgOq7jkAOw.ttf",weight:400,isVariable:!1},{displayName:"Finger Paint",filename:"0QInMXVJ-o-oRn_7dron8YWO85bS8ANesw",category:"display",url:"https://fonts.gstatic.com/s/fingerpaint/v21/0QInMXVJ-o-oRn_7dron8YWO85bS8ANesw.ttf",weight:400,isVariable:!1},{displayName:"Henny Penny",filename:"wXKvE3UZookzsxz_kjGSfMQqt3M7tMDT",category:"display",url:"https://fonts.gstatic.com/s/hennypenny/v18/wXKvE3UZookzsxz_kjGSfMQqt3M7tMDT.ttf",weight:400,isVariable:!1},{displayName:"Nosifer",filename:"ZGjXol5JTp0g5bxZaC1RVDNdGDs",category:"display",url:"https://fonts.gstatic.com/s/nosifer/v23/ZGjXol5JTp0g5bxZaC1RVDNdGDs.ttf",weight:400,isVariable:!1},{displayName:"Waterfall",filename:"MCoRzAfo293fACdFKcwY2rH8D_EZwA",category:"handwriting",url:"https://fonts.gstatic.com/s/waterfall/v8/MCoRzAfo293fACdFKcwY2rH8D_EZwA.ttf",weight:400,isVariable:!1},{displayName:"NTR",filename:"RLpzK5Xy0ZjiGGhs5TA4bg",category:"sans-serif",url:"https://fonts.gstatic.com/s/ntr/v19/RLpzK5Xy0ZjiGGhs5TA4bg.ttf",weight:400,isVariable:!1},{displayName:"Jersey 25",filename:"ll8-K2eeXj2tAs6F9BXIJ4AMng8ChA",category:"display",url:"https://fonts.gstatic.com/s/jersey25/v4/ll8-K2eeXj2tAs6F9BXIJ4AMng8ChA.ttf",weight:400,isVariable:!1},{displayName:"Red Hat Mono",filename:"jVyN7nDnA2uf2zVvFAhhzEskX-ZT_gzweA",category:"monospace",url:"https://fonts.gstatic.com/s/redhatmono/v16/jVyN7nDnA2uf2zVvFAhhzEskX-ZT_gzweA.ttf",weight:400,isVariable:!0},{displayName:"Bakbak One",filename:"zOL54pXAl6RI-p_ardnuycRuv-hHkOs",category:"display",url:"https://fonts.gstatic.com/s/bakbakone/v11/zOL54pXAl6RI-p_ardnuycRuv-hHkOs.ttf",weight:400,isVariable:!1},{displayName:"Odibee Sans",filename:"neIPzCSooYAho6WvjeToRYkyepH9qGsf",category:"display",url:"https://fonts.gstatic.com/s/odibeesans/v20/neIPzCSooYAho6WvjeToRYkyepH9qGsf.ttf",weight:400,isVariable:!1},{displayName:"Aladin",filename:"ZgNSjPJFPrvJV5f16Sf4pGT2Ng",category:"display",url:"https://fonts.gstatic.com/s/aladin/v26/ZgNSjPJFPrvJV5f16Sf4pGT2Ng.ttf",weight:400,isVariable:!1},{displayName:"Puritan",filename:"845YNMgkAJ2VTtIo9JrwRdaI50M",category:"sans-serif",url:"https://fonts.gstatic.com/s/puritan/v25/845YNMgkAJ2VTtIo9JrwRdaI50M.ttf",weight:400,isVariable:!1},{displayName:"Montez",filename:"845ZNMk5GoGIX8lm1LDeSd-R_g",category:"handwriting",url:"https://fonts.gstatic.com/s/montez/v25/845ZNMk5GoGIX8lm1LDeSd-R_g.ttf",weight:400,isVariable:!1},{displayName:"Zen Kurenaido",filename:"3XFsEr0515BK2u6UUptu_gWJZfz22PRLd0U",category:"sans-serif",url:"https://fonts.gstatic.com/s/zenkurenaido/v19/3XFsEr0515BK2u6UUptu_gWJZfz22PRLd0U.ttf",weight:400,isVariable:!1},{displayName:"Orelega One",filename:"3qTpojOggD2XtAdFb-QXZGt61EcYaQ7F",category:"display",url:"https://fonts.gstatic.com/s/orelegaone/v14/3qTpojOggD2XtAdFb-QXZGt61EcYaQ7F.ttf",weight:400,isVariable:!1},{displayName:"Bigshot One",filename:"u-470qukhRkkO6BD_7cM_gxuUQJBXv_-",category:"display",url:"https://fonts.gstatic.com/s/bigshotone/v31/u-470qukhRkkO6BD_7cM_gxuUQJBXv_-.ttf",weight:400,isVariable:!1},{displayName:"Lemon",filename:"HI_EiYEVKqRMq0jBSZXAQ4-d",category:"display",url:"https://fonts.gstatic.com/s/lemon/v19/HI_EiYEVKqRMq0jBSZXAQ4-d.ttf",weight:400,isVariable:!1},{displayName:"League Script",filename:"CSR54zpSlumSWj9CGVsoBZdeaNNUuOwkC2s",category:"handwriting",url:"https://fonts.gstatic.com/s/leaguescript/v30/CSR54zpSlumSWj9CGVsoBZdeaNNUuOwkC2s.ttf",weight:400,isVariable:!1},{displayName:"Padauk",filename:"RrQRboJg-id7OnbBa0_g3LlYbg",category:"sans-serif",url:"https://fonts.gstatic.com/s/padauk/v17/RrQRboJg-id7OnbBa0_g3LlYbg.ttf",weight:400,isVariable:!1},{displayName:"Truculenta",filename:"LhWgMVvBKusVIfNYGi1-QP93NtmZmu8",category:"sans-serif",url:"https://fonts.gstatic.com/s/truculenta/v27/LhWgMVvBKusVIfNYGi1-QP93NtmZmu8.ttf",weight:400,isVariable:!0},{displayName:"Wendy One",filename:"2sDcZGJOipXfgfXV5wgDb2-4C7wFZQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/wendyone/v20/2sDcZGJOipXfgfXV5wgDb2-4C7wFZQ.ttf",weight:400,isVariable:!1},{displayName:"Reddit Sans Condensed",filename:"m8JMjepOc6WYkkm2Dey9A5QGAQXmuL3va5IFbehGW74OXw",category:"sans-serif",url:"https://fonts.gstatic.com/s/redditsanscondensed/v5/m8JMjepOc6WYkkm2Dey9A5QGAQXmuL3va5IFbehGW74OXw.ttf",weight:400,isVariable:!0},{displayName:"Cantora One",filename:"gyB4hws1JdgnKy56GB_JX6zdZ4vZVbgZ",category:"sans-serif",url:"https://fonts.gstatic.com/s/cantoraone/v20/gyB4hws1JdgnKy56GB_JX6zdZ4vZVbgZ.ttf",weight:400,isVariable:!1},{displayName:"Rubik Dirt",filename:"DtVmJxC7WLEj1uIXEWAdulwm6gDXvwE",category:"display",url:"https://fonts.gstatic.com/s/rubikdirt/v2/DtVmJxC7WLEj1uIXEWAdulwm6gDXvwE.ttf",weight:400,isVariable:!1},{displayName:"Fontdiner Swanky",filename:"ijwOs4XgRNsiaI5-hcVb4hQgMvCD4uEfKiGvxts",category:"display",url:"https://fonts.gstatic.com/s/fontdinerswanky/v24/ijwOs4XgRNsiaI5-hcVb4hQgMvCD4uEfKiGvxts.ttf",weight:400,isVariable:!1},{displayName:"The Girl Next Door",filename:"pe0zMJCIMIsBjFxqYBIcZ6_OI5oFHCYIV7t7w6bE2A",category:"handwriting",url:"https://fonts.gstatic.com/s/thegirlnextdoor/v25/pe0zMJCIMIsBjFxqYBIcZ6_OI5oFHCYIV7t7w6bE2A.ttf",weight:400,isVariable:!1},{displayName:"Gentium Plus",filename:"Iurd6Ytw-oSPaZ00r2bNe8VpjJtM6G0t9w",category:"serif",url:"https://fonts.gstatic.com/s/gentiumplus/v2/Iurd6Ytw-oSPaZ00r2bNe8VpjJtM6G0t9w.ttf",weight:400,isVariable:!1},{displayName:"Tenali Ramakrishna",filename:"raxgHj6Yt9gAN3LLKs0BZVMo8jmwn1-8KJXqUFFvtA",category:"sans-serif",url:"https://fonts.gstatic.com/s/tenaliramakrishna/v14/raxgHj6Yt9gAN3LLKs0BZVMo8jmwn1-8KJXqUFFvtA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Lao Looped",filename:"a8IGNpbwKmHXpgXbMIsbSMP7-3U72qUOX4IKoU4xzO9n",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanslaolooped/v10/a8IGNpbwKmHXpgXbMIsbSMP7-3U72qUOX4IKoU4xzO9n.ttf",weight:400,isVariable:!0},{displayName:"Shippori Antique",filename:"-F6qfid3KC8pdMyzR0qRyFUht11v8ldPg-IUDNg",category:"sans-serif",url:"https://fonts.gstatic.com/s/shipporiantique/v11/-F6qfid3KC8pdMyzR0qRyFUht11v8ldPg-IUDNg.ttf",weight:400,isVariable:!1},{displayName:"Redressed",filename:"x3dickHUbrmJ7wMy9MsBfPACvy_1BA",category:"handwriting",url:"https://fonts.gstatic.com/s/redressed/v32/x3dickHUbrmJ7wMy9MsBfPACvy_1BA.ttf",weight:400,isVariable:!1},{displayName:"Loved by the King",filename:"Gw6gwdP76VDVJNXerebZxUMeRXUF2PiNlXFu2R64",category:"handwriting",url:"https://fonts.gstatic.com/s/lovedbytheking/v24/Gw6gwdP76VDVJNXerebZxUMeRXUF2PiNlXFu2R64.ttf",weight:400,isVariable:!1},{displayName:"Almendra",filename:"H4ckBXKAlMnTn0CskyY6wr-wg763",category:"serif",url:"https://fonts.gstatic.com/s/almendra/v28/H4ckBXKAlMnTn0CskyY6wr-wg763.ttf",weight:400,isVariable:!1},{displayName:"Numans",filename:"SlGRmQmGupYAfH8IYRggiHVqaQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/numans/v16/SlGRmQmGupYAfH8IYRggiHVqaQ.ttf",weight:400,isVariable:!1},{displayName:"Doppio One",filename:"Gg8wN5gSaBfyBw2MqCh-lgshKGpe5Fg",category:"sans-serif",url:"https://fonts.gstatic.com/s/doppioone/v14/Gg8wN5gSaBfyBw2MqCh-lgshKGpe5Fg.ttf",weight:400,isVariable:!1},{displayName:"Zen Antique Soft",filename:"DtV4JwqzSL1q_KwnEWMc_3xfgW6ihwBmkui5HNg",category:"serif",url:"https://fonts.gstatic.com/s/zenantiquesoft/v14/DtV4JwqzSL1q_KwnEWMc_3xfgW6ihwBmkui5HNg.ttf",weight:400,isVariable:!1},{displayName:"Cambo",filename:"IFSqHeNEk8FJk416ok7xkPm8",category:"serif",url:"https://fonts.gstatic.com/s/cambo/v19/IFSqHeNEk8FJk416ok7xkPm8.ttf",weight:400,isVariable:!1},{displayName:"Gamja Flower",filename:"6NUR8FiKJg-Pa0rM6uN40Z4kyf9Fdty2ew",category:"handwriting",url:"https://fonts.gstatic.com/s/gamjaflower/v26/6NUR8FiKJg-Pa0rM6uN40Z4kyf9Fdty2ew.ttf",weight:400,isVariable:!1},{displayName:"Averia Sans Libre",filename:"ga6XaxZG_G5OvCf_rt7FH3B6BHLMEeVJGIMYDo_8",category:"display",url:"https://fonts.gstatic.com/s/averiasanslibre/v20/ga6XaxZG_G5OvCf_rt7FH3B6BHLMEeVJGIMYDo_8.ttf",weight:400,isVariable:!1},{displayName:"Sunshiney",filename:"LDIwapGTLBwsS-wT4vcgE8moUePWkg",category:"handwriting",url:"https://fonts.gstatic.com/s/sunshiney/v24/LDIwapGTLBwsS-wT4vcgE8moUePWkg.ttf",weight:400,isVariable:!1},{displayName:"Freehand",filename:"cIf-Ma5eqk01VjKTgAmBTmUOmZJk",category:"display",url:"https://fonts.gstatic.com/s/freehand/v34/cIf-Ma5eqk01VjKTgAmBTmUOmZJk.ttf",weight:400,isVariable:!1},{displayName:"Just Me Again Down Here",filename:"MwQmbgXtz-Wc6RUEGNMc0QpRrfUh2hSdBBMoAuwHvqDwc_fg",category:"handwriting",url:"https://fonts.gstatic.com/s/justmeagaindownhere/v25/MwQmbgXtz-Wc6RUEGNMc0QpRrfUh2hSdBBMoAuwHvqDwc_fg.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Khmer",filename:"ijwNs5roRME5LLRxjsRb-gssOenawssxJii23w",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanskhmer/v29/ijwNs5roRME5LLRxjsRb-gssOenawssxJii23w.ttf",weight:400,isVariable:!0},{displayName:"Amethysta",filename:"rP2Fp2K15kgb_F3ibfWIGDWCBl0O8Q",category:"serif",url:"https://fonts.gstatic.com/s/amethysta/v17/rP2Fp2K15kgb_F3ibfWIGDWCBl0O8Q.ttf",weight:400,isVariable:!1},{displayName:"Martian Mono",filename:"2V0aKIcADoYhV6w87xrTKjsiAqPJZ2Xx8w",category:"monospace",url:"https://fonts.gstatic.com/s/martianmono/v6/2V0aKIcADoYhV6w87xrTKjsiAqPJZ2Xx8w.ttf",weight:400,isVariable:!0},{displayName:"Meow Script",filename:"0FlQVPqanlaJrtr8AnJ0ESch0_0CfDf1",category:"handwriting",url:"https://fonts.gstatic.com/s/meowscript/v6/0FlQVPqanlaJrtr8AnJ0ESch0_0CfDf1.ttf",weight:400,isVariable:!1},{displayName:"Kaisei Tokumin",filename:"Gg8sN5wdZg7xCwuMsylww2ZiQkJf1l0pj946",category:"serif",url:"https://fonts.gstatic.com/s/kaiseitokumin/v11/Gg8sN5wdZg7xCwuMsylww2ZiQkJf1l0pj946.ttf",weight:400,isVariable:!1},{displayName:"Spicy Rice",filename:"uK_24rSEd-Uqwk4jY1RyGv-2WkowRcc",category:"display",url:"https://fonts.gstatic.com/s/spicyrice/v28/uK_24rSEd-Uqwk4jY1RyGv-2WkowRcc.ttf",weight:400,isVariable:!1},{displayName:"Cherry Cream Soda",filename:"UMBIrOxBrW6w2FFyi9paG0fdVdRciTd6Cd47DJ7G",category:"display",url:"https://fonts.gstatic.com/s/cherrycreamsoda/v21/UMBIrOxBrW6w2FFyi9paG0fdVdRciTd6Cd47DJ7G.ttf",weight:400,isVariable:!1},{displayName:"Road Rage",filename:"6NUU8F2fKAOBKjjr4ekvtMYAwdRZfw",category:"display",url:"https://fonts.gstatic.com/s/roadrage/v9/6NUU8F2fKAOBKjjr4ekvtMYAwdRZfw.ttf",weight:400,isVariable:!1},{displayName:"Scheherazade New",filename:"4UaZrFhTvxVnHDvUkUiHg8jprP4DCwNsOl4p5Is",category:"serif",url:"https://fonts.gstatic.com/s/scheherazadenew/v20/4UaZrFhTvxVnHDvUkUiHg8jprP4DCwNsOl4p5Is.ttf",weight:400,isVariable:!1},{displayName:"Salsa",filename:"gNMKW3FiRpKj-imY8ncKEZez",category:"display",url:"https://fonts.gstatic.com/s/salsa/v23/gNMKW3FiRpKj-imY8ncKEZez.ttf",weight:400,isVariable:!1},{displayName:"Buda",filename:"GFDqWAN8mnyIJSSrG7UBr7pZKA0",category:"display",url:"https://fonts.gstatic.com/s/buda/v31/GFDqWAN8mnyIJSSrG7UBr7pZKA0.ttf",weight:300,isVariable:!1},{displayName:"Codystar",filename:"FwZY7-Q1xVk-40qxOt6A4sijpFu_",category:"display",url:"https://fonts.gstatic.com/s/codystar/v19/FwZY7-Q1xVk-40qxOt6A4sijpFu_.ttf",weight:400,isVariable:!1},{displayName:"Special Gothic",filename:"1q2fY5WcG0Fg_v0fHc8BvIZ252ThVIGpgnxL",category:"sans-serif",url:"https://fonts.gstatic.com/s/specialgothic/v3/1q2fY5WcG0Fg_v0fHc8BvIZ252ThVIGpgnxL.ttf",weight:400,isVariable:!0},{displayName:"Rubik Bubbles",filename:"JIA1UVdwbHFJtwA7Us1BPFbRNTENfDxyRXI",category:"display",url:"https://fonts.gstatic.com/s/rubikbubbles/v3/JIA1UVdwbHFJtwA7Us1BPFbRNTENfDxyRXI.ttf",weight:400,isVariable:!1},{displayName:"Hedvig Letters Serif",filename:"OD5cuN2I2mekHmyoU1Kj2AXOd5_7v7gIDk_3iBYVfsc4",category:"serif",url:"https://fonts.gstatic.com/s/hedviglettersserif/v4/OD5cuN2I2mekHmyoU1Kj2AXOd5_7v7gIDk_3iBYVfsc4.ttf",weight:400,isVariable:!1},{displayName:"Artifika",filename:"VEMyRoxzronptCuxu6Wt5jDtreOL",category:"serif",url:"https://fonts.gstatic.com/s/artifika/v22/VEMyRoxzronptCuxu6Wt5jDtreOL.ttf",weight:400,isVariable:!1},{displayName:"Lily Script One",filename:"LhW9MV7ZMfIPdMxeBjBvFN8SXLS4gsSjQNsRMg",category:"display",url:"https://fonts.gstatic.com/s/lilyscriptone/v16/LhW9MV7ZMfIPdMxeBjBvFN8SXLS4gsSjQNsRMg.ttf",weight:400,isVariable:!1},{displayName:"Jomhuria",filename:"Dxxp8j-TMXf-llKur2b1MOGbC3Dh",category:"display",url:"https://fonts.gstatic.com/s/jomhuria/v22/Dxxp8j-TMXf-llKur2b1MOGbC3Dh.ttf",weight:400,isVariable:!1},{displayName:"Hi Melody",filename:"46ktlbP8Vnz0pJcqCTbEf29E31BBGA",category:"handwriting",url:"https://fonts.gstatic.com/s/himelody/v19/46ktlbP8Vnz0pJcqCTbEf29E31BBGA.ttf",weight:400,isVariable:!1},{displayName:"Baumans",filename:"-W_-XJj9QyTd3QfpR_oyaksqY5Q",category:"display",url:"https://fonts.gstatic.com/s/baumans/v18/-W_-XJj9QyTd3QfpR_oyaksqY5Q.ttf",weight:400,isVariable:!1},{displayName:"Unkempt",filename:"2EbnL-Z2DFZue0DSSYYf8z2Yt_c",category:"display",url:"https://fonts.gstatic.com/s/unkempt/v22/2EbnL-Z2DFZue0DSSYYf8z2Yt_c.ttf",weight:400,isVariable:!1},{displayName:"Oleo Script Swash Caps",filename:"Noaj6Vb-w5SFbTTAsZP_7JkCS08K-jCzDn_HMXquSY0Hg90",category:"display",url:"https://fonts.gstatic.com/s/oleoscriptswashcaps/v14/Noaj6Vb-w5SFbTTAsZP_7JkCS08K-jCzDn_HMXquSY0Hg90.ttf",weight:400,isVariable:!1},{displayName:"Fenix",filename:"XoHo2YL_S7-g5ostKzAFvs8o",category:"serif",url:"https://fonts.gstatic.com/s/fenix/v21/XoHo2YL_S7-g5ostKzAFvs8o.ttf",weight:400,isVariable:!1},{displayName:"Grape Nuts",filename:"syk2-yF4iLM2RfKj4F7k3tLvol2RN1E",category:"handwriting",url:"https://fonts.gstatic.com/s/grapenuts/v7/syk2-yF4iLM2RfKj4F7k3tLvol2RN1E.ttf",weight:400,isVariable:!1},{displayName:"Milonga",filename:"SZc53FHnIaK9W5kffz3GkUrS8DI",category:"display",url:"https://fonts.gstatic.com/s/milonga/v24/SZc53FHnIaK9W5kffz3GkUrS8DI.ttf",weight:400,isVariable:!1},{displayName:"Averia Gruesa Libre",filename:"NGSov4nEGEktOaDRKsY-1dhh8eEtIx3ZUmmJw0SLRA8",category:"display",url:"https://fonts.gstatic.com/s/averiagruesalibre/v22/NGSov4nEGEktOaDRKsY-1dhh8eEtIx3ZUmmJw0SLRA8.ttf",weight:400,isVariable:!1},{displayName:"Balthazar",filename:"d6lKkaajS8Gm4CVQjFEvyRTo39l8hw",category:"serif",url:"https://fonts.gstatic.com/s/balthazar/v18/d6lKkaajS8Gm4CVQjFEvyRTo39l8hw.ttf",weight:400,isVariable:!1},{displayName:"Nokora",filename:"hYkIPuwgTubzaWxQOzoPovZg8Q",category:"sans-serif",url:"https://fonts.gstatic.com/s/nokora/v34/hYkIPuwgTubzaWxQOzoPovZg8Q.ttf",weight:400,isVariable:!0},{displayName:"Holtwood One SC",filename:"yYLx0hLR0P-3vMFSk1TCq3Txg5B3cbb6LZttyg",category:"serif",url:"https://fonts.gstatic.com/s/holtwoodonesc/v23/yYLx0hLR0P-3vMFSk1TCq3Txg5B3cbb6LZttyg.ttf",weight:400,isVariable:!1},{displayName:"Kablammo",filename:"bWt77fHPcgrhC-J3ld_qU8Z0WH5p",category:"display",url:"https://fonts.gstatic.com/s/kablammo/v4/bWt77fHPcgrhC-J3ld_qU8Z0WH5p.ttf",weight:400,isVariable:!1},{displayName:"Prociono",filename:"r05YGLlR-KxAf9GGO8upyDYtStiJ",category:"serif",url:"https://fonts.gstatic.com/s/prociono/v28/r05YGLlR-KxAf9GGO8upyDYtStiJ.ttf",weight:400,isVariable:!1},{displayName:"Notable",filename:"gNMEW3N_SIqx-WX9-HMoFIez5MI",category:"sans-serif",url:"https://fonts.gstatic.com/s/notable/v20/gNMEW3N_SIqx-WX9-HMoFIez5MI.ttf",weight:400,isVariable:!1},{displayName:"IM Fell Double Pica",filename:"3XF2EqMq_94s9PeKF7Fg4gOKINyMtZ8rT0S1UL5Ayp0",category:"serif",url:"https://fonts.gstatic.com/s/imfelldoublepica/v14/3XF2EqMq_94s9PeKF7Fg4gOKINyMtZ8rT0S1UL5Ayp0.ttf",weight:400,isVariable:!1},{displayName:"Sarpanch",filename:"hESy6Xt4NCpRuk6Pzh2ARIrX_20n",category:"sans-serif",url:"https://fonts.gstatic.com/s/sarpanch/v15/hESy6Xt4NCpRuk6Pzh2ARIrX_20n.ttf",weight:400,isVariable:!1},{displayName:"Gentium Book Plus",filename:"vEFL2-RHBgUK5fbjKxRpbBtJPyRpofKfdbLOrdPV",category:"serif",url:"https://fonts.gstatic.com/s/gentiumbookplus/v1/vEFL2-RHBgUK5fbjKxRpbBtJPyRpofKfdbLOrdPV.ttf",weight:400,isVariable:!1},{displayName:"Wire One",filename:"qFdH35Wah5htUhV75WGiWdrCwwcJ",category:"sans-serif",url:"https://fonts.gstatic.com/s/wireone/v30/qFdH35Wah5htUhV75WGiWdrCwwcJ.ttf",weight:400,isVariable:!1},{displayName:"Vollkorn SC",filename:"j8_v6-zQ3rXpceZj9cqnVhF5NH-iSq_E",category:"serif",url:"https://fonts.gstatic.com/s/vollkornsc/v12/j8_v6-zQ3rXpceZj9cqnVhF5NH-iSq_E.ttf",weight:400,isVariable:!1},{displayName:"Rosarivo",filename:"PlI-Fl2lO6N9f8HaNAeC2nhMnNy5",category:"serif",url:"https://fonts.gstatic.com/s/rosarivo/v24/PlI-Fl2lO6N9f8HaNAeC2nhMnNy5.ttf",weight:400,isVariable:!1},{displayName:"ZCOOL QingKe HuangYou",filename:"2Eb5L_R5IXJEWhD3AOhSvFC554MOOahI4mRIi_28c8bHWA",category:"sans-serif",url:"https://fonts.gstatic.com/s/zcoolqingkehuangyou/v16/2Eb5L_R5IXJEWhD3AOhSvFC554MOOahI4mRIi_28c8bHWA.ttf",weight:400,isVariable:!1},{displayName:"Shojumaru",filename:"rax_HiWfutkLLnaKCtlMBBJek0vA8A",category:"display",url:"https://fonts.gstatic.com/s/shojumaru/v16/rax_HiWfutkLLnaKCtlMBBJek0vA8A.ttf",weight:400,isVariable:!1},{displayName:"Charmonman",filename:"MjQDmiR3vP_nuxDv47jiWJGovLdh6OE",category:"handwriting",url:"https://fonts.gstatic.com/s/charmonman/v20/MjQDmiR3vP_nuxDv47jiWJGovLdh6OE.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Thai Looped",filename:"B50RF6pOpWTRcGrhOVJJ3-oPfY7WQuFu5R3gO6ocWiHvWQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansthailooped/v16/B50RF6pOpWTRcGrhOVJJ3-oPfY7WQuFu5R3gO6ocWiHvWQ.ttf",weight:400,isVariable:!0},{displayName:"Dynalight",filename:"1Ptsg8LOU_aOmQvTsF4ISotrDfGGxA",category:"display",url:"https://fonts.gstatic.com/s/dynalight/v24/1Ptsg8LOU_aOmQvTsF4ISotrDfGGxA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Meetei Mayek",filename:"HTx9L3QyKieByqY9eZPFweO0be7M21uSphSdnKkpbrJN35k",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmeeteimayek/v20/HTx9L3QyKieByqY9eZPFweO0be7M21uSphSdnKkpbrJN35k.ttf",weight:400,isVariable:!0},{displayName:"Special Gothic Expanded One",filename:"IurO6Zxk74-YaYk1r3HOet4g75ENmBxUmOK61tA0Iu5gn5t-KhUVvQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/specialgothicexpandedone/v2/IurO6Zxk74-YaYk1r3HOet4g75ENmBxUmOK61tA0Iu5gn5t-KhUVvQ.ttf",weight:400,isVariable:!1},{displayName:"Asar",filename:"sZlLdRyI6TBIXkYQDLlTW6E",category:"serif",url:"https://fonts.gstatic.com/s/asar/v24/sZlLdRyI6TBIXkYQDLlTW6E.ttf",weight:400,isVariable:!1},{displayName:"Shanti",filename:"t5thIREMM4uSDgzgU0ezpKfwzA",category:"sans-serif",url:"https://fonts.gstatic.com/s/shanti/v25/t5thIREMM4uSDgzgU0ezpKfwzA.ttf",weight:400,isVariable:!1},{displayName:"Square Peg",filename:"y83eW48Nzw6ZlUHc-phrBDHrHHfrFPE",category:"handwriting",url:"https://fonts.gstatic.com/s/squarepeg/v7/y83eW48Nzw6ZlUHc-phrBDHrHHfrFPE.ttf",weight:400,isVariable:!1},{displayName:"Whisper",filename:"q5uHsoqtKftx74K9milCBxxdmYU",category:"handwriting",url:"https://fonts.gstatic.com/s/whisper/v7/q5uHsoqtKftx74K9milCBxxdmYU.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Gujarati",filename:"wlpsgx_HC1ti5ViekvcxnhMlCVo3f5p13JpDd6u3AQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansgujarati/v27/wlpsgx_HC1ti5ViekvcxnhMlCVo3f5p13JpDd6u3AQ.ttf",weight:400,isVariable:!0},{displayName:"Madimi One",filename:"2V0YKIEADpA8U6RygDnZZFQoBoHMd2U",category:"sans-serif",url:"https://fonts.gstatic.com/s/madimione/v1/2V0YKIEADpA8U6RygDnZZFQoBoHMd2U.ttf",weight:400,isVariable:!1},{displayName:"MonteCarlo",filename:"buEzpo6-f9X01GadLA0G0CoV_NxLeiw",category:"handwriting",url:"https://fonts.gstatic.com/s/montecarlo/v13/buEzpo6-f9X01GadLA0G0CoV_NxLeiw.ttf",weight:400,isVariable:!1},{displayName:"Anta",filename:"gyBzhwQ3KsIyZFwxPFimIo0",category:"sans-serif",url:"https://fonts.gstatic.com/s/anta/v1/gyBzhwQ3KsIyZFwxPFimIo0.ttf",weight:400,isVariable:!1},{displayName:"Ribeye",filename:"L0x8DFMxk1MP9R3RvPCmRSlUig",category:"display",url:"https://fonts.gstatic.com/s/ribeye/v27/L0x8DFMxk1MP9R3RvPCmRSlUig.ttf",weight:400,isVariable:!1},{displayName:"Alike Angular",filename:"3qTrojWunjGQtEBlIcwMbSoI3kM6bB7FKjE",category:"serif",url:"https://fonts.gstatic.com/s/alikeangular/v27/3qTrojWunjGQtEBlIcwMbSoI3kM6bB7FKjE.ttf",weight:400,isVariable:!1},{displayName:"Playpen Sans",filename:"dg4i_pj1p6gXP0gzAZgm4c8NSygiiyyhRw",category:"handwriting",url:"https://fonts.gstatic.com/s/playpensans/v22/dg4i_pj1p6gXP0gzAZgm4c8NSygiiyyhRw.ttf",weight:400,isVariable:!0},{displayName:"Bellota",filename:"MwQ2bhXl3_qEpiwAGJJRtGs-lbA",category:"display",url:"https://fonts.gstatic.com/s/bellota/v17/MwQ2bhXl3_qEpiwAGJJRtGs-lbA.ttf",weight:400,isVariable:!1},{displayName:"New Rocker",filename:"MwQzbhjp3-HImzcCU_cJkGMViblPtXs",category:"display",url:"https://fonts.gstatic.com/s/newrocker/v17/MwQzbhjp3-HImzcCU_cJkGMViblPtXs.ttf",weight:400,isVariable:!1},{displayName:"Song Myung",filename:"1cX2aUDWAJH5-EIC7DIhr1GqhcitzeM",category:"serif",url:"https://fonts.gstatic.com/s/songmyung/v22/1cX2aUDWAJH5-EIC7DIhr1GqhcitzeM.ttf",weight:400,isVariable:!1},{displayName:"Suranna",filename:"gokuH6ztGkFjWe58tBRZT2KmgP0",category:"serif",url:"https://fonts.gstatic.com/s/suranna/v15/gokuH6ztGkFjWe58tBRZT2KmgP0.ttf",weight:400,isVariable:!1},{displayName:"Scope One",filename:"WBLnrEXKYFlGHrOKmGD1W0_MJMGxiQ",category:"serif",url:"https://fonts.gstatic.com/s/scopeone/v15/WBLnrEXKYFlGHrOKmGD1W0_MJMGxiQ.ttf",weight:400,isVariable:!1},{displayName:"Arya",filename:"ga6CawNG-HJd9Ub1-beqdFE",category:"sans-serif",url:"https://fonts.gstatic.com/s/arya/v21/ga6CawNG-HJd9Ub1-beqdFE.ttf",weight:400,isVariable:!1},{displayName:"Delicious Handrawn",filename:"wlpsgx_NAUNkpmKQifcxkQchDFo3fJ113JpDd6u3AQ",category:"handwriting",url:"https://fonts.gstatic.com/s/delicioushandrawn/v10/wlpsgx_NAUNkpmKQifcxkQchDFo3fJ113JpDd6u3AQ.ttf",weight:400,isVariable:!1},{displayName:"Metal Mania",filename:"RWmMoKWb4e8kqMfBUdPFJeXCg6UKDXlq",category:"display",url:"https://fonts.gstatic.com/s/metalmania/v23/RWmMoKWb4e8kqMfBUdPFJeXCg6UKDXlq.ttf",weight:400,isVariable:!1},{displayName:"Clicker Script",filename:"raxkHiKPvt8CMH6ZWP8PdlEq72rY2zqUKafv",category:"handwriting",url:"https://fonts.gstatic.com/s/clickerscript/v14/raxkHiKPvt8CMH6ZWP8PdlEq72rY2zqUKafv.ttf",weight:400,isVariable:!1},{displayName:"Sigmar",filename:"hv-XlzJgIE8a85pUbWY3MTFgVg",category:"display",url:"https://fonts.gstatic.com/s/sigmar/v9/hv-XlzJgIE8a85pUbWY3MTFgVg.ttf",weight:400,isVariable:!1},{displayName:"Platypi",filename:"bMr3mSGU7pMlaX6-JgKMMMyTQ3o",category:"serif",url:"https://fonts.gstatic.com/s/platypi/v6/bMr3mSGU7pMlaX6-JgKMMMyTQ3o.ttf",weight:400,isVariable:!0},{displayName:"Sour Gummy",filename:"8AtsGs2gPYuNDii97MjjHLn5jRfZHzM",category:"sans-serif",url:"https://fonts.gstatic.com/s/sourgummy/v3/8AtsGs2gPYuNDii97MjjHLn5jRfZHzM.ttf",weight:400,isVariable:!0},{displayName:"Sancreek",filename:"pxiHypAnsdxUm159X7D-XV9NEe-K",category:"display",url:"https://fonts.gstatic.com/s/sancreek/v27/pxiHypAnsdxUm159X7D-XV9NEe-K.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif HK",filename:"BngOUXBETWXI6LwlBZGcqL-B5qCr5RCDY_k",category:"serif",url:"https://fonts.gstatic.com/s/notoserifhk/v12/BngOUXBETWXI6LwlBZGcqL-B5qCr5RCDY_k.ttf",weight:400,isVariable:!0},{displayName:"Jersey 10",filename:"GftH7vZKsggXMf9n_J5X-JLgy1wtSw",category:"display",url:"https://fonts.gstatic.com/s/jersey10/v4/GftH7vZKsggXMf9n_J5X-JLgy1wtSw.ttf",weight:400,isVariable:!1},{displayName:"Carattere",filename:"4iCv6Kp1b9dXlgt_CkvTt2aMH4V_gg",category:"handwriting",url:"https://fonts.gstatic.com/s/carattere/v8/4iCv6Kp1b9dXlgt_CkvTt2aMH4V_gg.ttf",weight:400,isVariable:!1},{displayName:"Mochiy Pop P One",filename:"Ktk2AKuPeY_td1-h9LayHYWCjAqyN4O3WYZB_sU",category:"sans-serif",url:"https://fonts.gstatic.com/s/mochiypoppone/v12/Ktk2AKuPeY_td1-h9LayHYWCjAqyN4O3WYZB_sU.ttf",weight:400,isVariable:!1},{displayName:"Frijole",filename:"uU9PCBUR8oakM2BQ7xPb3vyHmlI",category:"display",url:"https://fonts.gstatic.com/s/frijole/v15/uU9PCBUR8oakM2BQ7xPb3vyHmlI.ttf",weight:400,isVariable:!1},{displayName:"Sumana",filename:"4UaDrE5TqRBjGj-G8Bji76zR4w",category:"serif",url:"https://fonts.gstatic.com/s/sumana/v12/4UaDrE5TqRBjGj-G8Bji76zR4w.ttf",weight:400,isVariable:!1},{displayName:"Modern Antiqua",filename:"NGStv5TIAUg6Iq_RLNo_2dp1sI1Ea2u0c3Gi",category:"display",url:"https://fonts.gstatic.com/s/modernantiqua/v26/NGStv5TIAUg6Iq_RLNo_2dp1sI1Ea2u0c3Gi.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Armenian",filename:"ZgNOjOZKPa7CHqq0h37c7ReDUubm2SEHHliXap5UrA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansarmenian/v47/ZgNOjOZKPa7CHqq0h37c7ReDUubm2SEHHliXap5UrA.ttf",weight:400,isVariable:!0},{displayName:"Nova Round",filename:"flU9Rqquw5UhEnlwTJYTYYfeeetYEBc",category:"display",url:"https://fonts.gstatic.com/s/novaround/v23/flU9Rqquw5UhEnlwTJYTYYfeeetYEBc.ttf",weight:400,isVariable:!1},{displayName:"Libre Barcode 128 Text",filename:"fdNv9tubt3ZEnz1Gu3I4-zppwZ9CWZ16Z0w5cV3Y6M90w4k",category:"display",url:"https://fonts.gstatic.com/s/librebarcode128text/v31/fdNv9tubt3ZEnz1Gu3I4-zppwZ9CWZ16Z0w5cV3Y6M90w4k.ttf",weight:400,isVariable:!1},{displayName:"Duru Sans",filename:"xn7iYH8xwmSyTvEV_HOxT_fYdN-WZw",category:"sans-serif",url:"https://fonts.gstatic.com/s/durusans/v21/xn7iYH8xwmSyTvEV_HOxT_fYdN-WZw.ttf",weight:400,isVariable:!1},{displayName:"Crushed",filename:"U9Mc6dym6WXImTlFT1kfuIqyLzA",category:"display",url:"https://fonts.gstatic.com/s/crushed/v32/U9Mc6dym6WXImTlFT1kfuIqyLzA.ttf",weight:400,isVariable:!1},{displayName:"Monofett",filename:"mFTyWbofw6zc9NtnW43SuRwr0VJ7",category:"monospace",url:"https://fonts.gstatic.com/s/monofett/v24/mFTyWbofw6zc9NtnW43SuRwr0VJ7.ttf",weight:400,isVariable:!1},{displayName:"Patrick Hand SC",filename:"0nkwC9f7MfsBiWcLtY65AWDK873ViSi6JQc7Vg",category:"handwriting",url:"https://fonts.gstatic.com/s/patrickhandsc/v17/0nkwC9f7MfsBiWcLtY65AWDK873ViSi6JQc7Vg.ttf",weight:400,isVariable:!1},{displayName:"Qahiri",filename:"tsssAp1RZy0C_hGuU3Chrnmupw",category:"sans-serif",url:"https://fonts.gstatic.com/s/qahiri/v11/tsssAp1RZy0C_hGuU3Chrnmupw.ttf",weight:400,isVariable:!1},{displayName:"Lumanosimo",filename:"K2F0fZBYg_JDSEZHEfO8AoqKAyLzfWo",category:"handwriting",url:"https://fonts.gstatic.com/s/lumanosimo/v5/K2F0fZBYg_JDSEZHEfO8AoqKAyLzfWo.ttf",weight:400,isVariable:!1},{displayName:"Solitreo",filename:"r05YGLlS5a9KYsyNO8upyDYtStiJ",category:"handwriting",url:"https://fonts.gstatic.com/s/solitreo/v2/r05YGLlS5a9KYsyNO8upyDYtStiJ.ttf",weight:400,isVariable:!1},{displayName:"LINE Seed JP",filename:"MwQxbh7r89it6QsEXfZb-jMfjZtKpXulTQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/lineseedjp/v1/MwQxbh7r89it6QsEXfZb-jMfjZtKpXulTQ.ttf",weight:400,isVariable:!1},{displayName:"Shippori Antique B1",filename:"2Eb7L_JwClR7Zl_UAKZ0mUHw3oMKd40grRFCj9-5Y8Y",category:"sans-serif",url:"https://fonts.gstatic.com/s/shipporiantiqueb1/v11/2Eb7L_JwClR7Zl_UAKZ0mUHw3oMKd40grRFCj9-5Y8Y.ttf",weight:400,isVariable:!1},{displayName:"Train One",filename:"gyB-hwkiNtc6KnxUVjWHOqbZRY7JVQ",category:"display",url:"https://fonts.gstatic.com/s/trainone/v16/gyB-hwkiNtc6KnxUVjWHOqbZRY7JVQ.ttf",weight:400,isVariable:!1},{displayName:"Kdam Thmor Pro",filename:"EJRPQgAzVdcI-Qdvt34jzurnGA7_j89I8ZWb",category:"sans-serif",url:"https://fonts.gstatic.com/s/kdamthmorpro/v7/EJRPQgAzVdcI-Qdvt34jzurnGA7_j89I8ZWb.ttf",weight:400,isVariable:!1},{displayName:"Galada",filename:"H4cmBXyGmcjXlUX-8iw-4Lqggw",category:"display",url:"https://fonts.gstatic.com/s/galada/v21/H4cmBXyGmcjXlUX-8iw-4Lqggw.ttf",weight:400,isVariable:!1},{displayName:"Convergence",filename:"rax5HiePvdgXPmmMHcIPYRhasU7Q8Cad",category:"sans-serif",url:"https://fonts.gstatic.com/s/convergence/v16/rax5HiePvdgXPmmMHcIPYRhasU7Q8Cad.ttf",weight:400,isVariable:!1},{displayName:"Bubbler One",filename:"f0Xy0eqj68ppQV9KBLmAouHH26MPePkt",category:"sans-serif",url:"https://fonts.gstatic.com/s/bubblerone/v22/f0Xy0eqj68ppQV9KBLmAouHH26MPePkt.ttf",weight:400,isVariable:!1},{displayName:"Baloo Bhai 2",filename:"sZlDdRSL-z1VEWZ4YNA7Y5I3cdTmiH1gFQ",category:"display",url:"https://fonts.gstatic.com/s/baloobhai2/v30/sZlDdRSL-z1VEWZ4YNA7Y5I3cdTmiH1gFQ.ttf",weight:400,isVariable:!0},{displayName:"Denk One",filename:"dg4m_pzhrqcFb2IzROtHpbglShon",category:"sans-serif",url:"https://fonts.gstatic.com/s/denkone/v21/dg4m_pzhrqcFb2IzROtHpbglShon.ttf",weight:400,isVariable:!1},{displayName:"Swanky and Moo Moo",filename:"flUlRrKz24IuWVI_WJYTYcqbEsMUZ3kUtbPkR64SYQ",category:"handwriting",url:"https://fonts.gstatic.com/s/swankyandmoomoo/v24/flUlRrKz24IuWVI_WJYTYcqbEsMUZ3kUtbPkR64SYQ.ttf",weight:400,isVariable:!1},{displayName:"Yuji Syuku",filename:"BngNUXdTV3vO6Lw5ApOPqPfgwqiA-Rk",category:"serif",url:"https://fonts.gstatic.com/s/yujisyuku/v8/BngNUXdTV3vO6Lw5ApOPqPfgwqiA-Rk.ttf",weight:400,isVariable:!1},{displayName:"Orienta",filename:"PlI9FlK4Jrl5Y9zNeyeo9HRFhcU",category:"sans-serif",url:"https://fonts.gstatic.com/s/orienta/v16/PlI9FlK4Jrl5Y9zNeyeo9HRFhcU.ttf",weight:400,isVariable:!1},{displayName:"Castoro Titling",filename:"buEupouwccj03leTfjUAhEZWlrNqYgckeo9RMw",category:"display",url:"https://fonts.gstatic.com/s/castorotitling/v10/buEupouwccj03leTfjUAhEZWlrNqYgckeo9RMw.ttf",weight:400,isVariable:!1},{displayName:"UnifrakturCook",filename:"IurA6Yli8YOdcoky-0PTTdkm56n05Uw13ILXs-h6",category:"display",url:"https://fonts.gstatic.com/s/unifrakturcook/v25/IurA6Yli8YOdcoky-0PTTdkm56n05Uw13ILXs-h6.ttf",weight:700,isVariable:!1},{displayName:"Medula One",filename:"YA9Wr0qb5kjJM6l2V0yukiEqs7GtlvY",category:"display",url:"https://fonts.gstatic.com/s/medulaone/v20/YA9Wr0qb5kjJM6l2V0yukiEqs7GtlvY.ttf",weight:400,isVariable:!1},{displayName:"Gulzar",filename:"Wnz6HAc9eB3HB2ILYTwZqg_MPQ",category:"serif",url:"https://fonts.gstatic.com/s/gulzar/v14/Wnz6HAc9eB3HB2ILYTwZqg_MPQ.ttf",weight:400,isVariable:!1},{displayName:"Manuale",filename:"f0X20eas_8Z-TFZdBPbEw8nG6aY",category:"serif",url:"https://fonts.gstatic.com/s/manuale/v31/f0X20eas_8Z-TFZdBPbEw8nG6aY.ttf",weight:400,isVariable:!0},{displayName:"Life Savers",filename:"ZXuie1UftKKabUQMgxAal_lrFgpbuNvB",category:"display",url:"https://fonts.gstatic.com/s/lifesavers/v23/ZXuie1UftKKabUQMgxAal_lrFgpbuNvB.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Georgian",filename:"VEMtRpd8s4nv8hG_qOzL7HOAw4nt0Sl_RRe4_Tsdkf4",category:"serif",url:"https://fonts.gstatic.com/s/notoserifgeorgian/v29/VEMtRpd8s4nv8hG_qOzL7HOAw4nt0Sl_RRe4_Tsdkf4.ttf",weight:400,isVariable:!0},{displayName:"Dokdo",filename:"esDf315XNuCBLxLo4NaMlKcH",category:"display",url:"https://fonts.gstatic.com/s/dokdo/v23/esDf315XNuCBLxLo4NaMlKcH.ttf",weight:400,isVariable:!1},{displayName:"Maiden Orange",filename:"kJE1BuIX7AUmhi2V4m08kb1XjOZdCZS8FY8",category:"serif",url:"https://fonts.gstatic.com/s/maidenorange/v32/kJE1BuIX7AUmhi2V4m08kb1XjOZdCZS8FY8.ttf",weight:400,isVariable:!1},{displayName:"Zhi Mang Xing",filename:"f0Xw0ey79sErYFtWQ9a2rq-g0actfektIJ0",category:"handwriting",url:"https://fonts.gstatic.com/s/zhimangxing/v19/f0Xw0ey79sErYFtWQ9a2rq-g0actfektIJ0.ttf",weight:400,isVariable:!1},{displayName:"Baloo Tammudu 2",filename:"1Pt2g8TIS_SAmkLguUdFP8UaJcK-xXEW6aGXHw",category:"display",url:"https://fonts.gstatic.com/s/balootammudu2/v27/1Pt2g8TIS_SAmkLguUdFP8UaJcK-xXEW6aGXHw.ttf",weight:400,isVariable:!0},{displayName:"Sometype Mono",filename:"70lVu745KGk_R3uxyq0WrROhGpOrQEdC7m8",category:"monospace",url:"https://fonts.gstatic.com/s/sometypemono/v4/70lVu745KGk_R3uxyq0WrROhGpOrQEdC7m8.ttf",weight:400,isVariable:!0},{displayName:"M PLUS 1 Code",filename:"ypvfbXOOx2xFpzmYJS3N2_J2nhhYtUb0gZk",category:"monospace",url:"https://fonts.gstatic.com/s/mplus1code/v16/ypvfbXOOx2xFpzmYJS3N2_J2nhhYtUb0gZk.ttf",weight:400,isVariable:!0},{displayName:"Timmana",filename:"6xKvdShfL9yK-rvpCmvbKHwJUOM",category:"sans-serif",url:"https://fonts.gstatic.com/s/timmana/v14/6xKvdShfL9yK-rvpCmvbKHwJUOM.ttf",weight:400,isVariable:!1},{displayName:"Borel",filename:"6qLOKZsftAPisgshYyMnOjwE",category:"handwriting",url:"https://fonts.gstatic.com/s/borel/v10/6qLOKZsftAPisgshYyMnOjwE.ttf",weight:400,isVariable:!1},{displayName:"Aoboshi One",filename:"Gg8xN5kXaAXtHQrFxwl10ysLBmZX_UEg",category:"serif",url:"https://fonts.gstatic.com/s/aoboshione/v13/Gg8xN5kXaAXtHQrFxwl10ysLBmZX_UEg.ttf",weight:400,isVariable:!1},{displayName:"Carme",filename:"ptRHTiWdbvZIDOjGxLNrxfbZ",category:"sans-serif",url:"https://fonts.gstatic.com/s/carme/v17/ptRHTiWdbvZIDOjGxLNrxfbZ.ttf",weight:400,isVariable:!1},{displayName:"Peralta",filename:"hYkJPu0-RP_9d3kRGxAhrv956B8",category:"serif",url:"https://fonts.gstatic.com/s/peralta/v21/hYkJPu0-RP_9d3kRGxAhrv956B8.ttf",weight:400,isVariable:!1},{displayName:"Vampiro One",filename:"gokqH6DoDl5yXvJytFsdLkqnsvhIor3K",category:"display",url:"https://fonts.gstatic.com/s/vampiroone/v19/gokqH6DoDl5yXvJytFsdLkqnsvhIor3K.ttf",weight:400,isVariable:!1},{displayName:"IM Fell Great Primer",filename:"bx6aNwSJtayYxOkbYFsT6hMsLzX7u85rJorXvDo3SQY1",category:"serif",url:"https://fonts.gstatic.com/s/imfellgreatprimer/v21/bx6aNwSJtayYxOkbYFsT6hMsLzX7u85rJorXvDo3SQY1.ttf",weight:400,isVariable:!1},{displayName:"Macondo Swash Caps",filename:"6NUL8EaAJgGKZA7lpt941Z9s6ZYgDq6Oekoa_mm5bA",category:"display",url:"https://fonts.gstatic.com/s/macondoswashcaps/v26/6NUL8EaAJgGKZA7lpt941Z9s6ZYgDq6Oekoa_mm5bA.ttf",weight:400,isVariable:!1},{displayName:"Trade Winds",filename:"AYCPpXPpYNIIT7h8-QenM3Jq7PKP5Z_G",category:"display",url:"https://fonts.gstatic.com/s/tradewinds/v18/AYCPpXPpYNIIT7h8-QenM3Jq7PKP5Z_G.ttf",weight:400,isVariable:!1},{displayName:"Nata Sans",filename:"1q2EY5KBClBit88SU_tOyMQbjEX5fw",category:"sans-serif",url:"https://fonts.gstatic.com/s/natasans/v1/1q2EY5KBClBit88SU_tOyMQbjEX5fw.ttf",weight:400,isVariable:!0},{displayName:"Abyssinica SIL",filename:"oY1H8ezOqK7iI3rK_45WKoc8J6UZBFOVAXuI",category:"serif",url:"https://fonts.gstatic.com/s/abyssinicasil/v9/oY1H8ezOqK7iI3rK_45WKoc8J6UZBFOVAXuI.ttf",weight:400,isVariable:!1},{displayName:"Reggae One",filename:"7r3DqX5msMIkeuwJwOJt_a5L5uH-mts",category:"display",url:"https://fonts.gstatic.com/s/reggaeone/v19/7r3DqX5msMIkeuwJwOJt_a5L5uH-mts.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Thai",filename:"k3kIo80MPvpLmixYH7euCxWpSMut8SX6-q2CGg",category:"serif",url:"https://fonts.gstatic.com/s/notoserifthai/v28/k3kIo80MPvpLmixYH7euCxWpSMut8SX6-q2CGg.ttf",weight:400,isVariable:!0},{displayName:"Hubot Sans",filename:"pe0rMIiULYxOvxVLbVwhIteQB9Zra1U",category:"sans-serif",url:"https://fonts.gstatic.com/s/hubotsans/v5/pe0rMIiULYxOvxVLbVwhIteQB9Zra1U.ttf",weight:400,isVariable:!0},{displayName:"Mirza",filename:"co3ImWlikiN5EurdKMewsrvI",category:"serif",url:"https://fonts.gstatic.com/s/mirza/v19/co3ImWlikiN5EurdKMewsrvI.ttf",weight:400,isVariable:!1},{displayName:"IM Fell French Canon",filename:"-F6ufiNtDWYfYc-tDiyiw08rrghJszkK6coVPt1ozoPz",category:"serif",url:"https://fonts.gstatic.com/s/imfellfrenchcanon/v21/-F6ufiNtDWYfYc-tDiyiw08rrghJszkK6coVPt1ozoPz.ttf",weight:400,isVariable:!1},{displayName:"Akatab",filename:"VuJwdNrK3Z7gqJEPWIz5NIh-YA",category:"sans-serif",url:"https://fonts.gstatic.com/s/akatab/v9/VuJwdNrK3Z7gqJEPWIz5NIh-YA.ttf",weight:400,isVariable:!1},{displayName:"Stick No Bills",filename:"bWth7ffXZwHuAa9Uld-oEK4QKkZo1w-1YxiC",category:"sans-serif",url:"https://fonts.gstatic.com/s/sticknobills/v17/bWth7ffXZwHuAa9Uld-oEK4QKkZo1w-1YxiC.ttf",weight:400,isVariable:!0},{displayName:"Fuggles",filename:"k3kQo8UEJOlD1hpOTd7iL0nAMaM",category:"handwriting",url:"https://fonts.gstatic.com/s/fuggles/v14/k3kQo8UEJOlD1hpOTd7iL0nAMaM.ttf",weight:400,isVariable:!1},{displayName:"Momo Signature",filename:"RrQJbop99C51b06IDAuFoM0yCqcoMcmJPECN",category:"sans-serif",url:"https://fonts.gstatic.com/s/momosignature/v2/RrQJbop99C51b06IDAuFoM0yCqcoMcmJPECN.ttf",weight:400,isVariable:!1},{displayName:"Harmattan",filename:"goksH6L2DkFvVvRp9XpTS0CjkP1Yog",category:"sans-serif",url:"https://fonts.gstatic.com/s/harmattan/v24/goksH6L2DkFvVvRp9XpTS0CjkP1Yog.ttf",weight:400,isVariable:!1},{displayName:"Emilys Candy",filename:"2EbgL-1mD1Rnb0OGKudbk0y5r9xrX84JjA",category:"display",url:"https://fonts.gstatic.com/s/emilyscandy/v21/2EbgL-1mD1Rnb0OGKudbk0y5r9xrX84JjA.ttf",weight:400,isVariable:!1},{displayName:"Comic Relief",filename:"BCauqZkHrvL55SZ8uaEhHMY2XBJhDgs-Kg",category:"display",url:"https://fonts.gstatic.com/s/comicrelief/v2/BCauqZkHrvL55SZ8uaEhHMY2XBJhDgs-Kg.ttf",weight:400,isVariable:!1},{displayName:"Elsie Swash Caps",filename:"845DNN8xGZyVX5MVo_upKf7KnjK0ferVKGWsUo8",category:"display",url:"https://fonts.gstatic.com/s/elsieswashcaps/v25/845DNN8xGZyVX5MVo_upKf7KnjK0ferVKGWsUo8.ttf",weight:400,isVariable:!1},{displayName:"Miniver",filename:"eLGcP-PxIg-5H0vC770Cy8r8fWA",category:"display",url:"https://fonts.gstatic.com/s/miniver/v27/eLGcP-PxIg-5H0vC770Cy8r8fWA.ttf",weight:400,isVariable:!1},{displayName:"Chicle",filename:"lJwG-pw9i2dqU-BDyWKuobYSxw",category:"display",url:"https://fonts.gstatic.com/s/chicle/v27/lJwG-pw9i2dqU-BDyWKuobYSxw.ttf",weight:400,isVariable:!1},{displayName:"Benne",filename:"L0xzDFAhn18E6Vjxlt6qTDBN",category:"serif",url:"https://fonts.gstatic.com/s/benne/v24/L0xzDFAhn18E6Vjxlt6qTDBN.ttf",weight:400,isVariable:!1},{displayName:"Habibi",filename:"CSR-4zFWkuqcTTNCShJeZOYySQ",category:"serif",url:"https://fonts.gstatic.com/s/habibi/v22/CSR-4zFWkuqcTTNCShJeZOYySQ.ttf",weight:400,isVariable:!1},{displayName:"Gayathri",filename:"MCoQzAb429DbBilWLIA48J_wBugA",category:"sans-serif",url:"https://fonts.gstatic.com/s/gayathri/v20/MCoQzAb429DbBilWLIA48J_wBugA.ttf",weight:400,isVariable:!1},{displayName:"Nova Flat",filename:"QdVUSTc-JgqpytEbVebEuStkm20oJA",category:"display",url:"https://fonts.gstatic.com/s/novaflat/v26/QdVUSTc-JgqpytEbVebEuStkm20oJA.ttf",weight:400,isVariable:!1},{displayName:"Phudu",filename:"0FlaVPSHk0ya-6mfWh8MZB8g",category:"display",url:"https://fonts.gstatic.com/s/phudu/v6/0FlaVPSHk0ya-6mfWh8MZB8g.ttf",weight:400,isVariable:!0},{displayName:"Gugi",filename:"A2BVn5dXywshVA6A9DEfgqM",category:"display",url:"https://fonts.gstatic.com/s/gugi/v21/A2BVn5dXywshVA6A9DEfgqM.ttf",weight:400,isVariable:!1},{displayName:"Freckle Face",filename:"AMOWz4SXrmKHCvXTohxY-YI0U1K2w9lb4g",category:"display",url:"https://fonts.gstatic.com/s/freckleface/v16/AMOWz4SXrmKHCvXTohxY-YI0U1K2w9lb4g.ttf",weight:400,isVariable:!1},{displayName:"Moon Dance",filename:"WBLgrEbUbFlYW9ekmGawe2XiKMiokE4",category:"handwriting",url:"https://fonts.gstatic.com/s/moondance/v8/WBLgrEbUbFlYW9ekmGawe2XiKMiokE4.ttf",weight:400,isVariable:!1},{displayName:"Londrina Outline",filename:"C8c44dM8vmb14dfsZxhetg3pDH-SfuoxrSKMDvI",category:"display",url:"https://fonts.gstatic.com/s/londrinaoutline/v29/C8c44dM8vmb14dfsZxhetg3pDH-SfuoxrSKMDvI.ttf",weight:400,isVariable:!1},{displayName:"Genos",filename:"SlGemQqPqpUOYSwoSzYsgWxz",category:"sans-serif",url:"https://fonts.gstatic.com/s/genos/v16/SlGemQqPqpUOYSwoSzYsgWxz.ttf",weight:400,isVariable:!0},{displayName:"Eagle Lake",filename:"ptRMTiqbbuNJDOiKj9wG5O7yKQNute8",category:"handwriting",url:"https://fonts.gstatic.com/s/eaglelake/v26/ptRMTiqbbuNJDOiKj9wG5O7yKQNute8.ttf",weight:400,isVariable:!1},{displayName:"Ceviche One",filename:"gyB4hws1IcA6JzR-GB_JX6zdZ4vZVbgZ",category:"display",url:"https://fonts.gstatic.com/s/cevicheone/v17/gyB4hws1IcA6JzR-GB_JX6zdZ4vZVbgZ.ttf",weight:400,isVariable:!1},{displayName:"Caesar Dressing",filename:"yYLx0hLa3vawqtwdswbotmK4vrR3cbb6LZttyg",category:"display",url:"https://fonts.gstatic.com/s/caesardressing/v22/yYLx0hLa3vawqtwdswbotmK4vrR3cbb6LZttyg.ttf",weight:400,isVariable:!1},{displayName:"IM Fell DW Pica SC",filename:"0ybjGCAu5PfqkvtGVU15aBhXz3EUrnTW-BiKEUiBGA",category:"serif",url:"https://fonts.gstatic.com/s/imfelldwpicasc/v21/0ybjGCAu5PfqkvtGVU15aBhXz3EUrnTW-BiKEUiBGA.ttf",weight:400,isVariable:!1},{displayName:"Raleway Dots",filename:"6NUR8FifJg6AfQvzpshgwJ8kyf9Fdty2ew",category:"display",url:"https://fonts.gstatic.com/s/ralewaydots/v19/6NUR8FifJg6AfQvzpshgwJ8kyf9Fdty2ew.ttf",weight:400,isVariable:!1},{displayName:"Spline Sans Mono",filename:"R70BjzAei_CDNLfgZxrW6wrZOF2Wb5WTmW2a6l0",category:"monospace",url:"https://fonts.gstatic.com/s/splinesansmono/v13/R70BjzAei_CDNLfgZxrW6wrZOF2Wb5WTmW2a6l0.ttf",weight:400,isVariable:!0},{displayName:"Homenaje",filename:"FwZY7-Q-xVAi_l-6Ld6A4sijpFu_",category:"sans-serif",url:"https://fonts.gstatic.com/s/homenaje/v17/FwZY7-Q-xVAi_l-6Ld6A4sijpFu_.ttf",weight:400,isVariable:!1},{displayName:"Rhodium Libre",filename:"1q2AY5adA0tn_ukeHcQHqpx6pETLeo2gm2U",category:"serif",url:"https://fonts.gstatic.com/s/rhodiumlibre/v21/1q2AY5adA0tn_ukeHcQHqpx6pETLeo2gm2U.ttf",weight:400,isVariable:!1},{displayName:"Akaya Kanadaka",filename:"N0bM2S5CPO5oOQqvazoRRb-8-PfRS5VBBSSF",category:"display",url:"https://fonts.gstatic.com/s/akayakanadaka/v18/N0bM2S5CPO5oOQqvazoRRb-8-PfRS5VBBSSF.ttf",weight:400,isVariable:!1},{displayName:"Smythe",filename:"MwQ3bhT01--coT1BOLh_uGInjA",category:"display",url:"https://fonts.gstatic.com/s/smythe/v24/MwQ3bhT01--coT1BOLh_uGInjA.ttf",weight:400,isVariable:!1},{displayName:"Asset",filename:"SLXGc1na-mM4cWImRJqExst1",category:"display",url:"https://fonts.gstatic.com/s/asset/v30/SLXGc1na-mM4cWImRJqExst1.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Thaana",filename:"C8c44dM-vnz-s-3jaEsxlxHkBH-WfuoxrSKMDvI",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansthaana/v26/C8c44dM-vnz-s-3jaEsxlxHkBH-WfuoxrSKMDvI.ttf",weight:400,isVariable:!0},{displayName:"The Nautigal",filename:"VdGZAZ8ZH51Lvng9fQV2bfKr5wVk09Se5Q",category:"handwriting",url:"https://fonts.gstatic.com/s/thenautigal/v8/VdGZAZ8ZH51Lvng9fQV2bfKr5wVk09Se5Q.ttf",weight:400,isVariable:!1},{displayName:"Tiny5",filename:"KFOpCnmCvdGT7hw-z0hHAi88",category:"sans-serif",url:"https://fonts.gstatic.com/s/tiny5/v3/KFOpCnmCvdGT7hw-z0hHAi88.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Lao",filename:"bx6DNx2Ol_ixgdYWLm9BwxM3L2Wj1qsPTKs",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanslao/v33/bx6DNx2Ol_ixgdYWLm9BwxM3L2Wj1qsPTKs.ttf",weight:400,isVariable:!0},{displayName:"Sail",filename:"DPEjYwiBxwYJFBTDADYAbvw",category:"display",url:"https://fonts.gstatic.com/s/sail/v17/DPEjYwiBxwYJFBTDADYAbvw.ttf",weight:400,isVariable:!1},{displayName:"Montaga",filename:"H4cnBX2Ml8rCkEO_0gYQ7LO5mqc",category:"serif",url:"https://fonts.gstatic.com/s/montaga/v14/H4cnBX2Ml8rCkEO_0gYQ7LO5mqc.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Khojki",filename:"I_u0MoOduATTei9aP90ctmPGxP2rBL7HwJfIeG71",category:"serif",url:"https://fonts.gstatic.com/s/notoserifkhojki/v13/I_u0MoOduATTei9aP90ctmPGxP2rBL7HwJfIeG71.ttf",weight:400,isVariable:!0},{displayName:"Ledger",filename:"j8_q6-HK1L3if_sxm8DwHTBhHw",category:"serif",url:"https://fonts.gstatic.com/s/ledger/v17/j8_q6-HK1L3if_sxm8DwHTBhHw.ttf",weight:400,isVariable:!1},{displayName:"Nova Slim",filename:"Z9XUDmZNQAuem8jyZcn-yMOInrib9Q",category:"display",url:"https://fonts.gstatic.com/s/novaslim/v26/Z9XUDmZNQAuem8jyZcn-yMOInrib9Q.ttf",weight:400,isVariable:!1},{displayName:"Rubik Storm",filename:"eLGYP-_uPgO5Ag7ju9JaouL9T2Xh9NQk",category:"display",url:"https://fonts.gstatic.com/s/rubikstorm/v1/eLGYP-_uPgO5Ag7ju9JaouL9T2Xh9NQk.ttf",weight:400,isVariable:!1},{displayName:"Pavanam",filename:"BXRrvF_aiezLh0xPDOtQ9Wf0QcE",category:"sans-serif",url:"https://fonts.gstatic.com/s/pavanam/v13/BXRrvF_aiezLh0xPDOtQ9Wf0QcE.ttf",weight:400,isVariable:!1},{displayName:"Inclusive Sans",filename:"0nkxC9biPuwflXcJ46P4PGWE0971owa2LB4i",category:"sans-serif",url:"https://fonts.gstatic.com/s/inclusivesans/v4/0nkxC9biPuwflXcJ46P4PGWE0971owa2LB4i.ttf",weight:400,isVariable:!0},{displayName:"Tauri",filename:"TwMA-IISS0AM3IpVWHU_TBqO",category:"sans-serif",url:"https://fonts.gstatic.com/s/tauri/v20/TwMA-IISS0AM3IpVWHU_TBqO.ttf",weight:400,isVariable:!1},{displayName:"Faculty Glyphic",filename:"RrQIbot2-iBvI2mYSyKIrcgoBuQIG-eFNVmULg",category:"sans-serif",url:"https://fonts.gstatic.com/s/facultyglyphic/v4/RrQIbot2-iBvI2mYSyKIrcgoBuQIG-eFNVmULg.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Malayalam",filename:"JIAsUU5sdmdP_HMcVcZFcH7DeVBeGVgSMFM9UJWbN_un",category:"serif",url:"https://fonts.gstatic.com/s/notoserifmalayalam/v32/JIAsUU5sdmdP_HMcVcZFcH7DeVBeGVgSMFM9UJWbN_un.ttf",weight:400,isVariable:!0},{displayName:"Bona Nova",filename:"B50NF7ZCpX7fcHfvIUBJi6hqHK-CLA",category:"serif",url:"https://fonts.gstatic.com/s/bonanova/v12/B50NF7ZCpX7fcHfvIUBJi6hqHK-CLA.ttf",weight:400,isVariable:!1},{displayName:"Overlock SC",filename:"1cX3aUHKGZrstGAY8nwVzHGAq8Sk1PoH",category:"display",url:"https://fonts.gstatic.com/s/overlocksc/v25/1cX3aUHKGZrstGAY8nwVzHGAq8Sk1PoH.ttf",weight:400,isVariable:!1},{displayName:"IM Fell Double Pica SC",filename:"neIazDmuiMkFo6zj_sHpQ8teNbWlwBB_hXjJ4Y0Eeru2dGg",category:"serif",url:"https://fonts.gstatic.com/s/imfelldoublepicasc/v21/neIazDmuiMkFo6zj_sHpQ8teNbWlwBB_hXjJ4Y0Eeru2dGg.ttf",weight:400,isVariable:!1},{displayName:"Birthstone Bounce",filename:"ga6XaxZF43lIvTWrktHOTBJZGH7dEeVJGIMYDo_8",category:"handwriting",url:"https://fonts.gstatic.com/s/birthstonebounce/v13/ga6XaxZF43lIvTWrktHOTBJZGH7dEeVJGIMYDo_8.ttf",weight:400,isVariable:!1},{displayName:"Gwendolyn",filename:"qkBXXvoO_M3CSss-d7ee5JRLkAXbMQ",category:"handwriting",url:"https://fonts.gstatic.com/s/gwendolyn/v9/qkBXXvoO_M3CSss-d7ee5JRLkAXbMQ.ttf",weight:400,isVariable:!1},{displayName:"Luxurious Script",filename:"ahcCv9e7yydulT32KZ0rBIoD7DzMg0rOby1JtYk",category:"handwriting",url:"https://fonts.gstatic.com/s/luxuriousscript/v9/ahcCv9e7yydulT32KZ0rBIoD7DzMg0rOby1JtYk.ttf",weight:400,isVariable:!1},{displayName:"Odor Mean Chey",filename:"raxkHiKDttkTe1aOGcJMR1A_4mrY2zqUKafv",category:"serif",url:"https://fonts.gstatic.com/s/odormeanchey/v31/raxkHiKDttkTe1aOGcJMR1A_4mrY2zqUKafv.ttf",weight:400,isVariable:!1},{displayName:"Miltonian Tattoo",filename:"EvOUzBRL0o0kCxF-lcMCQxlpVsA_FwP8MDBku-s",category:"display",url:"https://fonts.gstatic.com/s/miltoniantattoo/v34/EvOUzBRL0o0kCxF-lcMCQxlpVsA_FwP8MDBku-s.ttf",weight:400,isVariable:!1},{displayName:"Ysabeau Office",filename:"LDIrapaZKhM9RuQIp8FmdYrPPMLOub458jGL",category:"sans-serif",url:"https://fonts.gstatic.com/s/ysabeauoffice/v4/LDIrapaZKhM9RuQIp8FmdYrPPMLOub458jGL.ttf",weight:400,isVariable:!0},{displayName:"Gemunu Libre",filename:"X7ni4bQ6Cfy7jKGXVE_YlqnBGiL1539rvw",category:"sans-serif",url:"https://fonts.gstatic.com/s/gemunulibre/v18/X7ni4bQ6Cfy7jKGXVE_YlqnBGiL1539rvw.ttf",weight:400,isVariable:!0},{displayName:"Imbue",filename:"RLpxK5P16Ki3fWJoxzUobkvv",category:"serif",url:"https://fonts.gstatic.com/s/imbue/v29/RLpxK5P16Ki3fWJoxzUobkvv.ttf",weight:400,isVariable:!0},{displayName:"Kavivanar",filename:"o-0IIpQgyXYSwhxP7_Jb4j5Ba_2c7A",category:"handwriting",url:"https://fonts.gstatic.com/s/kavivanar/v22/o-0IIpQgyXYSwhxP7_Jb4j5Ba_2c7A.ttf",weight:400,isVariable:!1},{displayName:"Khmer",filename:"MjQImit_vPPwpF-BpN2EeYmD",category:"sans-serif",url:"https://fonts.gstatic.com/s/khmer/v38/MjQImit_vPPwpF-BpN2EeYmD.ttf",weight:400,isVariable:!1},{displayName:"Sulphur Point",filename:"RLp5K5vv8KaycDcazWFPBj2aRfkSu6EuTHo",category:"sans-serif",url:"https://fonts.gstatic.com/s/sulphurpoint/v16/RLp5K5vv8KaycDcazWFPBj2aRfkSu6EuTHo.ttf",weight:400,isVariable:!1},{displayName:"Stylish",filename:"m8JSjfhPYriQkk7-fo35dLxEdmo",category:"sans-serif",url:"https://fonts.gstatic.com/s/stylish/v25/m8JSjfhPYriQkk7-fo35dLxEdmo.ttf",weight:400,isVariable:!1},{displayName:"East Sea Dokdo",filename:"xfuo0Wn2V2_KanASqXSZp22m05_aGavYS18y",category:"handwriting",url:"https://fonts.gstatic.com/s/eastseadokdo/v26/xfuo0Wn2V2_KanASqXSZp22m05_aGavYS18y.ttf",weight:400,isVariable:!1},{displayName:"Zilla Slab Highlight",filename:"gNMbW2BrTpK8-inLtBJgMMfbm6uNVDvRxhtIY2DwSXlM",category:"serif",url:"https://fonts.gstatic.com/s/zillaslabhighlight/v21/gNMbW2BrTpK8-inLtBJgMMfbm6uNVDvRxhtIY2DwSXlM.ttf",weight:400,isVariable:!1},{displayName:"Lavishly Yours",filename:"jizDREVIvGwH5OjiZmX9r5z_WxUY0TY7ikbI",category:"handwriting",url:"https://fonts.gstatic.com/s/lavishlyyours/v7/jizDREVIvGwH5OjiZmX9r5z_WxUY0TY7ikbI.ttf",weight:400,isVariable:!1},{displayName:"Edu TAS Beginner",filename:"ZXu9e04WubHfGVY-1TcNg7AFUmshmcPqoeRWfbs",category:"handwriting",url:"https://fonts.gstatic.com/s/edutasbeginner/v5/ZXu9e04WubHfGVY-1TcNg7AFUmshmcPqoeRWfbs.ttf",weight:400,isVariable:!0},{displayName:"IM Fell Great Primer SC",filename:"ga6daxBOxyt6sCqz3fjZCTFCTUDMHagsQKdDTLf9BXz0s8FG",category:"serif",url:"https://fonts.gstatic.com/s/imfellgreatprimersc/v21/ga6daxBOxyt6sCqz3fjZCTFCTUDMHagsQKdDTLf9BXz0s8FG.ttf",weight:400,isVariable:!1},{displayName:"Mohave",filename:"7cHpv4ksjJunKqMPC8E46HsxnA",category:"sans-serif",url:"https://fonts.gstatic.com/s/mohave/v13/7cHpv4ksjJunKqMPC8E46HsxnA.ttf",weight:400,isVariable:!0},{displayName:"Noto Serif Kannada",filename:"v6-JGZHLJFKIhClqUYqXDiWqpxQxWSPyUIQDIsKCHg",category:"serif",url:"https://fonts.gstatic.com/s/notoserifkannada/v30/v6-JGZHLJFKIhClqUYqXDiWqpxQxWSPyUIQDIsKCHg.ttf",weight:400,isVariable:!0},{displayName:"Fascinate",filename:"z7NWdRrufC8XJK0IIEli1LbQRPyNrw",category:"display",url:"https://fonts.gstatic.com/s/fascinate/v23/z7NWdRrufC8XJK0IIEli1LbQRPyNrw.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Symbols 2",filename:"I_uyMoGduATTei9eI8daxVHDyfisHr71ypPqfX71-AI",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssymbols2/v25/I_uyMoGduATTei9eI8daxVHDyfisHr71ypPqfX71-AI.ttf",weight:400,isVariable:!1},{displayName:"Alkalami",filename:"zOL_4pfDmqRL95WXi5eLw8BMuvhH",category:"serif",url:"https://fonts.gstatic.com/s/alkalami/v8/zOL_4pfDmqRL95WXi5eLw8BMuvhH.ttf",weight:400,isVariable:!1},{displayName:"Bitcount Single",filename:"or36Q6T72-iP2RY6OLSkb95a817GhmARZeDtag",category:"display",url:"https://fonts.gstatic.com/s/bitcountsingle/v3/or36Q6T72-iP2RY6OLSkb95a817GhmARZeDtag.ttf",weight:400,isVariable:!0},{displayName:"Baloo Bhaina 2",filename:"qWczB6yyq4P9Adr3RtoX1q6yShz7mDUoupoI",category:"display",url:"https://fonts.gstatic.com/s/baloobhaina2/v29/qWczB6yyq4P9Adr3RtoX1q6yShz7mDUoupoI.ttf",weight:400,isVariable:!0},{displayName:"Rubik Doodle Shadow",filename:"rP2bp3im_k8G_wTVdvvMdHqmXTR3lEaLyKuZ3KOY7Gw",category:"display",url:"https://fonts.gstatic.com/s/rubikdoodleshadow/v1/rP2bp3im_k8G_wTVdvvMdHqmXTR3lEaLyKuZ3KOY7Gw.ttf",weight:400,isVariable:!1},{displayName:"Mooli",filename:"-F6_fjJpLyk1bYPBBG7YpzlJ",category:"sans-serif",url:"https://fonts.gstatic.com/s/mooli/v1/-F6_fjJpLyk1bYPBBG7YpzlJ.ttf",weight:400,isVariable:!1},{displayName:"Stalemate",filename:"taiIGmZ_EJq97-UfkZRpuqSs8ZQpaQ",category:"handwriting",url:"https://fonts.gstatic.com/s/stalemate/v24/taiIGmZ_EJq97-UfkZRpuqSs8ZQpaQ.ttf",weight:400,isVariable:!1},{displayName:"Sono",filename:"aFTb7PNiY3U2EKzdohWxGYU",category:"sans-serif",url:"https://fonts.gstatic.com/s/sono/v12/aFTb7PNiY3U2EKzdohWxGYU.ttf",weight:400,isVariable:!0},{displayName:"Atomic Age",filename:"f0Xz0eug6sdmRFkYZZGL58Ht9a8GYeA",category:"display",url:"https://fonts.gstatic.com/s/atomicage/v29/f0Xz0eug6sdmRFkYZZGL58Ht9a8GYeA.ttf",weight:400,isVariable:!1},{displayName:"Rationale",filename:"9XUnlJ92n0_JFxHIfHcsdlFMzLC2Zw",category:"sans-serif",url:"https://fonts.gstatic.com/s/rationale/v30/9XUnlJ92n0_JFxHIfHcsdlFMzLC2Zw.ttf",weight:400,isVariable:!1},{displayName:"Astloch",filename:"TuGRUVJ8QI5GSeUjq9wRzMtkH1Q",category:"display",url:"https://fonts.gstatic.com/s/astloch/v27/TuGRUVJ8QI5GSeUjq9wRzMtkH1Q.ttf",weight:400,isVariable:!1},{displayName:"Grenze",filename:"O4ZTFGb7hR12Bxq3_2gnmgwKlg",category:"serif",url:"https://fonts.gstatic.com/s/grenze/v16/O4ZTFGb7hR12Bxq3_2gnmgwKlg.ttf",weight:400,isVariable:!1},{displayName:"IM Fell French Canon SC",filename:"FBVmdCru5-ifcor2bgq9V89khWcmQghEURY7H3c0UBCVIVqH",category:"serif",url:"https://fonts.gstatic.com/s/imfellfrenchcanonsc/v23/FBVmdCru5-ifcor2bgq9V89khWcmQghEURY7H3c0UBCVIVqH.ttf",weight:400,isVariable:!1},{displayName:"Yomogi",filename:"VuJwdNrS2ZL7rpoPWIz5NIh-YA",category:"handwriting",url:"https://fonts.gstatic.com/s/yomogi/v13/VuJwdNrS2ZL7rpoPWIz5NIh-YA.ttf",weight:400,isVariable:!1},{displayName:"Delius Swash Caps",filename:"oY1E8fPLr7v4JWCExZpWebxVKORpXXedKmeBvEYs",category:"handwriting",url:"https://fonts.gstatic.com/s/deliusswashcaps/v25/oY1E8fPLr7v4JWCExZpWebxVKORpXXedKmeBvEYs.ttf",weight:400,isVariable:!1},{displayName:"Cherry Swash",filename:"i7dNIFByZjaNAMxtZcnfAy58QHi-EwWMbg",category:"display",url:"https://fonts.gstatic.com/s/cherryswash/v22/i7dNIFByZjaNAMxtZcnfAy58QHi-EwWMbg.ttf",weight:400,isVariable:!1},{displayName:"Lexend Mega",filename:"qFdA35aBi5JtHD41zSTFEv7K6BsAikI7",category:"sans-serif",url:"https://fonts.gstatic.com/s/lexendmega/v27/qFdA35aBi5JtHD41zSTFEv7K6BsAikI7.ttf",weight:400,isVariable:!0},{displayName:"Winky Sans",filename:"ll85K2SDUiG1Hpf2p06bB6oikgYbnRQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/winkysans/v3/ll85K2SDUiG1Hpf2p06bB6oikgYbnRQ.ttf",weight:400,isVariable:!0},{displayName:"Anek Tamil",filename:"XLYjIZH2bYJHGYtPGSbUHcloon8vVXg",category:"sans-serif",url:"https://fonts.gstatic.com/s/anektamil/v18/XLYjIZH2bYJHGYtPGSbUHcloon8vVXg.ttf",weight:400,isVariable:!0},{displayName:"Underdog",filename:"CHygV-jCElj7diMroVSiU14GN2Il",category:"display",url:"https://fonts.gstatic.com/s/underdog/v24/CHygV-jCElj7diMroVSiU14GN2Il.ttf",weight:400,isVariable:!1},{displayName:"Comforter Brush",filename:"Y4GTYa1xVSggrfzZI5WMjxRaOz0jwLL9Th8YYA",category:"handwriting",url:"https://fonts.gstatic.com/s/comforterbrush/v9/Y4GTYa1xVSggrfzZI5WMjxRaOz0jwLL9Th8YYA.ttf",weight:400,isVariable:!1},{displayName:"Nova Script",filename:"7Au7p_IpkSWSTWaFWkumvmQNEl0O0kEx",category:"display",url:"https://fonts.gstatic.com/s/novascript/v27/7Au7p_IpkSWSTWaFWkumvmQNEl0O0kEx.ttf",weight:400,isVariable:!1},{displayName:"Kenia",filename:"jizURE5PuHQH9qCONUGswfGM",category:"display",url:"https://fonts.gstatic.com/s/kenia/v30/jizURE5PuHQH9qCONUGswfGM.ttf",weight:400,isVariable:!1},{displayName:"Shalimar",filename:"uU9MCBoE6I6iNWFUvTPx8PCOg0uX",category:"handwriting",url:"https://fonts.gstatic.com/s/shalimar/v9/uU9MCBoE6I6iNWFUvTPx8PCOg0uX.ttf",weight:400,isVariable:!1},{displayName:"Stick",filename:"Qw3TZQpMCyTtJSvfvPVDMPoF",category:"sans-serif",url:"https://fonts.gstatic.com/s/stick/v20/Qw3TZQpMCyTtJSvfvPVDMPoF.ttf",weight:400,isVariable:!1},{displayName:"Playwrite GB J Guides",filename:"CSRh4yJOn-mMWCgLPl16K6UKAvM5yY1BdhmIKxooUh-_nQ",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritegbjguides/v2/CSRh4yJOn-mMWCgLPl16K6UKAvM5yY1BdhmIKxooUh-_nQ.ttf",weight:400,isVariable:!1},{displayName:"Ysabeau SC",filename:"Noa36Uro3JCIKAbW46nMuLl7OCZ4ihE",category:"sans-serif",url:"https://fonts.gstatic.com/s/ysabeausc/v4/Noa36Uro3JCIKAbW46nMuLl7OCZ4ihE.ttf",weight:400,isVariable:!0},{displayName:"BhuTuka Expanded One",filename:"SLXXc0jZ4WUJcClHTtv0t7IaDRsBsWRiJCyX8pg_RVH1",category:"serif",url:"https://fonts.gstatic.com/s/bhutukaexpandedone/v9/SLXXc0jZ4WUJcClHTtv0t7IaDRsBsWRiJCyX8pg_RVH1.ttf",weight:400,isVariable:!1},{displayName:"Doto",filename:"t5tvIRMbNJ6TWmXqV2W2tKc",category:"sans-serif",url:"https://fonts.gstatic.com/s/doto/v3/t5tvIRMbNJ6TWmXqV2W2tKc.ttf",weight:400,isVariable:!0},{displayName:"Varta",filename:"Qw3TZQpJHj_6LyvfvPVDMPoF",category:"sans-serif",url:"https://fonts.gstatic.com/s/varta/v25/Qw3TZQpJHj_6LyvfvPVDMPoF.ttf",weight:400,isVariable:!0},{displayName:"Belgrano",filename:"55xvey5tM9rwKWrJZcMFirl08KDJ",category:"serif",url:"https://fonts.gstatic.com/s/belgrano/v19/55xvey5tM9rwKWrJZcMFirl08KDJ.ttf",weight:400,isVariable:!1},{displayName:"Sonsie One",filename:"PbymFmP_EAnPqbKaoc18YVu80lbp8JM",category:"display",url:"https://fonts.gstatic.com/s/sonsieone/v22/PbymFmP_EAnPqbKaoc18YVu80lbp8JM.ttf",weight:400,isVariable:!1},{displayName:"Jolly Lodger",filename:"BXRsvFTAh_bGkA1uQ48dlB3VWerT3ZyuqA",category:"display",url:"https://fonts.gstatic.com/s/jollylodger/v21/BXRsvFTAh_bGkA1uQ48dlB3VWerT3ZyuqA.ttf",weight:400,isVariable:!1},{displayName:"Akronim",filename:"fdN-9sqWtWZZlHRp-gBxkFYN-a8",category:"display",url:"https://fonts.gstatic.com/s/akronim/v23/fdN-9sqWtWZZlHRp-gBxkFYN-a8.ttf",weight:400,isVariable:!1},{displayName:"Fasthand",filename:"0yb9GDohyKTYn_ZEESkuYkw2rQg1",category:"display",url:"https://fonts.gstatic.com/s/fasthand/v33/0yb9GDohyKTYn_ZEESkuYkw2rQg1.ttf",weight:400,isVariable:!1},{displayName:"Atkinson Hyperlegible Mono",filename:"tss4AoFBci4C4gvhPXrt3wjT1MqSzhA4t7IIcncBizKqjl2hHT0i",category:"sans-serif",url:"https://fonts.gstatic.com/s/atkinsonhyperlegiblemono/v8/tss4AoFBci4C4gvhPXrt3wjT1MqSzhA4t7IIcncBizKqjl2hHT0i.ttf",weight:400,isVariable:!0},{displayName:"Strait",filename:"DtViJxy6WaEr1LZzeDhtkl0U7w",category:"sans-serif",url:"https://fonts.gstatic.com/s/strait/v19/DtViJxy6WaEr1LZzeDhtkl0U7w.ttf",weight:400,isVariable:!1},{displayName:"Mystery Quest",filename:"-nF6OG414u0E6k0wynSGlujRHwElD_9Qz9E",category:"display",url:"https://fonts.gstatic.com/s/mysteryquest/v21/-nF6OG414u0E6k0wynSGlujRHwElD_9Qz9E.ttf",weight:400,isVariable:!1},{displayName:"Gafata",filename:"XRXV3I6Cn0VJKon4MuyAbsrVcA",category:"sans-serif",url:"https://fonts.gstatic.com/s/gafata/v22/XRXV3I6Cn0VJKon4MuyAbsrVcA.ttf",weight:400,isVariable:!1},{displayName:"Alkatra",filename:"r05bGLZA5qhCYsyJdOuD5jokU8E",category:"display",url:"https://fonts.gstatic.com/s/alkatra/v5/r05bGLZA5qhCYsyJdOuD5jokU8E.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Ethiopic",filename:"7cH1v50vjIepfJVOZZgcpQ5B9FBTH9KcPtq-rpvLpQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansethiopic/v50/7cH1v50vjIepfJVOZZgcpQ5B9FBTH9KcPtq-rpvLpQ.ttf",weight:400,isVariable:!0},{displayName:"Miltonian",filename:"zOL-4pbPn6Ne9JqTg9mr6e5As-FeiQ",category:"display",url:"https://fonts.gstatic.com/s/miltonian/v32/zOL-4pbPn6Ne9JqTg9mr6e5As-FeiQ.ttf",weight:400,isVariable:!1},{displayName:"Playwrite IN Guides",filename:"GFD2WBRug3mQSvrAT9AL4vx4d3lQNQV4Tt1qdGqgdlM",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteinguides/v1/GFD2WBRug3mQSvrAT9AL4vx4d3lQNQV4Tt1qdGqgdlM.ttf",weight:400,isVariable:!1},{displayName:"Nova Cut",filename:"KFOkCnSYu8mL-39LkWxPKTM1K9nz",category:"display",url:"https://fonts.gstatic.com/s/novacut/v26/KFOkCnSYu8mL-39LkWxPKTM1K9nz.ttf",weight:400,isVariable:!1},{displayName:"Sansation",filename:"LYjAdGPjnEg8DNA0z01grXArXN7HWQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/sansation/v1/LYjAdGPjnEg8DNA0z01grXArXN7HWQ.ttf",weight:400,isVariable:!1},{displayName:"Flamenco",filename:"neIIzCehqYguo67ssaWGHK06UY30",category:"display",url:"https://fonts.gstatic.com/s/flamenco/v19/neIIzCehqYguo67ssaWGHK06UY30.ttf",weight:400,isVariable:!1},{displayName:"Srisakdi",filename:"yMJRMIlvdpDbkB0A-jq8fSx5i814",category:"display",url:"https://fonts.gstatic.com/s/srisakdi/v18/yMJRMIlvdpDbkB0A-jq8fSx5i814.ttf",weight:400,isVariable:!1},{displayName:"Barrio",filename:"wEO8EBXBk8hBIDiEdQYhWdsX1Q",category:"display",url:"https://fonts.gstatic.com/s/barrio/v20/wEO8EBXBk8hBIDiEdQYhWdsX1Q.ttf",weight:400,isVariable:!1},{displayName:"Redacted",filename:"Z9XVDmdRShme2O_7aITe4u2El6GC",category:"display",url:"https://fonts.gstatic.com/s/redacted/v11/Z9XVDmdRShme2O_7aITe4u2El6GC.ttf",weight:400,isVariable:!1},{displayName:"Nova Oval",filename:"jAnEgHdmANHvPenMaswCMY-h3cWkWg",category:"display",url:"https://fonts.gstatic.com/s/novaoval/v26/jAnEgHdmANHvPenMaswCMY-h3cWkWg.ttf",weight:400,isVariable:!1},{displayName:"Vend Sans",filename:"E21l_d7ijufNwCJPEUssUwVUAuu3cw",category:"sans-serif",url:"https://fonts.gstatic.com/s/vendsans/v1/E21l_d7ijufNwCJPEUssUwVUAuu3cw.ttf",weight:400,isVariable:!0},{displayName:"Comme",filename:"8QIHdirKhMbn-vu-sowsrqjk",category:"sans-serif",url:"https://fonts.gstatic.com/s/comme/v4/8QIHdirKhMbn-vu-sowsrqjk.ttf",weight:400,isVariable:!0},{displayName:"Imperial Script",filename:"5DCPAKrpzy_H98IV2ISnZBbGrVNvPenlvttWNg",category:"handwriting",url:"https://fonts.gstatic.com/s/imperialscript/v8/5DCPAKrpzy_H98IV2ISnZBbGrVNvPenlvttWNg.ttf",weight:400,isVariable:!1},{displayName:"Island Moments",filename:"NaPBcZfVGvBdxIt7Ar0qzkXJF-TGIohbZ6SY",category:"handwriting",url:"https://fonts.gstatic.com/s/islandmoments/v8/NaPBcZfVGvBdxIt7Ar0qzkXJF-TGIohbZ6SY.ttf",weight:400,isVariable:!1},{displayName:"Englebert",filename:"xn7iYH8w2XGrC8AR4HSxT_fYdN-WZw",category:"sans-serif",url:"https://fonts.gstatic.com/s/englebert/v24/xn7iYH8w2XGrC8AR4HSxT_fYdN-WZw.ttf",weight:400,isVariable:!1},{displayName:"Sedgwick Ave Display",filename:"xfuu0XPgU3jZPUoUo3ScvmPi-NapQ8OxM2czd-YnOzUD",category:"handwriting",url:"https://fonts.gstatic.com/s/sedgwickavedisplay/v23/xfuu0XPgU3jZPUoUo3ScvmPi-NapQ8OxM2czd-YnOzUD.ttf",weight:400,isVariable:!1},{displayName:"Unlock",filename:"7Au-p_8ykD-cDl7GKAjSwkUVOQ",category:"display",url:"https://fonts.gstatic.com/s/unlock/v28/7Au-p_8ykD-cDl7GKAjSwkUVOQ.ttf",weight:400,isVariable:!1},{displayName:"IBM Plex Sans Thai Looped",filename:"tss_AoJJRAhL3BTrK3r2xxbFhvKfyBB6l7hHT30LxBKAoFGoBCQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/ibmplexsansthailooped/v12/tss_AoJJRAhL3BTrK3r2xxbFhvKfyBB6l7hHT30LxBKAoFGoBCQ.ttf",weight:400,isVariable:!1},{displayName:"Lovers Quarrel",filename:"Yq6N-LSKXTL-5bCy8ksBzpQ_-zAsY7pO6siz",category:"handwriting",url:"https://fonts.gstatic.com/s/loversquarrel/v25/Yq6N-LSKXTL-5bCy8ksBzpQ_-zAsY7pO6siz.ttf",weight:400,isVariable:!1},{displayName:"Devonshire",filename:"46kqlbDwWirWr4gtBD2BX0Vq01lYAZM",category:"handwriting",url:"https://fonts.gstatic.com/s/devonshire/v29/46kqlbDwWirWr4gtBD2BX0Vq01lYAZM.ttf",weight:400,isVariable:!1},{displayName:"Keania One",filename:"zOL54pXJk65E8pXardnuycRuv-hHkOs",category:"display",url:"https://fonts.gstatic.com/s/keaniaone/v26/zOL54pXJk65E8pXardnuycRuv-hHkOs.ttf",weight:400,isVariable:!1},{displayName:"Chau Philomene One",filename:"55xxezRsPtfie1vPY49qzdgSlJiHRQFsnIx7QMISdQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/chauphilomeneone/v16/55xxezRsPtfie1vPY49qzdgSlJiHRQFsnIx7QMISdQ.ttf",weight:400,isVariable:!1},{displayName:"Noto Music",filename:"pe0rMIiSN5pO63htf1sxIteQB9Zra1U",category:"sans-serif",url:"https://fonts.gstatic.com/s/notomusic/v21/pe0rMIiSN5pO63htf1sxIteQB9Zra1U.ttf",weight:400,isVariable:!1},{displayName:"Yeon Sung",filename:"QldMNTpbohAGtsJvUn6xSVNazqx2xg",category:"display",url:"https://fonts.gstatic.com/s/yeonsung/v22/QldMNTpbohAGtsJvUn6xSVNazqx2xg.ttf",weight:400,isVariable:!1},{displayName:"Kode Mono",filename:"A2BYn5pb0QgtVEPFnlY-mojxW5KJuQ",category:"monospace",url:"https://fonts.gstatic.com/s/kodemono/v4/A2BYn5pb0QgtVEPFnlY-mojxW5KJuQ.ttf",weight:400,isVariable:!0},{displayName:"Headland One",filename:"yYLu0hHR2vKnp89Tk1TCq3Tx0PlTeZ3mJA",category:"serif",url:"https://fonts.gstatic.com/s/headlandone/v17/yYLu0hHR2vKnp89Tk1TCq3Tx0PlTeZ3mJA.ttf",weight:400,isVariable:!1},{displayName:"Akaya Telivigala",filename:"lJwc-oo_iG9wXqU3rCTD395tp0uifdLdsIH0YH8",category:"display",url:"https://fonts.gstatic.com/s/akayatelivigala/v28/lJwc-oo_iG9wXqU3rCTD395tp0uifdLdsIH0YH8.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Warang Citi",filename:"EYqtmb9SzL1YtsZSScyKDXIeOv3w-zgsNvKRpeVCCXzdgA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanswarangciti/v19/EYqtmb9SzL1YtsZSScyKDXIeOv3w-zgsNvKRpeVCCXzdgA.ttf",weight:400,isVariable:!1},{displayName:"Darumadrop One",filename:"cY9cfjeIW11dpCKgRLi675a87IhHBJOxZQPp",category:"display",url:"https://fonts.gstatic.com/s/darumadropone/v14/cY9cfjeIW11dpCKgRLi675a87IhHBJOxZQPp.ttf",weight:400,isVariable:!1},{displayName:"Badeen Display",filename:"pxidypY2sdZSjFU4cPmNBzckadeLYk1Mq3ap",category:"display",url:"https://fonts.gstatic.com/s/badeendisplay/v1/pxidypY2sdZSjFU4cPmNBzckadeLYk1Mq3ap.ttf",weight:400,isVariable:!1},{displayName:"Jomolhari",filename:"EvONzA1M1Iw_CBd2hsQCF1IZKq5INg",category:"serif",url:"https://fonts.gstatic.com/s/jomolhari/v21/EvONzA1M1Iw_CBd2hsQCF1IZKq5INg.ttf",weight:400,isVariable:!1},{displayName:"Long Cang",filename:"LYjAdGP8kkgoTec8zkRgrXArXN7HWQ",category:"handwriting",url:"https://fonts.gstatic.com/s/longcang/v21/LYjAdGP8kkgoTec8zkRgrXArXN7HWQ.ttf",weight:400,isVariable:!1},{displayName:"Ballet",filename:"QGYvz_MYZA-HM4N5s0Frc4H0ng",category:"handwriting",url:"https://fonts.gstatic.com/s/ballet/v30/QGYvz_MYZA-HM4N5s0Frc4H0ng.ttf",weight:400,isVariable:!1},{displayName:"Margarine",filename:"qkBXXvoE6trLT9Y7YLye5JRLkAXbMQ",category:"display",url:"https://fonts.gstatic.com/s/margarine/v27/qkBXXvoE6trLT9Y7YLye5JRLkAXbMQ.ttf",weight:400,isVariable:!1},{displayName:"Orbit",filename:"_LOCmz7I-uHd2mjEeqciRwRm",category:"sans-serif",url:"https://fonts.gstatic.com/s/orbit/v1/_LOCmz7I-uHd2mjEeqciRwRm.ttf",weight:400,isVariable:!1},{displayName:"Joan",filename:"ZXupe1oZsqWRbRdH8X1p_Ng",category:"serif",url:"https://fonts.gstatic.com/s/joan/v12/ZXupe1oZsqWRbRdH8X1p_Ng.ttf",weight:400,isVariable:!1},{displayName:"Mate SC",filename:"-nF8OGQ1-uoVr2wKyiXZ95OkJwA",category:"serif",url:"https://fonts.gstatic.com/s/matesc/v23/-nF8OGQ1-uoVr2wKyiXZ95OkJwA.ttf",weight:400,isVariable:!1},{displayName:"Nerko One",filename:"m8JQjfZSc7OXlB3ZMOjzcJ5BZmqa3A",category:"handwriting",url:"https://fonts.gstatic.com/s/nerkoone/v17/m8JQjfZSc7OXlB3ZMOjzcJ5BZmqa3A.ttf",weight:400,isVariable:!1},{displayName:"Sree Krushnadevaraya",filename:"R70FjzQeifmPepmyQQjQ9kvwMkWYPfTA_EWb2FhQuXir",category:"serif",url:"https://fonts.gstatic.com/s/sreekrushnadevaraya/v23/R70FjzQeifmPepmyQQjQ9kvwMkWYPfTA_EWb2FhQuXir.ttf",weight:400,isVariable:!1},{displayName:"Kulim Park",filename:"fdN79secq3hflz1Uu3IwtF4m5aZxebw",category:"sans-serif",url:"https://fonts.gstatic.com/s/kulimpark/v15/fdN79secq3hflz1Uu3IwtF4m5aZxebw.ttf",weight:400,isVariable:!1},{displayName:"Karantina",filename:"buE0po24ccnh31GVMABJ8AA78NVSYw",category:"display",url:"https://fonts.gstatic.com/s/karantina/v13/buE0po24ccnh31GVMABJ8AA78NVSYw.ttf",weight:400,isVariable:!1},{displayName:"Fascinate Inline",filename:"jVyR7mzzB3zc-jp6QCAu60poNqIy1g3CfRXxWZQ",category:"display",url:"https://fonts.gstatic.com/s/fascinateinline/v24/jVyR7mzzB3zc-jp6QCAu60poNqIy1g3CfRXxWZQ.ttf",weight:400,isVariable:!1},{displayName:"Single Day",filename:"LYjHdGDjlEgoAcF95EI5jVoFUNfeQJU",category:"display",url:"https://fonts.gstatic.com/s/singleday/v19/LYjHdGDjlEgoAcF95EI5jVoFUNfeQJU.ttf",weight:400,isVariable:!1},{displayName:"Beau Rivage",filename:"UcCi3FIgIG2bH4mMNWJUlmg3NZp8K2sL",category:"handwriting",url:"https://fonts.gstatic.com/s/beaurivage/v2/UcCi3FIgIG2bH4mMNWJUlmg3NZp8K2sL.ttf",weight:400,isVariable:!1},{displayName:"Ranchers",filename:"zrfm0H3Lx-P2Xvs2AoDYDC79XTHv",category:"display",url:"https://fonts.gstatic.com/s/ranchers/v19/zrfm0H3Lx-P2Xvs2AoDYDC79XTHv.ttf",weight:400,isVariable:!1},{displayName:"Trispace",filename:"Yq6X-LKSQC3o56Lxxh5gluJSlggt",category:"sans-serif",url:"https://fonts.gstatic.com/s/trispace/v27/Yq6X-LKSQC3o56Lxxh5gluJSlggt.ttf",weight:400,isVariable:!0},{displayName:"Engagement",filename:"x3dlckLDZbqa7RUs9MFVXNossybsHQI",category:"handwriting",url:"https://fonts.gstatic.com/s/engagement/v29/x3dlckLDZbqa7RUs9MFVXNossybsHQI.ttf",weight:400,isVariable:!1},{displayName:"Katibeh",filename:"ZGjXol5MQJog4bxDaC1RVDNdGDs",category:"display",url:"https://fonts.gstatic.com/s/katibeh/v22/ZGjXol5MQJog4bxDaC1RVDNdGDs.ttf",weight:400,isVariable:!1},{displayName:"Boldonse",filename:"ZgNQjPxGPbbJUZemjC38hmHmNpCO",category:"display",url:"https://fonts.gstatic.com/s/boldonse/v1/ZgNQjPxGPbbJUZemjC38hmHmNpCO.ttf",weight:400,isVariable:!1},{displayName:"Bonheur Royale",filename:"c4m51nt_GMTrtX-b9GcG4-YRmYK_c0f1N5Ij",category:"handwriting",url:"https://fonts.gstatic.com/s/bonheurroyale/v15/c4m51nt_GMTrtX-b9GcG4-YRmYK_c0f1N5Ij.ttf",weight:400,isVariable:!1},{displayName:"Kapakana",filename:"sykw-yN0m6InS7OD9AqX1NbNp02R",category:"handwriting",url:"https://fonts.gstatic.com/s/kapakana/v19/sykw-yN0m6InS7OD9AqX1NbNp02R.ttf",weight:400,isVariable:!0},{displayName:"Playwrite US Trad",filename:"fdNk9tyHsnVPjW9trmV7wQ0stdwRBZ0uKDBFUEXz",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteustrad/v11/fdNk9tyHsnVPjW9trmV7wQ0stdwRBZ0uKDBFUEXz.ttf",weight:400,isVariable:!0},{displayName:"Poltawski Nowy",filename:"flUhRq6ww480U1xsUpFXD-iDBMNZIhI8tIHh",category:"serif",url:"https://fonts.gstatic.com/s/poltawskinowy/v5/flUhRq6ww480U1xsUpFXD-iDBMNZIhI8tIHh.ttf",weight:400,isVariable:!0},{displayName:"Gupter",filename:"2-cm9JNmxJqPO1QUYZa_Wu_lpA",category:"serif",url:"https://fonts.gstatic.com/s/gupter/v18/2-cm9JNmxJqPO1QUYZa_Wu_lpA.ttf",weight:400,isVariable:!1},{displayName:"Dekko",filename:"46khlb_wWjfSrttFR0vsfl1B",category:"handwriting",url:"https://fonts.gstatic.com/s/dekko/v23/46khlb_wWjfSrttFR0vsfl1B.ttf",weight:400,isVariable:!1},{displayName:"Stint Ultra Expanded",filename:"CSRg4yNNh-GbW3o3JkwoDcdvMKMf0oBAd0qoATQkWwam",category:"serif",url:"https://fonts.gstatic.com/s/stintultraexpanded/v24/CSRg4yNNh-GbW3o3JkwoDcdvMKMf0oBAd0qoATQkWwam.ttf",weight:400,isVariable:!1},{displayName:"Tiro Devanagari Sanskrit",filename:"MCoAzBbr09vVUgVBM8FWu_yZdZkhkg-I0nUlb59pEoEqgtOh0w",category:"serif",url:"https://fonts.gstatic.com/s/tirodevanagarisanskrit/v5/MCoAzBbr09vVUgVBM8FWu_yZdZkhkg-I0nUlb59pEoEqgtOh0w.ttf",weight:400,isVariable:!1},{displayName:"Anek Gujarati",filename:"l7gZbj5oysqknvkCo2T_8FuiOxtiArlM4k8",category:"sans-serif",url:"https://fonts.gstatic.com/s/anekgujarati/v17/l7gZbj5oysqknvkCo2T_8FuiOxtiArlM4k8.ttf",weight:400,isVariable:!0},{displayName:"Rum Raisin",filename:"nwpRtKu3Ih8D5avB4h2uJ3-IywA7eMM",category:"sans-serif",url:"https://fonts.gstatic.com/s/rumraisin/v24/nwpRtKu3Ih8D5avB4h2uJ3-IywA7eMM.ttf",weight:400,isVariable:!1},{displayName:"Chocolate Classical Sans",filename:"nuFqD-PLTZX4XIgT-P2ToCDudWHHflqUpTpfjWdDPI2J9mHITw",category:"sans-serif",url:"https://fonts.gstatic.com/s/chocolateclassicalsans/v15/nuFqD-PLTZX4XIgT-P2ToCDudWHHflqUpTpfjWdDPI2J9mHITw.ttf",weight:400,isVariable:!1},{displayName:"Ruthie",filename:"gokvH63sGkdqXuU9lD53Q2u_mQ",category:"handwriting",url:"https://fonts.gstatic.com/s/ruthie/v28/gokvH63sGkdqXuU9lD53Q2u_mQ.ttf",weight:400,isVariable:!1},{displayName:"Protest Riot",filename:"d6lPkaOxWMKm7TdezXFmpkrM1_JgjmRpOA",category:"display",url:"https://fonts.gstatic.com/s/protestriot/v2/d6lPkaOxWMKm7TdezXFmpkrM1_JgjmRpOA.ttf",weight:400,isVariable:!1},{displayName:"Liu Jian Mao Cao",filename:"845DNN84HJrccNonurqXILGpvCOoferVKGWsUo8",category:"handwriting",url:"https://fonts.gstatic.com/s/liujianmaocao/v24/845DNN84HJrccNonurqXILGpvCOoferVKGWsUo8.ttf",weight:400,isVariable:!1},{displayName:"Erica One",filename:"WBLnrEXccV9VGrOKmGD1W0_MJMGxiQ",category:"display",url:"https://fonts.gstatic.com/s/ericaone/v29/WBLnrEXccV9VGrOKmGD1W0_MJMGxiQ.ttf",weight:400,isVariable:!1},{displayName:"Water Brush",filename:"AYCPpXPqc8cJWLhp4hywKHJq7PKP5Z_G",category:"handwriting",url:"https://fonts.gstatic.com/s/waterbrush/v6/AYCPpXPqc8cJWLhp4hywKHJq7PKP5Z_G.ttf",weight:400,isVariable:!1},{displayName:"Zalando Sans SemiExpanded",filename:"6qLSKYcHuh3msE9OaXROVVclRRa-ClZSEipa2hrE1xaBdpd7fjg",category:"sans-serif",url:"https://fonts.gstatic.com/s/zalandosanssemiexpanded/v2/6qLSKYcHuh3msE9OaXROVVclRRa-ClZSEipa2hrE1xaBdpd7fjg.ttf",weight:400,isVariable:!0},{displayName:"Spirax",filename:"buE3poKgYNLy0F3cXktt-Csn-Q",category:"display",url:"https://fonts.gstatic.com/s/spirax/v22/buE3poKgYNLy0F3cXktt-Csn-Q.ttf",weight:400,isVariable:!1},{displayName:"Sura",filename:"SZc23FL5PbyzFf5UWzXtjUM",category:"serif",url:"https://fonts.gstatic.com/s/sura/v21/SZc23FL5PbyzFf5UWzXtjUM.ttf",weight:400,isVariable:!1},{displayName:"IBM Plex Sans Devanagari",filename:"XRXH3JCMvG4IDoS9SubXB6W-UX5iehIMBFR2-O__VUL0c83gCA",category:"sans-serif",url:"https://fonts.gstatic.com/s/ibmplexsansdevanagari/v12/XRXH3JCMvG4IDoS9SubXB6W-UX5iehIMBFR2-O__VUL0c83gCA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Gurmukhi",filename:"w8gHH3EvQP81sInb43inmyN9zZ7hb7AJZgdEAj--IQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansgurmukhi/v29/w8gHH3EvQP81sInb43inmyN9zZ7hb7AJZgdEAj--IQ.ttf",weight:400,isVariable:!0},{displayName:"Texturina",filename:"c4mi1nxpEtL3pXiAulRJmq159KOnWA",category:"serif",url:"https://fonts.gstatic.com/s/texturina/v32/c4mi1nxpEtL3pXiAulRJmq159KOnWA.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Samaritan",filename:"buEqppe9f8_vkXadMBJJo0tSmaYjFkxOUo5jNlOVMzQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssamaritan/v17/buEqppe9f8_vkXadMBJJo0tSmaYjFkxOUo5jNlOVMzQ.ttf",weight:400,isVariable:!1},{displayName:"Hedvig Letters Sans",filename:"CHy_V_PfGVjobSBkihHWDT98RVp37w8jQJ1N3Twgi1w",category:"sans-serif",url:"https://fonts.gstatic.com/s/hedvigletterssans/v2/CHy_V_PfGVjobSBkihHWDT98RVp37w8jQJ1N3Twgi1w.ttf",weight:400,isVariable:!1},{displayName:"Kavoon",filename:"pxiFyp4_scRYhlU4NLr6f1pdEQ",category:"display",url:"https://fonts.gstatic.com/s/kavoon/v25/pxiFyp4_scRYhlU4NLr6f1pdEQ.ttf",weight:400,isVariable:!1},{displayName:"Cactus Classical Serif",filename:"sZlVdQ6K-zJOCzUaS90zMNN-Ep-OoC8dZr0JFuBIFX-pv-E",category:"serif",url:"https://fonts.gstatic.com/s/cactusclassicalserif/v14/sZlVdQ6K-zJOCzUaS90zMNN-Ep-OoC8dZr0JFuBIFX-pv-E.ttf",weight:400,isVariable:!1},{displayName:"Port Lligat Slab",filename:"LDIpaoiQNgArA8kR7ulhZ8P_NYOss7ob9yGLmfI",category:"serif",url:"https://fonts.gstatic.com/s/portlligatslab/v27/LDIpaoiQNgArA8kR7ulhZ8P_NYOss7ob9yGLmfI.ttf",weight:400,isVariable:!1},{displayName:"BIZ UDMincho",filename:"EJRRQgI6eOxFjBdKs38yhtW1dwT7rcpY8Q",category:"serif",url:"https://fonts.gstatic.com/s/bizudmincho/v11/EJRRQgI6eOxFjBdKs38yhtW1dwT7rcpY8Q.ttf",weight:400,isVariable:!1},{displayName:"Dangrek",filename:"LYjCdG30nEgoH8E2gCNqqVIuTN4",category:"display",url:"https://fonts.gstatic.com/s/dangrek/v33/LYjCdG30nEgoH8E2gCNqqVIuTN4.ttf",weight:400,isVariable:!1},{displayName:"Cute Font",filename:"Noaw6Uny2oWPbSHMrY6vmJNVNC9hkw",category:"display",url:"https://fonts.gstatic.com/s/cutefont/v28/Noaw6Uny2oWPbSHMrY6vmJNVNC9hkw.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Osmanya",filename:"8vIS7xs32H97qzQKnzfeWzUyUpOJmz6kR47NCV5Z",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansosmanya/v20/8vIS7xs32H97qzQKnzfeWzUyUpOJmz6kR47NCV5Z.ttf",weight:400,isVariable:!1},{displayName:"Passions Conflict",filename:"kmKnZrcrFhfafnWX9x0GuEC-zowow5NeYRI4CN2V",category:"handwriting",url:"https://fonts.gstatic.com/s/passionsconflict/v9/kmKnZrcrFhfafnWX9x0GuEC-zowow5NeYRI4CN2V.ttf",weight:400,isVariable:!1},{displayName:"Bagel Fat One",filename:"hYkPPucsQOr5dy02WmQr5Zkd0B5mvv0dSbM",category:"display",url:"https://fonts.gstatic.com/s/bagelfatone/v2/hYkPPucsQOr5dy02WmQr5Zkd0B5mvv0dSbM.ttf",weight:400,isVariable:!1},{displayName:"Braah One",filename:"KFOlCnWUpt6LsxxxiylvAx05IsDqlA",category:"sans-serif",url:"https://fonts.gstatic.com/s/braahone/v8/KFOlCnWUpt6LsxxxiylvAx05IsDqlA.ttf",weight:400,isVariable:!1},{displayName:"Stint Ultra Condensed",filename:"-W_gXIrsVjjeyEnPC45qD2NoFPtBE0xCh2A-qhUO2cNvdg",category:"serif",url:"https://fonts.gstatic.com/s/stintultracondensed/v25/-W_gXIrsVjjeyEnPC45qD2NoFPtBE0xCh2A-qhUO2cNvdg.ttf",weight:400,isVariable:!1},{displayName:"Content",filename:"zrfl0HLayePhU_AwUaDyIiL0RCg",category:"display",url:"https://fonts.gstatic.com/s/content/v27/zrfl0HLayePhU_AwUaDyIiL0RCg.ttf",weight:400,isVariable:!1},{displayName:"Handjet",filename:"oY1e8eXHq7n1OnbQtu0dDtx0c4Q",category:"display",url:"https://fonts.gstatic.com/s/handjet/v22/oY1e8eXHq7n1OnbQtu0dDtx0c4Q.ttf",weight:400,isVariable:!0},{displayName:"Almendra Display",filename:"0FlPVOGWl1Sb4O3tETtADHRRlZhzXS_eTyer338",category:"display",url:"https://fonts.gstatic.com/s/almendradisplay/v33/0FlPVOGWl1Sb4O3tETtADHRRlZhzXS_eTyer338.ttf",weight:400,isVariable:!1},{displayName:"Bodoni Moda SC",filename:"LYjbdGTykkIgA8197UwkzHp8F__fcpC69i6N",category:"serif",url:"https://fonts.gstatic.com/s/bodonimodasc/v3/LYjbdGTykkIgA8197UwkzHp8F__fcpC69i6N.ttf",weight:400,isVariable:!0},{displayName:"Baskervville SC",filename:"X7n94bc_DeKlh6bBbk_WiKnBSUvR71R3tiSx0g",category:"serif",url:"https://fonts.gstatic.com/s/baskervvillesc/v4/X7n94bc_DeKlh6bBbk_WiKnBSUvR71R3tiSx0g.ttf",weight:400,isVariable:!0},{displayName:"Text Me One",filename:"i7dOIFdlayuLUvgoFvHQFWZcalayGhyV",category:"sans-serif",url:"https://fonts.gstatic.com/s/textmeone/v26/i7dOIFdlayuLUvgoFvHQFWZcalayGhyV.ttf",weight:400,isVariable:!1},{displayName:"Zen Tokyo Zoo",filename:"NGSyv5ffC0J_BK6aFNtr6sRv8a1uRWe9amg",category:"display",url:"https://fonts.gstatic.com/s/zentokyozoo/v8/NGSyv5ffC0J_BK6aFNtr6sRv8a1uRWe9amg.ttf",weight:400,isVariable:!1},{displayName:"Suwannaphum",filename:"jAnCgHV7GtDvc8jbe8hXXIWl_8C0Wg2V",category:"serif",url:"https://fonts.gstatic.com/s/suwannaphum/v33/jAnCgHV7GtDvc8jbe8hXXIWl_8C0Wg2V.ttf",weight:400,isVariable:!1},{displayName:"Mynerve",filename:"P5sCzZKPdNjb4jt7xCRuiZ-uydg",category:"handwriting",url:"https://fonts.gstatic.com/s/mynerve/v8/P5sCzZKPdNjb4jt7xCRuiZ-uydg.ttf",weight:400,isVariable:!1},{displayName:"Risque",filename:"VdGfAZUfHosahXxoCUYVBJ-T5g",category:"display",url:"https://fonts.gstatic.com/s/risque/v24/VdGfAZUfHosahXxoCUYVBJ-T5g.ttf",weight:400,isVariable:!1},{displayName:"Carrois Gothic SC",filename:"ZgNJjOVHM6jfUZCmyUqT2A2HVKjc-28nNHabY4dN",category:"sans-serif",url:"https://fonts.gstatic.com/s/carroisgothicsc/v16/ZgNJjOVHM6jfUZCmyUqT2A2HVKjc-28nNHabY4dN.ttf",weight:400,isVariable:!1},{displayName:"Kaisei HarunoUmi",filename:"HI_RiZQSLqBQoAHhK_C6N_nzy_jcGsv5sM8u3mk",category:"serif",url:"https://fonts.gstatic.com/s/kaiseiharunoumi/v11/HI_RiZQSLqBQoAHhK_C6N_nzy_jcGsv5sM8u3mk.ttf",weight:400,isVariable:!1},{displayName:"Libre Barcode 39 Extended",filename:"8At7Gt6_O5yNS0-K4Nf5U922qSzhJ3dUdfJpwNUgfNRCOZ1GOBw",category:"display",url:"https://fonts.gstatic.com/s/librebarcode39extended/v30/8At7Gt6_O5yNS0-K4Nf5U922qSzhJ3dUdfJpwNUgfNRCOZ1GOBw.ttf",weight:400,isVariable:!1},{displayName:"Jersey 15",filename:"_6_9EDzuROGsUuk2TWjSYoohsCkvSQ",category:"display",url:"https://fonts.gstatic.com/s/jersey15/v4/_6_9EDzuROGsUuk2TWjSYoohsCkvSQ.ttf",weight:400,isVariable:!1},{displayName:"Farsan",filename:"VEMwRoJ0vY_zsyz62q-pxDX9rQ",category:"display",url:"https://fonts.gstatic.com/s/farsan/v24/VEMwRoJ0vY_zsyz62q-pxDX9rQ.ttf",weight:400,isVariable:!1},{displayName:"Ysabeau Infant",filename:"hv-PlzpqOkkV94kBTQVdX1EWI8p_dREcBXxP",category:"sans-serif",url:"https://fonts.gstatic.com/s/ysabeauinfant/v4/hv-PlzpqOkkV94kBTQVdX1EWI8p_dREcBXxP.ttf",weight:400,isVariable:!0},{displayName:"Gorditas",filename:"ll8_K2aTVD26DsPEtQDoDa4AlxYb",category:"display",url:"https://fonts.gstatic.com/s/gorditas/v24/ll8_K2aTVD26DsPEtQDoDa4AlxYb.ttf",weight:400,isVariable:!1},{displayName:"Stoke",filename:"z7NadRb7aTMfKONpfihK1YTV",category:"serif",url:"https://fonts.gstatic.com/s/stoke/v26/z7NadRb7aTMfKONpfihK1YTV.ttf",weight:400,isVariable:!1},{displayName:"Finlandica",filename:"-nF5OGk-8vAc7lEtg0aS05uPOwkOE_Y",category:"sans-serif",url:"https://fonts.gstatic.com/s/finlandica/v10/-nF5OGk-8vAc7lEtg0aS05uPOwkOE_Y.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Oriya",filename:"AYCTpXfzfccDCstK_hrjDyADv5en5K3DZq1hIg",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansoriya/v33/AYCTpXfzfccDCstK_hrjDyADv5en5K3DZq1hIg.ttf",weight:400,isVariable:!0},{displayName:"Cagliostro",filename:"ZgNWjP5HM73BV5amnX-TjGXEM4COoE4",category:"sans-serif",url:"https://fonts.gstatic.com/s/cagliostro/v22/ZgNWjP5HM73BV5amnX-TjGXEM4COoE4.ttf",weight:400,isVariable:!1},{displayName:"Gideon Roman",filename:"e3tmeuGrVOys8sxzZgWlmXoge0PWovdU4w",category:"display",url:"https://fonts.gstatic.com/s/gideonroman/v13/e3tmeuGrVOys8sxzZgWlmXoge0PWovdU4w.ttf",weight:400,isVariable:!1},{displayName:"Rubik Scribble",filename:"snfzs0Cp48d67SuHQOpjXLsQpbqbSjORSo9W",category:"display",url:"https://fonts.gstatic.com/s/rubikscribble/v1/snfzs0Cp48d67SuHQOpjXLsQpbqbSjORSo9W.ttf",weight:400,isVariable:!1},{displayName:"Paprika",filename:"8QIJdijZitv49rDfuIgOq7jkAOw",category:"display",url:"https://fonts.gstatic.com/s/paprika/v24/8QIJdijZitv49rDfuIgOq7jkAOw.ttf",weight:400,isVariable:!1},{displayName:"Stack Sans Headline",filename:"1Ptyg9jZXvmMnkLnuURbaukKZJTyrDV3waClGrw-PTY",category:"sans-serif",url:"https://fonts.gstatic.com/s/stacksansheadline/v1/1Ptyg9jZXvmMnkLnuURbaukKZJTyrDV3waClGrw-PTY.ttf",weight:400,isVariable:!0},{displayName:"Seymour One",filename:"4iCp6Khla9xbjQpoWGGd0myIPYBvgpUI",category:"sans-serif",url:"https://fonts.gstatic.com/s/seymourone/v25/4iCp6Khla9xbjQpoWGGd0myIPYBvgpUI.ttf",weight:400,isVariable:!1},{displayName:"Ysabeau",filename:"kmK9ZqEiBAXLcnuMpD1v0ybZuuQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/ysabeau/v5/kmK9ZqEiBAXLcnuMpD1v0ybZuuQ.ttf",weight:400,isVariable:!0},{displayName:"Junge",filename:"gokgH670Gl1lUqAdvhB7SnKm",category:"serif",url:"https://fonts.gstatic.com/s/junge/v26/gokgH670Gl1lUqAdvhB7SnKm.ttf",weight:400,isVariable:!1},{displayName:"My Soul",filename:"3XFqErcuy945_u6KF_Ulk2nnXf0",category:"handwriting",url:"https://fonts.gstatic.com/s/mysoul/v7/3XFqErcuy945_u6KF_Ulk2nnXf0.ttf",weight:400,isVariable:!1},{displayName:"Climate Crisis",filename:"wEOkEB3AntNeKCPBVW9XOKlmp2ofo7fHQOnM",category:"display",url:"https://fonts.gstatic.com/s/climatecrisis/v14/wEOkEB3AntNeKCPBVW9XOKlmp2ofo7fHQOnM.ttf",weight:400,isVariable:!1},{displayName:"Lexend Tera",filename:"RrQUbo98_jt_IXnBPwCWtZhARYMgGtWA",category:"sans-serif",url:"https://fonts.gstatic.com/s/lexendtera/v29/RrQUbo98_jt_IXnBPwCWtZhARYMgGtWA.ttf",weight:400,isVariable:!0},{displayName:"Rubik Wet Paint",filename:"HTx0L20uMDGHgdULcpTF3Oe4d_-F-zz313DuvQ",category:"display",url:"https://fonts.gstatic.com/s/rubikwetpaint/v2/HTx0L20uMDGHgdULcpTF3Oe4d_-F-zz313DuvQ.ttf",weight:400,isVariable:!1},{displayName:"Tillana",filename:"VuJxdNvf35P4qJ1OeKbXOIFneRo",category:"display",url:"https://fonts.gstatic.com/s/tillana/v15/VuJxdNvf35P4qJ1OeKbXOIFneRo.ttf",weight:400,isVariable:!1},{displayName:"Edu NSW ACT Cursive",filename:"xn78YGUw02PnIPEjskHSG_2fCaz9DzhQd8_v3bT4Ycc",category:"handwriting",url:"https://fonts.gstatic.com/s/edunswactcursive/v3/xn78YGUw02PnIPEjskHSG_2fCaz9DzhQd8_v3bT4Ycc.ttf",weight:400,isVariable:!0},{displayName:"Mogra",filename:"f0X40eSs8c95TBo4DvLmxtnG",category:"display",url:"https://fonts.gstatic.com/s/mogra/v22/f0X40eSs8c95TBo4DvLmxtnG.ttf",weight:400,isVariable:!1},{displayName:"Montserrat Underline",filename:"mFTuWaYfw6zH4dthXcyms01NtC8I_7U5uR4pxoPdAYRC",category:"sans-serif",url:"https://fonts.gstatic.com/s/montserratunderline/v3/mFTuWaYfw6zH4dthXcyms01NtC8I_7U5uR4pxoPdAYRC.ttf",weight:400,isVariable:!0},{displayName:"Victor Mono",filename:"Yq6Q-LGQWyfv-LGy7lEO08ZavRQkSKZH",category:"monospace",url:"https://fonts.gstatic.com/s/victormono/v5/Yq6Q-LGQWyfv-LGy7lEO08ZavRQkSKZH.ttf",weight:400,isVariable:!0},{displayName:"Playwrite IN",filename:"uk-kEGGpoLQ97mfv2J3cZzup5w50_o9T7Q",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritein/v11/uk-kEGGpoLQ97mfv2J3cZzup5w50_o9T7Q.ttf",weight:400,isVariable:!0},{displayName:"Girassol",filename:"JTUUjIo_-DK48laaNC9Nz2pJzxbi",category:"display",url:"https://fonts.gstatic.com/s/girassol/v24/JTUUjIo_-DK48laaNC9Nz2pJzxbi.ttf",weight:400,isVariable:!1},{displayName:"Bilbo",filename:"o-0EIpgpwWwZ210hpIRz4wxE",category:"handwriting",url:"https://fonts.gstatic.com/s/bilbo/v21/o-0EIpgpwWwZ210hpIRz4wxE.ttf",weight:400,isVariable:!1},{displayName:"Tourney",filename:"AlZw_ztDtYzv1tzqzQwrcVX9TB0",category:"display",url:"https://fonts.gstatic.com/s/tourney/v16/AlZw_ztDtYzv1tzqzQwrcVX9TB0.ttf",weight:400,isVariable:!0},{displayName:"Mea Culpa",filename:"AMOTz4GcuWbEIuza8jsZms0QW3mqyg",category:"handwriting",url:"https://fonts.gstatic.com/s/meaculpa/v8/AMOTz4GcuWbEIuza8jsZms0QW3mqyg.ttf",weight:400,isVariable:!1},{displayName:"Ramaraja",filename:"SlGTmQearpYAYG1CABIkqnB6aSQU",category:"serif",url:"https://fonts.gstatic.com/s/ramaraja/v17/SlGTmQearpYAYG1CABIkqnB6aSQU.ttf",weight:400,isVariable:!1},{displayName:"Romanesco",filename:"w8gYH2ozQOY7_r_J7mSn3HwLqOqSBg",category:"handwriting",url:"https://fonts.gstatic.com/s/romanesco/v22/w8gYH2ozQOY7_r_J7mSn3HwLqOqSBg.ttf",weight:400,isVariable:!1},{displayName:"Tac One",filename:"ahcZv8Cj3zw7qDr8fO4hU-FwnU0",category:"sans-serif",url:"https://fonts.gstatic.com/s/tacone/v5/ahcZv8Cj3zw7qDr8fO4hU-FwnU0.ttf",weight:400,isVariable:!1},{displayName:"Almendra SC",filename:"Iure6Yx284eebowr7hbyTZZJprVA4XQ0",category:"serif",url:"https://fonts.gstatic.com/s/almendrasc/v31/Iure6Yx284eebowr7hbyTZZJprVA4XQ0.ttf",weight:400,isVariable:!1},{displayName:"Plaster",filename:"DdTm79QatW80eRh4Ei5JOtLOeLI",category:"display",url:"https://fonts.gstatic.com/s/plaster/v25/DdTm79QatW80eRh4Ei5JOtLOeLI.ttf",weight:400,isVariable:!1},{displayName:"Chilanka",filename:"WWXRlj2DZQiMJYaYRrJQI9EAZhTO",category:"handwriting",url:"https://fonts.gstatic.com/s/chilanka/v23/WWXRlj2DZQiMJYaYRrJQI9EAZhTO.ttf",weight:400,isVariable:!1},{displayName:"Metal",filename:"lW-wwjUJIXTo7i3nnoQAUdN2",category:"display",url:"https://fonts.gstatic.com/s/metal/v32/lW-wwjUJIXTo7i3nnoQAUdN2.ttf",weight:400,isVariable:!1},{displayName:"Anek Kannada",filename:"rax6HiCNvNMKe1CKFsINYFl6m2Dc-T-EKQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/anekkannada/v15/rax6HiCNvNMKe1CKFsINYFl6m2Dc-T-EKQ.ttf",weight:400,isVariable:!0},{displayName:"Londrina Shadow",filename:"oPWX_kB4kOQoWNJmjxLV5JuoCUlXRlaSxkrMCQ",category:"display",url:"https://fonts.gstatic.com/s/londrinashadow/v28/oPWX_kB4kOQoWNJmjxLV5JuoCUlXRlaSxkrMCQ.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Tagalog",filename:"J7aFnoNzCnFcV9ZI-sUYuvote1R0wwEAA8jHexnL",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanstagalog/v23/J7aFnoNzCnFcV9ZI-sUYuvote1R0wwEAA8jHexnL.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Buhid",filename:"Dxxy8jiXMW75w3OmoDXVWJD7YwzAe6tgnaFoGA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansbuhid/v23/Dxxy8jiXMW75w3OmoDXVWJD7YwzAe6tgnaFoGA.ttf",weight:400,isVariable:!1},{displayName:"Chathura",filename:"_gP71R7-rzUuVjim418goUC5S-Zy",category:"sans-serif",url:"https://fonts.gstatic.com/s/chathura/v22/_gP71R7-rzUuVjim418goUC5S-Zy.ttf",weight:400,isVariable:!1},{displayName:"Smooch",filename:"o-0LIps4xW8U1xUBjqp_6hVdYg",category:"handwriting",url:"https://fonts.gstatic.com/s/smooch/v9/o-0LIps4xW8U1xUBjqp_6hVdYg.ttf",weight:400,isVariable:!1},{displayName:"Condiment",filename:"pONk1hggFNmwvXALyH6Sq4n4o1vyCQ",category:"handwriting",url:"https://fonts.gstatic.com/s/condiment/v26/pONk1hggFNmwvXALyH6Sq4n4o1vyCQ.ttf",weight:400,isVariable:!1},{displayName:"Festive",filename:"cY9Ffj6KX1xcoDWhFtfgy9HTkak",category:"handwriting",url:"https://fonts.gstatic.com/s/festive/v11/cY9Ffj6KX1xcoDWhFtfgy9HTkak.ttf",weight:400,isVariable:!1},{displayName:"Marhey",filename:"x3dhck7Laq-T7wlhkYUldNsetg",category:"display",url:"https://fonts.gstatic.com/s/marhey/v8/x3dhck7Laq-T7wlhkYUldNsetg.ttf",weight:400,isVariable:!0},{displayName:"Stack Sans Text",filename:"kJErBuAJ-Q0hiGPmzHEu345X1JJXDba5BY95mQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/stacksanstext/v1/kJErBuAJ-Q0hiGPmzHEu345X1JJXDba5BY95mQ.ttf",weight:400,isVariable:!0},{displayName:"Tilt Prism",filename:"5h1fiZgyPHoZ3YikNzWGZ2yQCUZIv3A",category:"display",url:"https://fonts.gstatic.com/s/tiltprism/v16/5h1fiZgyPHoZ3YikNzWGZ2yQCUZIv3A.ttf",weight:400,isVariable:!1},{displayName:"Glass Antiqua",filename:"xfu30Wr0Wn3NOQM2piC0uXOjnL_wN6fRUkY",category:"display",url:"https://fonts.gstatic.com/s/glassantiqua/v26/xfu30Wr0Wn3NOQM2piC0uXOjnL_wN6fRUkY.ttf",weight:400,isVariable:!1},{displayName:"Jacques Francois",filename:"ZXu9e04ZvKeOOHIe1TMahbcIU2cgmcPqoeRWfbs",category:"serif",url:"https://fonts.gstatic.com/s/jacquesfrancois/v26/ZXu9e04ZvKeOOHIe1TMahbcIU2cgmcPqoeRWfbs.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Sora Sompeng",filename:"PlIsFkO5O6RzLfvNNVSioxM2_OTrEhPyDLolMPuO7-gt-ec",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssorasompeng/v26/PlIsFkO5O6RzLfvNNVSioxM2_OTrEhPyDLolMPuO7-gt-ec.ttf",weight:400,isVariable:!0},{displayName:"Nabla",filename:"j8_l6-LI0Lvpe6kRse78FCl4",category:"display",url:"https://fonts.gstatic.com/s/nabla/v17/j8_l6-LI0Lvpe6kRse78FCl4.ttf",weight:400,isVariable:!1},{displayName:"Reem Kufi Fun",filename:"uK_14rOFYukkmyUEbF43fIryfkIbWc7gPbQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/reemkufifun/v13/uK_14rOFYukkmyUEbF43fIryfkIbWc7gPbQ.ttf",weight:400,isVariable:!0},{displayName:"Dorsa",filename:"yYLn0hjd0OGwqo493XCFxAnQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/dorsa/v29/yYLn0hjd0OGwqo493XCFxAnQ.ttf",weight:400,isVariable:!1},{displayName:"Trykker",filename:"KtktALyWZJXudUPzhNnoOd2j22U",category:"serif",url:"https://fonts.gstatic.com/s/trykker/v22/KtktALyWZJXudUPzhNnoOd2j22U.ttf",weight:400,isVariable:!1},{displayName:"Kite One",filename:"70lQu7shLnA_E02vyq1b6HnGO4uA",category:"sans-serif",url:"https://fonts.gstatic.com/s/kiteone/v23/70lQu7shLnA_E02vyq1b6HnGO4uA.ttf",weight:400,isVariable:!1},{displayName:"Alan Sans",filename:"zOL-4pbDmq5Eu6ebjMSr6e5As-FeiQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/alansans/v5/zOL-4pbDmq5Eu6ebjMSr6e5As-FeiQ.ttf",weight:400,isVariable:!0},{displayName:"Jacquard 12",filename:"vm8ydRLuXETEweL79J4rGc3JUnr34c9-",category:"display",url:"https://fonts.gstatic.com/s/jacquard12/v8/vm8ydRLuXETEweL79J4rGc3JUnr34c9-.ttf",weight:400,isVariable:!1},{displayName:"Ruluko",filename:"xMQVuFNZVaODtm0pC6WzKX_QmA",category:"sans-serif",url:"https://fonts.gstatic.com/s/ruluko/v22/xMQVuFNZVaODtm0pC6WzKX_QmA.ttf",weight:400,isVariable:!1},{displayName:"Poor Story",filename:"jizfREFUsnUct9P6cDfd4OmnLD0Z4zM",category:"display",url:"https://fonts.gstatic.com/s/poorstory/v24/jizfREFUsnUct9P6cDfd4OmnLD0Z4zM.ttf",weight:400,isVariable:!1},{displayName:"Jacques Francois Shadow",filename:"KR1FBtOz8PKTMk-kqdkLVrvR0ECFrB6Pin-2_q8VsHuV5ULS",category:"display",url:"https://fonts.gstatic.com/s/jacquesfrancoisshadow/v27/KR1FBtOz8PKTMk-kqdkLVrvR0ECFrB6Pin-2_q8VsHuV5ULS.ttf",weight:400,isVariable:!1},{displayName:"New Tegomin",filename:"SLXMc1fV7Gd9USdBAfPlqfN0Q3ptkDMN",category:"serif",url:"https://fonts.gstatic.com/s/newtegomin/v13/SLXMc1fV7Gd9USdBAfPlqfN0Q3ptkDMN.ttf",weight:400,isVariable:!1},{displayName:"Beiruti",filename:"JTUXjIU69Cmr9FGceA9n4WZA1g8",category:"sans-serif",url:"https://fonts.gstatic.com/s/beiruti/v5/JTUXjIU69Cmr9FGceA9n4WZA1g8.ttf",weight:400,isVariable:!0},{displayName:"Edu AU VIC WA NT Hand",filename:"C8c94dY1tX2x0uuiUHFS4y7ERV-jfqJ6x06tFtksa4Q7LA",category:"handwriting",url:"https://fonts.gstatic.com/s/eduauvicwanthand/v3/C8c94dY1tX2x0uuiUHFS4y7ERV-jfqJ6x06tFtksa4Q7LA.ttf",weight:400,isVariable:!0},{displayName:"Autour One",filename:"UqyVK80cP25l3fJgbdfbk5lWVscxdKE",category:"display",url:"https://fonts.gstatic.com/s/autourone/v25/UqyVK80cP25l3fJgbdfbk5lWVscxdKE.ttf",weight:400,isVariable:!1},{displayName:"Simonetta",filename:"x3dickHVYrCU5BU15c4BfPACvy_1BA",category:"display",url:"https://fonts.gstatic.com/s/simonetta/v29/x3dickHVYrCU5BU15c4BfPACvy_1BA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Tai Viet",filename:"8QIUdj3HhN_lv4jf9vsE-9GMOLsaSPZr644fWsRO9w",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanstaiviet/v20/8QIUdj3HhN_lv4jf9vsE-9GMOLsaSPZr644fWsRO9w.ttf",weight:400,isVariable:!1},{displayName:"Uchen",filename:"nKKZ-GokGZ1baIaSEQGodLxA",category:"serif",url:"https://fonts.gstatic.com/s/uchen/v11/nKKZ-GokGZ1baIaSEQGodLxA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Syriac",filename:"Ktk2AKuMeZjqPnXgyqribqzQqgW0N4O3WYZB_sU",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssyriac/v18/Ktk2AKuMeZjqPnXgyqribqzQqgW0N4O3WYZB_sU.ttf",weight:400,isVariable:!0},{displayName:"Noto Serif Ahom",filename:"FeVIS0hfp6cprmEUffAW_fUL_AN-wuYrPFiwaw",category:"serif",url:"https://fonts.gstatic.com/s/notoserifahom/v21/FeVIS0hfp6cprmEUffAW_fUL_AN-wuYrPFiwaw.ttf",weight:400,isVariable:!1},{displayName:"Galindo",filename:"HI_KiYMeLqVKqwyuQ5HiRp-dhpQ",category:"display",url:"https://fonts.gstatic.com/s/galindo/v26/HI_KiYMeLqVKqwyuQ5HiRp-dhpQ.ttf",weight:400,isVariable:!1},{displayName:"Yaldevi",filename:"cY9Ffj6VW0NMrDWtFtfgy9HTkak",category:"sans-serif",url:"https://fonts.gstatic.com/s/yaldevi/v17/cY9Ffj6VW0NMrDWtFtfgy9HTkak.ttf",weight:400,isVariable:!0},{displayName:"Inika",filename:"rnCm-x5X3QP-phTHRcc2s2XH",category:"serif",url:"https://fonts.gstatic.com/s/inika/v22/rnCm-x5X3QP-phTHRcc2s2XH.ttf",weight:400,isVariable:!1},{displayName:"Kotta One",filename:"S6u_w41LXzPc_jlfNWqPHA3s5dwt7w",category:"serif",url:"https://fonts.gstatic.com/s/kottaone/v21/S6u_w41LXzPc_jlfNWqPHA3s5dwt7w.ttf",weight:400,isVariable:!1},{displayName:"Liter",filename:"SLXGc1nX4GQ4d2ImRJqExst1",category:"sans-serif",url:"https://fonts.gstatic.com/s/liter/v4/SLXGc1nX4GQ4d2ImRJqExst1.ttf",weight:400,isVariable:!1},{displayName:"Bungee Hairline",filename:"snfys0G548t04270a_ljTLUVrv-7YB2dQ5ZPqQ",category:"display",url:"https://fonts.gstatic.com/s/bungeehairline/v26/snfys0G548t04270a_ljTLUVrv-7YB2dQ5ZPqQ.ttf",weight:400,isVariable:!1},{displayName:"Kumar One",filename:"bMr1mS-P958wYi6YaGeGNO6WU3oT0g",category:"display",url:"https://fonts.gstatic.com/s/kumarone/v25/bMr1mS-P958wYi6YaGeGNO6WU3oT0g.ttf",weight:400,isVariable:!1},{displayName:"Rubik Moonrocks",filename:"845ANMAmAI2VUZMLu_W0M7HqlDHnXcD7JGy1Sw",category:"display",url:"https://fonts.gstatic.com/s/rubikmoonrocks/v7/845ANMAmAI2VUZMLu_W0M7HqlDHnXcD7JGy1Sw.ttf",weight:400,isVariable:!1},{displayName:"Donegal One",filename:"m8JWjfRYea-ZnFz6fsK9FZRFRG-K3Mud",category:"serif",url:"https://fonts.gstatic.com/s/donegalone/v22/m8JWjfRYea-ZnFz6fsK9FZRFRG-K3Mud.ttf",weight:400,isVariable:!1},{displayName:"Linden Hill",filename:"-F61fjxoKSg9Yc3hZgO8ygFI7CwC009k",category:"serif",url:"https://fonts.gstatic.com/s/lindenhill/v27/-F61fjxoKSg9Yc3hZgO8ygFI7CwC009k.ttf",weight:400,isVariable:!1},{displayName:"Playwrite DE Grund",filename:"EJRLQhwoXdccriFurnRxqv-1MFyKy69g8Keepi2lHw",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritedegrund/v11/EJRLQhwoXdccriFurnRxqv-1MFyKy69g8Keepi2lHw.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Canadian Aboriginal",filename:"4C_gLjTuEqPj-8J01CwaGkiZ9os0iGVkezM1mUT-j_Lmly1RyBEnAtbz",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanscanadianaboriginal/v28/4C_gLjTuEqPj-8J01CwaGkiZ9os0iGVkezM1mUT-j_Lmly1RyBEnAtbz.ttf",weight:400,isVariable:!0},{displayName:"Offside",filename:"HI_KiYMWKa9QrAykQ5HiRp-dhpQ",category:"display",url:"https://fonts.gstatic.com/s/offside/v26/HI_KiYMWKa9QrAykQ5HiRp-dhpQ.ttf",weight:400,isVariable:!1},{displayName:"Playwrite IS",filename:"JTUQjI4o_SGg9lecLGptrD1hziTn89dtpQ",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteis/v10/JTUQjI4o_SGg9lecLGptrD1hziTn89dtpQ.ttf",weight:400,isVariable:!0},{displayName:"Alumni Sans Pinstripe",filename:"ZgNNjOFFPq_AUJD1umyS30W-Xub8zD1ObhezYrVIpcDA5w",category:"sans-serif",url:"https://fonts.gstatic.com/s/alumnisanspinstripe/v8/ZgNNjOFFPq_AUJD1umyS30W-Xub8zD1ObhezYrVIpcDA5w.ttf",weight:400,isVariable:!1},{displayName:"Stalinist One",filename:"MQpS-WezM9W4Dd7D3B7I-UT7eZ-UPyacPbo",category:"display",url:"https://fonts.gstatic.com/s/stalinistone/v58/MQpS-WezM9W4Dd7D3B7I-UT7eZ-UPyacPbo.ttf",weight:400,isVariable:!1},{displayName:"Bruno Ace SC",filename:"ptROTiycffFLBuiHjdJDl634LSFrpe8uZA",category:"display",url:"https://fonts.gstatic.com/s/brunoacesc/v7/ptROTiycffFLBuiHjdJDl634LSFrpe8uZA.ttf",weight:400,isVariable:!1},{displayName:"Meera Inimai",filename:"845fNMM5EIqOW5MPuvO3ILep_2jDVevnLQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/meerainimai/v14/845fNMM5EIqOW5MPuvO3ILep_2jDVevnLQ.ttf",weight:400,isVariable:!1},{displayName:"Arbutus",filename:"NaPYcZ7dG_5J3poob9JtryO8fMU",category:"serif",url:"https://fonts.gstatic.com/s/arbutus/v30/NaPYcZ7dG_5J3poob9JtryO8fMU.ttf",weight:400,isVariable:!1},{displayName:"Tiro Devanagari Marathi",filename:"fC1xPZBSZHrRhS3rd4M0MAPNJUHl4znXCxAkotDrDJYM2lAZ",category:"serif",url:"https://fonts.gstatic.com/s/tirodevanagarimarathi/v5/fC1xPZBSZHrRhS3rd4M0MAPNJUHl4znXCxAkotDrDJYM2lAZ.ttf",weight:400,isVariable:!1},{displayName:"Reddit Mono",filename:"oPWL_kRmmu4oQ88oo13o49rMTDp_R2SX",category:"monospace",url:"https://fonts.gstatic.com/s/redditmono/v5/oPWL_kRmmu4oQ88oo13o49rMTDp_R2SX.ttf",weight:400,isVariable:!0},{displayName:"TASA Orbiter",filename:"3XFtErw3860rsdSUVZx78hPGRdbY1P1Sbg",category:"sans-serif",url:"https://fonts.gstatic.com/s/tasaorbiter/v2/3XFtErw3860rsdSUVZx78hPGRdbY1P1Sbg.ttf",weight:400,isVariable:!0},{displayName:"Bruno Ace",filename:"WwkcxPa2E06x4trkOj_kMKoMWNMg3Q",category:"display",url:"https://fonts.gstatic.com/s/brunoace/v7/WwkcxPa2E06x4trkOj_kMKoMWNMg3Q.ttf",weight:400,isVariable:!1},{displayName:"Ribeye Marrow",filename:"GFDsWApshnqMRO2JdtRZ2d0vEAwTVWgKdtw",category:"display",url:"https://fonts.gstatic.com/s/ribeyemarrow/v26/GFDsWApshnqMRO2JdtRZ2d0vEAwTVWgKdtw.ttf",weight:400,isVariable:!1},{displayName:"Playwrite VN Guides",filename:"JIAvUUlydXJZq1IQU8oDBn2CUkROHFEAfXMXfpmSLuI",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritevnguides/v1/JIAvUUlydXJZq1IQU8oDBn2CUkROHFEAfXMXfpmSLuI.ttf",weight:400,isVariable:!1},{displayName:"Preahvihear",filename:"6NUS8F-dNQeEYhzj7uluxswE49FJf8Wv",category:"sans-serif",url:"https://fonts.gstatic.com/s/preahvihear/v32/6NUS8F-dNQeEYhzj7uluxswE49FJf8Wv.ttf",weight:400,isVariable:!1},{displayName:"Edu AU VIC WA NT Pre",filename:"f0Xp0fWk-t0rbG8Ycr-t55aG0elTWbFeXbwD1TB_JHHY",category:"handwriting",url:"https://fonts.gstatic.com/s/eduauvicwantpre/v3/f0Xp0fWk-t0rbG8Ycr-t55aG0elTWbFeXbwD1TB_JHHY.ttf",weight:400,isVariable:!0},{displayName:"Amiri Quran",filename:"_Xmo-Hk0rD6DbUL4_vH8Zq5t7Cycsu-2",category:"serif",url:"https://fonts.gstatic.com/s/amiriquran/v19/_Xmo-Hk0rD6DbUL4_vH8Zq5t7Cycsu-2.ttf",weight:400,isVariable:!1},{displayName:"Rubik Distressed",filename:"GFDxWBdsmnqAVqjtUsZf2dcrQ2ldcWAhatVBaGM",category:"display",url:"https://fonts.gstatic.com/s/rubikdistressed/v1/GFDxWBdsmnqAVqjtUsZf2dcrQ2ldcWAhatVBaGM.ttf",weight:400,isVariable:!1},{displayName:"Sedan SC",filename:"yMJRMIlvYZ3Jn1Y30Dq8fSx5i814",category:"serif",url:"https://fonts.gstatic.com/s/sedansc/v2/yMJRMIlvYZ3Jn1Y30Dq8fSx5i814.ttf",weight:400,isVariable:!1},{displayName:"Ga Maamli",filename:"uU9NCBsQ4c-DPW1Yo3rR2t6CilKOdQ",category:"display",url:"https://fonts.gstatic.com/s/gamaamli/v3/uU9NCBsQ4c-DPW1Yo3rR2t6CilKOdQ.ttf",weight:400,isVariable:!1},{displayName:"Comforter",filename:"H4clBXOCl8nQnlaql3Qa6JG8iqeuag",category:"handwriting",url:"https://fonts.gstatic.com/s/comforter/v9/H4clBXOCl8nQnlaql3Qa6JG8iqeuag.ttf",weight:400,isVariable:!1},{displayName:"Marko One",filename:"9Btq3DFG0cnVM5lw1haaKpUfrHPzUw",category:"serif",url:"https://fonts.gstatic.com/s/markoone/v24/9Btq3DFG0cnVM5lw1haaKpUfrHPzUw.ttf",weight:400,isVariable:!1},{displayName:"Micro 5",filename:"H4cnBX2MkcfEngTr0gYQ7LO5mqc",category:"display",url:"https://fonts.gstatic.com/s/micro5/v2/H4cnBX2MkcfEngTr0gYQ7LO5mqc.ttf",weight:400,isVariable:!1},{displayName:"New Amsterdam",filename:"YA9Vr02Y5lucHqUlbEe51kBtl7mGiv_Q7dA",category:"sans-serif",url:"https://fonts.gstatic.com/s/newamsterdam/v1/YA9Vr02Y5lucHqUlbEe51kBtl7mGiv_Q7dA.ttf",weight:400,isVariable:!1},{displayName:"Ewert",filename:"va9I4kzO2tFODYBvS-J3kbDP",category:"display",url:"https://fonts.gstatic.com/s/ewert/v27/va9I4kzO2tFODYBvS-J3kbDP.ttf",weight:400,isVariable:!1},{displayName:"Encode Sans SC",filename:"jVyT7nLwCGzQ9zE7ZyRg0QRXHOxX3AngeAXx",category:"sans-serif",url:"https://fonts.gstatic.com/s/encodesanssc/v14/jVyT7nLwCGzQ9zE7ZyRg0QRXHOxX3AngeAXx.ttf",weight:400,isVariable:!0},{displayName:"Chela One",filename:"6ae-4KC7Uqgdz_JZdPIy31vWNTMwoQ",category:"display",url:"https://fonts.gstatic.com/s/chelaone/v22/6ae-4KC7Uqgdz_JZdPIy31vWNTMwoQ.ttf",weight:400,isVariable:!1},{displayName:"Smokum",filename:"TK3iWkUbAhopmrdGHjUHte5fKg",category:"display",url:"https://fonts.gstatic.com/s/smokum/v30/TK3iWkUbAhopmrdGHjUHte5fKg.ttf",weight:400,isVariable:!1},{displayName:"Joti One",filename:"Z9XVDmdJQAmWm9TwaYTe4u2El6GC",category:"display",url:"https://fonts.gstatic.com/s/jotione/v28/Z9XVDmdJQAmWm9TwaYTe4u2El6GC.ttf",weight:400,isVariable:!1},{displayName:"Yuji Boku",filename:"P5sAzZybeNzXsA9xj1Fkjb2r2dgvJA",category:"serif",url:"https://fonts.gstatic.com/s/yujiboku/v8/P5sAzZybeNzXsA9xj1Fkjb2r2dgvJA.ttf",weight:400,isVariable:!1},{displayName:"National Park",filename:"GftD7vJOtg4NO-gmoY4nmcqP410fThX-Zsw",category:"sans-serif",url:"https://fonts.gstatic.com/s/nationalpark/v4/GftD7vJOtg4NO-gmoY4nmcqP410fThX-Zsw.ttf",weight:400,isVariable:!0},{displayName:"Caramel",filename:"P5sCzZKBbMTf_ShyxCRuiZ-uydg",category:"handwriting",url:"https://fonts.gstatic.com/s/caramel/v8/P5sCzZKBbMTf_ShyxCRuiZ-uydg.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Gothic",filename:"TuGKUUVzXI5FBtUq5a8bj6wRbzxTFMX40kFQRx0",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansgothic/v17/TuGKUUVzXI5FBtUq5a8bj6wRbzxTFMX40kFQRx0.ttf",weight:400,isVariable:!1},{displayName:"Ruwudu",filename:"syky-y1tj6UzRKfNlQCT9tPdpw",category:"serif",url:"https://fonts.gstatic.com/s/ruwudu/v4/syky-y1tj6UzRKfNlQCT9tPdpw.ttf",weight:400,isVariable:!1},{displayName:"Bigelow Rules",filename:"RrQWboly8iR_I3KWSzeRuN0zT4cCH8WAJVk",category:"display",url:"https://fonts.gstatic.com/s/bigelowrules/v31/RrQWboly8iR_I3KWSzeRuN0zT4cCH8WAJVk.ttf",weight:400,isVariable:!1},{displayName:"Galdeano",filename:"uU9MCBoQ4YOqOW1boDPx8PCOg0uX",category:"sans-serif",url:"https://fonts.gstatic.com/s/galdeano/v23/uU9MCBoQ4YOqOW1boDPx8PCOg0uX.ttf",weight:400,isVariable:!1},{displayName:"LXGW WenKai TC",filename:"w8gDH20td8wNsI3f40DmtXZb48uKLd0hZzVB",category:"handwriting",url:"https://fonts.gstatic.com/s/lxgwwenkaitc/v9/w8gDH20td8wNsI3f40DmtXZb48uKLd0hZzVB.ttf",weight:400,isVariable:!1},{displayName:"Lancelot",filename:"J7acnppxBGtQEulG4JY4xJ9CGyAa",category:"display",url:"https://fonts.gstatic.com/s/lancelot/v28/J7acnppxBGtQEulG4JY4xJ9CGyAa.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Sinhala",filename:"DtV-JwinQqclnZE2CnsPug9lgGC3y2Fslsq8DNibFw",category:"serif",url:"https://fonts.gstatic.com/s/notoserifsinhala/v30/DtV-JwinQqclnZE2CnsPug9lgGC3y2Fslsq8DNibFw.ttf",weight:400,isVariable:!0},{displayName:"Playwrite CU",filename:"VuJ2dNDb2p7tvoFGLMPdf9xGYTFZt0rNpQ",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritecu/v6/VuJ2dNDb2p7tvoFGLMPdf9xGYTFZt0rNpQ.ttf",weight:400,isVariable:!0},{displayName:"Siemreap",filename:"Gg82N5oFbgLvHAfNl2YbnA8DLXpe",category:"sans-serif",url:"https://fonts.gstatic.com/s/siemreap/v30/Gg82N5oFbgLvHAfNl2YbnA8DLXpe.ttf",weight:400,isVariable:!1},{displayName:"Bungee Outline",filename:"_6_mEDvmVP24UvU2MyiGDslL3Qg3YhJqPXxo",category:"display",url:"https://fonts.gstatic.com/s/bungeeoutline/v24/_6_mEDvmVP24UvU2MyiGDslL3Qg3YhJqPXxo.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Telugu",filename:"tDbW2pCbnkEKmXNVmt2M1q6f4HWbbiSHZ0bc5Qj9",category:"serif",url:"https://fonts.gstatic.com/s/notoseriftelugu/v29/tDbW2pCbnkEKmXNVmt2M1q6f4HWbbiSHZ0bc5Qj9.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Gunjala Gondi",filename:"bWto7e7KfBziStx7lIzKPrcSMwcEnCv6DW7n5hcVXYMTK4q1",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansgunjalagondi/v21/bWto7e7KfBziStx7lIzKPrcSMwcEnCv6DW7n5hcVXYMTK4q1.ttf",weight:400,isVariable:!0},{displayName:"Tulpen One",filename:"dFa6ZfeC474skLgesc0CWj0w_HyIRlE",category:"display",url:"https://fonts.gstatic.com/s/tulpenone/v26/dFa6ZfeC474skLgesc0CWj0w_HyIRlE.ttf",weight:400,isVariable:!1},{displayName:"Passero One",filename:"JTUTjIko8DOq5FeaeEAjgE5B5Arr-s50",category:"display",url:"https://fonts.gstatic.com/s/passeroone/v28/JTUTjIko8DOq5FeaeEAjgE5B5Arr-s50.ttf",weight:400,isVariable:!1},{displayName:"Sixtyfour",filename:"OD5BuMCT1numDm3nakX3rEq4DL6w2w",category:"monospace",url:"https://fonts.gstatic.com/s/sixtyfour/v3/OD5BuMCT1numDm3nakX3rEq4DL6w2w.ttf",weight:400,isVariable:!1},{displayName:"Nuosu SIL",filename:"8vIK7wM3wmRn_kc4uAjeFGxbO_zo-w",category:"sans-serif",url:"https://fonts.gstatic.com/s/nuosusil/v12/8vIK7wM3wmRn_kc4uAjeFGxbO_zo-w.ttf",weight:400,isVariable:!1},{displayName:"Wellfleet",filename:"nuF7D_LfQJb3VYgX6eyT42aLDhO2HA",category:"serif",url:"https://fonts.gstatic.com/s/wellfleet/v25/nuF7D_LfQJb3VYgX6eyT42aLDhO2HA.ttf",weight:400,isVariable:!1},{displayName:"Tiro Telugu",filename:"aFTQ7PxlZWk2EPiSymjXdKSNQqn0X0BO",category:"serif",url:"https://fonts.gstatic.com/s/tirotelugu/v7/aFTQ7PxlZWk2EPiSymjXdKSNQqn0X0BO.ttf",weight:400,isVariable:!1},{displayName:"Sahitya",filename:"6qLAKZkOuhnuqlJAaScFPywEDnI",category:"serif",url:"https://fonts.gstatic.com/s/sahitya/v20/6qLAKZkOuhnuqlJAaScFPywEDnI.ttf",weight:400,isVariable:!1},{displayName:"Miss Fajardose",filename:"E21-_dn5gvrawDdPFVl-N0Ajb8qvWPaJq4no",category:"handwriting",url:"https://fonts.gstatic.com/s/missfajardose/v23/E21-_dn5gvrawDdPFVl-N0Ajb8qvWPaJq4no.ttf",weight:400,isVariable:!1},{displayName:"Koh Santepheap",filename:"gNMdW3p6SJbwyGj2rBZyeOrTjOPhF1ixsyNJ",category:"serif",url:"https://fonts.gstatic.com/s/kohsantepheap/v15/gNMdW3p6SJbwyGj2rBZyeOrTjOPhF1ixsyNJ.ttf",weight:400,isVariable:!1},{displayName:"Port Lligat Sans",filename:"kmKmZrYrGBbdN1aV7Vokow6Lw4s4l7N0Tx4xEcQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/portlligatsans/v24/kmKmZrYrGBbdN1aV7Vokow6Lw4s4l7N0Tx4xEcQ.ttf",weight:400,isVariable:!1},{displayName:"Ravi Prakash",filename:"gokpH6fsDkVrF9Bv9X8SOAKHmNZEq6TTFw",category:"display",url:"https://fonts.gstatic.com/s/raviprakash/v21/gokpH6fsDkVrF9Bv9X8SOAKHmNZEq6TTFw.ttf",weight:400,isVariable:!1},{displayName:"Piedra",filename:"ke8kOg8aN0Bn7hTunEyHN_M3gA",category:"display",url:"https://fonts.gstatic.com/s/piedra/v27/ke8kOg8aN0Bn7hTunEyHN_M3gA.ttf",weight:400,isVariable:!1},{displayName:"Rubik Iso",filename:"x3dickHUfr-S4VAI4sABfPACvy_1BA",category:"display",url:"https://fonts.gstatic.com/s/rubikiso/v2/x3dickHUfr-S4VAI4sABfPACvy_1BA.ttf",weight:400,isVariable:!1},{displayName:"Big Shoulders Stencil",filename:"TwMQ-JIEQ1Je5sI6Bx1TKHD83rT3u3NSCfbfzYRDT8Yy-w",category:"display",url:"https://fonts.gstatic.com/s/bigshouldersstencil/v4/TwMQ-JIEQ1Je5sI6Bx1TKHD83rT3u3NSCfbfzYRDT8Yy-w.ttf",weight:400,isVariable:!0},{displayName:"Felipa",filename:"FwZa7-owz1Eu4F_wSNSEwM2zpA",category:"handwriting",url:"https://fonts.gstatic.com/s/felipa/v27/FwZa7-owz1Eu4F_wSNSEwM2zpA.ttf",weight:400,isVariable:!1},{displayName:"Bacasime Antique",filename:"tDbX2pGXkFYEykldjZSrmI6T_XWZOwStSUrV_BE",category:"serif",url:"https://fonts.gstatic.com/s/bacasimeantique/v1/tDbX2pGXkFYEykldjZSrmI6T_XWZOwStSUrV_BE.ttf",weight:400,isVariable:!1},{displayName:"Geostar Fill",filename:"AMOWz4SWuWiXFfjEohxQ9os0U1K2w9lb4g",category:"display",url:"https://fonts.gstatic.com/s/geostarfill/v27/AMOWz4SWuWiXFfjEohxQ9os0U1K2w9lb4g.ttf",weight:400,isVariable:!1},{displayName:"Reem Kufi Ink",filename:"oPWJ_kJmmu8hCvB9iFumxZSnRj5dQnSX1ko",category:"sans-serif",url:"https://fonts.gstatic.com/s/reemkufiink/v11/oPWJ_kJmmu8hCvB9iFumxZSnRj5dQnSX1ko.ttf",weight:400,isVariable:!1},{displayName:"Playwrite HR",filename:"WWXVljmQYQCZM5qaU_dwQYcoZybLwMVWng",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritehr/v6/WWXVljmQYQCZM5qaU_dwQYcoZybLwMVWng.ttf",weight:400,isVariable:!0},{displayName:"Peddana",filename:"aFTU7PBhaX89UcKWhh2aBYyMcKw",category:"serif",url:"https://fonts.gstatic.com/s/peddana/v24/aFTU7PBhaX89UcKWhh2aBYyMcKw.ttf",weight:400,isVariable:!1},{displayName:"Ojuju",filename:"7r3IqXF7v9ApbqkppYgA3LZg",category:"sans-serif",url:"https://fonts.gstatic.com/s/ojuju/v5/7r3IqXF7v9ApbqkppYgA3LZg.ttf",weight:400,isVariable:!0},{displayName:"Playwrite HR Lijeva",filename:"gNMYW2dhS5-p7HvxrBYiWN2SsKqLWCrYkjtiTWz5UGA",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritehrlijeva/v6/gNMYW2dhS5-p7HvxrBYiWN2SsKqLWCrYkjtiTWz5UGA.ttf",weight:400,isVariable:!0},{displayName:"Dr Sugiyama",filename:"HTxoL2k4N3O9n5I1boGI7abRM4-t-g7y",category:"handwriting",url:"https://fonts.gstatic.com/s/drsugiyama/v30/HTxoL2k4N3O9n5I1boGI7abRM4-t-g7y.ttf",weight:400,isVariable:!1},{displayName:"Mr Bedfort",filename:"MQpR-WCtNZSWAdTMwBicliq0XZe_Iy8",category:"handwriting",url:"https://fonts.gstatic.com/s/mrbedfort/v23/MQpR-WCtNZSWAdTMwBicliq0XZe_Iy8.ttf",weight:400,isVariable:!1},{displayName:"Oi",filename:"w8gXH2EuRqtaut6yjBOG",category:"display",url:"https://fonts.gstatic.com/s/oi/v21/w8gXH2EuRqtaut6yjBOG.ttf",weight:400,isVariable:!1},{displayName:"Londrina Sketch",filename:"c4m41npxGMTnomOHtRU68eIJn8qfWWn5Pos6CA",category:"display",url:"https://fonts.gstatic.com/s/londrinasketch/v27/c4m41npxGMTnomOHtRU68eIJn8qfWWn5Pos6CA.ttf",weight:400,isVariable:!1},{displayName:"Diplomata SC",filename:"buExpoi3ecvs3kidKgBJo2kf-P5Oaiw4cw",category:"display",url:"https://fonts.gstatic.com/s/diplomatasc/v30/buExpoi3ecvs3kidKgBJo2kf-P5Oaiw4cw.ttf",weight:400,isVariable:!1},{displayName:"Bahiana",filename:"uU9PCBUV4YenPWJU7xPb3vyHmlI",category:"display",url:"https://fonts.gstatic.com/s/bahiana/v25/uU9PCBUV4YenPWJU7xPb3vyHmlI.ttf",weight:400,isVariable:!1},{displayName:"Luxurious Roman",filename:"buEupou_ZcP1w0yTKxJJokVSmbpqYgckeo9RMw",category:"display",url:"https://fonts.gstatic.com/s/luxuriousroman/v10/buEupou_ZcP1w0yTKxJJokVSmbpqYgckeo9RMw.ttf",weight:400,isVariable:!1},{displayName:"Flow Rounded",filename:"-zki91mtwsU9qlLiGwD4oQX3oZX-Xup87g",category:"display",url:"https://fonts.gstatic.com/s/flowrounded/v15/-zki91mtwsU9qlLiGwD4oQX3oZX-Xup87g.ttf",weight:400,isVariable:!1},{displayName:"Anek Gurmukhi",filename:"0QImMXRO_YSkA0quVLY79JnH07z8_ApHqqk",category:"sans-serif",url:"https://fonts.gstatic.com/s/anekgurmukhi/v13/0QImMXRO_YSkA0quVLY79JnH07z8_ApHqqk.ttf",weight:400,isVariable:!0},{displayName:"Purple Purse",filename:"qWctB66gv53iAp-Vfs4My6qyeBb_ujA4ug",category:"display",url:"https://fonts.gstatic.com/s/purplepurse/v25/qWctB66gv53iAp-Vfs4My6qyeBb_ujA4ug.ttf",weight:400,isVariable:!1},{displayName:"Lugrasimo",filename:"qkBXXvoF_s_eT9c7Y7ae5JRLkAXbMQ",category:"handwriting",url:"https://fonts.gstatic.com/s/lugrasimo/v5/qkBXXvoF_s_eT9c7Y7ae5JRLkAXbMQ.ttf",weight:400,isVariable:!1},{displayName:"Griffy",filename:"FwZa7-ox2FQh9kfwSNSEwM2zpA",category:"display",url:"https://fonts.gstatic.com/s/griffy/v23/FwZa7-ox2FQh9kfwSNSEwM2zpA.ttf",weight:400,isVariable:!1},{displayName:"Monomakh",filename:"Wnz4HAk3Yh_SC3FACTYdiArcPRKo",category:"display",url:"https://fonts.gstatic.com/s/monomakh/v1/Wnz4HAk3Yh_SC3FACTYdiArcPRKo.ttf",weight:400,isVariable:!1},{displayName:"Fleur De Leah",filename:"AYCNpXX7ftYZWLhv9UmPJTMC5vat4I_Gdq0",category:"handwriting",url:"https://fonts.gstatic.com/s/fleurdeleah/v11/AYCNpXX7ftYZWLhv9UmPJTMC5vat4I_Gdq0.ttf",weight:400,isVariable:!1},{displayName:"Grey Qo",filename:"BXRrvF_Nmv_TyXxNDOtQ9Wf0QcE",category:"handwriting",url:"https://fonts.gstatic.com/s/greyqo/v11/BXRrvF_Nmv_TyXxNDOtQ9Wf0QcE.ttf",weight:400,isVariable:!1},{displayName:"Updock",filename:"nuF4D_3dVZ70UI9SjLK3602XBw",category:"handwriting",url:"https://fonts.gstatic.com/s/updock/v7/nuF4D_3dVZ70UI9SjLK3602XBw.ttf",weight:400,isVariable:!1},{displayName:"Hubballi",filename:"o-0JIpUj3WIZ1RFN56B7yBBNYuSF",category:"sans-serif",url:"https://fonts.gstatic.com/s/hubballi/v10/o-0JIpUj3WIZ1RFN56B7yBBNYuSF.ttf",weight:400,isVariable:!1},{displayName:"Grechen Fuemen",filename:"vEFI2_tHEQ4d5ObgKxBzZh0MAWgc-NaXXq7H",category:"handwriting",url:"https://fonts.gstatic.com/s/grechenfuemen/v11/vEFI2_tHEQ4d5ObgKxBzZh0MAWgc-NaXXq7H.ttf",weight:400,isVariable:!1},{displayName:"Jersey 20",filename:"ZgNRjP1ON6jeW4D12z3crE_qP4mXuQ",category:"display",url:"https://fonts.gstatic.com/s/jersey20/v4/ZgNRjP1ON6jeW4D12z3crE_qP4mXuQ.ttf",weight:400,isVariable:!1},{displayName:"Lakki Reddy",filename:"S6u5w49MUSzD9jlCPmvLZQfox9k97-xZ",category:"handwriting",url:"https://fonts.gstatic.com/s/lakkireddy/v25/S6u5w49MUSzD9jlCPmvLZQfox9k97-xZ.ttf",weight:400,isVariable:!1},{displayName:"Fruktur",filename:"SZc53FHsOru5QYsMfz3GkUrS8DI",category:"display",url:"https://fonts.gstatic.com/s/fruktur/v28/SZc53FHsOru5QYsMfz3GkUrS8DI.ttf",weight:400,isVariable:!1},{displayName:"Gasoek One",filename:"EJRTQgQ_UMUKvDgnlX80zrq_cyb-vco",category:"sans-serif",url:"https://fonts.gstatic.com/s/gasoekone/v3/EJRTQgQ_UMUKvDgnlX80zrq_cyb-vco.ttf",weight:400,isVariable:!1},{displayName:"Federant",filename:"2sDdZGNfip_eirT0_U0jRUG0AqUc",category:"display",url:"https://fonts.gstatic.com/s/federant/v31/2sDdZGNfip_eirT0_U0jRUG0AqUc.ttf",weight:400,isVariable:!1},{displayName:"Libre Barcode EAN13 Text",filename:"wlpigxXFDU1_oCu9nfZytgIqSG0XRcJm_OQiB96PAGEki52WfA",category:"display",url:"https://fonts.gstatic.com/s/librebarcodeean13text/v25/wlpigxXFDU1_oCu9nfZytgIqSG0XRcJm_OQiB96PAGEki52WfA.ttf",weight:400,isVariable:!1},{displayName:"Inspiration",filename:"x3dkckPPZa6L4wIg5cZOEvoGnSrlBBsy",category:"handwriting",url:"https://fonts.gstatic.com/s/inspiration/v7/x3dkckPPZa6L4wIg5cZOEvoGnSrlBBsy.ttf",weight:400,isVariable:!1},{displayName:"Konkhmer Sleokchher",filename:"_Xmw-GE-rjmabA_M-aPOZOsCrUv825LFI3507E0d-W0",category:"display",url:"https://fonts.gstatic.com/s/konkhmersleokchher/v3/_Xmw-GE-rjmabA_M-aPOZOsCrUv825LFI3507E0d-W0.ttf",weight:400,isVariable:!1},{displayName:"Alumni Sans Collegiate One",filename:"MQpB-XChK8G5CtmK_AuGxQrdNvPSXkn0RM-XqjWWhjdayDiPw2ta",category:"sans-serif",url:"https://fonts.gstatic.com/s/alumnisanscollegiateone/v7/MQpB-XChK8G5CtmK_AuGxQrdNvPSXkn0RM-XqjWWhjdayDiPw2ta.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Armenian",filename:"3XF2EqMt3YoFsciDRZxptyCUKJmytZ0kT0S1UL5Ayp0",category:"serif",url:"https://fonts.gstatic.com/s/notoserifarmenian/v30/3XF2EqMt3YoFsciDRZxptyCUKJmytZ0kT0S1UL5Ayp0.ttf",weight:400,isVariable:!0},{displayName:"Moderustic",filename:"2-ci9J9s3o6eLFNHFdXYcu7XoZFDf2Q",category:"sans-serif",url:"https://fonts.gstatic.com/s/moderustic/v3/2-ci9J9s3o6eLFNHFdXYcu7XoZFDf2Q.ttf",weight:400,isVariable:!0},{displayName:"Bitcount Prop Single",filename:"-W_hXIv9SyXT0xz0E9pIHCxbW8ZMGEVdhyQegDsC0Np2",category:"display",url:"https://fonts.gstatic.com/s/bitcountpropsingle/v3/-W_hXIv9SyXT0xz0E9pIHCxbW8ZMGEVdhyQegDsC0Np2.ttf",weight:400,isVariable:!0},{displayName:"Blaka",filename:"8vIG7w8722p_6kdr20D2FV5e",category:"display",url:"https://fonts.gstatic.com/s/blaka/v8/8vIG7w8722p_6kdr20D2FV5e.ttf",weight:400,isVariable:!1},{displayName:"Kirang Haerang",filename:"E21-_dn_gvvIjhYON1lpIU4-bcqvWPaJq4no",category:"display",url:"https://fonts.gstatic.com/s/kiranghaerang/v22/E21-_dn_gvvIjhYON1lpIU4-bcqvWPaJq4no.ttf",weight:400,isVariable:!1},{displayName:"Princess Sofia",filename:"qWczB6yguIb8DZ_GXZst16n7GRz7mDUoupoI",category:"handwriting",url:"https://fonts.gstatic.com/s/princesssofia/v27/qWczB6yguIb8DZ_GXZst16n7GRz7mDUoupoI.ttf",weight:400,isVariable:!1},{displayName:"Butcherman",filename:"2EbiL-thF0loflXUBOdb1zWzq_5uT84",category:"display",url:"https://fonts.gstatic.com/s/butcherman/v25/2EbiL-thF0loflXUBOdb1zWzq_5uT84.ttf",weight:400,isVariable:!1},{displayName:"GFS Neohellenic",filename:"8QIRdiDOrfiq0b7R8O1Iw9WLcY5TLahP46UDUw",category:"sans-serif",url:"https://fonts.gstatic.com/s/gfsneohellenic/v27/8QIRdiDOrfiq0b7R8O1Iw9WLcY5TLahP46UDUw.ttf",weight:400,isVariable:!1},{displayName:"Mozilla Headline",filename:"QGY1z-UXahmCOps4kyMKGuSA9pYtwfjcL4mVDik",category:"sans-serif",url:"https://fonts.gstatic.com/s/mozillaheadline/v1/QGY1z-UXahmCOps4kyMKGuSA9pYtwfjcL4mVDik.ttf",weight:400,isVariable:!0},{displayName:"Explora",filename:"tsstApxFfjUH4wrvc1qPonC3vqc",category:"handwriting",url:"https://fonts.gstatic.com/s/explora/v11/tsstApxFfjUH4wrvc1qPonC3vqc.ttf",weight:400,isVariable:!1},{displayName:"Anek Odia",filename:"TK3hWkoJARApz5UCd34jvcVDI5S01g",category:"sans-serif",url:"https://fonts.gstatic.com/s/anekodia/v17/TK3hWkoJARApz5UCd34jvcVDI5S01g.ttf",weight:400,isVariable:!0},{displayName:"Neonderthaw",filename:"Iure6Yx5-oWVZI0r-17AeZZJprVA4XQ0",category:"handwriting",url:"https://fonts.gstatic.com/s/neonderthaw/v8/Iure6Yx5-oWVZI0r-17AeZZJprVA4XQ0.ttf",weight:400,isVariable:!1},{displayName:"Manufacturing Consent",filename:"N0bL2TVONuFkPkuHfiECSLCwuZS-D-IsakikR6QvbfFYLA",category:"display",url:"https://fonts.gstatic.com/s/manufacturingconsent/v1/N0bL2TVONuFkPkuHfiECSLCwuZS-D-IsakikR6QvbfFYLA.ttf",weight:400,isVariable:!1},{displayName:"Noto Rashi Hebrew",filename:"EJRMQh82XsIK-QFmqXk4zvLwFVya0utA2omSrzS8",category:"serif",url:"https://fonts.gstatic.com/s/notorashihebrew/v28/EJRMQh82XsIK-QFmqXk4zvLwFVya0utA2omSrzS8.ttf",weight:400,isVariable:!0},{displayName:"Mrs Sheppards",filename:"PN_2Rfm9snC0XUGoEZhb91ig3vjxynMix4Y",category:"handwriting",url:"https://fonts.gstatic.com/s/mrssheppards/v25/PN_2Rfm9snC0XUGoEZhb91ig3vjxynMix4Y.ttf",weight:400,isVariable:!1},{displayName:"Revalia",filename:"WwkexPimBE2-4ZPEeVruNIgJSNM",category:"display",url:"https://fonts.gstatic.com/s/revalia/v24/WwkexPimBE2-4ZPEeVruNIgJSNM.ttf",weight:400,isVariable:!1},{displayName:"Tiro Gurmukhi",filename:"x3dmckXSYq-Uqjc048JUF7Jvly7HAQsyA2Y",category:"serif",url:"https://fonts.gstatic.com/s/tirogurmukhi/v6/x3dmckXSYq-Uqjc048JUF7Jvly7HAQsyA2Y.ttf",weight:400,isVariable:!1},{displayName:"Playwrite AU NSW",filename:"6qLbKY4NtxD-qVlIPUIPenElWCCEQxMAZkM1pn4",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteaunsw/v11/6qLbKY4NtxD-qVlIPUIPenElWCCEQxMAZkM1pn4.ttf",weight:400,isVariable:!0},{displayName:"Praise",filename:"qkBUXvUZ-cnFXcFyDvO67L9XmQ",category:"handwriting",url:"https://fonts.gstatic.com/s/praise/v9/qkBUXvUZ-cnFXcFyDvO67L9XmQ.ttf",weight:400,isVariable:!1},{displayName:"Babylonica",filename:"5aUw9_i2qxWVCAE2aHjTqDJ0-VVMoEw",category:"handwriting",url:"https://fonts.gstatic.com/s/babylonica/v7/5aUw9_i2qxWVCAE2aHjTqDJ0-VVMoEw.ttf",weight:400,isVariable:!1},{displayName:"Momo Trust Display",filename:"WWXPlieNYgyPZLyBUuEkKZFhFHyjqb1un2xNNgNa1A",category:"sans-serif",url:"https://fonts.gstatic.com/s/momotrustdisplay/v2/WWXPlieNYgyPZLyBUuEkKZFhFHyjqb1un2xNNgNa1A.ttf",weight:400,isVariable:!1},{displayName:"Jim Nightshade",filename:"PlIkFlu9Pb08Q8HLM1PxmB0g-OS4V3qKaMxD",category:"handwriting",url:"https://fonts.gstatic.com/s/jimnightshade/v21/PlIkFlu9Pb08Q8HLM1PxmB0g-OS4V3qKaMxD.ttf",weight:400,isVariable:!1},{displayName:"Playwrite AU QLD",filename:"SlGLmR-Yo5oYZX5BFVcEwSFSOXBRQgviqWC_O7Y",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteauqld/v11/SlGLmR-Yo5oYZX5BFVcEwSFSOXBRQgviqWC_O7Y.ttf",weight:400,isVariable:!0},{displayName:"Ranga",filename:"C8ct4cYisGb28p6CLDwZwmGE",category:"display",url:"https://fonts.gstatic.com/s/ranga/v22/C8ct4cYisGb28p6CLDwZwmGE.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Lao",filename:"3y946bYwcCjmsU8JEzCMxEwQfFpAsZsUPves",category:"serif",url:"https://fonts.gstatic.com/s/notoseriflao/v29/3y946bYwcCjmsU8JEzCMxEwQfFpAsZsUPves.ttf",weight:400,isVariable:!0},{displayName:"Bonbon",filename:"0FlVVPeVlFec4ee_cDEAbQY5-A",category:"handwriting",url:"https://fonts.gstatic.com/s/bonbon/v32/0FlVVPeVlFec4ee_cDEAbQY5-A.ttf",weight:400,isVariable:!1},{displayName:"Rubik Gemstones",filename:"zrf90HrL0-_8Xb4DFM2rUkWbOVrOiCnGqi1GMw",category:"display",url:"https://fonts.gstatic.com/s/rubikgemstones/v1/zrf90HrL0-_8Xb4DFM2rUkWbOVrOiCnGqi1GMw.ttf",weight:400,isVariable:!1},{displayName:"Wittgenstein",filename:"WBLirEDOakJCHParhXGwMgvoLOqtgE5h0A",category:"serif",url:"https://fonts.gstatic.com/s/wittgenstein/v4/WBLirEDOakJCHParhXGwMgvoLOqtgE5h0A.ttf",weight:400,isVariable:!0},{displayName:"Dhurjati",filename:"_6_8ED3gSeatXfFiFX3ySKQtuTA2",category:"sans-serif",url:"https://fonts.gstatic.com/s/dhurjati/v27/_6_8ED3gSeatXfFiFX3ySKQtuTA2.ttf",weight:400,isVariable:!1},{displayName:"Tiro Kannada",filename:"CSR44ztKmvqaDxEDJFY7CIYKSPl6tOU9Eg",category:"serif",url:"https://fonts.gstatic.com/s/tirokannada/v6/CSR44ztKmvqaDxEDJFY7CIYKSPl6tOU9Eg.ttf",weight:400,isVariable:!1},{displayName:"Emblema One",filename:"nKKT-GQ0F5dSY8vzG0rOEIRBHl57G_f_",category:"display",url:"https://fonts.gstatic.com/s/emblemaone/v22/nKKT-GQ0F5dSY8vzG0rOEIRBHl57G_f_.ttf",weight:400,isVariable:!1},{displayName:"Cascadia Code",filename:"qWcsB6-zq5zxD57cT5s916v3WDzRtjkho4M",category:"sans-serif",url:"https://fonts.gstatic.com/s/cascadiacode/v5/qWcsB6-zq5zxD57cT5s916v3WDzRtjkho4M.ttf",weight:400,isVariable:!0},{displayName:"Asta Sans",filename:"XoHk2Y74XaWovvhMb0ctv_0tnjvw8Q",category:"sans-serif",url:"https://fonts.gstatic.com/s/astasans/v3/XoHk2Y74XaWovvhMb0ctv_0tnjvw8Q.ttf",weight:400,isVariable:!0},{displayName:"Alumni Sans Inline One",filename:"RrQBbpJx9zZ3IXTBOASKp5gJAetBdaihcjbpD3AZcr7xbYw",category:"display",url:"https://fonts.gstatic.com/s/alumnisansinlineone/v7/RrQBbpJx9zZ3IXTBOASKp5gJAetBdaihcjbpD3AZcr7xbYw.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Gujarati",filename:"hESt6WBlOixO-3OJ1FTmTsmqlBRUJBVkaAhpVQOwBDU",category:"serif",url:"https://fonts.gstatic.com/s/notoserifgujarati/v29/hESt6WBlOixO-3OJ1FTmTsmqlBRUJBVkaAhpVQOwBDU.ttf",weight:400,isVariable:!0},{displayName:"Agu Display",filename:"iJWABXKbbi6BeMC1_RX7qEXexox2ztOU",category:"display",url:"https://fonts.gstatic.com/s/agudisplay/v3/iJWABXKbbi6BeMC1_RX7qEXexox2ztOU.ttf",weight:400,isVariable:!1},{displayName:"Langar",filename:"kJEyBukW7AIlgjGVrTVZ99sqrQ",category:"display",url:"https://fonts.gstatic.com/s/langar/v30/kJEyBukW7AIlgjGVrTVZ99sqrQ.ttf",weight:400,isVariable:!1},{displayName:"Dai Banna SIL",filename:"lW-4wj0AJWmpwGyJ2uEoA4I7jS6AKsLhJgo",category:"serif",url:"https://fonts.gstatic.com/s/daibannasil/v2/lW-4wj0AJWmpwGyJ2uEoA4I7jS6AKsLhJgo.ttf",weight:400,isVariable:!1},{displayName:"Mozilla Text",filename:"SZc-3FrnJ7S7WZIff2mJ7Tbz6BlLiCcUGA",category:"sans-serif",url:"https://fonts.gstatic.com/s/mozillatext/v1/SZc-3FrnJ7S7WZIff2mJ7Tbz6BlLiCcUGA.ttf",weight:400,isVariable:!0},{displayName:"BioRhyme Expanded",filename:"i7dQIE1zZzytGswgU577CDY9LjbffySURXCPYsje",category:"serif",url:"https://fonts.gstatic.com/s/biorhymeexpanded/v23/i7dQIE1zZzytGswgU577CDY9LjbffySURXCPYsje.ttf",weight:400,isVariable:!1},{displayName:"Hanalei Fill",filename:"fC1mPYtObGbfyQznIaQzPQiMVwLBplm9aw",category:"display",url:"https://fonts.gstatic.com/s/hanaleifill/v23/fC1mPYtObGbfyQznIaQzPQiMVwLBplm9aw.ttf",weight:400,isVariable:!1},{displayName:"Chenla",filename:"SZc43FDpIKu8WZ9eXxfonUPL6Q",category:"display",url:"https://fonts.gstatic.com/s/chenla/v25/SZc43FDpIKu8WZ9eXxfonUPL6Q.ttf",weight:400,isVariable:!1},{displayName:"Aref Ruqaa Ink",filename:"1q2fY5WOGUFlt84GTOkP6Kdx72ThVIGpgnxL",category:"serif",url:"https://fonts.gstatic.com/s/arefruqaaink/v11/1q2fY5WOGUFlt84GTOkP6Kdx72ThVIGpgnxL.ttf",weight:400,isVariable:!1},{displayName:"Playpen Sans Arabic",filename:"KtkxAKiSeo38bkPvhIqjU6aCgha2der-fY5q4szgE-Q",category:"handwriting",url:"https://fonts.gstatic.com/s/playpensansarabic/v8/KtkxAKiSeo38bkPvhIqjU6aCgha2der-fY5q4szgE-Q.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Hanunoo",filename:"f0Xs0fCv8dxkDWlZSoXOj6CphMloFsEsEpgL_ix2",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanshanunoo/v22/f0Xs0fCv8dxkDWlZSoXOj6CphMloFsEsEpgL_ix2.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Khmer",filename:"-F6qfidqLzI2JPCkXAO2hmogq0148ldPg-IUDNg",category:"serif",url:"https://fonts.gstatic.com/s/notoserifkhmer/v29/-F6qfidqLzI2JPCkXAO2hmogq0148ldPg-IUDNg.ttf",weight:400,isVariable:!0},{displayName:"Flavors",filename:"FBV2dDrhxqmveJTpbkzlNqkG9UY",category:"display",url:"https://fonts.gstatic.com/s/flavors/v28/FBV2dDrhxqmveJTpbkzlNqkG9UY.ttf",weight:400,isVariable:!1},{displayName:"Kumar One Outline",filename:"Noao6VH62pyLP0fsrZ-v18wlUEcX9zDwRQu8EGKF",category:"display",url:"https://fonts.gstatic.com/s/kumaroneoutline/v20/Noao6VH62pyLP0fsrZ-v18wlUEcX9zDwRQu8EGKF.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Tamil",filename:"LYjZdHr-klIgTfc40komjQ5OObazeJSY8z6Np1k",category:"serif",url:"https://fonts.gstatic.com/s/notoseriftamil/v31/LYjZdHr-klIgTfc40komjQ5OObazeJSY8z6Np1k.ttf",weight:400,isVariable:!0},{displayName:"Oldenburg",filename:"fC1jPY5JYWzbywv7c4V6UU6oXyndrw",category:"display",url:"https://fonts.gstatic.com/s/oldenburg/v24/fC1jPY5JYWzbywv7c4V6UU6oXyndrw.ttf",weight:400,isVariable:!1},{displayName:"Sirin Stencil",filename:"mem4YaWwznmLx-lzGfN7MdRydchGBq6al6o",category:"display",url:"https://fonts.gstatic.com/s/sirinstencil/v27/mem4YaWwznmLx-lzGfN7MdRydchGBq6al6o.ttf",weight:400,isVariable:!1},{displayName:"Gidugu",filename:"L0x8DFMkk1Uf6w3RvPCmRSlUig",category:"sans-serif",url:"https://fonts.gstatic.com/s/gidugu/v28/L0x8DFMkk1Uf6w3RvPCmRSlUig.ttf",weight:400,isVariable:!1},{displayName:"Libertinus Math",filename:"Gw6iwc3770TVMoHVurPejWtfenRLv_KJt3R-2Q",category:"display",url:"https://fonts.gstatic.com/s/libertinusmath/v1/Gw6iwc3770TVMoHVurPejWtfenRLv_KJt3R-2Q.ttf",weight:400,isVariable:!1},{displayName:"Molle",filename:"E21n_dL5hOXFhWEsXzgmVydREus",category:"handwriting",url:"https://fonts.gstatic.com/s/molle/v25/E21n_dL5hOXFhWEsXzgmVydREus.ttf",weight:400,isVariable:!1},{displayName:"Diplomata",filename:"Cn-0JtiMXwhNwp-wKxyfYGxYrdM9Sg",category:"display",url:"https://fonts.gstatic.com/s/diplomata/v33/Cn-0JtiMXwhNwp-wKxyfYGxYrdM9Sg.ttf",weight:400,isVariable:!1},{displayName:"Foldit",filename:"aFTV7PF3Y3c9WdjXpje0CYWVaQ",category:"display",url:"https://fonts.gstatic.com/s/foldit/v8/aFTV7PF3Y3c9WdjXpje0CYWVaQ.ttf",weight:400,isVariable:!0},{displayName:"Ponomar",filename:"or3iQ6zp3fKD2wImbJTdArg8hzo",category:"display",url:"https://fonts.gstatic.com/s/ponomar/v5/or3iQ6zp3fKD2wImbJTdArg8hzo.ttf",weight:400,isVariable:!1},{displayName:"Ancizar Serif",filename:"PN_2RfmxrmD9dEi_Qbtf91W13vjxynMix4Y",category:"serif",url:"https://fonts.gstatic.com/s/ancizarserif/v8/PN_2RfmxrmD9dEi_Qbtf91W13vjxynMix4Y.ttf",weight:400,isVariable:!0},{displayName:"Iansui",filename:"w8gbH2UoTuUp5bOajSGD1FcXoQ",category:"handwriting",url:"https://fonts.gstatic.com/s/iansui/v8/w8gbH2UoTuUp5bOajSGD1FcXoQ.ttf",weight:400,isVariable:!1},{displayName:"Snippet",filename:"bWt47f7XfQH9Gupu2v_Afcp9QWc",category:"sans-serif",url:"https://fonts.gstatic.com/s/snippet/v21/bWt47f7XfQH9Gupu2v_Afcp9QWc.ttf",weight:400,isVariable:!1},{displayName:"Jacquard 24",filename:"jVyO7nf_B2zO5jVpUGU8lgQEdchf9xXp",category:"display",url:"https://fonts.gstatic.com/s/jacquard24/v4/jVyO7nf_B2zO5jVpUGU8lgQEdchf9xXp.ttf",weight:400,isVariable:!1},{displayName:"Arsenal SC",filename:"x3dlckLHea6e5BEtsfxiXNossybsHQI",category:"sans-serif",url:"https://fonts.gstatic.com/s/arsenalsc/v1/x3dlckLHea6e5BEtsfxiXNossybsHQI.ttf",weight:400,isVariable:!1},{displayName:"Libertinus Sans",filename:"YA9Lr0-a6k7ZLbw_dle4knJh2cqMjt3V_dB0Yw",category:"sans-serif",url:"https://fonts.gstatic.com/s/libertinussans/v1/YA9Lr0-a6k7ZLbw_dle4knJh2cqMjt3V_dB0Yw.ttf",weight:400,isVariable:!1},{displayName:"Tsukimi Rounded",filename:"sJoc3LJNksWZO0LvnZwkF3HtoB7tPXMOP5gP1A",category:"sans-serif",url:"https://fonts.gstatic.com/s/tsukimirounded/v14/sJoc3LJNksWZO0LvnZwkF3HtoB7tPXMOP5gP1A.ttf",weight:400,isVariable:!1},{displayName:"Bungee Tint",filename:"J7abnpl_EGtUEuAJwN9WmrtKMDwTpTkB",category:"display",url:"https://fonts.gstatic.com/s/bungeetint/v3/J7abnpl_EGtUEuAJwN9WmrtKMDwTpTkB.ttf",weight:400,isVariable:!1},{displayName:"Playwrite PL",filename:"0QInMXVf_4C2VH-yUr5uz72O85bS8ANesw",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritepl/v10/0QInMXVf_4C2VH-yUr5uz72O85bS8ANesw.ttf",weight:400,isVariable:!0},{displayName:"Trochut",filename:"CHyjV-fDDlP9bDIw5nSIfVIPLns",category:"display",url:"https://fonts.gstatic.com/s/trochut/v24/CHyjV-fDDlP9bDIw5nSIfVIPLns.ttf",weight:400,isVariable:!1},{displayName:"Annapurna SIL",filename:"yYLv0hDY0f2iu9tPmRWtllid8NN9dZT_PZs",category:"serif",url:"https://fonts.gstatic.com/s/annapurnasil/v2/yYLv0hDY0f2iu9tPmRWtllid8NN9dZT_PZs.ttf",weight:400,isVariable:!1},{displayName:"Epunda Sans",filename:"ea8dads_Rv3-GJfWRrHjgE5Fq16dCmit",category:"sans-serif",url:"https://fonts.gstatic.com/s/epundasans/v5/ea8dads_Rv3-GJfWRrHjgE5Fq16dCmit.ttf",weight:400,isVariable:!0},{displayName:"Edu VIC WA NT Beginner",filename:"jizLRF1BuW9OwcnNPxLl4KfZCHd9nFtd5Tu7qNuL4o61H_E",category:"handwriting",url:"https://fonts.gstatic.com/s/eduvicwantbeginner/v6/jizLRF1BuW9OwcnNPxLl4KfZCHd9nFtd5Tu7qNuL4o61H_E.ttf",weight:400,isVariable:!0},{displayName:"Love Light",filename:"t5tlIR0TNJyZWimpNAXDjKbCyTHuspo",category:"handwriting",url:"https://fonts.gstatic.com/s/lovelight/v8/t5tlIR0TNJyZWimpNAXDjKbCyTHuspo.ttf",weight:400,isVariable:!1},{displayName:"Chiron GoRound TC",filename:"tss3AopDbiwZ4xauFDX3yQ3Ywoaj6lla8dMgPgBu",category:"sans-serif",url:"https://fonts.gstatic.com/s/chirongoroundtc/v3/tss3AopDbiwZ4xauFDX3yQ3Ywoaj6lla8dMgPgBu.ttf",weight:400,isVariable:!0},{displayName:"Science Gothic",filename:"CHy6V-7EH1X7aiQh5jPNDTJnVVokpGVYYYVm",category:"sans-serif",url:"https://fonts.gstatic.com/s/sciencegothic/v5/CHy6V-7EH1X7aiQh5jPNDTJnVVokpGVYYYVm.ttf",weight:400,isVariable:!0},{displayName:"Diphylleia",filename:"DtVmJxCtRKMixK4_HXsIulwm6gDXvwE",category:"serif",url:"https://fonts.gstatic.com/s/diphylleia/v2/DtVmJxCtRKMixK4_HXsIulwm6gDXvwE.ttf",weight:400,isVariable:!1},{displayName:"Playwrite US Modern",filename:"H4c7BWmRlMXPhla3hmMaveiYz8nSDkIFNtk6Z7xL8AQ",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteusmodern/v11/H4c7BWmRlMXPhla3hmMaveiYz8nSDkIFNtk6Z7xL8AQ.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Anatolian Hieroglyphs",filename:"ijw9s4roRME5LLRxjsRb8A0gKPSWq4BbDmHHu6j2pEtUJzZWXybIymc5QYo",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansanatolianhieroglyphs/v17/ijw9s4roRME5LLRxjsRb8A0gKPSWq4BbDmHHu6j2pEtUJzZWXybIymc5QYo.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Javanese",filename:"2V0AKJkDAIA6Hp4zoSScDjV0Y-eoHAHJ8r88Rp29eA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansjavanese/v25/2V0AKJkDAIA6Hp4zoSScDjV0Y-eoHAHJ8r88Rp29eA.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Multani",filename:"9Bty3ClF38_RfOpe1gCaZ8p30BOFO1A0pfCs5Kos",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmultani/v22/9Bty3ClF38_RfOpe1gCaZ8p30BOFO1A0pfCs5Kos.ttf",weight:400,isVariable:!1},{displayName:"Send Flowers",filename:"If2PXTjtZS-0Xqy13uCQSULvxwjjouU1iw",category:"handwriting",url:"https://fonts.gstatic.com/s/sendflowers/v7/If2PXTjtZS-0Xqy13uCQSULvxwjjouU1iw.ttf",weight:400,isVariable:!1},{displayName:"Twinkle Star",filename:"pe0pMI6IL4dPoFl9LGEmY6WaA_Rue1UwVg",category:"handwriting",url:"https://fonts.gstatic.com/s/twinklestar/v8/pe0pMI6IL4dPoFl9LGEmY6WaA_Rue1UwVg.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Tibetan",filename:"gokzH7nwAEdtF9N45n0Vaz7O-pk0wsvrFsIn6WYDvA",category:"serif",url:"https://fonts.gstatic.com/s/notoseriftibetan/v24/gokzH7nwAEdtF9N45n0Vaz7O-pk0wsvrFsIn6WYDvA.ttf",weight:400,isVariable:!0},{displayName:"Geom",filename:"X7nq4bw6Cf6jwtSdHC67_M0",category:"sans-serif",url:"https://fonts.gstatic.com/s/geom/v1/X7nq4bw6Cf6jwtSdHC67_M0.ttf",weight:400,isVariable:!0},{displayName:"Ancizar Sans",filename:"fC1mPYtHY2vX3wj8IbE7PxeMVwLBplm9aw",category:"sans-serif",url:"https://fonts.gstatic.com/s/ancizarsans/v8/fC1mPYtHY2vX3wj8IbE7PxeMVwLBplm9aw.ttf",weight:400,isVariable:!0},{displayName:"Flow Block",filename:"wlp0gwfPCEB65UmTk-d6-WZlbCBXE_I",category:"display",url:"https://fonts.gstatic.com/s/flowblock/v15/wlp0gwfPCEB65UmTk-d6-WZlbCBXE_I.ttf",weight:400,isVariable:!1},{displayName:"Are You Serious",filename:"ll8kK2GVSSr-PtjQ5nONVcNn4306hT9nCGRayg",category:"handwriting",url:"https://fonts.gstatic.com/s/areyouserious/v14/ll8kK2GVSSr-PtjQ5nONVcNn4306hT9nCGRayg.ttf",weight:400,isVariable:!1},{displayName:"WDXL Lubrifont JP N",filename:"8At1GtSkFqazDiO949fzWta9_T-SVxJiIZctoLhFRNU",category:"sans-serif",url:"https://fonts.gstatic.com/s/wdxllubrifontjpn/v2/8At1GtSkFqazDiO949fzWta9_T-SVxJiIZctoLhFRNU.ttf",weight:400,isVariable:!1},{displayName:"Story Script",filename:"mem5YaSw02SQ0OlzDuR8Isk-VeJoCqeDjg",category:"sans-serif",url:"https://fonts.gstatic.com/s/storyscript/v3/mem5YaSw02SQ0OlzDuR8Isk-VeJoCqeDjg.ttf",weight:400,isVariable:!1},{displayName:"LXGW WenKai Mono TC",filename:"pxiYyos4iPVgyWx9WtufHnsIf5nkaB0Him6CovpOkXA",category:"monospace",url:"https://fonts.gstatic.com/s/lxgwwenkaimonotc/v9/pxiYyos4iPVgyWx9WtufHnsIf5nkaB0Him6CovpOkXA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Syloti Nagri",filename:"uU9eCAQZ75uhfF9UoWDRiY3q7Sf_VFV3m4dGFVfxN87gsj0",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssylotinagri/v25/uU9eCAQZ75uhfF9UoWDRiY3q7Sf_VFV3m4dGFVfxN87gsj0.ttf",weight:400,isVariable:!1},{displayName:"TASA Explorer",filename:"K2F3fZdAt8xjBmxMCPK8UO_SJyrYYWOMluQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/tasaexplorer/v2/K2F3fZdAt8xjBmxMCPK8UO_SJyrYYWOMluQ.ttf",weight:400,isVariable:!0},{displayName:"Lunasima",filename:"wEO-EBvPh9RSOj7JFAwle94H1VIe",category:"sans-serif",url:"https://fonts.gstatic.com/s/lunasima/v1/wEO-EBvPh9RSOj7JFAwle94H1VIe.ttf",weight:400,isVariable:!1},{displayName:"Rubik Glitch Pop",filename:"tDbX2pGHhFcM0gB3hN2elZLa3G-MOwStSUrV_BE",category:"display",url:"https://fonts.gstatic.com/s/rubikglitchpop/v1/tDbX2pGHhFcM0gB3hN2elZLa3G-MOwStSUrV_BE.ttf",weight:400,isVariable:!1},{displayName:"Gidole",filename:"sZlFdR6O8zVVEiMaCJtWS6EPcA",category:"sans-serif",url:"https://fonts.gstatic.com/s/gidole/v24/sZlFdR6O8zVVEiMaCJtWS6EPcA.ttf",weight:400,isVariable:!1},{displayName:"Rubik Vinyl",filename:"iJWABXKIfDnIV4mQ5BfjvUXexox2ztOU",category:"display",url:"https://fonts.gstatic.com/s/rubikvinyl/v1/iJWABXKIfDnIV4mQ5BfjvUXexox2ztOU.ttf",weight:400,isVariable:!1},{displayName:"Playwrite AU SA",filename:"YcmusZpNS1SdgmHbGgtRuUElnR3YkgJJtci2kA",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteausa/v11/YcmusZpNS1SdgmHbGgtRuUElnR3YkgJJtci2kA.ttf",weight:400,isVariable:!0},{displayName:"Libertinus Serif",filename:"RLpkK4bw7KinajYBg0RTTwCLF5Ben6kFUHPIFaU",category:"serif",url:"https://fonts.gstatic.com/s/libertinusserif/v1/RLpkK4bw7KinajYBg0RTTwCLF5Ben6kFUHPIFaU.ttf",weight:400,isVariable:!1},{displayName:"Sedan",filename:"Yq6a-L-VVyD6-eOSiTpovf5b",category:"serif",url:"https://fonts.gstatic.com/s/sedan/v1/Yq6a-L-VVyD6-eOSiTpovf5b.ttf",weight:400,isVariable:!1},{displayName:"Kings",filename:"8AtnGsK4O5CYXU_Iq6GSPaHS",category:"handwriting",url:"https://fonts.gstatic.com/s/kings/v9/8AtnGsK4O5CYXU_Iq6GSPaHS.ttf",weight:400,isVariable:!1},{displayName:"Sassy Frass",filename:"LhWhMVrGOe0FLb97BjhsE99dGNWQg_am",category:"handwriting",url:"https://fonts.gstatic.com/s/sassyfrass/v9/LhWhMVrGOe0FLb97BjhsE99dGNWQg_am.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Coptic",filename:"iJWfBWmUZi_OHPqn4wq6kgqumOEd78u_VG0xR4Y",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanscoptic/v22/iJWfBWmUZi_OHPqn4wq6kgqumOEd78u_VG0xR4Y.ttf",weight:400,isVariable:!1},{displayName:"Rubik Spray Paint",filename:"WnzhHBAoeBPUDTB4EWR82y6EXWPH-Ro-QoaBZQxP",category:"display",url:"https://fonts.gstatic.com/s/rubikspraypaint/v1/WnzhHBAoeBPUDTB4EWR82y6EXWPH-Ro-QoaBZQxP.ttf",weight:400,isVariable:!1},{displayName:"Labrada",filename:"ieV-2Y9HLWefIpOyDV5ALUIfEcs",category:"serif",url:"https://fonts.gstatic.com/s/labrada/v4/ieV-2Y9HLWefIpOyDV5ALUIfEcs.ttf",weight:400,isVariable:!0},{displayName:"Bahianita",filename:"yYLr0hTb3vuqqsBUgxWtxTvV2NJPcA",category:"display",url:"https://fonts.gstatic.com/s/bahianita/v23/yYLr0hTb3vuqqsBUgxWtxTvV2NJPcA.ttf",weight:400,isVariable:!1},{displayName:"Aubrey",filename:"q5uGsou7NPBw-p7vugNsCxVEgA",category:"display",url:"https://fonts.gstatic.com/s/aubrey/v29/q5uGsou7NPBw-p7vugNsCxVEgA.ttf",weight:400,isVariable:!1},{displayName:"Butterfly Kids",filename:"ll8lK2CWTjuqAsXDqlnIbMNs5S4arxFrAX1D",category:"handwriting",url:"https://fonts.gstatic.com/s/butterflykids/v27/ll8lK2CWTjuqAsXDqlnIbMNs5S4arxFrAX1D.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Mongolian",filename:"VdGCAYADGIwE0EopZx8xQfHlgEAMsrToxLsg6-av1x0",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmongolian/v23/VdGCAYADGIwE0EopZx8xQfHlgEAMsrToxLsg6-av1x0.ttf",weight:400,isVariable:!1},{displayName:"Edu SA Hand",filename:"mem6YaOmw37C-ogAJfd7Np0ef8xkA76a",category:"handwriting",url:"https://fonts.gstatic.com/s/edusahand/v3/mem6YaOmw37C-ogAJfd7Np0ef8xkA76a.ttf",weight:400,isVariable:!0},{displayName:"Huninn",filename:"OpNNnoINg9bQ4xkpjiHQjittXw",category:"sans-serif",url:"https://fonts.gstatic.com/s/huninn/v2/OpNNnoINg9bQ4xkpjiHQjittXw.ttf",weight:400,isVariable:!1},{displayName:"Redacted Script",filename:"ypvBbXGRglhokR7dcC3d1-R6zmxSsWTxkZkr_g",category:"display",url:"https://fonts.gstatic.com/s/redactedscript/v12/ypvBbXGRglhokR7dcC3d1-R6zmxSsWTxkZkr_g.ttf",weight:400,isVariable:!1},{displayName:"Snowburst One",filename:"MQpS-WezKdujBsXY3B7I-UT7eZ-UPyacPbo",category:"display",url:"https://fonts.gstatic.com/s/snowburstone/v21/MQpS-WezKdujBsXY3B7I-UT7eZ-UPyacPbo.ttf",weight:400,isVariable:!1},{displayName:"Edu NSW ACT Foundation",filename:"raxsHjqJtsNBFUi8WO0vUBgc9D-2lV_oQdCAeFBdseyoHko",category:"handwriting",url:"https://fonts.gstatic.com/s/edunswactfoundation/v5/raxsHjqJtsNBFUi8WO0vUBgc9D-2lV_oQdCAeFBdseyoHko.ttf",weight:400,isVariable:!0},{displayName:"BBH Bartle",filename:"zYXjKVYuMYMaN-IMqP3RSm6Tkd7_CIc",category:"sans-serif",url:"https://fonts.gstatic.com/s/bbhbartle/v1/zYXjKVYuMYMaN-IMqP3RSm6Tkd7_CIc.ttf",weight:400,isVariable:!1},{displayName:"Danfo",filename:"snfks0u_98t16SvUCZwCP8F9",category:"serif",url:"https://fonts.gstatic.com/s/danfo/v5/snfks0u_98t16SvUCZwCP8F9.ttf",weight:400,isVariable:!1},{displayName:"Taprom",filename:"UcCn3F82JHycULbFQyk3-0kvHg",category:"display",url:"https://fonts.gstatic.com/s/taprom/v29/UcCn3F82JHycULbFQyk3-0kvHg.ttf",weight:400,isVariable:!1},{displayName:"Playwrite AU TAS",filename:"Gfte7u9QuxsdI_QuuctXue3Elxxmah3VesW0BfM",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteautas/v11/Gfte7u9QuxsdI_QuuctXue3Elxxmah3VesW0BfM.ttf",weight:400,isVariable:!0},{displayName:"Rubik Beastly",filename:"0QImMXRd5oOmSC2ZQ7o9653X07z8_ApHqqk",category:"display",url:"https://fonts.gstatic.com/s/rubikbeastly/v11/0QImMXRd5oOmSC2ZQ7o9653X07z8_ApHqqk.ttf",weight:400,isVariable:!1},{displayName:"Chiron Hei HK",filename:"wXKtE3MSr44vpVKPvzqVJaxhvXcZsdDTlos",category:"sans-serif",url:"https://fonts.gstatic.com/s/chironheihk/v4/wXKtE3MSr44vpVKPvzqVJaxhvXcZsdDTlos.ttf",weight:400,isVariable:!0},{displayName:"Geostar",filename:"sykz-yx4n701VLOftSq9-trEvlQ",category:"display",url:"https://fonts.gstatic.com/s/geostar/v27/sykz-yx4n701VLOftSq9-trEvlQ.ttf",weight:400,isVariable:!1},{displayName:"Rubik Burned",filename:"Jqzk5TmOVOqQHihKqPpscqniHQuaCY5ZSg",category:"display",url:"https://fonts.gstatic.com/s/rubikburned/v1/Jqzk5TmOVOqQHihKqPpscqniHQuaCY5ZSg.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Adlam",filename:"neITzCCpqp0s5pPusPamd81eMfjVqVkarSqSwA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansadlam/v27/neITzCCpqp0s5pPusPamd81eMfjVqVkarSqSwA.ttf",weight:400,isVariable:!0},{displayName:"Ubuntu Sans Mono",filename:"jVyR7mzgBHrR5yE7ZyRg0QRJMKI41g3CfRXxWZQ",category:"monospace",url:"https://fonts.gstatic.com/s/ubuntusansmono/v3/jVyR7mzgBHrR5yE7ZyRg0QRJMKI41g3CfRXxWZQ.ttf",weight:400,isVariable:!0},{displayName:"Combo",filename:"BXRlvF3Jh_fIhg0iBu9y8Hf0",category:"display",url:"https://fonts.gstatic.com/s/combo/v22/BXRlvF3Jh_fIhg0iBu9y8Hf0.ttf",weight:400,isVariable:!1},{displayName:"Cascadia Mono",filename:"TUZ2zw5pquJF3iuizJDZYqr1WZUt0W3r4WA",category:"sans-serif",url:"https://fonts.gstatic.com/s/cascadiamono/v5/TUZ2zw5pquJF3iuizJDZYqr1WZUt0W3r4WA.ttf",weight:400,isVariable:!0},{displayName:"Playwrite GB S",filename:"oPWW_kFkk-s1Xclhmlemy7jsNR53bHiez1PV",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritegbs/v12/oPWW_kFkk-s1Xclhmlemy7jsNR53bHiez1PV.ttf",weight:400,isVariable:!0},{displayName:"Noto Serif Tangut",filename:"xn76YGc72GKoTvER4Gn3b4m9Ern7Em41fcvN2KT4",category:"serif",url:"https://fonts.gstatic.com/s/notoseriftangut/v19/xn76YGc72GKoTvER4Gn3b4m9Ern7Em41fcvN2KT4.ttf",weight:400,isVariable:!1},{displayName:"Edu AU VIC WA NT Dots",filename:"S6ujw5FFVDKI3kwwDUbsPHCpzZNhzrA3or3lDKWpMFUwWQ",category:"handwriting",url:"https://fonts.gstatic.com/s/eduauvicwantdots/v4/S6ujw5FFVDKI3kwwDUbsPHCpzZNhzrA3or3lDKWpMFUwWQ.ttf",weight:400,isVariable:!0},{displayName:"Splash",filename:"KtksAL2RZoDkbU6hpPPGNdS6wg",category:"handwriting",url:"https://fonts.gstatic.com/s/splash/v8/KtksAL2RZoDkbU6hpPPGNdS6wg.ttf",weight:400,isVariable:!1},{displayName:"Jacquarda Bastarda 9",filename:"f0Xp0fWr_8t6WFtKQJfOhaC0hcZ1HYAMAbwD1TB_JHHY",category:"display",url:"https://fonts.gstatic.com/s/jacquardabastarda9/v6/f0Xp0fWr_8t6WFtKQJfOhaC0hcZ1HYAMAbwD1TB_JHHY.ttf",weight:400,isVariable:!1},{displayName:"Workbench",filename:"FeVSS05Gp6Et7FcfbPFQ3Z5nm29Gww",category:"monospace",url:"https://fonts.gstatic.com/s/workbench/v3/FeVSS05Gp6Et7FcfbPFQ3Z5nm29Gww.ttf",weight:400,isVariable:!1},{displayName:"Tai Heritage Pro",filename:"sZlfdQid-zgaNiNIYcUzJMU3IYyNoHxSENxuLuE",category:"serif",url:"https://fonts.gstatic.com/s/taiheritagepro/v9/sZlfdQid-zgaNiNIYcUzJMU3IYyNoHxSENxuLuE.ttf",weight:400,isVariable:!1},{displayName:"WDXL Lubrifont SC",filename:"gNMeW2VmY6acu0XtugFrduDciOOyfny5mD9ASHz5",category:"sans-serif",url:"https://fonts.gstatic.com/s/wdxllubrifontsc/v2/gNMeW2VmY6acu0XtugFrduDciOOyfny5mD9ASHz5.ttf",weight:400,isVariable:!1},{displayName:"Moulpali",filename:"H4ckBXKMl9HagUWymyY6wr-wg763",category:"sans-serif",url:"https://fonts.gstatic.com/s/moulpali/v33/H4ckBXKMl9HagUWymyY6wr-wg763.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Mahajani",filename:"-F6sfiVqLzI2JPCgQBnw60Agp0JrvD5Fh8ARHNh4zg",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmahajani/v20/-F6sfiVqLzI2JPCgQBnw60Agp0JrvD5Fh8ARHNh4zg.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Vithkuqi",filename:"YA9Pr1OY7FjTf5szakutkndpw9HH-4a41dFGZiCpggI",category:"serif",url:"https://fonts.gstatic.com/s/notoserifvithkuqi/v3/YA9Pr1OY7FjTf5szakutkndpw9HH-4a41dFGZiCpggI.ttf",weight:400,isVariable:!0},{displayName:"Protest Guerrilla",filename:"Qw3HZR5PDSL6K3irtrY-VJB2YzARHV0koJ8y_eiS",category:"display",url:"https://fonts.gstatic.com/s/protestguerrilla/v2/Qw3HZR5PDSL6K3irtrY-VJB2YzARHV0koJ8y_eiS.ttf",weight:400,isVariable:!1},{displayName:"Playwrite NO",filename:"nuF-D_fYSZviRJYb-P2TrQOvBjiqFTrghA",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteno/v10/nuF-D_fYSZviRJYb-P2TrQOvBjiqFTrghA.ttf",weight:400,isVariable:!0},{displayName:"Tiro Tamil",filename:"m8JXjfVIf7OT22n3M-S_ULRvamODxdI",category:"serif",url:"https://fonts.gstatic.com/s/tirotamil/v11/m8JXjfVIf7OT22n3M-S_ULRvamODxdI.ttf",weight:400,isVariable:!1},{displayName:"Black And White Picture",filename:"TwMe-JAERlQd3ooUHBUXGmrmioKjjnRSFO-NqI5HbcMi-yWY",category:"display",url:"https://fonts.gstatic.com/s/blackandwhitepicture/v30/TwMe-JAERlQd3ooUHBUXGmrmioKjjnRSFO-NqI5HbcMi-yWY.ttf",weight:400,isVariable:!1},{displayName:"Stack Sans Notch",filename:"TwMV-JcVXlQd3ooGEx9EbUzgioTr_h0bZJL-1a8",category:"sans-serif",url:"https://fonts.gstatic.com/s/stacksansnotch/v5/TwMV-JcVXlQd3ooGEx9EbUzgioTr_h0bZJL-1a8.ttf",weight:400,isVariable:!0},{displayName:"Playwrite CU Guides",filename:"c4m81mZtG8v6p3iAoFBJ2dJdu9fWPSaOFooIDQtJbok",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritecuguides/v1/c4m81mZtG8v6p3iAoFBJ2dJdu9fWPSaOFooIDQtJbok.ttf",weight:400,isVariable:!1},{displayName:"M PLUS Code Latin",filename:"hv-MlyV-aXg7x7tULiNXXBA0Np4WMTUULmBGjSwZ",category:"sans-serif",url:"https://fonts.gstatic.com/s/mpluscodelatin/v16/hv-MlyV-aXg7x7tULiNXXBA0Np4WMTUULmBGjSwZ.ttf",weight:400,isVariable:!0},{displayName:"Momo Trust Sans",filename:"BXRzvFfHh_fFyXlQWZgO0TyUN7P31beyoRkJIA",category:"sans-serif",url:"https://fonts.gstatic.com/s/momotrustsans/v4/BXRzvFfHh_fFyXlQWZgO0TyUN7P31beyoRkJIA.ttf",weight:400,isVariable:!0},{displayName:"Chokokutai",filename:"kmK4Zqw4HwvCeHGM8Fws9y7ypu1Kr7I",category:"display",url:"https://fonts.gstatic.com/s/chokokutai/v12/kmK4Zqw4HwvCeHGM8Fws9y7ypu1Kr7I.ttf",weight:400,isVariable:!1},{displayName:"Vibes",filename:"QdVYSTsmIB6tmbd3HpbsuBlh",category:"display",url:"https://fonts.gstatic.com/s/vibes/v16/QdVYSTsmIB6tmbd3HpbsuBlh.ttf",weight:400,isVariable:!1},{displayName:"Zen Loop",filename:"h0GrssK16UsnJwHsEK9zqwzX5vOG",category:"display",url:"https://fonts.gstatic.com/s/zenloop/v11/h0GrssK16UsnJwHsEK9zqwzX5vOG.ttf",weight:400,isVariable:!1},{displayName:"Tagesschrift",filename:"pe0pMI6IOYlEuEZ7ZEA7ZKOaA_Rue1UwVg",category:"display",url:"https://fonts.gstatic.com/s/tagesschrift/v2/pe0pMI6IOYlEuEZ7ZEA7ZKOaA_Rue1UwVg.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Carian",filename:"LDIpaoiONgYwA9Yc6f0gUILeMIOgs7ob9yGLmfI",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanscarian/v17/LDIpaoiONgYwA9Yc6f0gUILeMIOgs7ob9yGLmfI.ttf",weight:400,isVariable:!1},{displayName:"Rubik Puddles",filename:"1Ptog8bYX_qGnkLkrU5MJsQcJfC0wVMT-aE",category:"display",url:"https://fonts.gstatic.com/s/rubikpuddles/v2/1Ptog8bYX_qGnkLkrU5MJsQcJfC0wVMT-aE.ttf",weight:400,isVariable:!1},{displayName:"Ruge Boogie",filename:"JIA3UVFwbHRF_GIWSMhKNROiPzUveSxy",category:"handwriting",url:"https://fonts.gstatic.com/s/rugeboogie/v30/JIA3UVFwbHRF_GIWSMhKNROiPzUveSxy.ttf",weight:400,isVariable:!1},{displayName:"Rock 3D",filename:"yYLp0hrL0PCo651513SnwRnQyNI",category:"display",url:"https://fonts.gstatic.com/s/rock3d/v13/yYLp0hrL0PCo651513SnwRnQyNI.ttf",weight:400,isVariable:!1},{displayName:"Sixtyfour Convergence",filename:"m8JMjepPf7mIglv5K__zM9srGA7wurbybZMFbehGW74OXw",category:"monospace",url:"https://fonts.gstatic.com/s/sixtyfourconvergence/v5/m8JMjepPf7mIglv5K__zM9srGA7wurbybZMFbehGW74OXw.ttf",weight:400,isVariable:!1},{displayName:"Petemoss",filename:"A2BZn5tA2xgtGWHZgxkesKb9UouQ",category:"handwriting",url:"https://fonts.gstatic.com/s/petemoss/v9/A2BZn5tA2xgtGWHZgxkesKb9UouQ.ttf",weight:400,isVariable:!1},{displayName:"Palette Mosaic",filename:"AMOIz4aBvWuBFe3TohdW6YZ9MFiy4dxL4jSr",category:"display",url:"https://fonts.gstatic.com/s/palettemosaic/v13/AMOIz4aBvWuBFe3TohdW6YZ9MFiy4dxL4jSr.ttf",weight:400,isVariable:!1},{displayName:"Triodion",filename:"IFSnHe5TgMVEmMQV5mr5u-W10l_X",category:"display",url:"https://fonts.gstatic.com/s/triodion/v3/IFSnHe5TgMVEmMQV5mr5u-W10l_X.ttf",weight:400,isVariable:!1},{displayName:"Libertinus Mono",filename:"_gPg1RnxrjY_TDm97ApTqwneJJFToBF3YROW_w",category:"monospace",url:"https://fonts.gstatic.com/s/libertinusmono/v1/_gPg1RnxrjY_TDm97ApTqwneJJFToBF3YROW_w.ttf",weight:400,isVariable:!1},{displayName:"Estonia",filename:"7Au_p_4ijSecA1yHCCL8zkwMIFg",category:"handwriting",url:"https://fonts.gstatic.com/s/estonia/v13/7Au_p_4ijSecA1yHCCL8zkwMIFg.ttf",weight:400,isVariable:!1},{displayName:"Bitcount Grid Single",filename:"cY9afi2OU1tLpjaqQveNvbC2qfsuQPDVATvobxLCBJkS",category:"display",url:"https://fonts.gstatic.com/s/bitcountgridsingle/v3/cY9afi2OU1tLpjaqQveNvbC2qfsuQPDVATvobxLCBJkS.ttf",weight:400,isVariable:!0},{displayName:"Playwrite DK Loopet",filename:"memiYbuzy2qb3rtJGfM1FvY-GacDcsPvr6v9WSCHpm8",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritedkloopet/v6/memiYbuzy2qb3rtJGfM1FvY-GacDcsPvr6v9WSCHpm8.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Batak",filename:"gok2H6TwAEdtF9N8-mdTCQvT-Zdgo4_PHuk74A",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansbatak/v23/gok2H6TwAEdtF9N8-mdTCQvT-Zdgo4_PHuk74A.ttf",weight:400,isVariable:!1},{displayName:"Kolker Brush",filename:"iJWDBXWRZjfKWdvmzwvvog3-7KJ6x8qNUQ",category:"handwriting",url:"https://fonts.gstatic.com/s/kolkerbrush/v8/iJWDBXWRZjfKWdvmzwvvog3-7KJ6x8qNUQ.ttf",weight:400,isVariable:!1},{displayName:"Winky Rough",filename:"t5tkIRwIMoSXA0WSPBjQxIbo5z3nq4OH",category:"sans-serif",url:"https://fonts.gstatic.com/s/winkyrough/v4/t5tkIRwIMoSXA0WSPBjQxIbo5z3nq4OH.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Glagolitic",filename:"1q2ZY4-BBFBst88SU_tOj4J-4yuNF_HI4ERK4Amu7nM1",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansglagolitic/v19/1q2ZY4-BBFBst88SU_tOj4J-4yuNF_HI4ERK4Amu7nM1.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Duployan",filename:"gokzH7nwAEdtF9N8-mdTDx_X9JM5wsvrFsIn6WYDvA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansduployan/v19/gokzH7nwAEdtF9N8-mdTDx_X9JM5wsvrFsIn6WYDvA.ttf",weight:400,isVariable:!1},{displayName:"Shizuru",filename:"O4ZSFGfvnxFiCA3i30IJlgUTj2A",category:"display",url:"https://fonts.gstatic.com/s/shizuru/v13/O4ZSFGfvnxFiCA3i30IJlgUTj2A.ttf",weight:400,isVariable:!1},{displayName:"Matemasie",filename:"OD5BuMCN3ne3Gmr7dlL3rEq4DL6w2w",category:"sans-serif",url:"https://fonts.gstatic.com/s/matemasie/v4/OD5BuMCN3ne3Gmr7dlL3rEq4DL6w2w.ttf",weight:400,isVariable:!1},{displayName:"SUSE Mono",filename:"y83ZW4wN6yi9x2mTxJIsJBvFEH7yDQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/susemono/v1/y83ZW4wN6yi9x2mTxJIsJBvFEH7yDQ.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Cypro Minoan",filename:"2Eb2L_dtDUlkNmPHB_UVtEzp3ZlPGqZ_4nAGq9eSf8_eQSE",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanscyprominoan/v1/2Eb2L_dtDUlkNmPHB_UVtEzp3ZlPGqZ_4nAGq9eSf8_eQSE.ttf",weight:400,isVariable:!1},{displayName:"Rubik 80s Fade",filename:"U9MF6dW37nLSmnwZXyoV-uPXUhHwkbL8IHcK",category:"display",url:"https://fonts.gstatic.com/s/rubik80sfade/v2/U9MF6dW37nLSmnwZXyoV-uPXUhHwkbL8IHcK.ttf",weight:400,isVariable:!1},{displayName:"Libertinus Serif Display",filename:"0FlHVOmbklub_P32Hm53RVREi5BsXWudOF_Gpgcrg81gHhVOxQ",category:"display",url:"https://fonts.gstatic.com/s/libertinusserifdisplay/v2/0FlHVOmbklub_P32Hm53RVREi5BsXWudOF_Gpgcrg81gHhVOxQ.ttf",weight:400,isVariable:!1},{displayName:"Suravaram",filename:"_gP61R_usiY7SCym4xIAi261Qv9roQ",category:"serif",url:"https://fonts.gstatic.com/s/suravaram/v23/_gP61R_usiY7SCym4xIAi261Qv9roQ.ttf",weight:400,isVariable:!1},{displayName:"Playwrite HU",filename:"A2Bdn59A0g0xA3zDhFw-0vfVU7mVsM4Fqg",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritehu/v6/A2Bdn59A0g0xA3zDhFw-0vfVU7mVsM4Fqg.ttf",weight:400,isVariable:!0},{displayName:"Gajraj One",filename:"1cX2aUDCDpXsuWVb1jIjr1GqhcitzeM",category:"display",url:"https://fonts.gstatic.com/s/gajrajone/v7/1cX2aUDCDpXsuWVb1jIjr1GqhcitzeM.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Balinese",filename:"QdVKSS0-JginysQSRvuCmUMB_wVeQAxXRbgJdhapcUU",category:"serif",url:"https://fonts.gstatic.com/s/notoserifbalinese/v21/QdVKSS0-JginysQSRvuCmUMB_wVeQAxXRbgJdhapcUU.ttf",weight:400,isVariable:!1},{displayName:"Ole",filename:"dFazZf6Z-rd89fw69qJ_ew",category:"handwriting",url:"https://fonts.gstatic.com/s/ole/v3/dFazZf6Z-rd89fw69qJ_ew.ttf",weight:400,isVariable:!1},{displayName:"Tapestry",filename:"SlGTmQecrosEYXhaGBIkqnB6aSQU",category:"handwriting",url:"https://fonts.gstatic.com/s/tapestry/v6/SlGTmQecrosEYXhaGBIkqnB6aSQU.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Grantha",filename:"qkBIXuEH5NzDDvc3fLDYxPk9-Wq3WLiqFENLR7fHGw",category:"serif",url:"https://fonts.gstatic.com/s/notoserifgrantha/v22/qkBIXuEH5NzDDvc3fLDYxPk9-Wq3WLiqFENLR7fHGw.ttf",weight:400,isVariable:!1},{displayName:"Cossette Titre",filename:"11hYGpvKz1nGbxMXUWz9OdPzuiEZrPeE8cA2",category:"sans-serif",url:"https://fonts.gstatic.com/s/cossettetitre/v3/11hYGpvKz1nGbxMXUWz9OdPzuiEZrPeE8cA2.ttf",weight:400,isVariable:!1},{displayName:"Chiron Sung HK",filename:"nuFgD_XLTZPpXIpS3-3dhGzHTTKuNz_whHE_",category:"serif",url:"https://fonts.gstatic.com/s/chironsunghk/v2/nuFgD_XLTZPpXIpS3-3dhGzHTTKuNz_whHE_.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Khojki",filename:"-nFnOHM29Oofr2wohFbTuPPKVWpmK_d709jy92k",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanskhojki/v20/-nFnOHM29Oofr2wohFbTuPPKVWpmK_d709jy92k.ttf",weight:400,isVariable:!1},{displayName:"Mingzat",filename:"0QIgMX5C-o-oWWyvBttkm_mv670",category:"sans-serif",url:"https://fonts.gstatic.com/s/mingzat/v11/0QIgMX5C-o-oWWyvBttkm_mv670.ttf",weight:400,isVariable:!1},{displayName:"Cherish",filename:"ll88K2mXUyqsDsTN5iDCI6IJjg8",category:"handwriting",url:"https://fonts.gstatic.com/s/cherish/v9/ll88K2mXUyqsDsTN5iDCI6IJjg8.ttf",weight:400,isVariable:!1},{displayName:"Slackside One",filename:"EJRQQgMrXdcGsiBuvnRxodTwVy7VocNB6Iw",category:"handwriting",url:"https://fonts.gstatic.com/s/slacksideone/v14/EJRQQgMrXdcGsiBuvnRxodTwVy7VocNB6Iw.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Ethiopic",filename:"V8mZoR7-XjwJ8_Au3Ti5tXj5Rd83frpWNqU_FjYhCmo",category:"serif",url:"https://fonts.gstatic.com/s/notoserifethiopic/v32/V8mZoR7-XjwJ8_Au3Ti5tXj5Rd83frpWNqU_FjYhCmo.ttf",weight:400,isVariable:!0},{displayName:"Playwrite CA",filename:"z7NTdR_4cT0NOrEAIElil930TNeRpoq5Zg",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteca/v11/z7NTdR_4cT0NOrEAIElil930TNeRpoq5Zg.ttf",weight:400,isVariable:!0},{displayName:"WDXL Lubrifont TC",filename:"nKKN-H4mPq1yJurnWXfJE8svQHonWc_-EqxyqaA8",category:"sans-serif",url:"https://fonts.gstatic.com/s/wdxllubrifonttc/v5/nKKN-H4mPq1yJurnWXfJE8svQHonWc_-EqxyqaA8.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Avestan",filename:"bWti7ejKfBziStx7lIzKOLQZKhIJkyu9SASLji8U",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansavestan/v22/bWti7ejKfBziStx7lIzKOLQZKhIJkyu9SASLji8U.ttf",weight:400,isVariable:!1},{displayName:"Elms Sans",filename:"q5uFsoS_Lf9xv7Su1FpIAz5YiYVICQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/elmssans/v7/q5uFsoS_Lf9xv7Su1FpIAz5YiYVICQ.ttf",weight:400,isVariable:!0},{displayName:"Savate",filename:"QdVXSTgjKAqpnvJXNLjgsQB4kg",category:"sans-serif",url:"https://fonts.gstatic.com/s/savate/v5/QdVXSTgjKAqpnvJXNLjgsQB4kg.ttf",weight:400,isVariable:!0},{displayName:"Puppies Play",filename:"wlp2gwHZEV99rG6M3NR9uB9vaAJSA_JN3Q",category:"handwriting",url:"https://fonts.gstatic.com/s/puppiesplay/v11/wlp2gwHZEV99rG6M3NR9uB9vaAJSA_JN3Q.ttf",weight:400,isVariable:!1},{displayName:"Phetsarath",filename:"N0bQ2SpTP-plK0uWayAYAd79nd_QeZA",category:"sans-serif",url:"https://fonts.gstatic.com/s/phetsarath/v3/N0bQ2SpTP-plK0uWayAYAd79nd_QeZA.ttf",weight:400,isVariable:!1},{displayName:"Hanalei",filename:"E21n_dD8iufIjBRHXzgmVydREus",category:"display",url:"https://fonts.gstatic.com/s/hanalei/v24/E21n_dD8iufIjBRHXzgmVydREus.ttf",weight:400,isVariable:!1},{displayName:"LXGW Marker Gothic",filename:"Gg8oN4AaXyDVTi_NlS1-xCtMQxY3lToBjuw_cZe26Q",category:"sans-serif",url:"https://fonts.gstatic.com/s/lxgwmarkergothic/v1/Gg8oN4AaXyDVTi_NlS1-xCtMQxY3lToBjuw_cZe26Q.ttf",weight:400,isVariable:!1},{displayName:"Edu NSW ACT Hand Pre",filename:"kmKiZrI-ExGJWUmupHwGgw6Qw4svl-MsLjYwI8Gcw6Oi",category:"handwriting",url:"https://fonts.gstatic.com/s/edunswacthandpre/v3/kmKiZrI-ExGJWUmupHwGgw6Qw4svl-MsLjYwI8Gcw6Oi.ttf",weight:400,isVariable:!0},{displayName:"Warnes",filename:"pONn1hc0GsW6sW5OpiC2o6Lkqg",category:"display",url:"https://fonts.gstatic.com/s/warnes/v29/pONn1hc0GsW6sW5OpiC2o6Lkqg.ttf",weight:400,isVariable:!1},{displayName:"Kalnia Glaze",filename:"wlp2gwHCBUNjrGrfu-hwowNvaAJSA_JN3Q",category:"display",url:"https://fonts.gstatic.com/s/kalniaglaze/v5/wlp2gwHCBUNjrGrfu-hwowNvaAJSA_JN3Q.ttf",weight:400,isVariable:!0},{displayName:"Playwrite DE SAS",filename:"1Pt1g9vaRvmWghDdrE8IDuRPVrHN5Vs45aiOBrU",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritedesas/v11/1Pt1g9vaRvmWghDdrE8IDuRPVrHN5Vs45aiOBrU.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Nag Mundari",filename:"3qTzoi2hnSyU8TNFIdhZTyod3g5lBnKlQFksmg2vd02J1Q",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansnagmundari/v4/3qTzoi2hnSyU8TNFIdhZTyod3g5lBnKlQFksmg2vd02J1Q.ttf",weight:400,isVariable:!0},{displayName:"Lilex",filename:"DPEiYwmezwMATDTpLjoJd-Xa",category:"monospace",url:"https://fonts.gstatic.com/s/lilex/v1/DPEiYwmezwMATDTpLjoJd-Xa.ttf",weight:400,isVariable:!0},{displayName:"Playwrite NL",filename:"k3kXo84SPe9dzQ1UGbvoZQ3hKYiJ-Q7m8w",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritenl/v10/k3kXo84SPe9dzQ1UGbvoZQ3hKYiJ-Q7m8w.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Yi",filename:"sJoD3LFXjsSdcnzn071rO3apxVDJNVgSNg",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansyi/v22/sJoD3LFXjsSdcnzn071rO3apxVDJNVgSNg.ttf",weight:400,isVariable:!1},{displayName:"Playwrite ZA",filename:"Noa16Uzhw5CTOhXKt5-vwvhxPAR9mhHobg",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteza/v11/Noa16Uzhw5CTOhXKt5-vwvhxPAR9mhHobg.ttf",weight:400,isVariable:!0},{displayName:"Playwrite RO",filename:"gokpH6fuA1J7QPJ04HFTGSWHmNZEq6TTFw",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritero/v10/gokpH6fuA1J7QPJ04HFTGSWHmNZEq6TTFw.ttf",weight:400,isVariable:!0},{displayName:"Moirai One",filename:"2sDbZGFUgJLJmby6xgNGT0WWB7UcfCg",category:"display",url:"https://fonts.gstatic.com/s/moiraione/v1/2sDbZGFUgJLJmby6xgNGT0WWB7UcfCg.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Balinese",filename:"NaPFcYvSBuhTirw6IaFn6UrRDaqje-lzZpaduWMmxA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansbalinese/v27/NaPFcYvSBuhTirw6IaFn6UrRDaqje-lzZpaduWMmxA.ttf",weight:400,isVariable:!0},{displayName:"Asimovian",filename:"oY1c8evOub78P2XN94MXCv5xY4QBLw",category:"sans-serif",url:"https://fonts.gstatic.com/s/asimovian/v2/oY1c8evOub78P2XN94MXCv5xY4QBLw.ttf",weight:400,isVariable:!1},{displayName:"Sekuya",filename:"fdN_9suEu39Dg3wk2ipfnF8U4A",category:"display",url:"https://fonts.gstatic.com/s/sekuya/v1/fdN_9suEu39Dg3wk2ipfnF8U4A.ttf",weight:400,isVariable:!1},{displayName:"Hind Mysuru",filename:"syk3-yB3k7wiAJ-U5l_li_LFjFGYLkjj",category:"sans-serif",url:"https://fonts.gstatic.com/s/hindmysuru/v1/syk3-yB3k7wiAJ-U5l_li_LFjFGYLkjj.ttf",weight:400,isVariable:!1},{displayName:"Playwrite BE VLG",filename:"GFDxWBdug3mQSvrAT9AL6fd4ZkB-cWAhatVBaGM",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritebevlg/v6/GFDxWBdug3mQSvrAT9AL6fd4ZkB-cWAhatVBaGM.ttf",weight:400,isVariable:!0},{displayName:"Alumni Sans SC",filename:"Y4GSYaxzVjArrOeNFYbCvkZ8C3UD6pzxRwYB",category:"sans-serif",url:"https://fonts.gstatic.com/s/alumnisanssc/v3/Y4GSYaxzVjArrOeNFYbCvkZ8C3UD6pzxRwYB.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Old Hungarian",filename:"E213_cD6hP3GwCJPEUssHEM0KqLaHJXg2PiIgRfjbg5nCYXt",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansoldhungarian/v19/E213_cD6hP3GwCJPEUssHEM0KqLaHJXg2PiIgRfjbg5nCYXt.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Old North Arabian",filename:"esDF30BdNv-KYGGJpKGk2tNiMt7Jar6olZDyNdr81zBQmUo_xw4ABw",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansoldnortharabian/v17/esDF30BdNv-KYGGJpKGk2tNiMt7Jar6olZDyNdr81zBQmUo_xw4ABw.ttf",weight:400,isVariable:!1},{displayName:"Moo Lah Lah",filename:"dg4h_p_opKZOA0w1AYcm55wtYQYugjW4",category:"display",url:"https://fonts.gstatic.com/s/moolahlah/v8/dg4h_p_opKZOA0w1AYcm55wtYQYugjW4.ttf",weight:400,isVariable:!1},{displayName:"Rubik Pixels",filename:"SlGXmQOaupkIeSx4CEpB7AdSaBYRagrQrA",category:"display",url:"https://fonts.gstatic.com/s/rubikpixels/v3/SlGXmQOaupkIeSx4CEpB7AdSaBYRagrQrA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Cherokee",filename:"KFO6Cm6Yu8uF-29fiz9vQF9YWK6Z8O1ue1GwCVgHYg",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanscherokee/v25/KFO6Cm6Yu8uF-29fiz9vQF9YWK6Z8O1ue1GwCVgHYg.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Nandinagari",filename:"or38Q7733eiDljA1IufXSNFT-1KI5y10H4jVa5RXzC1KOw",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansnandinagari/v4/or38Q7733eiDljA1IufXSNFT-1KI5y10H4jVa5RXzC1KOw.ttf",weight:400,isVariable:!1},{displayName:"Rubik Broken Fax",filename:"NGSvv4rXG042O-GzH9sg1cUgl8w8YW-WdmGi300",category:"display",url:"https://fonts.gstatic.com/s/rubikbrokenfax/v1/NGSvv4rXG042O-GzH9sg1cUgl8w8YW-WdmGi300.ttf",weight:400,isVariable:!1},{displayName:"Jaini",filename:"fC1vPYJMbGHQzEmOK-ZSUHyt",category:"display",url:"https://fonts.gstatic.com/s/jaini/v1/fC1vPYJMbGHQzEmOK-ZSUHyt.ttf",weight:400,isVariable:!1},{displayName:"Rubik Marker Hatch",filename:"QldTNSFQsh0B_bFXXWv6LAt-jswapJHQDL4iw0H6zw",category:"display",url:"https://fonts.gstatic.com/s/rubikmarkerhatch/v1/QldTNSFQsh0B_bFXXWv6LAt-jswapJHQDL4iw0H6zw.ttf",weight:400,isVariable:!1},{displayName:"Epunda Slab",filename:"46krlbHxTynXpZplPiOFHWVA_VVRGIpI",category:"serif",url:"https://fonts.gstatic.com/s/epundaslab/v2/46krlbHxTynXpZplPiOFHWVA_VVRGIpI.ttf",weight:400,isVariable:!0},{displayName:"Playwrite SK",filename:"9XUilJp0klrZDw3AZHcsJTBoxJuqbi3ezg",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritesk/v10/9XUilJp0klrZDw3AZHcsJTBoxJuqbi3ezg.ttf",weight:400,isVariable:!0},{displayName:"Playwrite IE",filename:"fC1mPYtWYWnH0hvndYd6GCGMVwLBplm9aw",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteie/v11/fC1mPYtWYWnH0hvndYd6GCGMVwLBplm9aw.ttf",weight:400,isVariable:!0},{displayName:"Playwrite FR Moderne",filename:"3y9-6awucz3w5m4FFTzKolJRXhUk_u1yWs-tNtKENeNp",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritefrmoderne/v11/3y9-6awucz3w5m4FFTzKolJRXhUk_u1yWs-tNtKENeNp.ttf",weight:400,isVariable:!0},{displayName:"Grandiflora One",filename:"0ybmGD0g27bCk_5MGWZcKWhxwnUU_R3y8DOWGA",category:"serif",url:"https://fonts.gstatic.com/s/grandifloraone/v3/0ybmGD0g27bCk_5MGWZcKWhxwnUU_R3y8DOWGA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Tangsa",filename:"z7NPdQPmcigbbZAIOl9igP26K470jouLY_WiBuM",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanstangsa/v9/z7NPdQPmcigbbZAIOl9igP26K470jouLY_WiBuM.ttf",weight:400,isVariable:!0},{displayName:"Bitcount Grid Double",filename:"WBL6rFjbakJVFOargiWSKQysDITG_S0VtHc6_qJY3QPQ",category:"display",url:"https://fonts.gstatic.com/s/bitcountgriddouble/v3/WBL6rFjbakJVFOargiWSKQysDITG_S0VtHc6_qJY3QPQ.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Syriac Eastern",filename:"Noah6Vj_wIWFbTTCrYmvy8AjVU8aslWRHHvRYxSkTa8Ck93gbw",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssyriaceastern/v3/Noah6Vj_wIWFbTTCrYmvy8AjVU8aslWRHHvRYxSkTa8Ck93gbw.ttf",weight:400,isVariable:!0},{displayName:"Playwrite IT Moderna",filename:"mFTuWaYCwKPK5cx6W8jy2kwDnSUe9q45vR4pxoPdAYRC",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteitmoderna/v11/mFTuWaYCwKPK5cx6W8jy2kwDnSUe9q45vR4pxoPdAYRC.ttf",weight:400,isVariable:!0},{displayName:"Intel One Mono",filename:"P5sbzZuLY8Lb_G1RikFkwPjBvvk3D4tEBiLF",category:"monospace",url:"https://fonts.gstatic.com/s/intelonemono/v2/P5sbzZuLY8Lb_G1RikFkwPjBvvk3D4tEBiLF.ttf",weight:400,isVariable:!0},{displayName:"Noto Serif Dogra",filename:"MQpP-XquKMC7ROPP3QOOlm7xPu3fGy63IbPzkns",category:"serif",url:"https://fonts.gstatic.com/s/notoserifdogra/v24/MQpP-XquKMC7ROPP3QOOlm7xPu3fGy63IbPzkns.ttf",weight:400,isVariable:!1},{displayName:"Edu AU VIC WA NT Arrows",filename:"z7NEdQTteSlUDJZJAmUB9MuVbLPBjsrTFZLUbcLsaJmY0RIQ",category:"handwriting",url:"https://fonts.gstatic.com/s/eduauvicwantarrows/v4/z7NEdQTteSlUDJZJAmUB9MuVbLPBjsrTFZLUbcLsaJmY0RIQ.ttf",weight:400,isVariable:!0},{displayName:"Sirivennela",filename:"kmK5Zq0oHhbAYX-X6lgptg7YiOFDtqtf",category:"sans-serif",url:"https://fonts.gstatic.com/s/sirivennela/v2/kmK5Zq0oHhbAYX-X6lgptg7YiOFDtqtf.ttf",weight:400,isVariable:!1},{displayName:"Ingrid Darling",filename:"LDIrapaJNxUtSuFdw-9yf4rCPsLOub458jGL",category:"handwriting",url:"https://fonts.gstatic.com/s/ingriddarling/v7/LDIrapaJNxUtSuFdw-9yf4rCPsLOub458jGL.ttf",weight:400,isVariable:!1},{displayName:"Yuji Hentaigana Akari",filename:"cY9bfiyVT0VB6QuhWKOrpr6z58lnb_zYFnLIRTzODYALaA",category:"handwriting",url:"https://fonts.gstatic.com/s/yujihentaiganaakari/v14/cY9bfiyVT0VB6QuhWKOrpr6z58lnb_zYFnLIRTzODYALaA.ttf",weight:400,isVariable:!1},{displayName:"Rubik Microbe",filename:"UqyWK8oPP3hjw6ANS9rM3PsZcs8aaKgiauE",category:"display",url:"https://fonts.gstatic.com/s/rubikmicrobe/v2/UqyWK8oPP3hjw6ANS9rM3PsZcs8aaKgiauE.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Yezidi",filename:"XLY8IYr5bJNDGYxLBibeHZAn3B5KJFlsYMYHGGeT",category:"serif",url:"https://fonts.gstatic.com/s/notoserifyezidi/v23/XLY8IYr5bJNDGYxLBibeHZAn3B5KJFlsYMYHGGeT.ttf",weight:400,isVariable:!0},{displayName:"Rubik Maps",filename:"Gw6_wcjl80TZK9XxtbbejSYUChRqp9k",category:"display",url:"https://fonts.gstatic.com/s/rubikmaps/v1/Gw6_wcjl80TZK9XxtbbejSYUChRqp9k.ttf",weight:400,isVariable:!1},{displayName:"Playwrite MX",filename:"6xKodSNbKtCe7KfhXg7RYSwoSMj-N4_4kQ",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritemx/v13/6xKodSNbKtCe7KfhXg7RYSwoSMj-N4_4kQ.ttf",weight:400,isVariable:!0},{displayName:"Playwrite MX Guides",filename:"k3kMo9ESPe9dzQ1UGbvoZhnhbtfklWqN0qywHx-HpY0",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritemxguides/v1/k3kMo9ESPe9dzQ1UGbvoZhnhbtfklWqN0qywHx-HpY0.ttf",weight:400,isVariable:!1},{displayName:"Playwrite BE WAL",filename:"DtV4Jwq5QbIzyrA6DHdJ2BksuUmahwBmkui5HNg",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritebewal/v7/DtV4Jwq5QbIzyrA6DHdJ2BksuUmahwBmkui5HNg.ttf",weight:400,isVariable:!0},{displayName:"Noto Serif Todhri",filename:"dFalZeyY-aYz1YVbjMoBWml1nBz7N3ByX6n0fnNk",category:"serif",url:"https://fonts.gstatic.com/s/notoseriftodhri/v3/dFalZeyY-aYz1YVbjMoBWml1nBz7N3ByX6n0fnNk.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Myanmar",filename:"VuJsdM7F2Yv76aBKKs-bHMQfAHUw3jn1pBrocdDqRA",category:"serif",url:"https://fonts.gstatic.com/s/notoserifmyanmar/v14/VuJsdM7F2Yv76aBKKs-bHMQfAHUw3jn1pBrocdDqRA.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Toto",filename:"Ktk1ALSMeZjqPnXk1rCkHYHNtwv3F6mZVY9Y5w",category:"serif",url:"https://fonts.gstatic.com/s/notoseriftoto/v7/Ktk1ALSMeZjqPnXk1rCkHYHNtwv3F6mZVY9Y5w.ttf",weight:400,isVariable:!0},{displayName:"Noto Traditional Nushu",filename:"SZco3EDkJ7q9FaoMPlmF4Su8hlIjoGh5aj67J011GNh6SYA",category:"sans-serif",url:"https://fonts.gstatic.com/s/nototraditionalnushu/v23/SZco3EDkJ7q9FaoMPlmF4Su8hlIjoGh5aj67J011GNh6SYA.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Old Italic",filename:"TuGOUUFzXI5FBtUq5a8bh68BJxxEVam7tWlRdRhtCC4d",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansolditalic/v18/TuGOUUFzXI5FBtUq5a8bh68BJxxEVam7tWlRdRhtCC4d.ttf",weight:400,isVariable:!1},{displayName:"Edu QLD Beginner",filename:"AMOKz5iUuHLEMNXyohhc_Y56PR3A69hp5ySriqg",category:"handwriting",url:"https://fonts.gstatic.com/s/eduqldbeginner/v5/AMOKz5iUuHLEMNXyohhc_Y56PR3A69hp5ySriqg.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Palmyrene",filename:"ZgNPjOdKPa7CHqq0h37c_ASCWvH93SFCPnK5ZpdNtcA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanspalmyrene/v17/ZgNPjOdKPa7CHqq0h37c_ASCWvH93SFCPnK5ZpdNtcA.ttf",weight:400,isVariable:!1},{displayName:"Bitcount",filename:"ijwWs53kQsE1Y5J-lJd7m2dJXYP7",category:"display",url:"https://fonts.gstatic.com/s/bitcount/v3/ijwWs53kQsE1Y5J-lJd7m2dJXYP7.ttf",weight:400,isVariable:!0},{displayName:"Parastoo",filename:"-F6yfj90ITQ4d9euQUrQjCVAxzAL",category:"serif",url:"https://fonts.gstatic.com/s/parastoo/v3/-F6yfj90ITQ4d9euQUrQjCVAxzAL.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Miao",filename:"Dxxz8jmXMW75w3OmoDXVV4zyZUjgUYVslLhx",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmiao/v19/Dxxz8jmXMW75w3OmoDXVV4zyZUjgUYVslLhx.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Old Uyghur",filename:"v6-KGZbLJFKIhClqUYqXDiGnrVoFRCW6JdwnKumeF2yVgA",category:"serif",url:"https://fonts.gstatic.com/s/notoserifolduyghur/v4/v6-KGZbLJFKIhClqUYqXDiGnrVoFRCW6JdwnKumeF2yVgA.ttf",weight:400,isVariable:!1},{displayName:"Rubik Doodle Triangles",filename:"esDA301BLOmMKxKspb3g-domRuLPeaSn2bTzdLi_slZxgWE",category:"display",url:"https://fonts.gstatic.com/s/rubikdoodletriangles/v1/esDA301BLOmMKxKspb3g-domRuLPeaSn2bTzdLi_slZxgWE.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Oriya",filename:"MjQdmj56u-r69izk_LDqWN7w0cYB0OBNBn8Kwb0",category:"serif",url:"https://fonts.gstatic.com/s/notoseriforiya/v6/MjQdmj56u-r69izk_LDqWN7w0cYB0OBNBn8Kwb0.ttf",weight:400,isVariable:!0},{displayName:"BBH Hegarty",filename:"yYLt0hbb_dvjg8talgb5vDHR-tdfcIT_",category:"sans-serif",url:"https://fonts.gstatic.com/s/bbhhegarty/v1/yYLt0hbb_dvjg8talgb5vDHR-tdfcIT_.ttf",weight:400,isVariable:!1},{displayName:"Coral Pixels",filename:"qWctB66zpZ3zAtrlR8Mb1LyyeBb_ujA4ug",category:"display",url:"https://fonts.gstatic.com/s/coralpixels/v1/qWctB66zpZ3zAtrlR8Mb1LyyeBb_ujA4ug.ttf",weight:400,isVariable:!1},{displayName:"Syne Tactile",filename:"11hGGpna2UTQKjMCVzjAPMKh3ysdjvKU8Q",category:"display",url:"https://fonts.gstatic.com/s/synetactile/v16/11hGGpna2UTQKjMCVzjAPMKh3ysdjvKU8Q.ttf",weight:400,isVariable:!1},{displayName:"Playwrite DE LA",filename:"oY1G8e3fprboJ2HN4ogXTpFVJ8Q5Ln2ZCGKRvA",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritedela/v11/oY1G8e3fprboJ2HN4ogXTpFVJ8Q5Ln2ZCGKRvA.ttf",weight:400,isVariable:!0},{displayName:"Playwrite AT",filename:"Gw69wc7n6kfJN4fVoKON7HIeDjZvt9mVvg",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteat/v6/Gw69wc7n6kfJN4fVoKON7HIeDjZvt9mVvg.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Linear A",filename:"oPWS_l16kP4jCuhpgEGmwJOiA18FZj22zmHQAGQicw",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanslineara/v19/oPWS_l16kP4jCuhpgEGmwJOiA18FZj22zmHQAGQicw.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Adlam Unjoined",filename:"P5sRzY2MYsLRsB5_ildkzPPDsLQXcOEmaFOqOGcAaZ41lBRPOw",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansadlamunjoined/v28/P5sRzY2MYsLRsB5_ildkzPPDsLQXcOEmaFOqOGcAaZ41lBRPOw.ttf",weight:400,isVariable:!0},{displayName:"Playwrite ES",filename:"kJE0BuMK4Q07lDHc2Xp9uokSrMxzBZ2lDA",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritees/v11/kJE0BuMK4Q07lDHc2Xp9uokSrMxzBZ2lDA.ttf",weight:400,isVariable:!0},{displayName:"BBH Bogle",filename:"GFDoWA58rVDJf-fOV9ALq5hcOA0hUA",category:"sans-serif",url:"https://fonts.gstatic.com/s/bbhbogle/v1/GFDoWA58rVDJf-fOV9ALq5hcOA0hUA.ttf",weight:400,isVariable:!1},{displayName:"Namdhinggo",filename:"uk-mEGe3rbgg8Xzoy5-TDnWj4yxx7o8",category:"serif",url:"https://fonts.gstatic.com/s/namdhinggo/v2/uk-mEGe3rbgg8Xzoy5-TDnWj4yxx7o8.ttf",weight:400,isVariable:!1},{displayName:"Playpen Sans Hebrew",filename:"lJwb-okuj29wT-AN6RvLx8QqjkKhL7eAlInffHZXQf0",category:"handwriting",url:"https://fonts.gstatic.com/s/playpensanshebrew/v8/lJwb-okuj29wT-AN6RvLx8QqjkKhL7eAlInffHZXQf0.ttf",weight:400,isVariable:!0},{displayName:"Linefont",filename:"dg4m_pzpoqcLKUIzVetHpbglShon",category:"display",url:"https://fonts.gstatic.com/s/linefont/v10/dg4m_pzpoqcLKUIzVetHpbglShon.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Old Persian",filename:"wEOjEAbNnc5caQTFG18FHrZr9Bp6-8CmIJ_tqOlQfx9CjA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansoldpersian/v17/wEOjEAbNnc5caQTFG18FHrZr9Bp6-8CmIJ_tqOlQfx9CjA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Chorasmian",filename:"MQpL-X6uKMC7ROPLwRnI9ULxK_7NVkf8S5vyoH7w4g9b",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanschorasmian/v3/MQpL-X6uKMC7ROPLwRnI9ULxK_7NVkf8S5vyoH7w4g9b.ttf",weight:400,isVariable:!1},{displayName:"Playpen Sans Deva",filename:"vm8sdQj0UUbMxObnsO17RZ7pPBuJgfd_GJMTlo_4",category:"handwriting",url:"https://fonts.gstatic.com/s/playpensansdeva/v4/vm8sdQj0UUbMxObnsO17RZ7pPBuJgfd_GJMTlo_4.ttf",weight:400,isVariable:!0},{displayName:"Shafarik",filename:"RWmLoKaF7PojpZXlW52sbsHKqLkD",category:"display",url:"https://fonts.gstatic.com/s/shafarik/v3/RWmLoKaF7PojpZXlW52sbsHKqLkD.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Bamum",filename:"uk-7EGK3o6EruUbnwovcbBTkkklQ9qRP5I18Mg",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansbamum/v35/uk-7EGK3o6EruUbnwovcbBTkkklQ9qRP5I18Mg.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Takri",filename:"TuGJUVpzXI5FBtUq5a8bnKIOdTwQNO_W3khJXg",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanstakri/v25/TuGJUVpzXI5FBtUq5a8bnKIOdTwQNO_W3khJXg.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Egyptian Hieroglyphs",filename:"vEF42-tODB8RrNDvZSUmRhcQHzx1s7y_F9-j3qSzEcbEYindSVK8xRg7iw",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansegyptianhieroglyphs/v30/vEF42-tODB8RrNDvZSUmRhcQHzx1s7y_F9-j3qSzEcbEYindSVK8xRg7iw.ttf",weight:400,isVariable:!1},{displayName:"UoqMunThenKhung",filename:"Y4GTYa1nVTQLt-D5LoLChg5aJjIjwLL9Th8YYA",category:"serif",url:"https://fonts.gstatic.com/s/uoqmunthenkhung/v1/Y4GTYa1nVTQLt-D5LoLChg5aJjIjwLL9Th8YYA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Tifinagh",filename:"I_uzMoCduATTei9eI8dawkHIwvmhCvbn6rnEcXfs4Q",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanstifinagh/v21/I_uzMoCduATTei9eI8dawkHIwvmhCvbn6rnEcXfs4Q.ttf",weight:400,isVariable:!1},{displayName:"Amarna",filename:"MCoSzAj-18jIHCAERYo80prgBg",category:"sans-serif",url:"https://fonts.gstatic.com/s/amarna/v1/MCoSzAj-18jIHCAERYo80prgBg.ttf",weight:400,isVariable:!0},{displayName:"Bytesized",filename:"goksH6L8FkdnROln8XBTS0CjkP1Yog",category:"sans-serif",url:"https://fonts.gstatic.com/s/bytesized/v1/goksH6L8FkdnROln8XBTS0CjkP1Yog.ttf",weight:400,isVariable:!1},{displayName:"Blaka Hollow",filename:"MCoUzAL91sjRE2FsKsxUtezYB9oFyW_-oA",category:"display",url:"https://fonts.gstatic.com/s/blakahollow/v8/MCoUzAL91sjRE2FsKsxUtezYB9oFyW_-oA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Lisu",filename:"uk-6EGO3o6EruUbnwovcYhz6kgRw3IpD7ZRl",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanslisu/v27/uk-6EGO3o6EruUbnwovcYhz6kgRw3IpD7ZRl.ttf",weight:400,isVariable:!0},{displayName:"Karla Tamil Upright",filename:"IFS4HfVMk95HnY0u6SeQ_cHoozW_3U5XoBJ9hK8kMK4",category:"sans-serif",url:"https://fonts.gstatic.com/s/karlatamilupright/v2/IFS4HfVMk95HnY0u6SeQ_cHoozW_3U5XoBJ9hK8kMK4.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Newa",filename:"7r3fqXp6utEsO9pI4f8ok8sWg8n_qN4R5lNU",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansnewa/v18/7r3fqXp6utEsO9pI4f8ok8sWg8n_qN4R5lNU.ttf",weight:400,isVariable:!1},{displayName:"Tuffy",filename:"1q2IY56bHkJl7rxzF4xmyfYe",category:"sans-serif",url:"https://fonts.gstatic.com/s/tuffy/v1/1q2IY56bHkJl7rxzF4xmyfYe.ttf",weight:400,isVariable:!1},{displayName:"Playpen Sans Thai",filename:"VdGEAYIdG5kSgHwmKT9wYu2rs0cBsvWGzr8C7vav",category:"handwriting",url:"https://fonts.gstatic.com/s/playpensansthai/v8/VdGEAYIdG5kSgHwmKT9wYu2rs0cBsvWGzr8C7vav.ttf",weight:400,isVariable:!0},{displayName:"Blaka Ink",filename:"AlZy_zVVtpj22Znag2chdXf4XB0Tow",category:"display",url:"https://fonts.gstatic.com/s/blakaink/v10/AlZy_zVVtpj22Znag2chdXf4XB0Tow.ttf",weight:400,isVariable:!1},{displayName:"Lisu Bosa",filename:"3XFoErkv240fsdmJRJQvl0viTf3E3Q",category:"serif",url:"https://fonts.gstatic.com/s/lisubosa/v2/3XFoErkv240fsdmJRJQvl0viTf3E3Q.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Medefaidrin",filename:"WwkAxOq6Dk-wranENynkfeVsNbRZtbOIdLbvcDV8OQsNbw",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmedefaidrin/v29/WwkAxOq6Dk-wranENynkfeVsNbRZtbOIdLbvcDV8OQsNbw.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Shavian",filename:"CHy5V_HZE0jxJBQlqAeCKjJvQBNF4EFQSplv2Cwg",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansshavian/v18/CHy5V_HZE0jxJBQlqAeCKjJvQBNF4EFQSplv2Cwg.ttf",weight:400,isVariable:!1},{displayName:"Exile",filename:"pxiKyp0xqNtbjBsYHpT2dkNE",category:"display",url:"https://fonts.gstatic.com/s/exile/v1/pxiKyp0xqNtbjBsYHpT2dkNE.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Khitan Small Script",filename:"jizzRFVKsm4Bt9PrbSzC4KLlQUF5lRJg5j-l5PvyhfTdd4TsZ8lb39iddA",category:"serif",url:"https://fonts.gstatic.com/s/notoserifkhitansmallscript/v4/jizzRFVKsm4Bt9PrbSzC4KLlQUF5lRJg5j-l5PvyhfTdd4TsZ8lb39iddA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Sundanese",filename:"FwZH7_84xUkosG2xJo2gm7nFwSLQkdymsWKGP6kvdPA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssundanese/v28/FwZH7_84xUkosG2xJo2gm7nFwSLQkdymsWKGP6kvdPA.ttf",weight:400,isVariable:!0},{displayName:"Playwrite VN",filename:"mtG94_hXJqPSu8nf5RBY5i0w2A6yHk9d8w",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritevn/v11/mtG94_hXJqPSu8nf5RBY5i0w2A6yHk9d8w.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Vithkuqi",filename:"jVyX7m77CXvQswd6WjYu9E1wN6cih2TIeTf0SZST2g",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansvithkuqi/v3/jVyX7m77CXvQswd6WjYu9E1wN6cih2TIeTf0SZST2g.ttf",weight:400,isVariable:!0},{displayName:"Narnoor",filename:"cIf9MaFWuVo-UTyPxCmrYGkHgIs",category:"sans-serif",url:"https://fonts.gstatic.com/s/narnoor/v10/cIf9MaFWuVo-UTyPxCmrYGkHgIs.ttf",weight:400,isVariable:!1},{displayName:"Rubik Lines",filename:"_gP81R3vsjYzVW2Y6xFF-GSxYPp7oSNy",category:"display",url:"https://fonts.gstatic.com/s/rubiklines/v1/_gP81R3vsjYzVW2Y6xFF-GSxYPp7oSNy.ttf",weight:400,isVariable:!1},{displayName:"Playwrite NZ",filename:"d6lPkaOxRsyr_zZDmUYvh2TM1_JgjmRpOA",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritenz/v12/d6lPkaOxRsyr_zZDmUYvh2TM1_JgjmRpOA.ttf",weight:400,isVariable:!0},{displayName:"Noto Znamenny Musical Notation",filename:"CSRW4ylQnPyaDwAMK1U_AolTaJ4Lz41GcgaIZV9YO2rO88jvtpqqdoWa7g",category:"sans-serif",url:"https://fonts.gstatic.com/s/notoznamennymusicalnotation/v7/CSRW4ylQnPyaDwAMK1U_AolTaJ4Lz41GcgaIZV9YO2rO88jvtpqqdoWa7g.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Indic Siyaq Numbers",filename:"6xK5dTJFKcWIu4bpRBjRZRpsIYHabOeZ8UZLubTzpXNHKx2WPOpVd5Iu",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansindicsiyaqnumbers/v17/6xK5dTJFKcWIu4bpRBjRZRpsIYHabOeZ8UZLubTzpXNHKx2WPOpVd5Iu.ttf",weight:400,isVariable:!1},{displayName:"Playwrite AR",filename:"VEM2RohisJz5pTCzruCNjWbFrNGOsEkJZA",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritear/v6/VEM2RohisJz5pTCzruCNjWbFrNGOsEkJZA.ttf",weight:400,isVariable:!0},{displayName:"Noto Serif Makasar",filename:"memjYbqtyH-NiZpFH_9zcvB_PqkfY9S7j4HTVSmevw",category:"serif",url:"https://fonts.gstatic.com/s/notoserifmakasar/v1/memjYbqtyH-NiZpFH_9zcvB_PqkfY9S7j4HTVSmevw.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif NP Hmong",filename:"pON61gItFMO79E4L1GPUi-2sixKHZyFj7peYDHDLnAo",category:"serif",url:"https://fonts.gstatic.com/s/notoserifnphmong/v5/pON61gItFMO79E4L1GPUi-2sixKHZyFj7peYDHDLnAo.ttf",weight:400,isVariable:!0},{displayName:"Playwrite DK Uloopet",filename:"bWtn7e3Ufwn0Hf1zjprKPYlcDAoHknvYFiCDpTMddp8a",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritedkuloopet/v6/bWtn7e3Ufwn0Hf1zjprKPYlcDAoHknvYFiCDpTMddp8a.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Brahmi",filename:"vEFK2-VODB8RrNDvZSUmQQIIByV18tK1W77HtMo",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansbrahmi/v20/vEFK2-VODB8RrNDvZSUmQQIIByV18tK1W77HtMo.ttf",weight:400,isVariable:!1},{displayName:"Playwrite PT",filename:"6NUR8FidKwOcfRjj8ukv5Lgkyf9Fdty2ew",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritept/v10/6NUR8FidKwOcfRjj8ukv5Lgkyf9Fdty2ew.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans New Tai Lue",filename:"H4c5BW-Pl9DZ0Xe_nHUapt7PovLXAhAnY7wwY55O4AS32A",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansnewtailue/v24/H4c5BW-Pl9DZ0Xe_nHUapt7PovLXAhAnY7wwY55O4AS32A.ttf",weight:400,isVariable:!0},{displayName:"Big Shoulders Inline",filename:"bx6aNwSCkev-8u0YNXAF6gArLyznvspgMYrXvDo3SQY1",category:"display",url:"https://fonts.gstatic.com/s/bigshouldersinline/v4/bx6aNwSCkev-8u0YNXAF6gArLyznvspgMYrXvDo3SQY1.ttf",weight:400,isVariable:!0},{displayName:"Edu AU VIC WA NT Guides",filename:"TuGBUUJ4V48KZ9Nr3ZV46JQkJxtkFIKnvy00LDxlIzIU5RwD",category:"handwriting",url:"https://fonts.gstatic.com/s/eduauvicwantguides/v3/TuGBUUJ4V48KZ9Nr3ZV46JQkJxtkFIKnvy00LDxlIzIU5RwD.ttf",weight:400,isVariable:!0},{displayName:"Playwrite CO",filename:"0FlTVP2Hl1iH-fv2BH4kJkgB-dMOdS7sSg",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteco/v13/0FlTVP2Hl1iH-fv2BH4kJkgB-dMOdS7sSg.ttf",weight:400,isVariable:!0},{displayName:"Kedebideri",filename:"t5tlIR0UPo6ZGAykNh_ejKbCyTHuspo",category:"sans-serif",url:"https://fonts.gstatic.com/s/kedebideri/v2/t5tlIR0UPo6ZGAykNh_ejKbCyTHuspo.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Ottoman Siyaq",filename:"fC1yPZ9IYnzRhTrrc4s8cSvYI0eozzaFOQ01qoHLJrgA00kAdA",category:"serif",url:"https://fonts.gstatic.com/s/notoserifottomansiyaq/v2/fC1yPZ9IYnzRhTrrc4s8cSvYI0eozzaFOQ01qoHLJrgA00kAdA.ttf",weight:400,isVariable:!1},{displayName:"Rubik Maze",filename:"xMQRuF9ZVa2ftiJEavXSAX7inS-bxV4",category:"display",url:"https://fonts.gstatic.com/s/rubikmaze/v2/xMQRuF9ZVa2ftiJEavXSAX7inS-bxV4.ttf",weight:400,isVariable:!1},{displayName:"Playwrite NG Modern",filename:"ijwJs4b2R9Qve5V5lNJb_yRhEfSep5NbDimE2tKY2yY",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritengmodern/v11/ijwJs4b2R9Qve5V5lNJb_yRhEfSep5NbDimE2tKY2yY.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Tai Le",filename:"vEFK2-VODB8RrNDvZSUmVxEATwR58tK1W77HtMo",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanstaile/v19/vEFK2-VODB8RrNDvZSUmVxEATwR58tK1W77HtMo.ttf",weight:400,isVariable:!1},{displayName:"Jacquard 12 Charted",filename:"i7dWIE97bzCOB9Q_Up6PQmYfKDPIb2HwT3StZ9jetKY",category:"display",url:"https://fonts.gstatic.com/s/jacquard12charted/v4/i7dWIE97bzCOB9Q_Up6PQmYfKDPIb2HwT3StZ9jetKY.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Gurmukhi",filename:"92zJtA9LNqsg7tCYlXdCV1VPnAEeDU0vNI0un_HLMEo",category:"serif",url:"https://fonts.gstatic.com/s/notoserifgurmukhi/v22/92zJtA9LNqsg7tCYlXdCV1VPnAEeDU0vNI0un_HLMEo.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Cham",filename:"pe03MIySN5pO62Z5YkFyQb_bbv5qWVAgVol-",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanscham/v33/pe03MIySN5pO62Z5YkFyQb_bbv5qWVAgVol-.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Elbasan",filename:"-F6rfiZqLzI2JPCgQBnw400qp1trvHdlre4dFcFh",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanselbasan/v17/-F6rfiZqLzI2JPCgQBnw400qp1trvHdlre4dFcFh.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans NKo",filename:"esDX31ZdNv-KYGGJpKGk2_RpMpCMHMLBrdA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansnko/v7/esDX31ZdNv-KYGGJpKGk2_RpMpCMHMLBrdA.ttf",weight:400,isVariable:!1},{displayName:"Playwrite GB J",filename:"k3kJo8wSPe9dzQ1UGbvobAPhY4KN2wv287Sb",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritegbj/v11/k3kJo8wSPe9dzQ1UGbvobAPhY4KN2wv287Sb.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans SignWriting",filename:"Noas6VX_wIWFbTTCrYmvy9A2UnkL-2SZAWiUEVCARYQemg",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssignwriting/v5/Noas6VX_wIWFbTTCrYmvy9A2UnkL-2SZAWiUEVCARYQemg.ttf",weight:400,isVariable:!1},{displayName:"Matangi",filename:"kmK9ZqE2FhDIeX2QpD1v0ybZuuQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/matangi/v5/kmK9ZqE2FhDIeX2QpD1v0ybZuuQ.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Osage",filename:"oPWX_kB6kP4jCuhpgEGmw4mtAVtXRlaSxkrMCQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansosage/v20/oPWX_kB6kP4jCuhpgEGmw4mtAVtXRlaSxkrMCQ.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Hentaigana",filename:"uk-9EHi3o6EruUbj3pGaDj3siVARn-kqgu1EM1vLGR4V2g",category:"serif",url:"https://fonts.gstatic.com/s/notoserifhentaigana/v17/uk-9EHi3o6EruUbj3pGaDj3siVARn-kqgu1EM1vLGR4V2g.ttf",weight:400,isVariable:!0},{displayName:"Cause",filename:"or3sQ6760-mf00NUZpD_B6g8",category:"handwriting",url:"https://fonts.gstatic.com/s/cause/v2/or3sQ6760-mf00NUZpD_B6g8.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Lydian",filename:"c4m71mVzGN7s8FmIukZJ1v4ZlcPReUPXMoIjEQI",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanslydian/v19/c4m71mVzGN7s8FmIukZJ1v4ZlcPReUPXMoIjEQI.ttf",weight:400,isVariable:!1},{displayName:"Wavefont",filename:"L0x-DF00m0cP6hefyPqiZyxEimK3",category:"display",url:"https://fonts.gstatic.com/s/wavefont/v19/L0x-DF00m0cP6hefyPqiZyxEimK3.ttf",weight:400,isVariable:!0},{displayName:"Menbere",filename:"lJwH-p0zhmBrWvcG6UiArb8L3iY",category:"sans-serif",url:"https://fonts.gstatic.com/s/menbere/v1/lJwH-p0zhmBrWvcG6UiArb8L3iY.ttf",weight:400,isVariable:!0},{displayName:"Playwrite CO Guides",filename:"AYCXpWvtftIVXepC5AzjAx1KgYPugOK0TqxTJw_GOM0",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritecoguides/v5/AYCXpWvtftIVXepC5AzjAx1KgYPugOK0TqxTJw_GOM0.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Tagbanwa",filename:"Y4GWYbB8VTEp4t3MKJSMmQdIKjRtt_nZRjQEaYpGoQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanstagbanwa/v21/Y4GWYbB8VTEp4t3MKJSMmQdIKjRtt_nZRjQEaYpGoQ.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Caucasian Albanian",filename:"nKKA-HM_FYFRJvXzVXaANsU0VzsAc46QGOkWytlTs-TXrYDmoVmRSZo",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanscaucasianalbanian/v19/nKKA-HM_FYFRJvXzVXaANsU0VzsAc46QGOkWytlTs-TXrYDmoVmRSZo.ttf",weight:400,isVariable:!1},{displayName:"Playwrite CZ",filename:"8vIP7wYp22pt_BUChSHeVxx_M9f08h-8bA",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritecz/v6/8vIP7wYp22pt_BUChSHeVxx_M9f08h-8bA.ttf",weight:400,isVariable:!0},{displayName:"Edu QLD Hand",filename:"d6lPkaOkTtjy2QhuzWtup1rM1_JgjmRpOA",category:"handwriting",url:"https://fonts.gstatic.com/s/eduqldhand/v3/d6lPkaOkTtjy2QhuzWtup1rM1_JgjmRpOA.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans PhagsPa",filename:"XLY8IYr5bJNDGYxPGjyYbaEjwQR-LFlsYMYHGGeT",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansphagspa/v24/XLY8IYr5bJNDGYxPGjyYbaEjwQR-LFlsYMYHGGeT.ttf",weight:400,isVariable:!1},{displayName:"Padyakke Expanded One",filename:"K2FvfY9El_tbR0JfHb6WWvrBaU6XAUvC4IAYOKRkpDjeoQ",category:"serif",url:"https://fonts.gstatic.com/s/padyakkeexpandedone/v8/K2FvfY9El_tbR0JfHb6WWvrBaU6XAUvC4IAYOKRkpDjeoQ.ttf",weight:400,isVariable:!1},{displayName:"Maname",filename:"gNMFW3J8RpCx9my42FkGGI6q_Q",category:"serif",url:"https://fonts.gstatic.com/s/maname/v2/gNMFW3J8RpCx9my42FkGGI6q_Q.ttf",weight:400,isVariable:!1},{displayName:"Bitcount Single Ink",filename:"FwZH7_80w0kk_0u-PN7ToaLMySaevcGosWKGP6kvdPA",category:"display",url:"https://fonts.gstatic.com/s/bitcountsingleink/v4/FwZH7_80w0kk_0u-PN7ToaLMySaevcGosWKGP6kvdPA.ttf",weight:400,isVariable:!0},{displayName:"Jaini Purva",filename:"CHynV-vdHVXwbWcUswbUGHoOHH4sj3lR",category:"display",url:"https://fonts.gstatic.com/s/jainipurva/v1/CHynV-vdHVXwbWcUswbUGHoOHH4sj3lR.ttf",weight:400,isVariable:!1},{displayName:"Edu VIC WA NT Hand Pre",filename:"neIazDmioZxjkInM_tLHFudmcN2Uxxc-9Vnv4Y0Eeru2dGg",category:"handwriting",url:"https://fonts.gstatic.com/s/eduvicwanthandpre/v3/neIazDmioZxjkInM_tLHFudmcN2Uxxc-9Vnv4Y0Eeru2dGg.ttf",weight:400,isVariable:!0},{displayName:"Sankofa Display",filename:"Ktk1ALSRd4LucUDghJ2rTqXOoh33F6mZVY9Y5w",category:"sans-serif",url:"https://fonts.gstatic.com/s/sankofadisplay/v2/Ktk1ALSRd4LucUDghJ2rTqXOoh33F6mZVY9Y5w.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Imperial Aramaic",filename:"a8IMNpjwKmHXpgXbMIsbTc_kvks91LlLetBr5itQrtdml3YfPNno",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansimperialaramaic/v18/a8IMNpjwKmHXpgXbMIsbTc_kvks91LlLetBr5itQrtdml3YfPNno.ttf",weight:400,isVariable:!1},{displayName:"Karla Tamil Inclined",filename:"vm8pdQ3vXFXZ1aPd8dNzR82AFh2TibkaVrcbvZPxCDLR",category:"sans-serif",url:"https://fonts.gstatic.com/s/karlatamilinclined/v2/vm8pdQ3vXFXZ1aPd8dNzR82AFh2TibkaVrcbvZPxCDLR.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Tai Tham",filename:"kJEuBv0U4hgtwxDUw2x9q7tbjLIfbPGdDaRlkJrUNw",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanstaitham/v25/kJEuBv0U4hgtwxDUw2x9q7tbjLIfbPGdDaRlkJrUNw.ttf",weight:400,isVariable:!0},{displayName:"Playwrite US Trad Guides",filename:"-zk29027wssz_XLkGgu8kTL39c2bMssjmiZPNnk5nJCZAyrUdw",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteustradguides/v1/-zk29027wssz_XLkGgu8kTL39c2bMssjmiZPNnk5nJCZAyrUdw.ttf",weight:400,isVariable:!1},{displayName:"Playwrite AU VIC",filename:"bWtj7enUfwn0Hf1zjprKOJdcDy8r3QuXZgiClzY",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteauvic/v11/bWtj7enUfwn0Hf1zjprKOJdcDy8r3QuXZgiClzY.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Wancho",filename:"zrf-0GXXyfn6Fs0lH9P4cUubP0GBqAPopiRfKp8",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanswancho/v19/zrf-0GXXyfn6Fs0lH9P4cUubP0GBqAPopiRfKp8.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Ol Chiki",filename:"N0bI2TJNOPt-eHmFZCdQbrL32r-4CvhpBBaAT48zZA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansolchiki/v31/N0bI2TJNOPt-eHmFZCdQbrL32r-4CvhpBBaAT48zZA.ttf",weight:400,isVariable:!0},{displayName:"Playwrite CL",filename:"-zki91m7wssz_XLkGgu8hy33oZX-Xup87g",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritecl/v6/-zki91m7wssz_XLkGgu8hy33oZX-Xup87g.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Sharada",filename:"gok0H7rwAEdtF9N8-mdTGALG6p0kwoXLPOwr4H8a",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssharada/v18/gok0H7rwAEdtF9N8-mdTGALG6p0kwoXLPOwr4H8a.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Sogdian",filename:"taiQGn5iC4--qtsfi4Jp6eHPnfxQBo--Pm6KHidM",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssogdian/v17/taiQGn5iC4--qtsfi4Jp6eHPnfxQBo--Pm6KHidM.ttf",weight:400,isVariable:!1},{displayName:"Ponnala",filename:"w8gaH2QxQOU08bbbrQut2F4OuOo",category:"display",url:"https://fonts.gstatic.com/s/ponnala/v3/w8gaH2QxQOU08bbbrQut2F4OuOo.ttf",weight:400,isVariable:!1},{displayName:"Edu VIC WA NT Hand",filename:"UcC73EsnIXnOaZKmY1Ry0wZjP9YVRBcq0pj6eUcpng",category:"handwriting",url:"https://fonts.gstatic.com/s/eduvicwanthand/v3/UcC73EsnIXnOaZKmY1Ry0wZjP9YVRBcq0pj6eUcpng.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Inscriptional Pahlavi",filename:"ll8UK3GaVDuxR-TEqFPIbsR79Xxz9WEKbwsjpz7VklYlC7FCVtqVOAYK0QA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansinscriptionalpahlavi/v18/ll8UK3GaVDuxR-TEqFPIbsR79Xxz9WEKbwsjpz7VklYlC7FCVtqVOAYK0QA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Cuneiform",filename:"bMrrmTWK7YY-MF22aHGGd7H8PhJtvBDWgb9JlRQueeQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanscuneiform/v18/bMrrmTWK7YY-MF22aHGGd7H8PhJtvBDWgb9JlRQueeQ.ttf",weight:400,isVariable:!1},{displayName:"Playwrite PE",filename:"FwZc7-Amxlw-50y5PJugmImLpWm6_K7bkA",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritepe/v6/FwZc7-Amxlw-50y5PJugmImLpWm6_K7bkA.ttf",weight:400,isVariable:!0},{displayName:"Jacquard 24 Charted",filename:"mtGm4-dNK6HaudrE9VVKhENTsEXEYish0iRrMYJ_K-4",category:"display",url:"https://fonts.gstatic.com/s/jacquard24charted/v5/mtGm4-dNK6HaudrE9VVKhENTsEXEYish0iRrMYJ_K-4.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Marchen",filename:"aFTO7OZ_Y282EP-WyG6QTOX_C8WZMHhPk652ZaHk",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmarchen/v21/aFTO7OZ_Y282EP-WyG6QTOX_C8WZMHhPk652ZaHk.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Mro",filename:"qWcsB6--pZv9TqnUQMhe9b39WDzRtjkho4M",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmro/v20/qWcsB6--pZv9TqnUQMhe9b39WDzRtjkho4M.ttf",weight:400,isVariable:!1},{displayName:"Kay Pho Du",filename:"jizfREFPvGNOx-jhPwHR4OmnLD0Z4zM",category:"serif",url:"https://fonts.gstatic.com/s/kayphodu/v2/jizfREFPvGNOx-jhPwHR4OmnLD0Z4zM.ttf",weight:400,isVariable:!1},{displayName:"Kanchenjunga",filename:"RWmPoKKd5fUmrILiWsjCI6TiqYsGBGBzCw",category:"sans-serif",url:"https://fonts.gstatic.com/s/kanchenjunga/v2/RWmPoKKd5fUmrILiWsjCI6TiqYsGBGBzCw.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Hanifi Rohingya",filename:"5h1IiYsoOmIC3Yu3MDXLDw3UZCgghyOEBBY7hhLN0IbPeXAy64Y",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanshanifirohingya/v30/5h1IiYsoOmIC3Yu3MDXLDw3UZCgghyOEBBY7hhLN0IbPeXAy64Y.ttf",weight:400,isVariable:!0},{displayName:"Bitcount Grid Single Ink",filename:"NaPLcYHeAOhfxZo1O_IA2ULZRJevZus_A5zQ3wkexdKKt36GpQ",category:"display",url:"https://fonts.gstatic.com/s/bitcountgridsingleink/v2/NaPLcYHeAOhfxZo1O_IA2ULZRJevZus_A5zQ3wkexdKKt36GpQ.ttf",weight:400,isVariable:!0},{displayName:"Jersey 15 Charted",filename:"nuFjD-rCQIjoVp1Sva2ToCTudGbLeRv4r2024gxi",category:"display",url:"https://fonts.gstatic.com/s/jersey15charted/v4/nuFjD-rCQIjoVp1Sva2ToCTudGbLeRv4r2024gxi.ttf",weight:400,isVariable:!1},{displayName:"Bitcount Prop Double",filename:"K2FufY5Wn-tBSVxaDL6DUOXQJ26dEAnh68U4EoporSHH",category:"display",url:"https://fonts.gstatic.com/s/bitcountpropdouble/v3/K2FufY5Wn-tBSVxaDL6DUOXQJ26dEAnh68U4EoporSHH.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Psalter Pahlavi",filename:"rP2Vp3K65FkAtHfwd-eISGznYihzggmsicPfud3w1G3KsUQBct4",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanspsalterpahlavi/v18/rP2Vp3K65FkAtHfwd-eISGznYihzggmsicPfud3w1G3KsUQBct4.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Old South Arabian",filename:"3qT5oiOhnSyU8TNFIdhZTice3hB_HWKsEnF--0XCHiKx1OtDT9HwTA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansoldsoutharabian/v17/3qT5oiOhnSyU8TNFIdhZTice3hB_HWKsEnF--0XCHiKx1OtDT9HwTA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Runic",filename:"H4c_BXWPl9DZ0Xe_nHUaus7W68WWaxpvHtgIYg",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansrunic/v18/H4c_BXWPl9DZ0Xe_nHUaus7W68WWaxpvHtgIYg.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Rejang",filename:"Ktk2AKuMeZjqPnXgyqrib7DIogqwN4O3WYZB_sU",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansrejang/v23/Ktk2AKuMeZjqPnXgyqrib7DIogqwN4O3WYZB_sU.ttf",weight:400,isVariable:!1},{displayName:"Playwrite ES Deco",filename:"7Aulp-g3kjKKGkePXEf2jxctfDxlvHkw2-m9x2iC",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteesdeco/v11/7Aulp-g3kjKKGkePXEf2jxctfDxlvHkw2-m9x2iC.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Buginese",filename:"esDM30ldNv-KYGGJpKGk18phe_7Da6_gtfuEXLmNtw",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansbuginese/v21/esDM30ldNv-KYGGJpKGk18phe_7Da6_gtfuEXLmNtw.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans NKo Unjoined",filename:"MCoCzBjx1d3VUhJFK9MYlNCXJ6VvqwGPz3szJutjFqMvktM",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansnkounjoined/v4/MCoCzBjx1d3VUhJFK9MYlNCXJ6VvqwGPz3szJutjFqMvktM.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Mayan Numerals",filename:"PlIuFk25O6RzLfvNNVSivR09_KqYMwvvDKYjfIiE68oo6eepYQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmayannumerals/v17/PlIuFk25O6RzLfvNNVSivR09_KqYMwvvDKYjfIiE68oo6eepYQ.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Zanabazar Square",filename:"Cn-jJsuGWQxOjaGwMQ6fOicyxLBEMRfDtkzl4uagQtJxOCEgN0Gc",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanszanabazarsquare/v20/Cn-jJsuGWQxOjaGwMQ6fOicyxLBEMRfDtkzl4uagQtJxOCEgN0Gc.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Khudawadi",filename:"fdNi9t6ZsWBZ2k5ltHN73zZ5hc8HANlHIjRnVVXz9MY",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanskhudawadi/v23/fdNi9t6ZsWBZ2k5ltHN73zZ5hc8HANlHIjRnVVXz9MY.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Bhaiksuki",filename:"UcC63EosKniBH4iELXATsSBWdvUHXxhj8rLUdU4wh9U",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansbhaiksuki/v18/UcC63EosKniBH4iELXATsSBWdvUHXxhj8rLUdU4wh9U.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Vai",filename:"NaPecZTSBuhTirw6IaFn_UrURMTsDIRSfr0",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansvai/v19/NaPecZTSBuhTirw6IaFn_UrURMTsDIRSfr0.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Masaram Gondi",filename:"6xK_dThFKcWIu4bpRBjRYRV7KZCbUq6n_1kPnuGe7RI9WSWX",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmasaramgondi/v19/6xK_dThFKcWIu4bpRBjRYRV7KZCbUq6n_1kPnuGe7RI9WSWX.ttf",weight:400,isVariable:!1},{displayName:"Bitcount Prop Single Ink",filename:"wXK4E2YTrpM-pUnBg3-sd4tavSRa27--66omsDmF7FUIszQijA",category:"display",url:"https://fonts.gstatic.com/s/bitcountpropsingleink/v4/wXK4E2YTrpM-pUnBg3-sd4tavSRa27--66omsDmF7FUIszQijA.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Kawi",filename:"92zMtBJLNqsg7tCciW0EPHNNh0xrTCFOFZUF",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanskawi/v5/92zMtBJLNqsg7tCciW0EPHNNh0xrTCFOFZUF.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Saurashtra",filename:"ea8GacQ0Wfz_XKWXe6OtoA8w8zvmYwTef9ndjhPTSIx9",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssaurashtra/v24/ea8GacQ0Wfz_XKWXe6OtoA8w8zvmYwTef9ndjhPTSIx9.ttf",weight:400,isVariable:!1},{displayName:"Tirra",filename:"WBLrrEnNakREGrPF3AHdWn3J",category:"sans-serif",url:"https://fonts.gstatic.com/s/tirra/v2/WBLrrEnNakREGrPF3AHdWn3J.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Mandaic",filename:"cIfnMbdWt1w_HgCcilqhKQBo_OsMI5_A_gMk0izH",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmandaic/v18/cIfnMbdWt1w_HgCcilqhKQBo_OsMI5_A_gMk0izH.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Chakma",filename:"Y4GQYbJ8VTEp4t3MKJSMjg5OIzhi4JjTQhYBeYo",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanschakma/v19/Y4GQYbJ8VTEp4t3MKJSMjg5OIzhi4JjTQhYBeYo.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Elymaic",filename:"UqyKK9YTJW5liNMhTMqe9vUFP65ZD4AjWOT0zi2V",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanselymaic/v18/UqyKK9YTJW5liNMhTMqe9vUFP65ZD4AjWOT0zi2V.ttf",weight:400,isVariable:!1},{displayName:"Micro 5 Charted",filename:"hESp6XxmPDtTtADZhn7oD_yrmxEGRUsJQAlbUA",category:"display",url:"https://fonts.gstatic.com/s/micro5charted/v2/hESp6XxmPDtTtADZhn7oD_yrmxEGRUsJQAlbUA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Inscriptional Parthian",filename:"k3k7o-IMPvpLmixcA63oYi-yStDkgXuXncL7dzfW3P4TAJ2yklBJ2jNkLlLr",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansinscriptionalparthian/v18/k3k7o-IMPvpLmixcA63oYi-yStDkgXuXncL7dzfW3P4TAJ2yklBJ2jNkLlLr.ttf",weight:400,isVariable:!1},{displayName:"Playwrite ID",filename:"Cn-xJt2YWhlY2oC4KxifKQJ8pfghQ3eplw",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteid/v11/Cn-xJt2YWhlY2oC4KxifKQJ8pfghQ3eplw.ttf",weight:400,isVariable:!0},{displayName:"Pochaevsk",filename:"55xuey9_OdX_Om7ReYgloJd4-bnQKg",category:"display",url:"https://fonts.gstatic.com/s/pochaevsk/v5/55xuey9_OdX_Om7ReYgloJd4-bnQKg.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Syriac Western",filename:"ke82OhEEMVFsvCav8hWjbItd6Jf6MP7Z9spJZ6UXK6ARIyH5IA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssyriacwestern/v2/ke82OhEEMVFsvCav8hWjbItd6Jf6MP7Z9spJZ6UXK6ARIyH5IA.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Kaithi",filename:"buEtppS9f8_vkXadMBJJu0tWjLwjQi0KdoZIKlo",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanskaithi/v23/buEtppS9f8_vkXadMBJJu0tWjLwjQi0KdoZIKlo.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Hatran",filename:"A2BBn4Ne0RgnVF3Lnko-0sOBIfL_mM83r1nwzDs",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanshatran/v17/A2BBn4Ne0RgnVF3Lnko-0sOBIfL_mM83r1nwzDs.ttf",weight:400,isVariable:!1},{displayName:"Playwrite TZ",filename:"RLp4K5rs6au7bzABmVQAOwnOZdM8t6g3VQ",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritetz/v11/RLp4K5rs6au7bzABmVQAOwnOZdM8t6g3VQ.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Grantha",filename:"3y976akwcCjmsU8NDyrKo3IQfQ4o-r8cFeulHc6N",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansgrantha/v20/3y976akwcCjmsU8NDyrKo3IQfQ4o-r8cFeulHc6N.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Linear B",filename:"HhyJU4wt9vSgfHoORYOiXOckKNB737IV3BkFTq4EPw",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanslinearb/v18/HhyJU4wt9vSgfHoORYOiXOckKNB737IV3BkFTq4EPw.ttf",weight:400,isVariable:!1},{displayName:"Playwrite DE VA",filename:"VuJpdNPb2p7tvoFGLMPdeMxGN1p9v2HRrDH0eA",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritedeva/v11/VuJpdNPb2p7tvoFGLMPdeMxGN1p9v2HRrDH0eA.ttf",weight:400,isVariable:!0},{displayName:"Jersey 25 Charted",filename:"6NUM8EWHIhCWbxOqtLkv94Rlu6EkGv2uUGQW93Cg",category:"display",url:"https://fonts.gstatic.com/s/jersey25charted/v3/6NUM8EWHIhCWbxOqtLkv94Rlu6EkGv2uUGQW93Cg.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Pahawh Hmong",filename:"bWtp7e_KfBziStx7lIzKKaMUOBEA3UPQDW7krzc_c48aMpM",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanspahawhhmong/v21/bWtp7e_KfBziStx7lIzKKaMUOBEA3UPQDW7krzc_c48aMpM.ttf",weight:400,isVariable:!1},{displayName:"Jersey 10 Charted",filename:"oY1E8fPFr6XiNWqEp90XSbwUGfF8SnedKmeBvEYs",category:"display",url:"https://fonts.gstatic.com/s/jersey10charted/v4/oY1E8fPFr6XiNWqEp90XSbwUGfF8SnedKmeBvEYs.ttf",weight:400,isVariable:!1},{displayName:"Yuji Hentaigana Akebono",filename:"EJRGQhkhRNwM-RtitGUwh930GU_f5KAlkuL0wQy9NKXRzrrF",category:"handwriting",url:"https://fonts.gstatic.com/s/yujihentaiganaakebono/v15/EJRGQhkhRNwM-RtitGUwh930GU_f5KAlkuL0wQy9NKXRzrrF.ttf",weight:400,isVariable:!1},{displayName:"Libertinus Keyboard",filename:"NaPEcYrQAP5Z2JsyIac0i2DYHaapaf43RryztWo_3fk",category:"display",url:"https://fonts.gstatic.com/s/libertinuskeyboard/v2/NaPEcYrQAP5Z2JsyIac0i2DYHaapaf43RryztWo_3fk.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Sunuwar",filename:"FwZB7_04xUkosG2xJo2gm7nF0DTfho_Du2akOrkv",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssunuwar/v1/FwZB7_04xUkosG2xJo2gm7nF0DTfho_Du2akOrkv.ttf",weight:400,isVariable:!1},{displayName:"SN Pro",filename:"NGS1v5zWIAwPIq7RbZ5PuKoY0A",category:"sans-serif",url:"https://fonts.gstatic.com/s/snpro/v1/NGS1v5zWIAwPIq7RbZ5PuKoY0A.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Limbu",filename:"3JnlSDv90Gmq2mrzckOBBRRoNJVj0MF3OHRDnA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanslimbu/v26/3JnlSDv90Gmq2mrzckOBBRRoNJVj0MF3OHRDnA.ttf",weight:400,isVariable:!1},{displayName:"Playwrite DE Grund Guides",filename:"OD5RuNCQ02KrAHnha1L36CWcQ83dtK5BLxqexnduX98TJlnjHAA",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritedegrundguides/v1/OD5RuNCQ02KrAHnha1L36CWcQ83dtK5BLxqexnduX98TJlnjHAA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Nabataean",filename:"IFS4HfVJndhE3P4b5jnZ34DfsjO330dNoBJ9hK8kMK4",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansnabataean/v17/IFS4HfVJndhE3P4b5jnZ34DfsjO330dNoBJ9hK8kMK4.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Pau Cin Hau",filename:"x3d-cl3IZKmUqiMg_9wBLLtzl22EayN7ehIdjEWqKMxsKw",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanspaucinhau/v21/x3d-cl3IZKmUqiMg_9wBLLtzl22EayN7ehIdjEWqKMxsKw.ttf",weight:400,isVariable:!1},{displayName:"Playwrite PL Guides",filename:"jVyW7m_lCm7G5CZyQCAu8mgkGLk-kmibWR3aRZ2Kw7A",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteplguides/v1/jVyW7m_lCm7G5CZyQCAu8mgkGLk-kmibWR3aRZ2Kw7A.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Cypriot",filename:"8AtzGta9PYqQDjyp79a6f8Cj-3a3cxIsK5MPpahF",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanscypriot/v20/8AtzGta9PYqQDjyp79a6f8Cj-3a3cxIsK5MPpahF.ttf",weight:400,isVariable:!1},{displayName:"Playwrite PT Guides",filename:"sJoY3K5JjdGLJV3vyatrMkupgg-kWTx5F5k90TZO69o",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteptguides/v2/sJoY3K5JjdGLJV3vyatrMkupgg-kWTx5F5k90TZO69o.ttf",weight:400,isVariable:!1},{displayName:"Playwrite IT Trad",filename:"SlGKmR6Yo5oYZX5BFVcEySBSPE50BivIh2y2Iq91",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteittrad/v11/SlGKmR6Yo5oYZX5BFVcEySBSPE50BivIh2y2Iq91.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Tamil Supplement",filename:"DdTz78kEtnooLS5rXF1DaruiCd_bFp_Ph4sGcn7ax_vsAeMkeq1x",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanstamilsupplement/v23/DdTz78kEtnooLS5rXF1DaruiCd_bFp_Ph4sGcn7ax_vsAeMkeq1x.ttf",weight:400,isVariable:!1},{displayName:"Playwrite PE Guides",filename:"AMONz5uBsGadFuvf9j8ZyqI0FA3br70wwyyAlqETME8",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritepeguides/v1/AMONz5uBsGadFuvf9j8ZyqI0FA3br70wwyyAlqETME8.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Nushu",filename:"rnCw-xRQ3B7652emAbAe_Ai1IYaFWFAMArZKqQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansnushu/v20/rnCw-xRQ3B7652emAbAe_Ai1IYaFWFAMArZKqQ.ttf",weight:400,isVariable:!1},{displayName:"Bitcount Prop Double Ink",filename:"Y4GYYbpwUzElrfvDMsf8vwlfaBFstfqVIz5JD-B-oNRyiOmDZQ",category:"display",url:"https://fonts.gstatic.com/s/bitcountpropdoubleink/v2/Y4GYYbpwUzElrfvDMsf8vwlfaBFstfqVIz5JD-B-oNRyiOmDZQ.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Ugaritic",filename:"3qTwoiqhnSyU8TNFIdhZVCwbjCpkAXXkMhoIkiazfg",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansugaritic/v17/3qTwoiqhnSyU8TNFIdhZVCwbjCpkAXXkMhoIkiazfg.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Bassa Vah",filename:"PN_sRee-r3f7LnqsD5sax12gjZn7mBpL_4c2VNUQptE",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansbassavah/v21/PN_sRee-r3f7LnqsD5sax12gjZn7mBpL_4c2VNUQptE.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Old Permic",filename:"snf1s1q1-dF8pli1TesqcbUY4Mr-ElrwKLdXgv_dKYB5",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansoldpermic/v18/snf1s1q1-dF8pli1TesqcbUY4Mr-ElrwKLdXgv_dKYB5.ttf",weight:400,isVariable:!1},{displayName:"Noto Serif Dives Akuru",filename:"QldfNSVMqAsHtsJ_TnD3aT03sMgd57ibeeZT60DIyoV9Ejs",category:"serif",url:"https://fonts.gstatic.com/s/notoserifdivesakuru/v8/QldfNSVMqAsHtsJ_TnD3aT03sMgd57ibeeZT60DIyoV9Ejs.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Modi",filename:"pe03MIySN5pO62Z5YkFyT7jeav5qWVAgVol-",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmodi/v25/pe03MIySN5pO62Z5YkFyT7jeav5qWVAgVol-.ttf",weight:400,isVariable:!1},{displayName:"Jersey 20 Charted",filename:"JTUNjJMy9DKq5FzVaj9tpgYgvHqGn_Z1ji-rqnQ_",category:"display",url:"https://fonts.gstatic.com/s/jersey20charted/v4/JTUNjJMy9DKq5FzVaj9tpgYgvHqGn_Z1ji-rqnQ_.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Old Turkic",filename:"yMJNMJVya43H0SUF_WmcGEQVqoEMKDKbsE2RjEw-Vyws",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansoldturkic/v19/yMJNMJVya43H0SUF_WmcGEQVqoEMKDKbsE2RjEw-Vyws.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Kayah Li",filename:"B50SF61OpWTRcGrhOVJJwOMXdca6Yec-gFPEM4EAUw",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanskayahli/v26/B50SF61OpWTRcGrhOVJJwOMXdca6Yec-gFPEM4EAUw.ttf",weight:400,isVariable:!0},{displayName:"Bitcount Ink",filename:"CHykV-zVFUj9azIqslTrFzEuNlAghmBIYQ",category:"display",url:"https://fonts.gstatic.com/s/bitcountink/v2/CHykV-zVFUj9azIqslTrFzEuNlAghmBIYQ.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Deseret",filename:"MwQsbgPp1eKH6QsAVuFb9AZM6MMr2Vq9ZnJSZtQG",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansdeseret/v18/MwQsbgPp1eKH6QsAVuFb9AZM6MMr2Vq9ZnJSZtQG.ttf",weight:400,isVariable:!1},{displayName:"Yarndings 12 Charted",filename:"eLGDP_DlKhO-DUfeqM4I_vDdJgmIh7hAvvbJ0t-dHaJH",category:"display",url:"https://fonts.gstatic.com/s/yarndings12charted/v4/eLGDP_DlKhO-DUfeqM4I_vDdJgmIh7hAvvbJ0t-dHaJH.ttf",weight:400,isVariable:!1},{displayName:"Playwrite BR",filename:"kJE0BuMK4Q07lDHc2Xp9vYgSrMxzBZ2lDA",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritebr/v11/kJE0BuMK4Q07lDHc2Xp9vYgSrMxzBZ2lDA.ttf",weight:400,isVariable:!0},{displayName:"Yarndings 12",filename:"55xreyp2N8T5P2LJbZAlkY9c8ZLMI2VUnQ",category:"display",url:"https://fonts.gstatic.com/s/yarndings12/v4/55xreyp2N8T5P2LJbZAlkY9c8ZLMI2VUnQ.ttf",weight:400,isVariable:!1},{displayName:"Playwrite FR Trad",filename:"sJoe3KxJjdGLJV3vyatrJE2pkQisWXkKHZ0f1CZO",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritefrtrad/v13/sJoe3KxJjdGLJV3vyatrJE2pkQisWXkKHZ0f1CZO.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Ogham",filename:"kmKlZqk1GBDGN0mY6k5lmEmww4hrt5laQxcoCA",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansogham/v18/kmKlZqk1GBDGN0mY6k5lmEmww4hrt5laQxcoCA.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Lepcha",filename:"0QI7MWlB_JWgA166SKhu05TekNS32AJstqBXgd4",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanslepcha/v20/0QI7MWlB_JWgA166SKhu05TekNS32AJstqBXgd4.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Soyombo",filename:"RWmSoL-Y6-8q5LTtXs6MF6q7xsxgY0FrIFOcK25W",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssoyombo/v18/RWmSoL-Y6-8q5LTtXs6MF6q7xsxgY0FrIFOcK25W.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Manichaean",filename:"taiVGntiC4--qtsfi4Jp9-_GkPZZCcrfekqCNTtFCtdX",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmanichaean/v19/taiVGntiC4--qtsfi4Jp9-_GkPZZCcrfekqCNTtFCtdX.ttf",weight:400,isVariable:!1},{displayName:"Yarndings 20",filename:"TuGWUVlkUohEQu8l7K8b-vNFB380PMTK1w",category:"display",url:"https://fonts.gstatic.com/s/yarndings20/v4/TuGWUVlkUohEQu8l7K8b-vNFB380PMTK1w.ttf",weight:400,isVariable:!1},{displayName:"Bitcount Grid Double Ink",filename:"55x_ez5tP8L0NH7JfsNC0tQY0fynXgYg-YY2JqgqdEYE1Ubx_A",category:"display",url:"https://fonts.gstatic.com/s/bitcountgriddoubleink/v2/55x_ez5tP8L0NH7JfsNC0tQY0fynXgYg-YY2JqgqdEYE1Ubx_A.ttf",weight:400,isVariable:!0},{displayName:"Noto Sans Old Sogdian",filename:"3JnjSCH90Gmq2mrzckOBBhFhdrMst48aURt7neIqM-9uyg",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansoldsogdian/v18/3JnjSCH90Gmq2mrzckOBBhFhdrMst48aURt7neIqM-9uyg.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Tirhuta",filename:"t5t6IQYRNJ6TWjahPR6X-M-apUyby7uGUBsTrn5P",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanstirhuta/v17/t5t6IQYRNJ6TWjahPR6X-M-apUyby7uGUBsTrn5P.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Phoenician",filename:"jizFRF9Ksm4Bt9PvcTaEkIHiTVtxmFtS5X7Jot-p5561",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansphoenician/v18/jizFRF9Ksm4Bt9PvcTaEkIHiTVtxmFtS5X7Jot-p5561.ttf",weight:400,isVariable:!1},{displayName:"Jacquarda Bastarda 9 Charted",filename:"Yq6D-KaMUyfq4qLgx19A_ocp43FeLd9m0vDxm-yf8JPuf0cPaL8pmQg",category:"display",url:"https://fonts.gstatic.com/s/jacquardabastarda9charted/v4/Yq6D-KaMUyfq4qLgx19A_ocp43FeLd9m0vDxm-yf8JPuf0cPaL8pmQg.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Siddham",filename:"OZpZg-FwqiNLe9PELUikxTWDoCCeGqndk3Ic92ZH",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanssiddham/v21/OZpZg-FwqiNLe9PELUikxTWDoCCeGqndk3Ic92ZH.ttf",weight:400,isVariable:!1},{displayName:"Playwrite NZ Basic",filename:"YcmrsYdNS1SdgmHbGgtRtk4ljD2L-0ttveOqmaM9pA",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritenzbasic/v1/YcmrsYdNS1SdgmHbGgtRtk4ljD2L-0ttveOqmaM9pA.ttf",weight:400,isVariable:!0},{displayName:"Yarndings 20 Charted",filename:"QldRNSdbpg0G8vh0W2qxe0l-hcUPtY2VaLQm4UTqz5V9",category:"display",url:"https://fonts.gstatic.com/s/yarndings20charted/v4/QldRNSdbpg0G8vh0W2qxe0l-hcUPtY2VaLQm4UTqz5V9.ttf",weight:400,isVariable:!1},{displayName:"Playwrite NZ Basic Guides",filename:"R70Ijzkdl_2TLaCpQB6Y1nC0FVKKJvaZ2hDyljkrmGCAdZNU-YI",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritenzbasicguides/v1/R70Ijzkdl_2TLaCpQB6Y1nC0FVKKJvaZ2hDyljkrmGCAdZNU-YI.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Meroitic",filename:"IFS5HfRJndhE3P4b5jnZ3ITPvC6i00UDgDhTiKY9KQ",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmeroitic/v19/IFS5HfRJndhE3P4b5jnZ3ITPvC6i00UDgDhTiKY9KQ.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Mende Kikakui",filename:"11hRGoLHz17aKjQCWj-JHcLvu2Q5zZrnkbNCLUx_aDJLAHer",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosansmendekikakui/v30/11hRGoLHz17aKjQCWj-JHcLvu2Q5zZrnkbNCLUx_aDJLAHer.ttf",weight:400,isVariable:!1},{displayName:"Playwrite NZ Guides",filename:"t5t8IQQPN4uFDRepJwiX4vzIikyGzv71Wh8xq25PL5k",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritenzguides/v2/t5t8IQQPN4uFDRepJwiX4vzIikyGzv71Wh8xq25PL5k.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Kharoshthi",filename:"Fh4qPiLjKS30-P4-pGMMXCCfvkc5Vd7KE5z4rFyx5mR1",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanskharoshthi/v17/Fh4qPiLjKS30-P4-pGMMXCCfvkc5Vd7KE5z4rFyx5mR1.ttf",weight:400,isVariable:!1},{displayName:"Noto Sans Lycian",filename:"QldVNSNMqAsHtsJ7UmqxBQA9r8wA5_naCJwn00E",category:"sans-serif",url:"https://fonts.gstatic.com/s/notosanslycian/v16/QldVNSNMqAsHtsJ7UmqxBQA9r8wA5_naCJwn00E.ttf",weight:400,isVariable:!1},{displayName:"Playwrite BE WAL Guides",filename:"l7gPbiR5yM62ycwevWCt02rrTFoEJvY4kyrrUzHlVJabaOSA",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritebewalguides/v1/l7gPbiR5yM62ycwevWCt02rrTFoEJvY4kyrrUzHlVJabaOSA.ttf",weight:400,isVariable:!1},{displayName:"Playwrite AU VIC Guides",filename:"ll8sK3mEVy6nEMXMskXIZv8owEdZpVIWaQEnuD6F2TpBa98q",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteauvicguides/v1/ll8sK3mEVy6nEMXMskXIZv8owEdZpVIWaQEnuD6F2TpBa98q.ttf",weight:400,isVariable:!1},{displayName:"Playwrite IE Guides",filename:"LhW5MULFNP8PI-1UADw_Kbp9daTx5ovUaNojN9_8IVQ",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteieguides/v1/LhW5MULFNP8PI-1UADw_Kbp9daTx5ovUaNojN9_8IVQ.ttf",weight:400,isVariable:!1},{displayName:"Playwrite TZ Guides",filename:"SLXUc0_L5XEkcjBPGvusk4lULgsM9U5_YQy93JQ2XEg",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritetzguides/v1/SLXUc0_L5XEkcjBPGvusk4lULgsM9U5_YQy93JQ2XEg.ttf",weight:400,isVariable:!1},{displayName:"Playwrite NL Guides",filename:"FwZH7_8mxlw-50y5PJughoCL4jbXkMqwsWKGP6kvdPA",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritenlguides/v1/FwZH7_8mxlw-50y5PJughoCL4jbXkMqwsWKGP6kvdPA.ttf",weight:400,isVariable:!1},{displayName:"Cossette Texte",filename:"S6ukw4pDXzTb-m1kPi_7eV-ciP01xPBQ19bE",category:"sans-serif",url:"https://fonts.gstatic.com/s/cossettetexte/v3/S6ukw4pDXzTb-m1kPi_7eV-ciP01xPBQ19bE.ttf",weight:400,isVariable:!1},{displayName:"Playwrite ES Deco Guides",filename:"flUrRriwwII5RVl2TZ1XBNTUOYY6ZzZzwPCEKtwqYEyDBQWJ7Q",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteesdecoguides/v1/flUrRriwwII5RVl2TZ1XBNTUOYY6ZzZzwPCEKtwqYEyDBQWJ7Q.ttf",weight:400,isVariable:!1},{displayName:"Playwrite ZA Guides",filename:"O4ZOFHPsmxlhCg3-iycDyEwy0BT1ribk2HDoCLfQmgE",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritezaguides/v1/O4ZOFHPsmxlhCg3-iycDyEwy0BT1ribk2HDoCLfQmgE.ttf",weight:400,isVariable:!1},{displayName:"Playwrite DE VA Guides",filename:"WwkPxOmkDVqm-ojMLT_kdMUoBpMYm6KTeb28UB9SNQIUdqQ",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritedevaguides/v1/WwkPxOmkDVqm-ojMLT_kdMUoBpMYm6KTeb28UB9SNQIUdqQ.ttf",weight:400,isVariable:!1},{displayName:"Playwrite FR Moderne Guides",filename:"CSRr4yxOn-mMWCgLPl16KrUKBbwa2ZZLdkrvXllIP22HnIzLvrG2fw",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritefrmoderneguides/v2/CSRr4yxOn-mMWCgLPl16KrUKBbwa2ZZLdkrvXllIP22HnIzLvrG2fw.ttf",weight:400,isVariable:!1},{displayName:"Playwrite FR Trad Guides",filename:"l7gMbit5yM62ycwevWCt133rT2kpYpEKjyfqRWLFfriXYf2ZXw",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritefrtradguides/v1/l7gMbit5yM62ycwevWCt133rT2kpYpEKjyfqRWLFfriXYf2ZXw.ttf",weight:400,isVariable:!1},{displayName:"Playwrite IT Moderna Guides",filename:"2sDKZHBJg5rCj6fz_QgDJhGcTtJ5AVu-1w5jRQjRv9qPpOVtBhB5gQ",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteitmodernaguides/v1/2sDKZHBJg5rCj6fz_QgDJhGcTtJ5AVu-1w5jRQjRv9qPpOVtBhB5gQ.ttf",weight:400,isVariable:!1},{displayName:"Playwrite IT Trad Guides",filename:"SlGDmReYo5oYZX5BFVcEySBSPE50BiuP2AHaRsRUA4V-e6yHgQ",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteittradguides/v2/SlGDmReYo5oYZX5BFVcEySBSPE50BiuP2AHaRsRUA4V-e6yHgQ.ttf",weight:400,isVariable:!1},{displayName:"Playwrite US Modern Guides",filename:"0QI1MWNf_4C2VH-yUr5uyqKOvtOynXAoku8j8Lv9pryxZQscrW1V",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteusmodernguides/v1/0QI1MWNf_4C2VH-yUr5uyqKOvtOynXAoku8j8Lv9pryxZQscrW1V.ttf",weight:400,isVariable:!1},{displayName:"Playwrite BR Guides",filename:"tssxAohQaiQS-wrnJz-F5CqW4dOezRwp-9cCOxBu_BM",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritebrguides/v1/tssxAohQaiQS-wrnJz-F5CqW4dOezRwp-9cCOxBu_BM.ttf",weight:400,isVariable:!1},{displayName:"Playwrite AU SA Guides",filename:"3JnsSCLj03y8jUv7aFWBCCglBaFjl54aVBAovcgEP-Z3054",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteausaguides/v1/3JnsSCLj03y8jUv7aFWBCCglBaFjl54aVBAovcgEP-Z3054.ttf",weight:400,isVariable:!1},{displayName:"Playwrite CL Guides",filename:"Z9XKDnxTQxyGzOn3eMH-i6Ws0czqkE-hrNpVuw5_BAM",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteclguides/v2/Z9XKDnxTQxyGzOn3eMH-i6Ws0czqkE-hrNpVuw5_BAM.ttf",weight:400,isVariable:!1},{displayName:"Playwrite ID Guides",filename:"MjQamj1kuP_soQ3o-rysMdWi_8oJlIUUInch3bTfcxs",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteidguides/v1/MjQamj1kuP_soQ3o-rysMdWi_8oJlIUUInch3bTfcxs.ttf",weight:400,isVariable:!1},{displayName:"Playwrite DK Uloopet Guides",filename:"WwkKxOSkDVqm-ojMLT_kdMsoBb5Xs6efafiIBXYcVHk1bo9bkIONtA",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritedkuloopetguides/v1/WwkKxOSkDVqm-ojMLT_kdMsoBb5Xs6efafiIBXYcVHk1bo9bkIONtA.ttf",weight:400,isVariable:!1},{displayName:"Playwrite DK Loopet Guides",filename:"4iC46LlmYsRPlQ1zDEvT8weoW-sI8-h9xxN83W-Cb5tmElj-b0nB",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritedkloopetguides/v1/4iC46LlmYsRPlQ1zDEvT8weoW-sI8-h9xxN83W-Cb5tmElj-b0nB.ttf",weight:400,isVariable:!1},{displayName:"Playwrite ES Guides",filename:"VuJtdM_b2p7tvoFGLMPdedpGJm402y6mhDDGfdnzXeU",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteesguides/v1/VuJtdM_b2p7tvoFGLMPdedpGJm402y6mhDDGfdnzXeU.ttf",weight:400,isVariable:!1},{displayName:"Playwrite AU QLD Guides",filename:"TuGBUUJtX5tTUfQi_7kbiZZFVhl0FIKnvy00LDxlIzIU5RwD",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteauqldguides/v1/TuGBUUJtX5tTUfQi_7kbiZZFVhl0FIKnvy00LDxlIzIU5RwD.ttf",weight:400,isVariable:!1},{displayName:"Playwrite NG Modern Guides",filename:"6qLVKYQNtxD-qVlIPUIPdWMlWxy3BmFEQgxB1xvFhDarWJtyZyGU",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritengmodernguides/v1/6qLVKYQNtxD-qVlIPUIPdWMlWxy3BmFEQgxB1xvFhDarWJtyZyGU.ttf",weight:400,isVariable:!1},{displayName:"Playwrite HU Guides",filename:"AYCXpWvtftIVXepC5AzjCAdKgYPugOK0TqxTJw_GOM0",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritehuguides/v1/AYCXpWvtftIVXepC5AzjCAdKgYPugOK0TqxTJw_GOM0.ttf",weight:400,isVariable:!1},{displayName:"Playwrite AU TAS Guides",filename:"cY9Vfi6cVk5RvjGtQrLqjozy3ekUDtDMDX-NNjbKL4UbaDZD",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteautasguides/v1/cY9Vfi6cVk5RvjGtQrLqjozy3ekUDtDMDX-NNjbKL4UbaDZD.ttf",weight:400,isVariable:!1},{displayName:"Playwrite HR Lijeva Guides",filename:"uU9aCAgH7I63K35cu3bRkqamzjr8EW133LJaXDO-QObhgDgMKYJO",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritehrlijevaguides/v1/uU9aCAgH7I63K35cu3bRkqamzjr8EW133LJaXDO-QObhgDgMKYJO.ttf",weight:400,isVariable:!1},{displayName:"Playwrite DE LA Guides",filename:"1q2XY42fB0V64O4aSe1OjKs_yAXBOfDI5wE56g2M62M1AXs",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritedelaguides/v2/1q2XY42fB0V64O4aSe1OjKs_yAXBOfDI5wE56g2M62M1AXs.ttf",weight:400,isVariable:!1},{displayName:"Playwrite AT Guides",filename:"QdVKSS0gJR2xneUeQPfE-FVA1BlZQRpBRbgJdhapcUU",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteatguides/v1/QdVKSS0gJR2xneUeQPfE-FVA1BlZQRpBRbgJdhapcUU.ttf",weight:400,isVariable:!1},{displayName:"Playwrite AU NSW Guides",filename:"LDIiao-QNRMmVPcU8-sgUraMF7GZs_1Emk3v8tPbZeQ3YBXs",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteaunswguides/v1/LDIiao-QNRMmVPcU8-sgUraMF7GZs_1Emk3v8tPbZeQ3YBXs.ttf",weight:400,isVariable:!1},{displayName:"Playwrite BE VLG Guides",filename:"EYqjmb1Mz6hO4edaU9qKGFZMDd_Q-zwwK__U1u9GK3nNgEoc",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritebevlgguides/v2/EYqjmb1Mz6hO4edaU9qKGFZMDd_Q-zwwK__U1u9GK3nNgEoc.ttf",weight:400,isVariable:!1},{displayName:"Playwrite SK Guides",filename:"P5sezYaSYdfH5z93kEFk3tyPlqxeQeo_JzruWQshcbU",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteskguides/v1/P5sezYaSYdfH5z93kEFk3tyPlqxeQeo_JzruWQshcbU.ttf",weight:400,isVariable:!1},{displayName:"Playwrite GB S Guides",filename:"0FlKVOSHl1iH-fv2BH4kIkUBqtlNCEaQLlyKx1QPi-Z8Fw",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritegbsguides/v1/0FlKVOSHl1iH-fv2BH4kIkUBqtlNCEaQLlyKx1QPi-Z8Fw.ttf",weight:400,isVariable:!1},{displayName:"Playwrite HR Guides",filename:"6NUK8EedKwOcfRjj8ukv_L4kjqAoGrjdWmA08mCgdfM",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritehrguides/v1/6NUK8EedKwOcfRjj8ukv_L4kjqAoGrjdWmA08mCgdfM.ttf",weight:400,isVariable:!1},{displayName:"Playwrite NO Guides",filename:"DPEwYx-Cyg4cQ2aAcFshOLL79zJKccqHe2-Z2vnLeAs",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritenoguides/v1/DPEwYx-Cyg4cQ2aAcFshOLL79zJKccqHe2-Z2vnLeAs.ttf",weight:400,isVariable:!1},{displayName:"Playwrite RO Guides",filename:"wlptgx7ZCE50snmWiOExiylvL10_b5Ym_LBte6KuGEo",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteroguides/v1/wlptgx7ZCE50snmWiOExiylvL10_b5Ym_LBte6KuGEo.ttf",weight:400,isVariable:!1},{displayName:"Playwrite CA Guides",filename:"MjQamj1kuP_soQ3o-rysO9Ci_8oJlIUUInch3bTfcxs",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritecaguides/v1/MjQamj1kuP_soQ3o-rysO9Ci_8oJlIUUInch3bTfcxs.ttf",weight:400,isVariable:!1},{displayName:"Playwrite DE SAS Guides",filename:"8At5GtCjPp-GWR2h9cC6ePzz2l6LJ3VZaPNi15BEdtBgPI1G",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritedesasguides/v1/8At5GtCjPp-GWR2h9cC6ePzz2l6LJ3VZaPNi15BEdtBgPI1G.ttf",weight:400,isVariable:!1},{displayName:"Playwrite IS Guides",filename:"5aUp9-GkphaVExwxdX6SwWF-uigk3Cglrm9ptxu7HZ0",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteisguides/v1/5aUp9-GkphaVExwxdX6SwWF-uigk3Cglrm9ptxu7HZ0.ttf",weight:400,isVariable:!1},{displayName:"Playwrite AR Guides",filename:"iJWYBWqKZTrYS9uv-Ry6kDf-q_0Xq67mcGUaW4_MiYQ",category:"handwriting",url:"https://fonts.gstatic.com/s/playwritearguides/v5/iJWYBWqKZTrYS9uv-Ry6kDf-q_0Xq67mcGUaW4_MiYQ.ttf",weight:400,isVariable:!1},{displayName:"Playwrite CZ Guides",filename:"6qLcKY0NtxD-qVlIPUIPeH4lUQa6B3ZZQkseuneh7xc",category:"handwriting",url:"https://fonts.gstatic.com/s/playwriteczguides/v1/6qLcKY0NtxD-qVlIPUIPeH4lUQa6B3ZZQkseuneh7xc.ttf",weight:400,isVariable:!1}],Kh=new Map(h2.map(t=>[t.filename,t])),Jh=new Map(h2.map(t=>[t.displayName,t])),oi="https://templates.shotstack.io/basic/asset/font",ja={Arapey:`${oi}/arapey-regular.ttf`,"Clear Sans":`${oi}/clearsans-regular.ttf`,"Clear Sans Bold":`${oi}/clearsans-bold.ttf`,"Didact Gothic":`${oi}/didactgothic-regular.ttf`,Montserrat:`${oi}/Montserrat.ttf`,MovLette:`${oi}/movlette.ttf`,"Open Sans":`${oi}/OpenSans.ttf`,"Permanent Marker":`${oi}/permanentmarker-regular.ttf`,Roboto:`${oi}/Roboto.ttf`,"Sue Ellen Francisco":`${oi}/sueellenfrancisco-regular.ttf`,"Work Sans":`${oi}/worksans.ttf`},fV={ClearSans:"Clear Sans",DidactGothic:"Didact Gothic",OpenSans:"Open Sans",PermanentMarker:"Permanent Marker",SueEllenFrancisco:"Sue Ellen Francisco",WorkSans:"Work Sans"},hV={Thin:100,ExtraLight:200,Light:300,Regular:400,Medium:500,SemiBold:600,Bold:700,ExtraBold:800,Black:900};function Dr(t){const{family:e,weight:r}=Oa(t);return{baseFontFamily:e,fontWeight:Number(r)}}function Ga(t,e){const r=Kh.get(t);if(r)return r.url;const{baseFontFamily:n}=Dr(t),i=fV[n]??n;if(e!==void 0&&e!==400){const s=Object.entries(hV).find(([,o])=>o===e)?.[0];if(s){const o=`${i} ${s}`;if(ja[o])return ja[o]}}if(ja[t])return ja[t];if(ja[i])return ja[i];if(e!==void 0){const s=Jh.get(i);if(s?.isVariable)return s.url}const a=Jh.get(t);if(a)return a.url}function dV(t){return(Kh.get(t)??Jh.get(t))?.url}function Qh(t){const e=Kh.get(t);return e?e.displayName:t}class jl{static Name="SubtitleLoadParser";id;name;extension;validExtensions;constructor(){this.id=jl.Name,this.name=jl.Name,this.extension={type:[st.ExtensionType.LoadParser],priority:st.LoaderParserPriority.Normal,ref:null},this.validExtensions=["srt","vtt"]}test(e){const r=e.split("?")[0]?.split(".").pop()?.toLowerCase()??"";return this.validExtensions.includes(r)}async load(e){try{const r=await fetch(e);if(!r.ok)return null;const n=await r.text();return{content:n,cues:u_(n)}}catch{return null}}unload(e){}}const pV="Captions will appear here";class Gl extends Je{static loadedFonts=new Set;state={kind:"loaded",cues:[]};currentCue=null;background=null;text=null;constructor(e,r){super(e,r,Ee.Caption)}async load(){await super.load();const e=this.clipConfiguration.asset,r=e.font?.family??"Open Sans";if(await this.loadFont(r),this.state=br(e.src)?{kind:"placeholder"}:await this.loadSubtitles(e.src),this.background=new st.Graphics,this.contentContainer.addChild(this.background),this.text=new st.Text({text:"",style:this.createTextStyle(e)}),this.text.visible=!1,e.stroke?.width&&e.stroke.width>0&&e.stroke.color){const n=new es.OutlineFilter({thickness:e.stroke.width,color:e.stroke.color});this.text.filters=[n]}this.contentContainer.addChild(this.text),this.state.kind==="placeholder"&&this.showPlaceholder(e),this.configureKeyframes()}update(e,r){if(super.update(e,r),!this.text||this.state.kind==="placeholder")return;const n=this.clipConfiguration.asset,i=n.trim??0,a=this.getPlaybackTime()+i,s=l_(this.state.cues,a);s!==this.currentCue&&(this.currentCue=s,this.updateDisplay(s,n))}dispose(){super.dispose(),this.background?.destroy(),this.background=null,this.text?.destroy(),this.text=null,this.state={kind:"loaded",cues:[]},this.currentCue=null}getSize(){const e=this.clipConfiguration.asset;return{width:this.clipConfiguration.width??e.width??this.edit.size.width,height:this.clipConfiguration.height??e.height??this.edit.size.height}}getFitScale(){return 1}getContainerScale(){const e=this.getScale();return{x:e,y:e}}async loadSubtitles(e){try{const r={src:e,parser:jl.Name},n=await this.edit.assetLoader.load(e,r);return n?{kind:"loaded",cues:n.cues}:(console.warn("Failed to load subtitles"),{kind:"placeholder"})}catch(r){return console.warn("Failed to load subtitles:",r),{kind:"placeholder"}}}showPlaceholder(e){const r={start:0,end:1/0,text:pV};this.updateDisplay(r,e)}createTextStyle(e){const r=e.font?.family??"Open Sans",{baseFontFamily:n,fontWeight:i}=Dr(r),a=e.font?.size??32,{width:s}=this.getSize();return new st.TextStyle({fontFamily:n,fontSize:a,fill:e.font?.color??"#ffffff",fontWeight:i.toString(),wordWrap:!0,wordWrapWidth:s*.9,lineHeight:(e.font?.lineHeight??1.2)*a,align:e.alignment?.horizontal??"center"})}updateDisplay(e,r){if(!(!this.text||!this.background)){if(!e){this.text.visible=!1,this.background.clear();return}this.text.text=e.text,this.text.visible=!0,this.positionText(r),this.drawBackground(r)}}positionText(e){if(!this.text)return;const r=e.alignment?.horizontal??"center",n=e.alignment?.vertical??"bottom",{width:i,height:a}=this.getSize(),s=e.background?.padding??10;let o=i/2-this.text.width/2;r==="left"?o=s:r==="right"&&(o=i-this.text.width-s);let u=a*.9;n==="top"?u=s:n==="center"&&(u=a/2-this.text.height/2),this.text.position.set(o,u)}drawBackground(e){if(!this.background||!this.text||!this.text.visible){this.background?.clear();return}const r=e.background;if(!r?.color){this.background.clear();return}const n=r.padding??10,i=r.borderRadius??4,a=this.text.x-n,s=this.text.y-n,o=this.text.width+n*2,u=this.text.height+n*2;this.background.clear(),this.background.fillStyle={color:r.color,alpha:r.opacity??.8},i>0?this.background.roundRect(a,s,o,u,i):this.background.rect(a,s,o,u),this.background.fill()}async loadFont(e){const{baseFontFamily:r,fontWeight:n}=Dr(e),i=`${r}-${n}`;if(Gl.loadedFonts.has(i))return;const a=Ga(e);if(a){const s=new FontFace(r,`url(${a})`,{weight:n.toString()});await s.load(),document.fonts.add(s),Gl.loadedFonts.add(i)}}}class mV extends Je{background;text;constructor(e,r){super(e,r,Ee.Html),this.background=null,this.text=null}async load(){await super.load();const e=this.clipConfiguration.asset,r=await this.parseDocument();if(!r)return;const n=new st.Graphics;r.background.color&&(n.fillStyle={color:r.background.color,alpha:r.background.opacity??1},n.rect(0,0,e.width??this.edit.size.width,e.height??this.edit.size.height),n.fill());const i=new st.Text;i.text=r.text;const{horizontal:a,vertical:s}=r.alignment;i.style={fontFamily:r.font?.family??"Open Sans",fontSize:r.font?.size??32,fill:r.font?.color??"#ffffff",fontWeight:(r.font?.weight??"400").toString(),wordWrap:!0,wordWrapWidth:e.width??this.edit.size.width,lineHeight:(r.font?.lineHeight??1)*(r.font?.size??32),align:a};let o=(e.width??this.edit.size.width)/2-i.width/2,u=(e.height??this.edit.size.height)/2-i.height/2;if(a==="left"&&(o=0),a==="right"&&(o=(e.width??this.edit.size.width)-i.width),s==="top"&&(u=0),s==="bottom"&&(u=(e.height??this.edit.size.height)-i.height),i.position={x:o,y:u},r.stroke.color&&r.stroke.width){const l=new es.OutlineFilter({thickness:r.stroke.width,color:r.stroke.color});i.filters=[l]}this.background=n,this.text=i,this.contentContainer.addChild(n),this.contentContainer.addChild(i),this.configureKeyframes()}update(e,r){super.update(e,r)}dispose(){super.dispose(),this.background?.destroy(),this.background=null,this.text?.destroy(),this.text=null}getSize(){const e=this.clipConfiguration.asset;return{width:e.width??this.edit.size.width,height:e.height??this.edit.size.height}}getFitScale(){return 1}async parseDocument(){const e=this.clipConfiguration.asset,{html:r,css:n="",position:i}=e;if(!r.includes('data-html-type="text"'))return console.warn("Unsupported html format."),null;const s=new DOMParser().parseFromString(r,"text/html").body.textContent??"",u=(await new CSSStyleSheet().replace(n)).cssRules[0],l={text:s,font:{},alignment:{},background:{},stroke:{}};if(u?.constructor.name!=="CSSStyleRule"||!("style"in u))return console.warn("Unsupported css format."),l;const c=u.style,h=this.parseAlignment(i??"center");l.font={color:c.color.length?c.color:void 0,family:c.fontFamily.length?c.fontFamily:void 0,size:c.fontSize.length?parseInt(c.fontSize,10):void 0,weight:c.fontWeight.length?parseInt(c.fontWeight,10):void 0,lineHeight:c.lineHeight.length?parseInt(c.lineHeight,10):void 0},l.alignment=h;let p="";return c.background.length&&(p=c.background),c.backgroundColor.length&&(p=c.backgroundColor),l.background={color:p.length?p:void 0,opacity:c.opacity.length?parseInt(c.opacity,10):void 0},l.stroke={width:c.strokeWidth.length?parseInt(c.strokeWidth,10):void 0,color:c.stroke.length?c.stroke:void 0},l}parseAlignment(e){switch(e){case"topLeft":return{horizontal:"left",vertical:"top"};case"top":return{horizontal:"center",vertical:"top"};case"topRight":return{horizontal:"right",vertical:"top"};case"left":return{horizontal:"left",vertical:"center"};case"right":return{horizontal:"right",vertical:"center"};case"bottomLeft":return{horizontal:"left",vertical:"bottom"};case"bottom":return{horizontal:"center",vertical:"bottom"};case"bottomRight":return{horizontal:"right",vertical:"bottom"};case"center":default:return{horizontal:"center",vertical:"center"}}}}function Wl(t){return!!(t&&typeof t=="object"&&!Array.isArray(t))}function td(t,e){const r={...t};return Wl(t)&&Wl(e)&&Object.keys(e).forEach(n=>{if(n==="__proto__"||n==="constructor"||n==="prototype")return;const i=e[n],a=t[n];Wl(i)?n in t&&Wl(a)?r[n]=td(a,i):r[n]=td({},i):r[n]=i}),r}function Yi(t,e,r){const n=e.split(".");let i=t;for(let a=0;a<n.length-1;a+=1){if(i==null||typeof i!="object")return;const s=n[a],o=i[s];(o==null||typeof o!="object")&&(i[s]={}),i=i[s]}i!=null&&typeof i=="object"&&(i[n[n.length-1]]=r)}function Hl(t,e){const r=e.split(".");let n=t;for(const i of r){if(n==null||typeof n!="object")return;n=n[i]}return n}function ed(){return new Promise(t=>{let e=!1;const r=()=>{e||(e=!0,t())};setTimeout(r,32),typeof requestAnimationFrame=="function"&&requestAnimationFrame(r)})}const gV="shotstack-html5-cache",yV=1,Fi="captures",d2=30;let Yl=null,ql=null;function p2(){return Yl||(Yl=new Promise(t=>{try{const e=indexedDB.open(gV,yV);e.onupgradeneeded=()=>{const r=e.result;r.objectStoreNames.contains(Fi)||r.createObjectStore(Fi)},e.onsuccess=()=>t(e.result),e.onerror=()=>{console.warn("[Html5CaptureCache] indexedDB.open failed:",e.error),t(null)},e.onblocked=()=>{console.warn("[Html5CaptureCache] indexedDB.open blocked"),t(null)}}catch(e){console.warn("[Html5CaptureCache] indexedDB unavailable:",e),t(null)}}),Yl)}function m2(t){return ql||(ql=new Promise(e=>{try{const r=t.transaction(Fi,"readonly"),n=r.objectStore(Fi),i=n.getAllKeys(),a=n.getAll();r.oncomplete=()=>e(),r.onerror=()=>e(),r.onabort=()=>e(),Promise.all([new Promise(s=>{i.onsuccess=()=>s(i.result),i.onerror=()=>s([])}),new Promise(s=>{a.onsuccess=()=>s(a.result),a.onerror=()=>s([])})]).then(([s,o])=>{if(s.length<=d2)return;const u=s.map((p,g)=>({key:p,createdAt:o[g]?.createdAt??0}));u.sort((p,g)=>p.createdAt-g.createdAt);const l=u.slice(0,s.length-d2),h=t.transaction(Fi,"readwrite").objectStore(Fi);for(const p of l)h.delete(p.key)}).catch(s=>{console.warn("[Html5CaptureCache] eviction failed:",s)})}catch(r){console.warn("[Html5CaptureCache] eviction threw:",r),e()}}),ql)}async function vV(t){const e=await p2();return e?(m2(e).catch(()=>{}),new Promise(r=>{try{const a=e.transaction(Fi,"readonly").objectStore(Fi).get(t);a.onsuccess=()=>{const s=a.result;r(s??null)},a.onerror=()=>{console.warn("[Html5CaptureCache] get failed:",a.error),r(null)}}catch(n){console.warn("[Html5CaptureCache] get threw:",n),r(null)}})):null}async function bV(t,e){const r=await p2();r&&(m2(r).catch(()=>{}),await new Promise(n=>{try{const i=r.transaction(Fi,"readwrite"),s=i.objectStore(Fi).put(e,t);s.onsuccess=()=>n(),s.onerror=()=>{console.warn("[Html5CaptureCache] put failed:",s.error),n()},i.onerror=()=>n()}catch(i){console.warn("[Html5CaptureCache] put threw:",i),n()}}))}function fo(t,e){const r=new st.Graphics;return r.fillStyle={color:"#cccccc",alpha:.5},r.rect(0,0,t,e),r.fill(),r.strokeStyle={color:"#999999",width:2},r.moveTo(0,0),r.lineTo(t,e),r.moveTo(t,0),r.lineTo(0,e),r.stroke(),r}function wV(t,e){const r=new st.Container,n=Math.max(12,Math.round(t*.06)),i=t-n*2,a=Math.max(4,Math.round(e/220)),s=a/2,o=n,u=e-Math.max(18,Math.round(e/36))-a,l=Math.min(30,Math.max(13,Math.round(e/42))),c=new st.Text({text:"Loading clip…",style:new st.TextStyle({fontFamily:"system-ui, sans-serif",fontSize:l,fill:14870768,fontWeight:"600"})}),h=Math.round(l*.6),p=Math.round(l*.3),g=c.width+h*2,y=c.height+p*2,E=u-y-Math.round(a*2)-4,v=new st.Graphics;v.fillStyle={color:"#0f172a",alpha:.7},v.roundRect(o,E,g,y,Math.round(y/2)),v.fill(),r.addChild(v),c.x=o+h,c.y=E+p,r.addChild(c);const C=new st.Graphics;C.fillStyle={color:"#0f172a",alpha:.6},C.roundRect(o,u,i,a,s),C.fill(),r.addChild(C);const I=new st.Graphics;r.addChild(I);const x=A=>{const S=Math.max(0,Math.min(1,A));I.clear(),!(S<=0)&&(I.fillStyle={color:"#34d399",alpha:1},I.roundRect(o,u,Math.max(a,i*S),a,s),I.fill())};return x(0),{container:r,setProgress:x}}const g2=-1e4,_V=1e4,xV=30,CV="__shotstackSeek",y2=4;function AV(t){t.getBoundingClientRect()}function v2(t,e=_V,r=!1){return new Promise((n,i)=>{if(!r&&t.contentDocument?.readyState==="complete"){n();return}let a=0;const s=()=>{window.clearTimeout(a),n()};a=window.setTimeout(()=>{t.removeEventListener("load",s),i(new Error(`iframe load timed out after ${e}ms — user JS may have hung`))},e),t.addEventListener("load",s,{once:!0})})}async function EV(t,e,r){const n=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(t)}`,i=new Image;i.src=n,await i.decode();const a=document.createElement("canvas");a.width=e,a.height=r;const s=a.getContext("2d");if(!s)throw new Error("2D context unavailable for foreignObject rasterise");s.drawImage(i,0,0,e,r);const o=await new Promise(u=>{a.toBlob(u,"image/webp",.85)});if(!o)throw new Error(`canvas.toBlob returned null — taint? (svg bytes=${t.length})`);return new Uint8Array(await o.arrayBuffer())}class Xl extends Je{static captureChain=Promise.resolve();iframe=null;renderedWidth=0;renderedHeight=0;capturedFrames=null;decodedFrames=new Map;decodeInFlight=null;captureInFlight=null;captureFps=30;mode="editing";contentHash=null;capturedHash=null;lastFrameIdx=-1;playbackSprite=null;staticSprite=null;hasTriggeredCapture=!1;loadingGraphic=null;loadingSetProgress=null;captureFramesDone=0;captureFramesTotal=0;disposed=!1;seekErrorReported=!1;constructor(e,r){super(e,r,Ee.Html5)}get asset(){return this.clipConfiguration.asset}get harnessWindow(){return this.iframe?.contentWindow??null}hashAsset(){const{asset:e}=this;return AD({html:e.html??"",css:e.css??"",js:e.js??"",width:this.renderedWidth,height:this.renderedHeight})}getStudioCanvas(){return this.edit.getCanvas()?.application.canvas??null}getIframeMountElement(){return this.edit.getCanvas()?.getRootElement()??document.body}parkIframe(){this.iframe&&(this.iframe.style.left=`${g2}px`)}seekHarness(e){const r=this.harnessWindow,n=r?.[CV];if(typeof n=="function")try{n.call(r,e*1e3)}catch(i){this.seekErrorReported||(this.seekErrorReported=!0,console.warn("[Html5Player] __shotstackSeek threw (further errors suppressed):",i))}}emitCaptureFailed(e,r){const n=e instanceof Error?e.message:String(e);try{this.edit.getInternalEvents().emit(Ft.ClipCaptureFailed,{clipId:this.clipId,assetType:"html5",error:n,fallback:r})}catch(i){console.warn("[Html5Player] failed to emit ClipCaptureFailed:",i)}}emitCaptureStarted(){try{this.edit.getInternalEvents().emit(Ft.ClipCaptureStarted,{clipId:this.clipId,assetType:"html5"})}catch(e){console.warn("[Html5Player] failed to emit ClipCaptureStarted:",e)}}emitCaptureCompleted(e){try{this.edit.getInternalEvents().emit(Ft.ClipCaptureCompleted,{clipId:this.clipId,assetType:"html5",frameCount:e})}catch(r){console.warn("[Html5Player] failed to emit ClipCaptureCompleted:",r)}}async load(){await super.load();try{const e=q8.safeParse(this.asset);if(!e.success){this.createFallbackGraphic();return}await this.mountIframe(e.data),this.configureKeyframes(),this.beginCapture()}catch(e){console.error("Failed to render html5 asset:",e instanceof Error?`${e.message}
397
- ${e.stack}`:e),this.createFallbackGraphic()}}async mountIframe(e){const r=this.clipConfiguration.width||this.edit.size.width,n=this.clipConfiguration.height||this.edit.size.height;this.renderedWidth=r,this.renderedHeight=n,this.captureFps=this.edit.getOutputFps()||30,this.contentHash=await this.hashAsset();const i=document.createElement("iframe");i.setAttribute("aria-hidden","true"),i.style.cssText=`position:absolute;left:${g2}px;top:0;width:${r}px;height:${n}px;border:0;margin:0;padding:0;pointer-events:none;transform-origin:top left;z-index:50;background:transparent`,i.srcdoc=Hb(e),this.getIframeMountElement().appendChild(i),await v2(i),this.iframe=i,this.transitionToEditing()}async transitionToPlayback(){if(!this.capturedFrames||this.capturedFrames.length===0||!this.iframe)return;const e=await this.getDecodedFrame(0);if(!e||this.disposed)return;const r=new st.Sprite(e);this.contentContainer.addChild(r),this.playbackSprite=r,this.lastFrameIdx=0,this.clipConfiguration.width&&this.clipConfiguration.height&&this.applyFixedDimensions(),this.removeLoadingGraphic(),this.parkIframe(),this.mode="playback"}transitionToEditing(){this.mode="editing",this.removeLoadingGraphic()}transitionToStale(){this.mode==="stale"||this.mode==="editing"||(this.playbackSprite&&(this.contentContainer.removeChild(this.playbackSprite),this.playbackSprite.destroy(),this.playbackSprite=null),this.removeLoadingGraphic(),this.disposeCapturedFrames(),this.mode="stale")}transitionToCapturing(){this.mode="capturing",this.parkIframe(),this.mountLoadingGraphic(),this.emitCaptureStarted()}async captureFrames(){if(this.capturedFrames&&this.capturedHash===this.contentHash)return this.capturedFrames;if(this.captureInFlight)return this.captureInFlight;const e=Xl.captureChain;return this.captureInFlight=e.then(()=>this.disposed?null:this.runCapture()).finally(()=>{this.captureInFlight=null}),Xl.captureChain=this.captureInFlight.catch(()=>{}),this.captureInFlight}async runCapture(){if(!this.iframe||!this.iframe.contentDocument||!this.iframe.contentWindow||!this.contentHash)return null;const e=this.contentHash,r=()=>this.disposed||this.contentHash!==e,n=await vV(e);if(r())return null;if(n)return this.captureFramesTotal=n.frameCount,this.captureFramesDone=n.frameCount,this.captureFps=n.fps,this.capturedFrames=n.pngs,this.capturedHash=e,this.emitCaptureCompleted(n.frameCount),n.pngs;try{await this.iframe.contentDocument.fonts.ready}catch{}if(await ed(),r())return null;const{frameCount:i}=kD({clipLengthSeconds:this.getLength(),jsContent:this.asset.js,cssContent:this.asset.css,fps:this.captureFps}),a=this.captureFps,s=this.renderedWidth,o=this.renderedHeight;this.captureFramesTotal=i,this.captureFramesDone=0;const u=[];for(let l=0;l<i;l+=y2){if(await ed(),r())return null;const c=[];for(let p=l;p<Math.min(l+y2,i);p+=1)this.seekHarness(p/a),AV(this.iframe.contentDocument.body),c.push(EV(this.captureIframeAsForeignObjectSvg(s,o),s,o));const h=await Promise.all(c);if(r())return null;for(const p of h)this.captureFramesDone+=1,u.push(new Blob([p],{type:"image/webp"}))}return this.capturedFrames=u,this.capturedHash=e,this.emitCaptureCompleted(i),bV(e,{pngs:u,fps:a,frameCount:i,width:this.renderedWidth,height:this.renderedHeight,createdAt:Date.now()}).catch(l=>console.warn("[Html5Player] cache put failed:",l)),u}captureIframeAsForeignObjectSvg(e,r){if(!this.iframe?.contentDocument)throw new Error("iframe not ready");const n=this.iframe.contentDocument,i=Array.from(n.querySelectorAll("style")).map(l=>`<style>${l.textContent??""}</style>`).join(""),a="<style>*,*::before,*::after{animation:none!important;transition:none!important}</style>",s=n.body.cloneNode(!0);s.setAttribute("xmlns","http://www.w3.org/1999/xhtml");const o=s.getAttribute("style")??"";s.setAttribute("style",`width:${e}px;height:${r}px;margin:0;overflow:hidden;${o}`);const u=new XMLSerializer().serializeToString(s);return`<svg xmlns="http://www.w3.org/2000/svg" width="${e}" height="${r}"><foreignObject width="${e}" height="${r}">${i}${a}${u}</foreignObject></svg>`}async getDecodedFrame(e){if(!this.capturedFrames)return null;const r=this.decodedFrames.get(e);if(r)return this.decodedFrames.delete(e),this.decodedFrames.set(e,r),r;const n=this.capturedFrames[e];if(!n)return null;const i=await createImageBitmap(n);if(this.disposed)return i.close(),null;const a=st.Texture.from(i);return this.disposed?(a.destroy(!0),null):(this.decodedFrames.set(e,a),this.evictDecodedOverflow(e),a)}evictDecodedOverflow(e){for(;this.decodedFrames.size>xV;){let r;for(const n of this.decodedFrames.keys())if(n!==e&&n!==this.lastFrameIdx){r=n;break}if(r===void 0)break;this.decodedFrames.get(r)?.destroy(!0),this.decodedFrames.delete(r)}}async prepareStaticRender(){try{if(this.disposed||!this.iframe)return;const e=await this.captureFrames();if(this.disposed||!e||e.length===0)return;const r=Math.min(Math.max(0,Math.floor(this.getPlaybackTime()*this.captureFps)),e.length-1),n=await this.getDecodedFrame(r);if(this.disposed||!n)return;if(this.playbackSprite){this.playbackSprite.texture=n;return}this.staticSprite?this.staticSprite.texture=n:(this.staticSprite=new st.Sprite(n),this.contentContainer.addChild(this.staticSprite),this.clipConfiguration.width&&this.clipConfiguration.height&&this.applyFixedDimensions())}catch(e){console.warn("[Html5Player] prepareStaticRender failed:",e)}}endStaticRender(){this.staticSprite&&(this.contentContainer.removeChild(this.staticSprite),this.staticSprite.destroy(),this.staticSprite=null)}async reloadAsset(){if(!this.iframe)return;const e=await this.hashAsset();if(e!==this.contentHash){this.contentHash=e,this.transitionToStale(),this.disposeCapturedFrames(),this.captureInFlight=null,this.hasTriggeredCapture=!1,this.seekErrorReported=!1,this.iframe.srcdoc=Hb(this.asset);try{await v2(this.iframe,void 0,!0),this.beginCapture()}catch(r){console.warn("[Html5Player] reload iframe load failed:",r),this.emitCaptureFailed(r,"static-placeholder")}}}disposeCapturedFrames(){for(const e of this.decodedFrames.values())e.destroy(!0);this.decodedFrames.clear(),this.capturedFrames=null,this.capturedHash=null,this.lastFrameIdx=-1,this.decodeInFlight=null}createFallbackGraphic(){const e=this.clipConfiguration.width||this.edit.size.width,r=this.clipConfiguration.height||this.edit.size.height,n=fo(e,r);this.renderedWidth=e,this.renderedHeight=r,this.contentContainer.addChild(n),this.configureKeyframes()}update(e,r){super.update(e,r),this.triggerCaptureIfNeeded(),this.mode==="playback"?this.driveSpriteTextureSwap():this.mode==="capturing"?this.loadingSetProgress&&this.captureFramesTotal>0&&this.loadingSetProgress(this.captureFramesDone/this.captureFramesTotal):this.iframe&&(this.syncIframePosition(),this.isActive()&&this.seekHarness(this.getPlaybackTime()))}beginCapture(){if(this.disposed||!this.iframe||this.mode==="capturing"||this.mode==="playback"||this.captureInFlight)return;if(this.capturedFrames&&this.capturedHash===this.contentHash){this.transitionToPlayback().catch(r=>{console.warn("[Html5Player] transitionToPlayback failed:",r),this.transitionToEditing()});return}this.transitionToCapturing();const e=this.contentHash;this.captureFrames().then(async r=>{if(this.disposed)return;if(!(!!r&&r.length>0&&this.capturedHash===e&&this.contentHash===e)){this.mode==="capturing"&&this.transitionToEditing();return}await this.transitionToPlayback()}).catch(r=>{console.warn("[Html5Player] capture failed:",r),this.emitCaptureFailed(r,"live-iframe"),this.mode==="capturing"&&this.transitionToEditing()})}triggerCaptureIfNeeded(){this.hasTriggeredCapture||!this.iframe||!this.edit.isPlaying||this.mode!=="editing"&&this.mode!=="stale"||(this.hasTriggeredCapture=!0,this.beginCapture())}mountLoadingGraphic(){if(this.loadingGraphic)return;const e=this.renderedWidth||this.edit.size.width,r=this.renderedHeight||this.edit.size.height,{container:n,setProgress:i}=wV(e,r);this.loadingGraphic=n,this.loadingSetProgress=i,this.contentContainer.addChild(n),this.clipConfiguration.width&&this.clipConfiguration.height&&this.applyFixedDimensions()}removeLoadingGraphic(){this.loadingGraphic&&(this.contentContainer.removeChild(this.loadingGraphic),this.loadingGraphic.destroy({children:!0}),this.loadingGraphic=null,this.loadingSetProgress=null)}driveSpriteTextureSwap(){if(!this.playbackSprite||!this.capturedFrames)return;const e=Math.min(Math.max(0,Math.floor(this.getPlaybackTime()*this.captureFps)),this.capturedFrames.length-1);if(e===this.lastFrameIdx)return;const r=this.decodedFrames.get(e);if(r){this.decodedFrames.delete(e),this.decodedFrames.set(e,r),this.playbackSprite.texture=r,this.lastFrameIdx=e;return}this.decodeInFlight!==e&&(this.decodeInFlight=e,this.getDecodedFrame(e).then(n=>{if(this.decodeInFlight===e&&(this.decodeInFlight=null),!n||!this.playbackSprite||this.disposed)return;const i=Math.min(Math.max(0,Math.floor(this.getPlaybackTime()*this.captureFps)),(this.capturedFrames?.length??1)-1);Math.abs(i-e)>3||(this.playbackSprite.texture=n,this.lastFrameIdx=e)}).catch(n=>console.warn("[Html5Player] frame decode failed:",n)))}syncIframePosition(){if(!this.iframe)return;if(!this.isActive()){this.parkIframe();return}const e=this.getStudioCanvas();if(!e){this.parkIframe();return}const r=this.contentContainer.worldTransform,n=this.renderedWidth,i=this.renderedHeight,a=r.tx,s=r.ty,o=r.a*n+r.c*i+r.tx,u=r.b*n+r.d*i+r.ty,l=Math.min(a,o),c=Math.min(s,u),h=Math.abs(o-a),p=Math.abs(u-s),g=e.getBoundingClientRect(),y=g.width/e.width,E=g.height/e.height,v=e.offsetLeft+l*y,C=e.offsetTop+c*E,I=Math.max(1,h*y),x=Math.max(1,p*E),{style:A}=this.iframe;A.left=`${v}px`,A.top=`${C}px`,A.width=`${n}px`,A.height=`${i}px`,A.transform=`scale(${I/n}, ${x/i})`,A.opacity=`${this.getOpacity()}`}dispose(){this.disposed=!0,super.dispose(),this.iframe?.remove(),this.iframe=null,this.playbackSprite?.destroy(),this.playbackSprite=null,this.staticSprite?.destroy(),this.staticSprite=null,this.removeLoadingGraphic(),this.disposeCapturedFrames()}getSize(){return this.clipConfiguration.width&&this.clipConfiguration.height?{width:this.clipConfiguration.width,height:this.clipConfiguration.height}:this.getContentSize()}getContentSize(){return{width:this.renderedWidth||this.edit.size.width,height:this.renderedHeight||this.edit.size.height}}getFitScale(){return 1}supportsEdgeResize(){return!0}onDimensionsChanged(){}}class kV extends Je{texture;sprite;placeholder;constructor(e,r){super(e,r,Ee.Image),this.texture=null,this.sprite=null,this.placeholder=null}async load(){await super.load();try{await this.loadTexture(),this.configureKeyframes()}catch{this.createFallbackGraphic()}}createFallbackGraphic(){const e=this.getDisplaySize();this.clearPlaceholder(),this.placeholder=fo(e.width,e.height),this.contentContainer.addChild(this.placeholder),this.configureKeyframes()}update(e,r){super.update(e,r)}dispose(){this.disposeTexture(),this.clearPlaceholder(),super.dispose()}getSize(){return this.clipConfiguration.width&&this.clipConfiguration.height?{width:this.clipConfiguration.width,height:this.clipConfiguration.height}:this.sprite?{width:this.sprite.width,height:this.sprite.height}:this.placeholder?this.getDisplaySize():{width:0,height:0}}getContentSize(){return this.sprite?{width:this.sprite.width,height:this.sprite.height}:this.placeholder?this.getDisplaySize():{width:0,height:0}}async reloadAsset(){this.disposeTexture(),this.clearPlaceholder();try{await this.loadTexture()}catch{this.createFallbackGraphic()}}async loadTexture(){const e=this.clipConfiguration.asset,{src:r}=e;if(!r)throw new Error("Image asset has no src to load.");const n=`${r}${r.includes("?")?"&":"?"}x-cors=1`,i={src:n,crossorigin:"anonymous",data:{}},a=await this.edit.assetLoader.load(n,i);if(!(a?.source instanceof st.ImageSource))throw a&&(a.destroy(!0),await this.edit.assetLoader.rejectAsset(n)),new Error(`Invalid image source '${r}'.`);this.clearPlaceholder(),this.texture=this.createCroppedTexture(a),this.sprite=new st.Sprite(this.texture),this.contentContainer.addChild(this.sprite),this.clipConfiguration.width&&this.clipConfiguration.height&&this.applyFixedDimensions()}disposeTexture(){this.sprite&&(this.contentContainer.removeChild(this.sprite),this.sprite.destroy(),this.sprite=null),this.texture=null}clearPlaceholder(){this.placeholder&&(this.contentContainer.removeChild(this.placeholder),this.placeholder.destroy(),this.placeholder=null)}supportsEdgeResize(){return!0}createCroppedTexture(e){const r=this.clipConfiguration.asset;if(!r.crop)return e;const n=e.width,i=e.height,a=Math.floor((r.crop?.left??0)*n),s=Math.floor((r.crop?.right??0)*n),o=Math.floor((r.crop?.top??0)*i),u=Math.floor((r.crop?.bottom??0)*i),l=a,c=o,h=n-a-s,p=i-o-u,g=new st.Rectangle(l,c,h,p);return new st.Texture({source:e.source,frame:g})}}const SV={image:"M20.7134 8.12811L20.4668 8.69379C20.2864 9.10792 19.7136 9.10792 19.5331 8.69379L19.2866 8.12811C18.8471 7.11947 18.0555 6.31641 17.0677 5.87708L16.308 5.53922C15.8973 5.35653 15.8973 4.75881 16.308 4.57612L17.0252 4.25714C18.0384 3.80651 18.8442 2.97373 19.2761 1.93083L19.5293 1.31953C19.7058 0.893489 20.2942 0.893489 20.4706 1.31953L20.7238 1.93083C21.1558 2.97373 21.9616 3.80651 22.9748 4.25714L23.6919 4.57612C24.1027 4.75881 24.1027 5.35653 23.6919 5.53922L22.9323 5.87708C21.9445 6.31641 21.1529 7.11947 20.7134 8.12811ZM2.9918 3H14V5H4V19L13.2923 9.70649C13.6828 9.31595 14.3159 9.31591 14.7065 9.70641L20 15.0104V11H22V20.0066C22 20.5552 21.5447 21 21.0082 21H2.9918C2.44405 21 2 20.5551 2 20.0066V3.9934C2 3.44476 2.45531 3 2.9918 3ZM8 11C6.89543 11 6 10.1046 6 9C6 7.89543 6.89543 7 8 7C9.10457 7 10 7.89543 10 9C10 10.1046 9.10457 11 8 11Z",video:"M19.7134 8.12811L19.4668 8.69379C19.2864 9.10792 18.7136 9.10792 18.5331 8.69379L18.2866 8.12811C17.8471 7.11947 17.0555 6.31641 16.0677 5.87708L15.308 5.53922C14.8973 5.35653 14.8973 4.75881 15.308 4.57612L16.0252 4.25714C17.0384 3.80651 17.8442 2.97373 18.2761 1.93083L18.5293 1.31953C18.7058 0.893489 19.2942 0.893489 19.4706 1.31953L19.7238 1.93083C20.1558 2.97373 20.9616 3.80651 21.9748 4.25714L22.6919 4.57612C23.1027 4.75881 23.1027 5.35653 22.6919 5.53922L21.9323 5.87708C20.9445 6.31641 20.1529 7.11947 19.7134 8.12811ZM19 11C19.7013 11 20.3744 10.8797 21 10.6586V20.0066C21 20.5552 20.5551 21 20.0066 21H3.9934C3.44476 21 3 20.5551 3 20.0066V3.9934C3 3.44476 3.44495 3 3.9934 3H13.3414C13.1203 3.62556 13 4.29873 13 5C13 8.31371 15.6863 11 19 11ZM10.6219 8.41459C10.5562 8.37078 10.479 8.34741 10.4 8.34741C10.1791 8.34741 10 8.52649 10 8.74741V15.2526C10 15.3316 10.0234 15.4088 10.0672 15.4745C10.1897 15.6583 10.4381 15.708 10.6219 15.5854L15.5008 12.3328C15.5447 12.3035 15.5824 12.2658 15.6117 12.2219C15.7343 12.0381 15.6846 11.7897 15.5008 11.6672L10.6219 8.41459Z",mic:"M20.4668 7.69379L20.7134 7.12811C21.1529 6.11947 21.9445 5.31641 22.9323 4.87708L23.6919 4.53922C24.1027 4.35653 24.1027 3.75881 23.6919 3.57612L22.9748 3.25714C21.9616 2.80651 21.1558 1.97373 20.7238 0.930828L20.4706 0.319534C20.2942 -0.106511 19.7058 -0.106511 19.5293 0.319534L19.2761 0.930828C18.8442 1.97373 18.0384 2.80651 17.0252 3.25714L16.308 3.57612C15.8973 3.75881 15.8973 4.35653 16.308 4.53922L17.0677 4.87708C18.0555 5.31641 18.8471 6.11947 19.2866 7.12811L19.5331 7.69379C19.7136 8.10792 20.2864 8.10792 20.4668 7.69379ZM14.3869 5.33879C14.661 5.77254 15.0357 6.09305 15.5111 6.30032L16.0764 6.54679C16.4565 6.71249 16.7643 6.94524 16.9998 7.24503V10C16.9998 12.7614 14.7612 15 11.9998 15C9.23833 15 6.99976 12.7614 6.99976 10V6C6.99976 3.23858 9.23833 1 11.9998 1C13.1238 1 14.1613 1.37094 14.9964 1.99709C14.7563 2.17678 14.5531 2.39813 14.3869 2.66114C14.129 3.06938 14 3.51566 14 3.99997C14 4.48428 14.129 4.93056 14.3869 5.33879ZM3.05469 11H5.07065C5.55588 14.3923 8.47329 17 11.9998 17C15.5262 17 18.4436 14.3923 18.9289 11H20.9448C20.4837 15.1716 17.1714 18.4839 12.9998 18.9451V23H10.9998V18.9451C6.82814 18.4839 3.51584 15.1716 3.05469 11Z"};function DV(t,e,r,n){let i=0;for(const[a,s,o]of n)i+=Math.sin(t*a+e*o+r)*s;return i}function FV(t){if(t===void 0)return[{color:440020,baseAlpha:.12,baseY:.35,rayHeight:.45,phase:0,scrollSpeed:.08,waves:[[2,.08,.15],[4.5,.04,.25],[9,.015,.4]]},{color:1096065,baseAlpha:.18,baseY:.3,rayHeight:.5,phase:1.2,scrollSpeed:.12,waves:[[1.5,.1,.18],[3.8,.05,.3],[8,.02,.5],[14,.008,.7]]},{color:3462041,baseAlpha:.15,baseY:.28,rayHeight:.35,phase:2.8,scrollSpeed:.1,waves:[[2.2,.07,.2],[5.5,.035,.35],[11,.012,.55]]},{color:8141549,baseAlpha:.14,baseY:.45,rayHeight:.4,phase:4.1,scrollSpeed:.09,waves:[[1.8,.09,.12],[4.2,.045,.28],[9.5,.018,.45]]},{color:15485081,baseAlpha:.1,baseY:.5,rayHeight:.3,phase:5.5,scrollSpeed:.14,waves:[[2.5,.06,.22],[6,.03,.38],[12,.01,.6]]}];const e=r_(t);return[{color:rs(e[0],70,50),baseAlpha:.12,baseY:.35,rayHeight:.45,phase:0,scrollSpeed:.08,waves:[[2,.08,.15],[4.5,.04,.25],[9,.015,.4]]},{color:rs(e[1],70,50),baseAlpha:.18,baseY:.3,rayHeight:.5,phase:1.2,scrollSpeed:.12,waves:[[1.5,.1,.18],[3.8,.05,.3],[8,.02,.5],[14,.008,.7]]},{color:rs(e[2],70,50),baseAlpha:.15,baseY:.28,rayHeight:.35,phase:2.8,scrollSpeed:.1,waves:[[2.2,.07,.2],[5.5,.035,.35],[11,.012,.55]]},{color:rs(e[3],70,50),baseAlpha:.14,baseY:.45,rayHeight:.4,phase:4.1,scrollSpeed:.09,waves:[[1.8,.09,.12],[4.2,.045,.28],[9.5,.018,.45]]},{color:rs(e[4],70,50),baseAlpha:.1,baseY:.5,rayHeight:.3,phase:5.5,scrollSpeed:.14,waves:[[2.5,.06,.22],[6,.03,.38],[12,.01,.6]]}]}const rd=64,Ii=72,b2=42;class w2{constructor(e){this.options=e,this.container=new st.Container,this.build(),this.startAnimation()}container;layers=[];auroraLayer;time=0;rafId=null;lastTime=null;getContainer(){return this.container}resize(e,r){e===this.options.width&&r===this.options.height||(this.options.width=e,this.options.height=r,this.rebuild())}updatePrompt(e){e!==this.options.prompt&&(this.options.prompt=e,this.rebuild())}dispose(){this.stopAnimation(),this.container.destroy({children:!0})}rebuild(){this.container.removeChildren(),this.layers=[],this.build()}startAnimation(){const e=r=>{if(this.lastTime!==null){const n=(r-this.lastTime)/1e3;this.time+=n,this.drawAurora()}this.lastTime=r,this.rafId=requestAnimationFrame(e)};this.rafId=requestAnimationFrame(e)}stopAnimation(){this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null)}build(){const{mode:e,width:r,height:n}=this.options;if(e==="panel"){const o=new st.Graphics;o.roundRect(0,0,r,n,4),o.fill({color:"#1E1B2E",alpha:1}),this.container.addChild(o)}else{const o=new st.Graphics;o.rect(0,0,r,n),o.fill({color:"#000000",alpha:.25}),this.container.addChild(o)}this.auroraLayer=new st.Container,this.layers=FV(this.options.assetNumber).map(o=>{const u=new st.Graphics;return this.auroraLayer.addChild(u),{...o,graphics:u}});const i=Math.min(Math.max(Math.min(r,n)*.04,12),40),a=new st.BlurFilter({strength:i,quality:4});this.auroraLayer.filters=[a];const s=new st.Graphics;e==="panel"?s.roundRect(0,0,r,n,4):s.rect(0,0,r,n),s.fill({color:"#ffffff"}),this.auroraLayer.addChild(s),this.auroraLayer.mask=s,this.container.addChild(this.auroraLayer),this.drawAurora(),this.buildBadge()}drawAurora(){const{width:e,height:r}=this.options,n=this.time,i=e/rd;for(const a of this.layers){a.graphics.clear();const s=Math.sin(n*.3+a.phase*1.7)*.5+.5,o=a.baseAlpha*(.7+.3*s),u=n*a.scrollSpeed;for(let l=0;l<rd;l+=1){const h=l/rd*Math.PI*2+u,p=DV(h,n,a.phase,a.waves),g=(a.baseY+p)*r,y=.6+.4*Math.sin(h*3.7+n*.2+a.phase*2.3),E=a.rayHeight*r*y,v=.4+.6*(Math.sin(h*5+n*.15+a.phase*3.1)*.5+.5)**.7,C=o*v,I=l*i;a.graphics.rect(I,g,i+1,E),a.graphics.fill({color:a.color,alpha:C})}}}buildBadge(){const{width:e,height:r,icon:n,assetNumber:i,prompt:a,assetType:s}=this.options,o=new st.Container;o.position.set(e/2-Ii/2,r/2-Ii/2);const u=new st.Graphics;u.circle(Ii/2,Ii/2,Ii/2),u.fill({color:"#000000",alpha:.5}),o.addChild(u);const l=new st.Graphics;l.svg(`<svg viewBox="0 0 24 24"><path d="${SV[n]}" fill="#C084FC" /></svg>`);const c=b2/24,h=(Ii-b2)/2;if(l.scale.set(c,c),l.position.set(h,h),o.addChild(l),i!==void 0){const p=s?i_(s):"",g=p?`${p} ${i}`:String(i),y=new st.Text({text:g,style:{fontFamily:"Arial",fontSize:18,fontWeight:"bold",fill:"#ffffff"}});y.anchor.set(.5,.5),y.position.set(Ii/2,Ii+15),o.addChild(y)}if(a){const p=n_(a,60),g=new st.Text({text:p,style:{fontFamily:"Arial",fontSize:16,fontWeight:"normal",fill:"#ffffff",align:"center",wordWrap:!0,wordWrapWidth:e*.8,lineHeight:20}});g.anchor.set(.5,0),g.position.set(Ii/2,Ii+40),o.addChild(g)}this.container.addChild(o)}}class _2 extends Je{sprite=null;texture=null;placeholder=null;aiOverlay=null;constructor(e,r){super(e,r,Ee.ImageToVideo)}async load(){await super.load();const e=this.getDisplaySize(),r=this.edit.getResolvedEdit()?.timeline.tracks.flatMap(h=>h.clips)??[],n=Wd(r,this.clipId??""),{asset:i}=this.clipConfiguration,a=an(i)&&i.prompt||"",s=an(i)?i.type:"image-to-video",{src:o,seed:u}=i,l=u??o,c=l?await this.tryLoadTexture(l):!1;c||(this.placeholder=fo(e.width,e.height),this.contentContainer.addChild(this.placeholder)),this.aiOverlay=new w2({mode:c?"badge":"panel",icon:"video",width:e.width,height:e.height,assetNumber:n??void 0,prompt:a,assetType:s}),this.contentContainer.addChild(this.aiOverlay.getContainer()),this.configureKeyframes()}update(e,r){super.update(e,r);const n=this.getDisplaySize();this.aiOverlay?.resize(n.width,n.height);const i=this.aiOverlay?.getContainer();if(i){const a=this.getContainerScale(),s=this.getSize();i.scale.set(1/a.x,1/a.y),i.position.set(s.width/2-n.width/(2*a.x),s.height/2-n.height/(2*a.y))}}getSize(){const e=this.getDisplaySize();return this.clipConfiguration.width&&this.clipConfiguration.height?{width:this.clipConfiguration.width,height:this.clipConfiguration.height}:{width:this.sprite?.width||e.width,height:this.sprite?.height||e.height}}dispose(){this.sprite&&(this.contentContainer.removeChild(this.sprite),this.sprite.destroy(),this.sprite=null),this.texture=null,this.placeholder?.destroy(),this.placeholder=null,this.aiOverlay?.dispose(),this.aiOverlay=null,super.dispose()}async tryLoadTexture(e){try{const r=`${e}${e.includes("?")?"&":"?"}x-cors=1`,n={src:r,crossorigin:"anonymous",data:{}},i=await this.edit.assetLoader.load(r,n);return i?.source instanceof st.ImageSource?(this.texture=i,this.sprite=new st.Sprite(this.texture),this.contentContainer.addChild(this.sprite),this.clipConfiguration.width&&this.clipConfiguration.height&&this.applyFixedDimensions(),!0):(i&&(i.destroy(!0),await this.edit.assetLoader.rejectAsset(r)),!1)}catch{return!1}}}class IV extends Je{texture;sprite;isPlaying;constructor(e,r){super(e,r,Ee.Luma),this.texture=null,this.sprite=null,this.isPlaying=!1}async load(){await super.load();const e=this.clipConfiguration.asset,r=e.src,n={src:r,data:{autoPlay:!1,muted:!0}},i=await this.edit.assetLoader.load(r,n);if(!(i?.source instanceof st.ImageSource||i?.source instanceof st.VideoSource))throw i&&(i.destroy(!0),await this.edit.assetLoader.rejectAsset(r)),new Error(`Invalid luma source '${e.src}'.`);i.source instanceof st.VideoSource&&(i.source.alphaMode="no-premultiply-alpha"),this.texture=i,this.sprite=new st.Sprite(this.texture),this.contentContainer.addChild(this.sprite),this.configureKeyframes()}update(e,r){if(super.update(e,r),!this.texture||!(this.texture.source instanceof st.VideoSource))return;const n=this.getPlaybackTime(),i=this.edit.isPlaying&&this.isActive();i&&(this.isPlaying||(this.isPlaying=!0,this.texture.source.resource.currentTime=n,this.texture.source.resource.play().catch(console.error)),this.texture.source.resource.volume!==this.getVolume()&&(this.texture.source.resource.volume=this.getVolume()),Math.abs(this.texture.source.resource.currentTime-n)>.1&&(this.texture.source.resource.currentTime=n)),!i&&this.isPlaying&&(this.isPlaying=!1,this.texture.source.resource.pause()),!this.edit.isPlaying&&this.isActive()&&(this.texture.source.resource.currentTime=n)}dispose(){super.dispose(),this.sprite?.destroy(),this.sprite=null,this.texture=null}getSize(){return this.clipConfiguration.width&&this.clipConfiguration.height?{width:this.clipConfiguration.width,height:this.clipConfiguration.height}:{width:this.sprite?.width??0,height:this.sprite?.height??0}}getVolume(){return 0}getSprite(){return this.sprite}isVideoSource(){return this.texture?.source instanceof st.VideoSource}getVideoCurrentTime(){return this.texture?.source instanceof st.VideoSource?this.texture.source.resource.currentTime:-1}}const Kl=t=>{const r=(t.split("/").pop()||"").replace(/\.(ttf|otf|woff|woff2)$/i,""),n=r.replace(/-(Bold|Light|Regular|Italic|Medium|SemiBold|Black|Thin|ExtraLight|ExtraBold|Heavy)$/i,"");return{full:r,base:n}},x2=t=>t.includes("fonts.gstatic.com"),NV=_({color:f(d()),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),padding:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),borderRadius:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),BV=_({family:f(d()),color:f(d()),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),size:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),lineHeight:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),stroke:f(d()),strokeWidth:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),TV=_({top:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),left:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),right:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),PV=_({type:$(["caption"]),src:d().min(1).regex(/\S/),font:f(BV),background:f(NV),margin:f(TV),trim:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),speed:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),MV=_({color:b([d().regex(/^#[0-9a-fA-F]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),threshold:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(0).lte(250)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),halo:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(0).lte(250)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),Jl=_({top:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),bottom:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),left:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),right:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),zV=_({host:d(),cpCode:d(),path:f(b([d(),Gr()])),filename:f(b([d(),Gr()]))}).strict(),VV=_({provider:xt("akamai-netstorage"),options:f(zV)}).strict(),OV=_({accountName:d(),container:d(),prefix:f(b([d(),Gr()])),filename:f(b([d(),Gr()]))}).strict(),RV=_({provider:xt("azure-blob-storage"),options:f(OV)}).strict(),$V=_({bucket:d(),prefix:f(d()),filename:f(d())}).strict(),LV=_({provider:xt("google-cloud-storage"),options:f($V)}).strict(),ZV=_({folderId:d(),filename:f(d())}).strict(),UV=_({provider:xt("google-drive"),options:ZV}).strict(),jV=_({playbackPolicy:f(Vt($(["public","signed"]))),passthrough:f(d().max(255))}).strict(),GV=_({provider:xt("mux"),options:f(jV)}).strict(),WV=_({region:d(),bucket:d(),prefix:f(d()),filename:f(d()),acl:f(d())}).strict(),HV=_({provider:xt("s3"),options:f(WV)}).strict(),YV=_({provider:xt("shotstack"),exclude:f(Bt())}).strict(),qV=_({title:f(d().max(150)),privacyLevel:f($(["public","friends","private"])),disableDuet:f(Bt()).default(!1),disableStitch:f(Bt()).default(!1),disableComment:f(Bt()).default(!1)}).strict(),XV=_({provider:xt("tiktok"),options:f(qV)}).strict(),KV=_({view:f($(["anybody","nobody","contacts","password","unlisted"])),embed:f($(["public","private","whitelist"])),comments:f($(["anybody","nobody","contacts"])),download:f(Bt()),add:f(Bt())}).strict(),JV=_({name:f(d()),description:f(d()),privacy:f(KV),folderUri:f(d())}).strict(),QV=_({provider:xt("vimeo"),options:f(JV)}).strict(),Ql=Yo("provider",[YV,GV,HV,LV,UV,QV,XV,VV,RV]),tO=Ql,eO=_({horizontal:f(Bt()),vertical:f(Bt())}).strict(),rO=_({src:d()}).strict(),iO=_({type:$(["html5"]),html:d().max(1e6),css:f(d().max(5e5)),js:f(d().max(5e5))}).strict(),nO=_({type:$(["html"]),html:d(),css:f(d()),width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),height:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),background:f(d()),position:f($(["top","topRight","right","bottomRight","bottom","bottomLeft","left","topLeft","center"]))}).strict(),aO=_({type:$(["image"]),src:f(d().min(1).regex(/\S/)),prompt:f(d().max(4e3)),model:f(d()),resolution:f($(["1K","2K","4K"])),aspectRatio:f($(["1:1","16:9","9:16","4:3","3:4","21:9","9:21"])),crop:f(Jl)}).strict().superRefine((t,e)=>{var r=typeof t.src=="string"&&t.src.trim().length>0,n=typeof t.prompt=="string"&&t.prompt.trim().length>0;!r&&!n&&e.addIssue({code:Vn.custom,message:'A media asset requires either "src" (a source URL) or "prompt" (to generate the asset). Provide one.',path:["src"]})}),sO=_({type:$(["image-to-video"]),src:d().min(1),prompt:f(d()),aspectRatio:f($(["1:1","4:3","16:9","9:16","3:4","21:9","9:21"])),speed:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),crop:f(Jl)}).strict(),oO=_({preset:$(["conference","interview","lecture","meeting","mobile_phone","music","podcast","studio","voice_over"])}).strict(),uO=_({provider:d().default("dolby"),options:oO}).strict(),lO=_({enhancement:xt("dolbyEnhancement_DolbyEnhancement")}).strict().and(uO),cO=_({audio:f(lO)}).strict(),fO=_({status:d(),title:d(),detail:d()}).strict();_({errors:Vt(fO)}).strict();const hO=_({type:d(),id:d()}).strict();_({data:hO}).strict();const dO=_({id:d(),url:d(),expires:d()}).strict(),pO=_({type:d(),id:d(),attributes:dO}).strict();_({data:pO}).strict();const mO=_({speed:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),preservePitch:f(Bt())}).strict(),gO=_({format:f($(["srt","vtt"]))}).strict(),yO=_({type:$(["luma"]),src:d().min(1).regex(/\S/),trim:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),C2=_({find:d(),replace:sr()}).strict(),vO=_({capture:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}).strict(),bO=_({start:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),length:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),wO=_({id:d(),owner:d(),region:f(d()),renderId:f(d()),providerId:f(d()),filename:f(d()),url:f(d()),status:$(["importing","ready","failed","deleted"]),created:f(d()),updated:f(d())}).strict(),A2=_({type:d(),attributes:wO}).strict();_({data:Vt(A2)}).strict(),_({data:A2}).strict(),_({success:Bt(),message:d(),response:Wp(d(),sr())}).strict();const _O=_({message:d(),id:d()}).strict();_({success:Bt(),message:d(),response:_O}).strict();const xO=_({id:d(),name:d(),created:f(d()),updated:f(d())}).strict(),CO=_({owner:d(),templates:Vt(xO)}).strict();_({success:Bt(),message:d(),response:CO}).strict();const AO=_({message:d(),id:d()}).strict();_({success:Bt(),message:d(),response:AO}).strict();const EO=_({family:f(d()),weight:f(sr()).default("400"),color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),background:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(1),size:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(1).lte(500)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),textDecoration:f($(["none","underline","line-through"]))}).strict(),kO=_({style:$(["karaoke","highlight","pop","fade","slide","bounce","typewriter","none"]),direction:f($(["left","right","up","down"]))}).strict(),SO=_({family:f(d()).default("Roboto"),size:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(1).lte(500)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(24),weight:f(sr()).default("400"),color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default("#ffffff"),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(1),background:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),E2=_({horizontal:f($(["left","center","right"])),vertical:f($(["top","middle","bottom"]))}).strict(),DO=_({preset:$(["fadeIn","slideIn","typewriter","ascend","shift","movingLetters"]),duration:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(.1).lte(30)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),style:f($(["character","word"])),direction:f($(["left","right","up","down"]))}).strict(),k2=_({color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(1),borderRadius:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),wrap:f(Bt()).default(!1),padding:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(0).lte(200)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),S2=_({width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default("#000000"),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(1),radius:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0)}).strict(),D2=_({type:f($(["linear","radial"])),angle:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(360)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),stops:Vt(_({offset:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),color:b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])})).min(2)}).strict(),FO=_({letterSpacing:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),lineHeight:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(1.2),textTransform:f($(["none","uppercase","lowercase","capitalize"])),size:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(1).lte(500)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),textDecoration:f($(["none","underline","line-through"])),gradient:f(D2)}).strict(),F2=_({top:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),right:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),bottom:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),left:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0)}).strict(),id=_({offsetX:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),offsetY:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),blur:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default("#000000"),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(.5)}).strict(),tc=_({width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default("#000000"),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(1)}).strict(),IO=_({font:f(EO),stroke:f(b([tc,$(["none"])])),shadow:f(b([id,$(["none"])]))}).strict(),I2=_({type:$(["rich-caption"]),src:d().min(1),font:f(SO),style:f(FO),stroke:f(tc),shadow:f(id),background:f(k2),border:f(S2),padding:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),F2])),align:f(E2),active:f(IO),animation:f(kO)}).strict(),NO=I2,BO=_({family:f(d()).default("Open Sans"),size:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(1).lte(500)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(24),weight:f(sr()).default("400"),color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default("#000000"),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(1),background:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),stroke:f(tc)}).strict(),TO=_({letterSpacing:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),wordSpacing:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),lineHeight:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(1.2),textTransform:f($(["none","uppercase","lowercase","capitalize"])),textDecoration:f($(["none","underline","line-through"])),gradient:f(D2)}).strict(),N2=_({type:$(["rich-text"]),text:d().max(5e3),font:f(BO),style:f(TO),stroke:f(tc),shadow:f(id),background:f(k2),border:f(S2),padding:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),F2])),align:f(E2),animation:f(DO)}).strict(),PO=N2,MO=_({id:f(d()),owner:f(d()),status:f($(["queued","failed"])),created:f(d())}).strict(),zO=_({type:f(d()),attributes:f(MO)}).strict();_({data:zO}).strict();const VO=_({url:d(),id:d(),destinations:Vt(Ql)}).strict(),OO=_({type:$(["shape"]),shape:$(["rectangle","circle","line"]),width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),height:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),fill:f(_({color:f(d()),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))})),stroke:f(_({color:f(d()),width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))})),rectangle:f(_({width:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),height:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),cornerRadius:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))})),circle:f(_({radius:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])})),line:f(_({length:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),thickness:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}))}).strict(),nd=_({width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(1).lte(4096)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),height:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(1).lte(4096)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),RO=nd,B2=_({format:f($(["mp4","webm","mov","avi","mkv","ogv","wmv","avif","gif","mp3","wav","jpg","png","webp","tif"])),size:f(nd),fit:f($(["cover","contain","crop"])),resolution:f($(["preview","mobile","sd","hd","fhd"])),quality:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(1).lte(100)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),fps:f(b([xt(12),xt(15),xt(23.976),xt(24),xt(25),xt(29.97),xt(30),xt(48),xt(50),xt(59.94),xt(60)])),speed:f(mO),keyframeInterval:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(1).lte(300)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),fixOffset:f(Bt()),fixRotation:f(Bt()),enhance:f(cO),filename:f(d())}).strict(),$O=_({renditions:f(Vt(B2)),transcription:f(gO)}).strict(),LO=_({id:d(),status:f($(["queued","importing","ready","failed","deleted","overwritten"])),url:f(d()),executionTime:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),transformation:f(B2),width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),height:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),duration:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),fps:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),ZO=_({renditions:f(Vt(LO))}).strict(),UO=_({id:d(),owner:d(),input:f(d()),source:f(d()),status:f($(["queued","importing","ready","failed","deleted","overwritten"])),outputs:f(ZO),width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),height:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),duration:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),fps:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),created:f(d()),updated:f(d())}).strict(),T2=_({type:d(),id:d(),attributes:UO}).strict();_({data:Vt(T2)}).strict(),_({data:T2}).strict();const jO=_({url:f(d()),outputs:f($O),destinations:f(Ql),callback:f(d())}).strict(),GO=_({src:d().min(1).regex(/\S/),effect:f($(["fadeIn","fadeOut","fadeInFadeOut"])),volume:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),P2=_({type:$(["svg"]),src:d().min(1).max(5e5)}).strict(),WO=P2,HO=_({id:d(),merge:f(Vt(C2))}).strict(),YO=_({horizontal:f($(["left","center","right"])),vertical:f($(["top","center","bottom"]))}).strict(),qO=_({preset:$(["typewriter"]),duration:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(.1).lte(30)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),XO=_({color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),padding:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(100)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),borderRadius:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),wrap:f(Bt())}).strict(),KO=_({family:f(d()),color:f(d()),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),size:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),weight:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),lineHeight:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),JO=_({width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),QO=_({type:$(["text"]),text:d(),width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),height:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),font:f(KO),background:f(XO),alignment:f(YO),stroke:f(JO),animation:f(qO),ellipsis:f(d())}).strict().superRefine((t,e)=>{t.background&&t.background.wrap===!0&&e.addIssue({code:Vn.custom,message:'background.wrap is only supported on rich-text and rich-caption assets. For type "text", migrate to type "rich-text" to use this feature.',path:["background","wrap"]})}),tR=_({type:$(["text-to-image"]),prompt:d(),width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),height:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),crop:f(Jl)}).strict(),eR=_({capture:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),scale:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}).strict(),M2=_({format:$(["mp4","gif","mp3","jpg","png","bmp"]),resolution:f($(["preview","mobile","sd","hd","1080","4k"])),aspectRatio:f($(["16:9","9:16","1:1","4:5","4:3"])),size:f(nd),fps:f(b([xt(12),xt(15),xt(23.976),xt(24),xt(25),xt(29.97),xt(30),xt(48),xt(50),xt(59.94),xt(60)])),scaleTo:f($(["preview","mobile","sd","hd","1080","4k"])),quality:f($(["verylow","low","medium","high","veryhigh"])),repeat:f(Bt()),mute:f(Bt()),range:f(bO),poster:f(vO),thumbnail:f(eR),destinations:f(Vt(Ql))}).strict().superRefine((t,e)=>{var r=t.format==="mp3";if(!r&&t.size!=null&&(t.size.width==null||t.size.height==null)){e.addIssue({code:Vn.custom,path:["size"],message:"size requires both width and height"});return}var n=typeof t.resolution=="string",i=t.size!=null&&t.size.width!=null&&t.size.height!=null;!r&&!n&&!i&&e.addIssue({code:Vn.custom,message:'output requires either "resolution" or "size" (with width and height)'})}),ec=M2,rR=_({in:f($(["none","fade","fadeSlow","fadeFast","reveal","revealSlow","revealFast","wipeLeft","wipeLeftSlow","wipeLeftFast","wipeRight","wipeRightSlow","wipeRightFast","slideLeft","slideLeftSlow","slideLeftFast","slideRight","slideRightSlow","slideRightFast","slideUp","slideUpSlow","slideUpFast","slideDown","slideDownSlow","slideDownFast","carouselLeft","carouselLeftSlow","carouselLeftFast","carouselRight","carouselRightSlow","carouselRightFast","carouselUp","carouselUpSlow","carouselUpFast","carouselDown","carouselDownSlow","carouselDownFast","shuffleTopRight","shuffleTopRightSlow","shuffleTopRightFast","shuffleRightTop","shuffleRightTopSlow","shuffleRightTopFast","shuffleRightBottom","shuffleRightBottomSlow","shuffleRightBottomFast","shuffleBottomRight","shuffleBottomRightSlow","shuffleBottomRightFast","shuffleBottomLeft","shuffleBottomLeftSlow","shuffleBottomLeftFast","shuffleLeftBottom","shuffleLeftBottomSlow","shuffleLeftBottomFast","shuffleLeftTop","shuffleLeftTopSlow","shuffleLeftTopFast","shuffleTopLeft","shuffleTopLeftSlow","shuffleTopLeftFast","zoom"])),out:f($(["none","fade","fadeSlow","fadeFast","reveal","revealSlow","revealFast","wipeLeft","wipeLeftSlow","wipeLeftFast","wipeRight","wipeRightSlow","wipeRightFast","slideLeft","slideLeftSlow","slideLeftFast","slideRight","slideRightSlow","slideRightFast","slideUp","slideUpSlow","slideUpFast","slideDown","slideDownSlow","slideDownFast","carouselLeft","carouselLeftSlow","carouselLeftFast","carouselRight","carouselRightSlow","carouselRightFast","carouselUp","carouselUpSlow","carouselUpFast","carouselDown","carouselDownSlow","carouselDownFast","shuffleTopRight","shuffleTopRightSlow","shuffleTopRightFast","shuffleRightTop","shuffleRightTopSlow","shuffleRightTopFast","shuffleRightBottom","shuffleRightBottomSlow","shuffleRightBottomFast","shuffleBottomRight","shuffleBottomRightSlow","shuffleBottomRightFast","shuffleBottomLeft","shuffleBottomLeftSlow","shuffleBottomLeftFast","shuffleLeftBottom","shuffleLeftBottomSlow","shuffleLeftBottomFast","shuffleLeftTop","shuffleLeftTopSlow","shuffleLeftTopFast","shuffleTopLeft","shuffleTopLeftSlow","shuffleTopLeftFast","zoom"]))}).strict(),Ni=_({from:f(sr()),to:f(sr()),start:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),length:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),interpolation:f($(["linear","bezier","constant"])),easing:f($(["ease","easeIn","easeOut","easeInOut","easeInQuad","easeInCubic","easeInQuart","easeInQuint","easeInSine","easeInExpo","easeInCirc","easeInBack","easeOutQuad","easeOutCubic","easeOutQuart","easeOutQuint","easeOutSine","easeOutExpo","easeOutCirc","easeOutBack","easeInOutQuad","easeInOutCubic","easeInOutQuart","easeInOutQuint","easeInOutSine","easeInOutExpo","easeInOutCirc","easeInOutBack"]))}).strict(),iR=_({type:$(["audio"]),src:f(d().min(1).regex(/\S/)),prompt:f(d().max(4e3)),voice:f(d()),language:f(d()),newscaster:f(Bt()).default(!1),model:f(d()),musicLengthMs:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(3e3).lte(6e5)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),forceInstrumental:f(Bt()).default(!1),compositionPlan:f(d().max(4e3)),trim:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),volume:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)])),speed:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),effect:f($(["none","fadeIn","fadeOut","fadeInFadeOut"]))}).strict().superRefine((t,e)=>{var r=typeof t.src=="string"&&t.src.trim().length>0,n=typeof t.prompt=="string"&&t.prompt.trim().length>0;!r&&!n&&e.addIssue({code:Vn.custom,message:'A media asset requires either "src" (a source URL) or "prompt" (to generate the asset). Provide one.',path:["src"]})}),z2=_({x:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(-10).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)])),y:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(-10).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)]))}).strict(),nR=_({angle:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(-360).lte(360)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)]))}).strict(),aR=_({x:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(-100).lte(100)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)])),y:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(-100).lte(100)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)]))}).strict(),sR=_({type:$(["text-to-speech"]),text:d(),voice:d(),language:f(d()),newscaster:f(Bt()).default(!1),trim:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),volume:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)])),speed:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),effect:f($(["none","fadeIn","fadeOut","fadeInFadeOut"]))}).strict(),oR=_({type:$(["title"]),text:d(),style:f($(["minimal","blockbuster","vogue","sketchy","skinny","chunk","chunkLight","marker","future","subtitle"])),color:f(d()),size:f($(["xx-small","x-small","small","medium","large","x-large","xx-large"])),background:f(d()),position:f($(["top","topRight","right","bottomRight","bottom","bottomLeft","left","topLeft","center"])),offset:f(z2)}).strict(),uR=_({rotate:f(nR),skew:f(aR),flip:f(eO)}).strict(),lR=_({type:$(["video"]),src:f(d().min(1).regex(/\S/)),prompt:f(d().max(4e3)),inputSrc:f(d().min(1)),model:f(d()),resolution:f($(["480p","720p","1080p"])),duration:f($(["auto","4","5","6","7","8","9","10","11","12","13","14","15"])),aspectRatio:f($(["1:1","16:9","9:16","4:3","3:4","21:9","9:21"])),generateAudio:f(Bt()).default(!1),transcode:f(Bt()),trim:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),volume:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)])),volumeEffect:f($(["none","fadeIn","fadeOut","fadeInFadeOut"])),speed:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),crop:f(Jl),chromaKey:f(MV)}).strict().superRefine((t,e)=>{var r=typeof t.src=="string"&&t.src.trim().length>0,n=typeof t.prompt=="string"&&t.prompt.trim().length>0;!r&&!n&&e.addIssue({code:Vn.custom,message:'A media asset requires either "src" (a source URL) or "prompt" (to generate the asset). Provide one.',path:["src"]})}),cR=Yo("type",[lR,aO,QO,N2,iR,yO,PV,I2,nO,iO,oR,OO,P2,tR,sO,sR]),V2=_({id:f(d()),asset:cR,start:b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),b([d().regex(/^(auto|alias:\/\/[A-Za-z0-9_-]+)$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])]),length:b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),b([d().regex(/^(auto|end|alias:\/\/[A-Za-z0-9_-]+)$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])]),fit:f($(["cover","contain","crop","none"])),scale:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)])),width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(1).lte(3840)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),height:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(1).lte(2160)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),position:f($(["top","topRight","right","bottomRight","bottom","bottomLeft","left","topLeft","center"])),offset:f(z2),transition:f(rR),effect:f($(["zoomIn","zoomInSlow","zoomInFast","zoomOut","zoomOutSlow","zoomOutFast","slideLeft","slideLeftSlow","slideLeftFast","slideRight","slideRightSlow","slideRightFast","slideUp","slideUpSlow","slideUpFast","slideDown","slideDownSlow","slideDownFast"])),filter:f($(["none","blur","boost","contrast","darken","greyscale","lighten","muted","negative"])),opacity:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)])),transform:f(uR),alias:f(b([d().regex(/^[A-Za-z0-9_-]+$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),Wa=V2,fR=V2.transform(t=>{if(t.asset&&typeof t.asset=="object"&&"type"in t.asset&&t.asset.type==="rich-text"){const{fit:r,...n}=t;return n}return t}),O2=_({clips:Vt(fR).min(1)}).strict(),ad=O2,R2=_({soundtrack:f(GO),background:f(d()),fonts:f(Vt(rO)),tracks:Vt(O2).min(1),cache:f(Bt())}).strict(),hR=R2,ho=_({timeline:R2,output:M2,merge:f(Vt(C2)),callback:f(d()),disk:f($(["local","mount"])),instance:f($(["s1","s2","a1"]))}).strict(),po=ho,dR=_({id:d(),owner:d(),plan:f(d()),status:$(["queued","fetching","preprocessing","rendering","saving","done","failed"]),error:f(d()),duration:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),renderTime:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),url:f(d()),poster:f(b([d(),Gr()])),thumbnail:f(b([d(),Gr()])),data:f(ho),created:f(d()),updated:f(d())}).strict();_({success:Bt(),message:d(),response:dR}).strict();const pR=_({id:d(),name:d(),owner:d(),template:ho}).strict();_({success:Bt(),message:d(),response:pR}).strict();const $2=_({name:d(),template:f(ho)}).strict();_({body:ho,path:f(ft()),query:f(ft())}).strict(),_({body:f(ft()),path:_({id:b([d().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(_({data:f(Bt()),merged:f(Bt())}))}).strict(),_({body:f(ft()),path:f(ft()),query:f(ft())}).strict(),_({body:$2,path:f(ft()),query:f(ft())}).strict(),_({body:f(ft()),path:_({id:b([d().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(ft())}).strict(),_({body:f(ft()),path:_({id:b([d().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(ft())}).strict(),_({body:$2,path:_({id:b([d().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(ft())}).strict(),_({body:HO,path:f(ft()),query:f(ft())}).strict(),_({body:f(ft()),path:_({url:d()}),query:f(ft())}).strict(),_({body:f(ft()),path:_({id:b([d().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(ft())}).strict(),_({body:f(ft()),path:_({id:b([d().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(ft())}).strict(),_({body:f(ft()),path:_({id:b([d().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(ft())}).strict(),_({body:VO,path:f(ft()),query:f(ft())}).strict(),_({body:f(ft()),path:f(ft()),query:f(ft())}).strict(),_({body:jO,path:f(ft()),query:f(ft())}).strict(),_({body:f(ft()),path:_({id:b([d().regex(/^[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(ft())}).strict(),_({body:f(ft()),path:_({id:b([d().regex(/^[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(ft())}).strict(),_({body:f(ft()),path:f(ft()),query:f(ft())}).strict();const mR=tO,gR=RO,yR=ec.shape.format,vR=ec.shape.fps.unwrap(),bR=ec.shape.resolution,wR=ec.shape.aspectRatio,_R=d().regex(/^#[0-9A-Fa-f]{6}$|^#[0-9A-Fa-f]{8}$/),sd=Wa.extend({id:d()}),xR=ad.extend({clips:Vt(sd).min(1)});po.extend({timeline:hR.extend({tracks:Vt(xR).min(1)})});const L2=1500,Z2=5e3,CR=1e4;class mo extends Je{fontRegistry=null;layoutEngine=null;captionLayout=null;validatedAsset=null;generatorConfig=null;canvas=null;painter=null;currentRender=null;texture=null;sprite=null;words=[];loadComplete=!1;isPlaceholder=!1;fontRegistrationCache=new Map;lastRegisteredFontKey="";pendingLayoutId=0;resolvedPauseThreshold=500;constructor(e,r){const{fit:n,...i}=r;super(e,i,Ee.RichCaption)}static createPlaceholderWords(e){const r=["Your","captions","will","appear","here"],a=r.length*400+600,s=r.length*400,o=Math.max(1,Math.ceil((e-s)/a)+1),u=[];for(let l=0;l<o;l+=1){const c=l*a;for(let h=0;h<r.length;h+=1){const p=c+h*400;u.push({text:r[h],start:Math.round(p),end:Math.round(p+400),confidence:1})}}return u}async load(){await super.load();const e=this.clipConfiguration.asset;try{if(!NO.safeParse(e).success){this.createFallbackGraphic("Invalid caption asset");return}let n;if(e.src?br(e.src)?(n=mo.createPlaceholderWords(this.getLength()*1e3),this.isPlaceholder=!0,this.needsResolution=!0):(n=await this.fetchAndParseSubtitle(e.src),this.resolvedPauseThreshold=5):n=(e.words??[]).map(i=>({text:i.text,start:i.start,end:i.end,confidence:i.confidence})),n.length===0){this.createFallbackGraphic("No caption words found");return}if(n.length>Z2){this.createFallbackGraphic(`Word count (${n.length}) exceeds limit of ${Z2}`);return}n.length>L2&&console.warn(`RichCaptionPlayer: ${n.length} words exceeds soft limit of ${L2}. Performance may degrade.`),await this.buildRenderPipeline(e,n)}catch(r){console.error("RichCaptionPlayer load failed:",r),this.cleanupResources(),this.createFallbackGraphic("Failed to load caption")}}update(e,r){if(super.update(e,r),!this.isActive()||!this.loadComplete)return;const n=this.getPlaybackTime()*1e3;this.renderFrameSync(n)}async prepareStaticRender(){this.loadComplete&&await this.renderFrame(this.getPlaybackTime()*1e3)}async reloadAsset(){const e=this.clipConfiguration.asset;if(!e.src||br(e.src)){this.loadComplete&&!this.isPlaceholder&&(this.resolvedPauseThreshold=500,this.words=mo.createPlaceholderWords(this.getLength()*1e3),this.isPlaceholder=!0,this.needsResolution=!0,await this.reconfigure());return}this.loadComplete=!1,this.texture&&(this.texture.destroy(),this.texture=null),this.sprite&&(this.sprite.destroy(),this.sprite=null),this.captionLayout=null,this.validatedAsset=null,this.generatorConfig=null,this.canvas=null,this.painter=null,this.isPlaceholder=!1,this.needsResolution=!1;const r=await this.fetchAndParseSubtitle(e.src);if(this.resolvedPauseThreshold=5,r.length===0){this.createFallbackGraphic("No caption words found");return}await this.buildRenderPipeline(e,r)}reconfigureAfterRestore(){super.reconfigureAfterRestore(),this.reconfigure()}async reconfigure(){if(!(!this.loadComplete||!this.layoutEngine||!this.canvas||!this.painter))try{const e=this.clipConfiguration.asset;this.isPlaceholder&&(this.words=mo.createPlaceholderWords(this.getLength()*1e3));const r=`${e.font?.family??"Roboto"}|${e.font?.weight??400}`;r!==this.lastRegisteredFontKey&&(await this.registerFonts(e),this.lastRegisteredFontKey=r);const n=this.buildCanvasPayload(e,this.words),i=Lf.safeParse(n);if(!i.success){console.error("Caption reconfigure validation failed:",i.error?.issues);return}this.validatedAsset=i.data;const{width:a,height:s}=this.getSize(),o=qh(this.validatedAsset,a,s);this.captionLayout=await this.layoutEngine.layoutCaption(this.words,o),this.generatorConfig=Yh(a,s,1),this.renderFrameSync(this.getPlaybackTime()*1e3)}catch(e){console.error("RichCaptionPlayer reconfigure failed:",e)}}async buildRenderPipeline(e,r){const n=this.buildCanvasPayload(e,r),i=Lf.safeParse(n);if(!i.success){console.error("Canvas caption validation failed:",i.error?.issues??i.error),this.createFallbackGraphic("Caption validation failed");return}this.validatedAsset=i.data,this.words=r,this.fontRegistry=await Ah.getSharedInstance(),await this.registerFonts(e),this.lastRegisteredFontKey=`${e.font?.family??"Roboto"}|${e.font?.weight??400}`,this.layoutEngine=new uz(this.fontRegistry);const{width:a,height:s}=this.getSize(),o=qh(this.validatedAsset,a,s);this.captionLayout=await this.layoutEngine.layoutCaption(r,o),this.generatorConfig=Yh(a,s,1),this.canvas=document.createElement("canvas"),this.canvas.width=a,this.canvas.height=s,this.painter=zh(this.canvas),this.renderFrameSync(0),this.configureKeyframes(),this.loadComplete=!0}async renderFrame(e){for(;this.currentRender;)await this.currentRender;this.currentRender=this.paintFrame(e).finally(()=>{this.currentRender=null}),await this.currentRender}renderFrameSync(e){this.renderFrame(e).catch(()=>{})}async paintFrame(e){if(!(!this.layoutEngine||!this.captionLayout||!this.canvas||!this.painter||!this.validatedAsset||!this.generatorConfig))try{const{ops:r}=Uz(this.validatedAsset,this.captionLayout,e,this.layoutEngine,this.generatorConfig);if(r.length===0&&this.sprite){this.sprite.visible=!1;return}const n=this.canvas.getContext("2d");n&&n.clearRect(0,0,this.canvas.width,this.canvas.height),await this.painter.render(r),this.texture?this.texture.source.update():this.texture=st.Texture.from(this.canvas),this.sprite||(this.sprite=new st.Sprite(this.texture),this.contentContainer.addChild(this.sprite)),this.sprite.visible=!0}catch(r){console.error("Failed to render rich caption frame:",r)}}async fetchAndParseSubtitle(e){const r=new AbortController,n=setTimeout(()=>r.abort(),CR);try{const i=await fetch(e,{signal:r.signal});if(!i.ok)throw new Error(`Subtitle fetch failed: ${i.status}`);const a=await i.text();return Jz(a)}finally{clearTimeout(n)}}resolveFontsForAsset(e){const r=e.font?.family??"Roboto",n=e.font?.weight&&parseInt(String(e.font.weight),10)||400,i=new Map;for(const[o,u]of this.edit.getFontMetadata())i.set(o,u.baseFamilyName);const a=e.active?.font?.family,s=e.active?.font?.weight;return UM({family:r,weight:n,timelineFonts:this.edit.getTimelineFonts(),fontNameMap:i,...a?{activeFamily:a}:{},...s!=null?{activeWeight:s}:{}})}async registerFonts(e){if(!this.fontRegistry)return;const r=e.font?.family??"Roboto",n=e.font?.weight&&parseInt(String(e.font.weight),10)||400,i=this.resolveFontsForAsset(e);if(i.matched){for(const s of i.fonts)s.src&&await this.registerFontFromUrl(s.src,s.family,parseInt(s.weight,10)||400);return}const a=this.resolveFontWithWeight(r,n);a&&await this.registerFontFromUrl(a.url,a.baseFontFamily,a.fontWeight)}async registerFontFromUrl(e,r,n){if(!this.fontRegistry)return!1;const i=`${e}|${r}|${n}`,a=this.fontRegistrationCache.get(i);if(a)return a;const s=(async()=>{try{const o=await fetch(e);if(!o.ok)return!1;const u=await o.arrayBuffer();await this.fontRegistry.registerFromBytes(u,{family:r,weight:n.toString()});try{const l=new FontFace(r,u,{weight:n.toString()});await l.load(),document.fonts.add(l)}catch{}return!0}catch{return!1}})();return this.fontRegistrationCache.set(i,s),s}resolveFontWithWeight(e,r){const n=Qh(e),{baseFontFamily:i,fontWeight:a}=Dr(n),s=a!==400?a:r,o=this.edit.getFontUrlByFamilyAndWeight(i,s);if(o)return{url:o,baseFontFamily:i,fontWeight:s};const c=(this.edit.getEdit()?.timeline?.fonts||[]).find(g=>{const{full:y,base:E}=Kl(g.src),v=e.toLowerCase();return y.toLowerCase()===v||E.toLowerCase()===v});if(c)return{url:c.src,baseFontFamily:i,fontWeight:s};const h=this.buildWeightedFamilyName(i,s);if(h){const g=Ga(h);if(g)return{url:g,baseFontFamily:i,fontWeight:s}}const p=Ga(e);return p?{url:p,baseFontFamily:i,fontWeight:s}:null}buildWeightedFamilyName(e,r){const i={100:"Thin",200:"ExtraLight",300:"Light",400:"Regular",500:"Medium",600:"SemiBold",700:"Bold",800:"ExtraBold",900:"Black"}[r];return!i||i==="Regular"?null:`${e} ${i}`}buildCustomFontsFromTimeline(e){const r=e.font?.family;if(!r)return[];const n=Qh(r),{baseFontFamily:i,fontWeight:a}=Dr(n),s=this.edit.getTimelineFonts(),o=s.find(p=>{const{full:g,base:y}=Kl(p.src),E=n.toLowerCase();return g.toLowerCase()===E||y.toLowerCase()===E});if(o)return[{src:o.src,family:i||n,weight:a.toString()}];const u=this.edit.getFontMetadata(),l=(i||n).toLowerCase(),h=s.filter(p=>!x2(p.src)).find(p=>u.get(p.src)?.baseFamilyName.toLowerCase()===l);return h?[{src:h.src,family:i||n,weight:a.toString()}]:[]}buildCanvasPayload(e,r){const{width:n,height:i}=this.getSize(),a=this.resolveFontsForAsset(e),s=a.matched?a.resolvedFamily:Qh(e.font?.family??"Roboto"),o=a.matched?a.fonts.filter(c=>c.src).map(c=>({src:c.src,family:c.family,weight:c.weight})):this.buildCustomFontsFromTimeline(e),u={type:e.type,words:r.map(c=>({text:c.text,start:c.start,end:c.end,confidence:c.confidence})),font:{...e.font,family:s},width:n,height:i},l={active:e.active,stroke:e.stroke,shadow:e.shadow,background:e.background,border:e.border,padding:e.padding,style:e.style,animation:e.animation,align:e.align,pauseThreshold:this.resolvedPauseThreshold};for(const[c,h]of Object.entries(l))h!==void 0&&(u[c]=h);return o.length>0&&(u.customFonts=o),u}createFallbackGraphic(e){const{width:r,height:n}=this.getSize(),i=new st.TextStyle({fontFamily:"Arial",fontSize:24,fill:"#ffffff",align:"center",wordWrap:!0,wordWrapWidth:r}),a=new st.Text(e,i);a.anchor.set(.5,.5),a.x=r/2,a.y=n/2,this.contentContainer.addChild(a)}cleanupResources(){if(this.fontRegistry){try{this.fontRegistry.release()}catch(e){console.warn("Error releasing font registry:",e)}this.fontRegistry=null}this.layoutEngine=null,this.captionLayout=null,this.validatedAsset=null,this.generatorConfig=null,this.canvas=null,this.painter=null}dispose(){super.dispose(),this.loadComplete=!1,this.texture&&this.texture.destroy(),this.texture=null,this.sprite&&(this.sprite.destroy(),this.sprite=null),this.cleanupResources()}getSize(){const e=this.edit.getEdit();return{width:this.clipConfiguration.width||e?.output?.size?.width||this.edit.size.width,height:this.clipConfiguration.height||e?.output?.size?.height||this.edit.size.height}}getContentSize(){return{width:this.clipConfiguration.width||this.canvas?.width||this.edit.size.width,height:this.clipConfiguration.height||this.canvas?.height||this.edit.size.height}}getFitScale(){return 1}getContainerScale(){const e=this.getScale();return{x:e,y:e}}onDimensionsChanged(){this.words.length!==0&&this.rebuildForCurrentSize()}async rebuildForCurrentSize(){const e=this.getPlaybackTime()*1e3;if(this.texture&&(this.texture.destroy(),this.texture=null),this.sprite&&(this.contentContainer.removeChild(this.sprite),this.sprite.destroy(),this.sprite=null),this.contentContainer.mask){const{mask:c}=this.contentContainer;this.contentContainer.mask=null,c instanceof st.Graphics&&c.destroy()}this.captionLayout=null,this.validatedAsset=null,this.generatorConfig=null,this.canvas=null,this.painter=null;const{width:r,height:n}=this.getSize(),i=this.clipConfiguration.asset,a=this.buildCanvasPayload(i,this.words),s=Lf.safeParse(a);if(!s.success||(this.validatedAsset=s.data,this.generatorConfig=Yh(r,n,1),this.canvas=document.createElement("canvas"),this.canvas.width=r,this.canvas.height=n,this.painter=zh(this.canvas),!this.layoutEngine))return;const o=qh(this.validatedAsset,r,n);this.pendingLayoutId+=1;const u=this.pendingLayoutId,l=await this.layoutEngine.layoutCaption(this.words,o);u===this.pendingLayoutId&&(this.captionLayout=l,this.renderFrameSync(e))}supportsEdgeResize(){return!0}}class Fr extends Je{static PREVIEW_FPS=60;static NAMED_WEIGHTS={thin:100,hairline:100,extralight:200,ultralight:200,light:300,normal:400,regular:400,medium:500,semibold:600,demibold:600,bold:700,extrabold:800,ultrabold:800,black:900,heavy:900};static fontCapabilityCache=new Map;static fontBytesCache=new Map;textEngine=null;renderer=null;canvas=null;texture=null;sprite=null;lastRenderedTime=-1;isRendering=!1;pendingRenderTime=null;currentRender=null;validatedAsset=null;fontSupportsBold=!1;loadComplete=!1;fontRegistrationCache=new Map;static getFontSourceCacheKey(e){return e.split("#",1)[0].split("?",1)[0]}static fetchFontBytes(e){const r=Fr.getFontSourceCacheKey(e),n=Fr.fontBytesCache.get(r);if(n)return n;const i=fetch(e).then(a=>{if(!a.ok)throw new Error(`Failed to fetch font: ${a.status}`);return a.arrayBuffer()}).catch(a=>{throw Fr.fontBytesCache.delete(r),a});return Fr.fontBytesCache.set(r,i),i}constructor(e,r){const{fit:n,...i}=r;super(e,i,Ee.RichText)}resolveFontWeight(e,r){const n=e.font?.weight;if(typeof n=="number")return n;if(typeof n=="string"){const i=Fr.NAMED_WEIGHTS[n.toLowerCase().trim()];if(i!==void 0)return i;const a=parseInt(n,10);if(!Number.isNaN(a))return a;console.warn(`Unrecognized font weight "${n}", defaulting to ${r}`)}return r}buildCanvasPayload(e,r){const n=this.clipConfiguration.width||this.edit.size.width,i=this.clipConfiguration.height||this.edit.size.height,a=e.font?.family,{baseFontFamily:s,fontWeight:o}=r??(a?Dr(a):{baseFontFamily:a,fontWeight:400}),u=this.resolveFontWeight(e,o),l=this.edit.getTimelineFonts(),c=a?l.find(y=>{const{full:E,base:v}=Kl(y.src),C=a.toLowerCase();return E.toLowerCase()===C||v.toLowerCase()===C}):void 0;let h;if(c&&a)h=[{src:c.src,family:s||a,weight:u.toString()}];else if(a){const y=this.edit.getFontMetadata(),E=(s||a).toLowerCase(),C=l.filter(I=>!x2(I.src)).find(I=>y.get(I.src)?.baseFamilyName.toLowerCase()===E);C&&(h=[{src:C.src,family:s||a,weight:u.toString()}])}const g=h||a&&Ga(a,u)?s||a:void 0;return{...e,width:n,height:i,font:e.font?{...e.font,family:g||"Open Sans",weight:u}:void 0,stroke:e.font?.stroke,...h&&{customFonts:h}}}async registerFont(e,r,n){if(!this.textEngine)return!1;const i=Fr.getFontSourceCacheKey(n.path),a=`${n.type}:${i}|${e}|${r}`,s=this.fontRegistrationCache.get(a);if(s)return s;const o=(async()=>{try{const u={family:e,weight:r.toString()};if(n.type==="url"){const l=await Fr.fetchFontBytes(n.path);await this.textEngine.registerFontFromFile(new Blob([l]),u)}else await this.textEngine.registerFontFromFile(n.path,u);return!0}catch{return!1}})();return this.fontRegistrationCache.set(a,o),o}createFontCapabilityCheckPromise(e){return(async()=>{try{const r=await Fr.fetchFontBytes(e);return!!vc.parse(r).tables.fvar?.axes?.find(a=>a.tag==="wght")}catch(r){return console.warn("Failed to check font capabilities:",r),!1}})()}async prepareFontForAsset(e,r){const n=await this.ensureFontRegistered(e);if(!n)return;const i=Fr.getFontSourceCacheKey(n),a=Fr.fontCapabilityCache.get(i),s=a??this.createFontCapabilityCheckPromise(n);a||Fr.fontCapabilityCache.set(i,s),this.fontSupportsBold=await s,r&&this.edit.getInternalEvents().emit(Fe.FontCapabilitiesChanged,{supportsBold:this.fontSupportsBold})}supportsBold(){return this.fontSupportsBold}resolveFont(e,r){const{baseFontFamily:n}=Dr(e),i=this.edit.getFontUrlByFamilyAndWeight(n,r);if(i)return{url:i,baseFontFamily:n,fontWeight:r};const o=(this.edit.getEdit()?.timeline?.fonts||[]).find(l=>{const{full:c,base:h}=Kl(l.src),p=e.toLowerCase();return c.toLowerCase()===p||h.toLowerCase()===p});if(o)return{url:o.src,baseFontFamily:n,fontWeight:r};const u=Ga(e,r);return u?{url:u,baseFontFamily:n,fontWeight:r}:null}reconfigureAfterRestore(){super.reconfigureAfterRestore(),this.reconfigure(this.clipConfiguration.asset)}async reconfigure(e){try{if(await this.prepareFontForAsset(e,!0),this.texture?.destroy(),this.texture=null,this.lastRenderedTime=-1,this.textEngine){const r=this.buildCanvasPayload(e),{value:n}=this.textEngine.validate(r);this.validatedAsset=n}this.textEngine&&this.renderer&&this.renderFrameSafe(this.getPlaybackTime())}catch{}}async ensureFontRegistered(e){if(!this.textEngine)return null;const r=e.font?.family;if(!r)return null;const n=this.resolveFontWeight(e,Dr(r).fontWeight),i=this.resolveFont(r,n);return i?(await this.registerFont(i.baseFontFamily,n,{type:"url",path:i.url}),i.url):null}async load(){await super.load();const e=this.clipConfiguration.asset;try{if(!PO.safeParse(e).success){this.createFallbackText(e);return}const n=e.font?.family,i=n?Dr(n):void 0,a=this.buildCanvasPayload(e,i);this.textEngine=await cV({width:a.width,height:a.height,fps:Fr.PREVIEW_FPS});const{value:s}=this.textEngine.validate(a);this.validatedAsset=s,this.canvas=document.createElement("canvas"),this.canvas.width=a.width,this.canvas.height=a.height,this.renderer=this.textEngine.createRenderer(this.canvas),await this.prepareFontForAsset(e,!1),await this.renderFrame(0),this.configureKeyframes(),this.loadComplete=!0}catch{this.cleanupResources(),this.createFallbackText(e)}}cleanupResources(){if(this.textEngine){try{this.textEngine.destroy()}catch(e){console.warn("Error destroying text engine:",e)}this.textEngine=null}this.renderer=null,this.canvas=null,this.validatedAsset=null}async renderFrame(e){if(!(!this.textEngine||!this.renderer||!this.canvas||!this.validatedAsset))try{const r=this.getLength(),n=await this.textEngine.renderFrame(this.validatedAsset,e,r),i=this.canvas.getContext("2d");i&&i.clearRect(0,0,this.canvas.width,this.canvas.height),await this.renderer.render(n),this.texture?this.texture.source.update():this.texture=st.Texture.from(this.canvas),this.sprite?this.sprite.texture!==this.texture&&(this.sprite.texture=this.texture):(this.sprite=new st.Sprite(this.texture),this.contentContainer.addChild(this.sprite)),this.lastRenderedTime=e}catch(r){console.error("Failed to render rich text frame:",r)}}createFallbackText(e){const r=this.edit.getEdit(),n=this.clipConfiguration.width||r?.output?.size?.width||this.edit.size.width,i=this.clipConfiguration.height||r?.output?.size?.height||this.edit.size.height,a=new st.TextStyle({fontFamily:e.font?.family||"Arial",fontSize:e.font?.size||48,fill:e.font?.color||"#ffffff",align:e.align?.horizontal||"center",wordWrap:!0,wordWrapWidth:n}),s=new st.Text(e.text,a);switch(e.align?.horizontal){case"left":s.anchor.set(0,.5),s.x=0;break;case"right":s.anchor.set(1,.5),s.x=n;break;default:s.anchor.set(.5,.5),s.x=n/2}switch(e.align?.vertical){case"top":s.anchor.set(s.anchor.x,0),s.y=0;break;case"bottom":s.anchor.set(s.anchor.x,1),s.y=i;break;default:s.anchor.set(s.anchor.x,.5),s.y=i/2}this.contentContainer.addChild(s),this.configureKeyframes()}renderFrameSafe(e){if(this.isRendering){this.pendingRenderTime=e;return}this.isRendering=!0,this.pendingRenderTime=null,this.currentRender=this.renderFrame(e).catch(r=>console.error("Failed to render rich text frame:",r)).finally(()=>{if(this.isRendering=!1,this.currentRender=null,this.pendingRenderTime!==null&&this.pendingRenderTime!==e){const r=this.pendingRenderTime;this.pendingRenderTime=null,this.renderFrameSafe(r)}})}update(e,r){if(super.update(e,r),r===aa.SEEK_ELAPSED_MARKER&&(this.isRendering=!1,this.pendingRenderTime=null,this.lastRenderedTime=-1),!!this.isActive()&&this.loadComplete&&this.textEngine&&this.renderer&&!this.isRendering){const n=this.getPlaybackTime(),i=1/60;Math.abs(n-this.lastRenderedTime)>i&&this.renderFrameSafe(n)}}async prepareStaticRender(){!this.textEngine||!this.renderer||!this.loadComplete||await this.renderAtTime(this.getPlaybackTime())}async renderAtTime(e){for(;this.currentRender;)await this.currentRender;this.renderFrameSafe(e),this.currentRender&&await this.currentRender}dispose(){super.dispose(),this.loadComplete=!1,this.texture?.destroy(),this.texture=null,this.sprite&&(this.sprite.destroy(),this.sprite=null),this.canvas&&(this.canvas=null),this.textEngine&&(this.textEngine.destroy(),this.textEngine=null),this.renderer=null,this.validatedAsset=null}getSize(){const e=this.edit.getEdit();return{width:this.clipConfiguration.width||e?.output?.size?.width||this.edit.size.width,height:this.clipConfiguration.height||e?.output?.size?.height||this.edit.size.height}}getContentSize(){return{width:this.clipConfiguration.width||this.canvas?.width||this.edit.size.width,height:this.clipConfiguration.height||this.canvas?.height||this.edit.size.height}}getFitScale(){return 1}getContainerScale(){const e=this.getScale();return{x:e,y:e}}supportsEdgeResize(){return!0}onDimensionsChanged(){if(!this.textEngine||!this.renderer||!this.canvas)return;const e=this.clipConfiguration.asset,{width:r,height:n}=this.getSize();this.canvas.width=r,this.canvas.height=n,this.texture?.destroy(),this.texture=null,this.lastRenderedTime=-1;const i=this.buildCanvasPayload(e),{value:a}=this.textEngine.validate(i);this.validatedAsset=a,this.renderFrameSafe(this.getPlaybackTime())}updateTextContent(e){const r=this.clipConfiguration.asset;if(r.text=e,this.textEngine){const n=this.buildCanvasPayload(r),{value:i}=this.textEngine.validate(n);this.validatedAsset=i}this.texture?.destroy(),this.texture=null,this.lastRenderedTime=-1,this.textEngine&&this.renderer&&this.renderFrameSafe(this.getPlaybackTime())}}class AR extends Je{shape;shapeBackground;constructor(e,r){super(e,r,Ee.Shape),this.shape=null,this.shapeBackground=null}async load(){await super.load();const e=this.clipConfiguration.asset,r=new st.Graphics,n=e.width??this.edit.size.width,i=e.height??this.edit.size.height;r.fillStyle={color:"transparent"},r.rect(0,0,n,i),r.fill();const a=new st.Graphics;switch(e.shape){case"rectangle":{const s=e.rectangle,o=n/2-s.width/2,u=i/2-s.height/2;a.rect(o,u,s.width,s.height);break}case"circle":{const s=e.circle,o=n/2,u=i/2;a.circle(o,u,s.radius);break}case"line":{const s=e.line,o=n/2-s.length/2,u=i/2-s.thickness/2;a.rect(o,u,s.length,s.thickness);break}default:console.warn("Unsupported shape asset type.");break}if(a.fillStyle={color:e.fill?.color??"#ffffff",alpha:e.fill?.opacity??1},a.fill(),e.stroke){const s=new es.OutlineFilter({thickness:e.stroke.width,color:e.stroke.color});a.filters=[s]}this.shapeBackground=r,this.shape=a,this.contentContainer.addChild(r),r.addChild(a),this.configureKeyframes()}update(e,r){super.update(e,r)}dispose(){super.dispose(),this.shape?.destroy(),this.shape=null,this.shapeBackground?.destroy(),this.shapeBackground=null}getSize(){const e=this.clipConfiguration.asset;return{width:e.width??this.edit.size.width,height:e.height??this.edit.size.height}}getFitScale(){return 1}}class qi extends Je{static resvgInitialized=!1;static resvgInitPromise=null;texture=null;sprite=null;renderedWidth=0;renderedHeight=0;pendingRender=null;constructor(e,r){super(e,r,Ee.Svg)}static async initializeResvg(){if(!qi.resvgInitialized){if(qi.resvgInitPromise){await qi.resvgInitPromise;return}qi.resvgInitPromise=(async()=>{await jb(),qi.resvgInitialized=!0})(),await qi.resvgInitPromise}}async load(){await super.load();let e=this.clipConfiguration.asset;if(e.src){const r=this.edit.resolveMergeFields(e.src);r!==e.src&&(e={...e,src:r})}try{if(!WO.safeParse(e).success){this.createFallbackGraphic();return}await qi.initializeResvg(),await this.doRender(),this.configureKeyframes()}catch(r){console.error("Failed to render SVG asset:",r),this.createFallbackGraphic()}}async reloadAsset(){await this.rerenderAtCurrentDimensions()}createFallbackGraphic(){const e=this.clipConfiguration.width||this.edit.size.width,r=this.clipConfiguration.height||this.edit.size.height,n=fo(e,r);this.renderedWidth=e,this.renderedHeight=r,this.contentContainer.addChild(n),this.configureKeyframes()}update(e,r){super.update(e,r)}dispose(){super.dispose(),this.pendingRender=null,this.sprite&&(this.sprite.destroy(),this.sprite=null),this.texture&&(this.texture.destroy(!0),this.texture=null)}getSize(){return this.clipConfiguration.width&&this.clipConfiguration.height?{width:this.clipConfiguration.width,height:this.clipConfiguration.height}:{width:this.renderedWidth||this.edit.size.width,height:this.renderedHeight||this.edit.size.height}}getContentSize(){return{width:this.renderedWidth||this.edit.size.width,height:this.renderedHeight||this.edit.size.height}}getFitScale(){return 1}supportsEdgeResize(){return!0}onDimensionsChanged(){this.rerenderAtCurrentDimensions()}async rerenderAtCurrentDimensions(){this.pendingRender&&await this.pendingRender,this.sprite&&(this.contentContainer.removeChild(this.sprite),this.sprite.destroy(),this.sprite=null),this.texture&&(this.texture.destroy(!0),this.texture=null),this.pendingRender=this.doRender(),await this.pendingRender,this.pendingRender=null}async doRender(){const e=this.clipConfiguration.asset,r=this.clipConfiguration.width||this.edit.size.width,n=this.clipConfiguration.height||this.edit.size.height,i=await mD(e,{defaultWidth:r,defaultHeight:n});this.renderedWidth=i.width,this.renderedHeight=i.height;const a=new Blob([i.png],{type:"image/png"}),s=URL.createObjectURL(a),o=new Image;o.src=s,await new Promise((u,l)=>{o.onload=()=>u(),o.onerror=()=>l(new Error("Failed to load SVG image"))}),URL.revokeObjectURL(s),this.texture=st.Texture.from(o),this.sprite=new st.Sprite(this.texture),this.contentContainer.addChild(this.sprite),this.clipConfiguration.width&&this.clipConfiguration.height&&this.applyFixedDimensions()}}class go{static DEFAULT_BLINK_INTERVAL_MS=500;static DEFAULT_CURSOR_WIDTH_PX=2;static DEFAULT_CURSOR_COLOR=16777215;cursor=null;parent;textElement;clipConfig;textPosition=0;pixelX=0;pixelY=0;currentLine=0;isBlinking=!1;blinkInterval=null;blinkIntervalMs=500;width=2;color=16777215;isVisible=!0;constructor(e,r,n,i){this.parent=e,this.textElement=r,this.clipConfig=n,this.width=i?.width??go.DEFAULT_CURSOR_WIDTH_PX,this.color=i?.color??go.DEFAULT_CURSOR_COLOR,this.blinkIntervalMs=i?.blinkInterval??go.DEFAULT_BLINK_INTERVAL_MS,this.textPosition=0,this.isBlinking=!1,this.isVisible=!0,this.blinkInterval=null,this.createCursor()}updatePosition(e){if(!this.cursor||!this.textElement){console.warn("TextCursor: Cannot update position, cursor not initialized");return}this.textPosition=this.validateTextPosition(e),this.calculateAndApplyPixelPosition()}setPosition(e,r){if(!this.cursor){console.warn("TextCursor: Cannot set position, cursor not initialized");return}this.pixelX=e,this.pixelY=r,this.updateGraphicsPosition()}show(){this.setVisible(!0)}hide(){this.setVisible(!1)}setVisible(e){this.isVisible=e,this.cursor&&!this.isBlinking&&(this.cursor.visible=e)}startBlinking(){if(!this.cursor){console.warn("TextCursor: Cannot start blinking, cursor not initialized");return}this.isBlinking||this.startBlinkingAnimation()}stopBlinking(){this.stopBlinkingAnimation()}setBlinkInterval(e){this.blinkIntervalMs=e,this.isBlinking&&(this.stopBlinking(),this.startBlinking())}dispose(){if(this.stopBlinkingAnimation(),this.cursor&&this.parent)try{this.parent.removeChild(this.cursor)}catch(e){console.warn("TextCursor: Error removing cursor from parent:",e)}if(this.cursor)try{this.cursor.destroy()}catch(e){console.warn("TextCursor: Error destroying cursor graphics:",e)}finally{this.cursor=null}this.textPosition=0,this.pixelX=0,this.pixelY=0,this.currentLine=0,this.isVisible=!0}createCursor(){if(!this.textElement)return;this.cursor=new st.Graphics,this.cursor.fillStyle={color:this.color};const e=this.textElement.style.fontSize;this.cursor.rect(0,0,this.width,e),this.cursor.fill(),this.parent.addChild(this.cursor),this.cursor.visible=this.isVisible}validateTextPosition(e){return this.textElement?Math.max(0,Math.min(e,this.textElement.text.length)):0}calculateAndApplyPixelPosition(){this.calculatePixelPositionFromText(),this.updateGraphicsPosition()}calculatePixelPositionFromText(){if(!this.textElement)return;const{text:e}=this.textElement,r=this.textElement.style,n=e.substring(0,this.textPosition),i=n.match(/\n/g);this.currentLine=i?i.length:0;const a=e.split(`
397
+ ${e.stack}`:e),this.createFallbackGraphic()}}async mountIframe(e){const r=this.clipConfiguration.width||this.edit.size.width,n=this.clipConfiguration.height||this.edit.size.height;this.renderedWidth=r,this.renderedHeight=n,this.captureFps=this.edit.getOutputFps()||30,this.contentHash=await this.hashAsset();const i=document.createElement("iframe");i.setAttribute("aria-hidden","true"),i.style.cssText=`position:absolute;left:${g2}px;top:0;width:${r}px;height:${n}px;border:0;margin:0;padding:0;pointer-events:none;transform-origin:top left;z-index:50;background:transparent`,i.srcdoc=Hb(e),this.getIframeMountElement().appendChild(i),await v2(i),this.iframe=i,this.transitionToEditing()}async transitionToPlayback(){if(!this.capturedFrames||this.capturedFrames.length===0||!this.iframe)return;const e=await this.getDecodedFrame(0);if(!e||this.disposed)return;const r=new st.Sprite(e);this.contentContainer.addChild(r),this.playbackSprite=r,this.lastFrameIdx=0,this.clipConfiguration.width&&this.clipConfiguration.height&&this.applyFixedDimensions(),this.removeLoadingGraphic(),this.parkIframe(),this.mode="playback"}transitionToEditing(){this.mode="editing",this.removeLoadingGraphic()}transitionToStale(){this.mode==="stale"||this.mode==="editing"||(this.playbackSprite&&(this.contentContainer.removeChild(this.playbackSprite),this.playbackSprite.destroy(),this.playbackSprite=null),this.removeLoadingGraphic(),this.disposeCapturedFrames(),this.mode="stale")}transitionToCapturing(){this.mode="capturing",this.parkIframe(),this.mountLoadingGraphic(),this.emitCaptureStarted()}async captureFrames(){if(this.capturedFrames&&this.capturedHash===this.contentHash)return this.capturedFrames;if(this.captureInFlight)return this.captureInFlight;const e=Xl.captureChain;return this.captureInFlight=e.then(()=>this.disposed?null:this.runCapture()).finally(()=>{this.captureInFlight=null}),Xl.captureChain=this.captureInFlight.catch(()=>{}),this.captureInFlight}async runCapture(){if(!this.iframe||!this.iframe.contentDocument||!this.iframe.contentWindow||!this.contentHash)return null;const e=this.contentHash,r=()=>this.disposed||this.contentHash!==e,n=await vV(e);if(r())return null;if(n)return this.captureFramesTotal=n.frameCount,this.captureFramesDone=n.frameCount,this.captureFps=n.fps,this.capturedFrames=n.pngs,this.capturedHash=e,this.emitCaptureCompleted(n.frameCount),n.pngs;try{await this.iframe.contentDocument.fonts.ready}catch{}if(await ed(),r())return null;const{frameCount:i}=kD({clipLengthSeconds:this.getLength(),jsContent:this.asset.js,cssContent:this.asset.css,fps:this.captureFps}),a=this.captureFps,s=this.renderedWidth,o=this.renderedHeight;this.captureFramesTotal=i,this.captureFramesDone=0;const u=[];for(let l=0;l<i;l+=y2){if(await ed(),r())return null;const c=[];for(let p=l;p<Math.min(l+y2,i);p+=1)this.seekHarness(p/a),AV(this.iframe.contentDocument.body),c.push(EV(this.captureIframeAsForeignObjectSvg(s,o),s,o));const h=await Promise.all(c);if(r())return null;for(const p of h)this.captureFramesDone+=1,u.push(new Blob([p],{type:"image/webp"}))}return this.capturedFrames=u,this.capturedHash=e,this.emitCaptureCompleted(i),bV(e,{pngs:u,fps:a,frameCount:i,width:this.renderedWidth,height:this.renderedHeight,createdAt:Date.now()}).catch(l=>console.warn("[Html5Player] cache put failed:",l)),u}captureIframeAsForeignObjectSvg(e,r){if(!this.iframe?.contentDocument)throw new Error("iframe not ready");const n=this.iframe.contentDocument,i=Array.from(n.querySelectorAll("style")).map(l=>`<style>${l.textContent??""}</style>`).join(""),a="<style>*,*::before,*::after{animation:none!important;transition:none!important}</style>",s=n.body.cloneNode(!0);s.setAttribute("xmlns","http://www.w3.org/1999/xhtml");const o=s.getAttribute("style")??"";s.setAttribute("style",`width:${e}px;height:${r}px;margin:0;overflow:hidden;${o}`);const u=new XMLSerializer().serializeToString(s);return`<svg xmlns="http://www.w3.org/2000/svg" width="${e}" height="${r}"><foreignObject width="${e}" height="${r}">${i}${a}${u}</foreignObject></svg>`}async getDecodedFrame(e){if(!this.capturedFrames)return null;const r=this.decodedFrames.get(e);if(r)return this.decodedFrames.delete(e),this.decodedFrames.set(e,r),r;const n=this.capturedFrames[e];if(!n)return null;const i=await createImageBitmap(n);if(this.disposed)return i.close(),null;const a=st.Texture.from(i);return this.disposed?(a.destroy(!0),null):(this.decodedFrames.set(e,a),this.evictDecodedOverflow(e),a)}evictDecodedOverflow(e){for(;this.decodedFrames.size>xV;){let r;for(const n of this.decodedFrames.keys())if(n!==e&&n!==this.lastFrameIdx){r=n;break}if(r===void 0)break;this.decodedFrames.get(r)?.destroy(!0),this.decodedFrames.delete(r)}}async prepareStaticRender(){try{if(this.disposed||!this.iframe)return;const e=await this.captureFrames();if(this.disposed||!e||e.length===0)return;const r=Math.min(Math.max(0,Math.floor(this.getPlaybackTime()*this.captureFps)),e.length-1),n=await this.getDecodedFrame(r);if(this.disposed||!n)return;if(this.playbackSprite){this.playbackSprite.texture=n;return}this.staticSprite?this.staticSprite.texture=n:(this.staticSprite=new st.Sprite(n),this.contentContainer.addChild(this.staticSprite),this.clipConfiguration.width&&this.clipConfiguration.height&&this.applyFixedDimensions())}catch(e){console.warn("[Html5Player] prepareStaticRender failed:",e)}}endStaticRender(){this.staticSprite&&(this.contentContainer.removeChild(this.staticSprite),this.staticSprite.destroy(),this.staticSprite=null)}async reloadAsset(){if(!this.iframe)return;const e=await this.hashAsset();if(e!==this.contentHash){this.contentHash=e,this.transitionToStale(),this.disposeCapturedFrames(),this.captureInFlight=null,this.hasTriggeredCapture=!1,this.seekErrorReported=!1,this.iframe.srcdoc=Hb(this.asset);try{await v2(this.iframe,void 0,!0),this.beginCapture()}catch(r){console.warn("[Html5Player] reload iframe load failed:",r),this.emitCaptureFailed(r,"static-placeholder")}}}disposeCapturedFrames(){for(const e of this.decodedFrames.values())e.destroy(!0);this.decodedFrames.clear(),this.capturedFrames=null,this.capturedHash=null,this.lastFrameIdx=-1,this.decodeInFlight=null}createFallbackGraphic(){const e=this.clipConfiguration.width||this.edit.size.width,r=this.clipConfiguration.height||this.edit.size.height,n=fo(e,r);this.renderedWidth=e,this.renderedHeight=r,this.contentContainer.addChild(n),this.configureKeyframes()}update(e,r){super.update(e,r),this.triggerCaptureIfNeeded(),this.mode==="playback"?this.driveSpriteTextureSwap():this.mode==="capturing"?this.loadingSetProgress&&this.captureFramesTotal>0&&this.loadingSetProgress(this.captureFramesDone/this.captureFramesTotal):this.iframe&&(this.syncIframePosition(),this.isActive()&&this.seekHarness(this.getPlaybackTime()))}beginCapture(){if(this.disposed||!this.iframe||this.mode==="capturing"||this.mode==="playback"||this.captureInFlight)return;if(this.capturedFrames&&this.capturedHash===this.contentHash){this.transitionToPlayback().catch(r=>{console.warn("[Html5Player] transitionToPlayback failed:",r),this.transitionToEditing()});return}this.transitionToCapturing();const e=this.contentHash;this.captureFrames().then(async r=>{if(this.disposed)return;if(!(!!r&&r.length>0&&this.capturedHash===e&&this.contentHash===e)){this.mode==="capturing"&&this.transitionToEditing();return}await this.transitionToPlayback()}).catch(r=>{console.warn("[Html5Player] capture failed:",r),this.emitCaptureFailed(r,"live-iframe"),this.mode==="capturing"&&this.transitionToEditing()})}triggerCaptureIfNeeded(){this.hasTriggeredCapture||!this.iframe||!this.edit.isPlaying||this.mode!=="editing"&&this.mode!=="stale"||(this.hasTriggeredCapture=!0,this.beginCapture())}mountLoadingGraphic(){if(this.loadingGraphic)return;const e=this.renderedWidth||this.edit.size.width,r=this.renderedHeight||this.edit.size.height,{container:n,setProgress:i}=wV(e,r);this.loadingGraphic=n,this.loadingSetProgress=i,this.contentContainer.addChild(n),this.clipConfiguration.width&&this.clipConfiguration.height&&this.applyFixedDimensions()}removeLoadingGraphic(){this.loadingGraphic&&(this.contentContainer.removeChild(this.loadingGraphic),this.loadingGraphic.destroy({children:!0}),this.loadingGraphic=null,this.loadingSetProgress=null)}driveSpriteTextureSwap(){if(!this.playbackSprite||!this.capturedFrames)return;const e=Math.min(Math.max(0,Math.floor(this.getPlaybackTime()*this.captureFps)),this.capturedFrames.length-1);if(e===this.lastFrameIdx)return;const r=this.decodedFrames.get(e);if(r){this.decodedFrames.delete(e),this.decodedFrames.set(e,r),this.playbackSprite.texture=r,this.lastFrameIdx=e;return}this.decodeInFlight!==e&&(this.decodeInFlight=e,this.getDecodedFrame(e).then(n=>{if(this.decodeInFlight===e&&(this.decodeInFlight=null),!n||!this.playbackSprite||this.disposed)return;const i=Math.min(Math.max(0,Math.floor(this.getPlaybackTime()*this.captureFps)),(this.capturedFrames?.length??1)-1);Math.abs(i-e)>3||(this.playbackSprite.texture=n,this.lastFrameIdx=e)}).catch(n=>console.warn("[Html5Player] frame decode failed:",n)))}syncIframePosition(){if(!this.iframe)return;if(!this.isActive()){this.parkIframe();return}const e=this.getStudioCanvas();if(!e){this.parkIframe();return}const r=this.contentContainer.worldTransform,n=this.renderedWidth,i=this.renderedHeight,a=r.tx,s=r.ty,o=r.a*n+r.c*i+r.tx,u=r.b*n+r.d*i+r.ty,l=Math.min(a,o),c=Math.min(s,u),h=Math.abs(o-a),p=Math.abs(u-s),g=e.getBoundingClientRect(),y=g.width/e.width,E=g.height/e.height,v=e.offsetLeft+l*y,C=e.offsetTop+c*E,I=Math.max(1,h*y),x=Math.max(1,p*E),{style:A}=this.iframe;A.left=`${v}px`,A.top=`${C}px`,A.width=`${n}px`,A.height=`${i}px`,A.transform=`scale(${I/n}, ${x/i})`,A.opacity=`${this.getOpacity()}`}dispose(){this.disposed=!0,super.dispose(),this.iframe?.remove(),this.iframe=null,this.playbackSprite?.destroy(),this.playbackSprite=null,this.staticSprite?.destroy(),this.staticSprite=null,this.removeLoadingGraphic(),this.disposeCapturedFrames()}getSize(){return this.clipConfiguration.width&&this.clipConfiguration.height?{width:this.clipConfiguration.width,height:this.clipConfiguration.height}:this.getContentSize()}getContentSize(){return{width:this.renderedWidth||this.edit.size.width,height:this.renderedHeight||this.edit.size.height}}getFitScale(){return 1}supportsEdgeResize(){return!0}onDimensionsChanged(){}}class kV extends Je{texture;sprite;placeholder;constructor(e,r){super(e,r,Ee.Image),this.texture=null,this.sprite=null,this.placeholder=null}async load(){await super.load();try{await this.loadTexture(),this.configureKeyframes()}catch{this.createFallbackGraphic()}}createFallbackGraphic(){const e=this.getDisplaySize();this.clearPlaceholder(),this.placeholder=fo(e.width,e.height),this.contentContainer.addChild(this.placeholder),this.configureKeyframes()}update(e,r){super.update(e,r)}dispose(){this.disposeTexture(),this.clearPlaceholder(),super.dispose()}getSize(){return this.clipConfiguration.width&&this.clipConfiguration.height?{width:this.clipConfiguration.width,height:this.clipConfiguration.height}:this.sprite?{width:this.sprite.width,height:this.sprite.height}:this.placeholder?this.getDisplaySize():{width:0,height:0}}getContentSize(){return this.sprite?{width:this.sprite.width,height:this.sprite.height}:this.placeholder?this.getDisplaySize():{width:0,height:0}}async reloadAsset(){this.disposeTexture(),this.clearPlaceholder();try{await this.loadTexture()}catch{this.createFallbackGraphic()}}async loadTexture(){const e=this.clipConfiguration.asset,{src:r}=e;if(!r)throw new Error("Image asset has no src to load.");const n=`${r}${r.includes("?")?"&":"?"}x-cors=1`,i={src:n,crossorigin:"anonymous",data:{}},a=await this.edit.assetLoader.load(n,i);if(!(a?.source instanceof st.ImageSource))throw a&&(a.destroy(!0),await this.edit.assetLoader.rejectAsset(n)),new Error(`Invalid image source '${r}'.`);this.clearPlaceholder(),this.texture=this.createCroppedTexture(a),this.sprite=new st.Sprite(this.texture),this.contentContainer.addChild(this.sprite),this.clipConfiguration.width&&this.clipConfiguration.height&&this.applyFixedDimensions()}disposeTexture(){this.sprite&&(this.contentContainer.removeChild(this.sprite),this.sprite.destroy(),this.sprite=null),this.texture=null}clearPlaceholder(){this.placeholder&&(this.contentContainer.removeChild(this.placeholder),this.placeholder.destroy(),this.placeholder=null)}supportsEdgeResize(){return!0}createCroppedTexture(e){const r=this.clipConfiguration.asset;if(!r.crop)return e;const n=e.width,i=e.height,a=Math.floor((r.crop?.left??0)*n),s=Math.floor((r.crop?.right??0)*n),o=Math.floor((r.crop?.top??0)*i),u=Math.floor((r.crop?.bottom??0)*i),l=a,c=o,h=n-a-s,p=i-o-u,g=new st.Rectangle(l,c,h,p);return new st.Texture({source:e.source,frame:g})}}const SV={image:"M20.7134 8.12811L20.4668 8.69379C20.2864 9.10792 19.7136 9.10792 19.5331 8.69379L19.2866 8.12811C18.8471 7.11947 18.0555 6.31641 17.0677 5.87708L16.308 5.53922C15.8973 5.35653 15.8973 4.75881 16.308 4.57612L17.0252 4.25714C18.0384 3.80651 18.8442 2.97373 19.2761 1.93083L19.5293 1.31953C19.7058 0.893489 20.2942 0.893489 20.4706 1.31953L20.7238 1.93083C21.1558 2.97373 21.9616 3.80651 22.9748 4.25714L23.6919 4.57612C24.1027 4.75881 24.1027 5.35653 23.6919 5.53922L22.9323 5.87708C21.9445 6.31641 21.1529 7.11947 20.7134 8.12811ZM2.9918 3H14V5H4V19L13.2923 9.70649C13.6828 9.31595 14.3159 9.31591 14.7065 9.70641L20 15.0104V11H22V20.0066C22 20.5552 21.5447 21 21.0082 21H2.9918C2.44405 21 2 20.5551 2 20.0066V3.9934C2 3.44476 2.45531 3 2.9918 3ZM8 11C6.89543 11 6 10.1046 6 9C6 7.89543 6.89543 7 8 7C9.10457 7 10 7.89543 10 9C10 10.1046 9.10457 11 8 11Z",video:"M19.7134 8.12811L19.4668 8.69379C19.2864 9.10792 18.7136 9.10792 18.5331 8.69379L18.2866 8.12811C17.8471 7.11947 17.0555 6.31641 16.0677 5.87708L15.308 5.53922C14.8973 5.35653 14.8973 4.75881 15.308 4.57612L16.0252 4.25714C17.0384 3.80651 17.8442 2.97373 18.2761 1.93083L18.5293 1.31953C18.7058 0.893489 19.2942 0.893489 19.4706 1.31953L19.7238 1.93083C20.1558 2.97373 20.9616 3.80651 21.9748 4.25714L22.6919 4.57612C23.1027 4.75881 23.1027 5.35653 22.6919 5.53922L21.9323 5.87708C20.9445 6.31641 20.1529 7.11947 19.7134 8.12811ZM19 11C19.7013 11 20.3744 10.8797 21 10.6586V20.0066C21 20.5552 20.5551 21 20.0066 21H3.9934C3.44476 21 3 20.5551 3 20.0066V3.9934C3 3.44476 3.44495 3 3.9934 3H13.3414C13.1203 3.62556 13 4.29873 13 5C13 8.31371 15.6863 11 19 11ZM10.6219 8.41459C10.5562 8.37078 10.479 8.34741 10.4 8.34741C10.1791 8.34741 10 8.52649 10 8.74741V15.2526C10 15.3316 10.0234 15.4088 10.0672 15.4745C10.1897 15.6583 10.4381 15.708 10.6219 15.5854L15.5008 12.3328C15.5447 12.3035 15.5824 12.2658 15.6117 12.2219C15.7343 12.0381 15.6846 11.7897 15.5008 11.6672L10.6219 8.41459Z",mic:"M20.4668 7.69379L20.7134 7.12811C21.1529 6.11947 21.9445 5.31641 22.9323 4.87708L23.6919 4.53922C24.1027 4.35653 24.1027 3.75881 23.6919 3.57612L22.9748 3.25714C21.9616 2.80651 21.1558 1.97373 20.7238 0.930828L20.4706 0.319534C20.2942 -0.106511 19.7058 -0.106511 19.5293 0.319534L19.2761 0.930828C18.8442 1.97373 18.0384 2.80651 17.0252 3.25714L16.308 3.57612C15.8973 3.75881 15.8973 4.35653 16.308 4.53922L17.0677 4.87708C18.0555 5.31641 18.8471 6.11947 19.2866 7.12811L19.5331 7.69379C19.7136 8.10792 20.2864 8.10792 20.4668 7.69379ZM14.3869 5.33879C14.661 5.77254 15.0357 6.09305 15.5111 6.30032L16.0764 6.54679C16.4565 6.71249 16.7643 6.94524 16.9998 7.24503V10C16.9998 12.7614 14.7612 15 11.9998 15C9.23833 15 6.99976 12.7614 6.99976 10V6C6.99976 3.23858 9.23833 1 11.9998 1C13.1238 1 14.1613 1.37094 14.9964 1.99709C14.7563 2.17678 14.5531 2.39813 14.3869 2.66114C14.129 3.06938 14 3.51566 14 3.99997C14 4.48428 14.129 4.93056 14.3869 5.33879ZM3.05469 11H5.07065C5.55588 14.3923 8.47329 17 11.9998 17C15.5262 17 18.4436 14.3923 18.9289 11H20.9448C20.4837 15.1716 17.1714 18.4839 12.9998 18.9451V23H10.9998V18.9451C6.82814 18.4839 3.51584 15.1716 3.05469 11Z"};function DV(t,e,r,n){let i=0;for(const[a,s,o]of n)i+=Math.sin(t*a+e*o+r)*s;return i}function FV(t){if(t===void 0)return[{color:440020,baseAlpha:.12,baseY:.35,rayHeight:.45,phase:0,scrollSpeed:.08,waves:[[2,.08,.15],[4.5,.04,.25],[9,.015,.4]]},{color:1096065,baseAlpha:.18,baseY:.3,rayHeight:.5,phase:1.2,scrollSpeed:.12,waves:[[1.5,.1,.18],[3.8,.05,.3],[8,.02,.5],[14,.008,.7]]},{color:3462041,baseAlpha:.15,baseY:.28,rayHeight:.35,phase:2.8,scrollSpeed:.1,waves:[[2.2,.07,.2],[5.5,.035,.35],[11,.012,.55]]},{color:8141549,baseAlpha:.14,baseY:.45,rayHeight:.4,phase:4.1,scrollSpeed:.09,waves:[[1.8,.09,.12],[4.2,.045,.28],[9.5,.018,.45]]},{color:15485081,baseAlpha:.1,baseY:.5,rayHeight:.3,phase:5.5,scrollSpeed:.14,waves:[[2.5,.06,.22],[6,.03,.38],[12,.01,.6]]}];const e=r_(t);return[{color:rs(e[0],70,50),baseAlpha:.12,baseY:.35,rayHeight:.45,phase:0,scrollSpeed:.08,waves:[[2,.08,.15],[4.5,.04,.25],[9,.015,.4]]},{color:rs(e[1],70,50),baseAlpha:.18,baseY:.3,rayHeight:.5,phase:1.2,scrollSpeed:.12,waves:[[1.5,.1,.18],[3.8,.05,.3],[8,.02,.5],[14,.008,.7]]},{color:rs(e[2],70,50),baseAlpha:.15,baseY:.28,rayHeight:.35,phase:2.8,scrollSpeed:.1,waves:[[2.2,.07,.2],[5.5,.035,.35],[11,.012,.55]]},{color:rs(e[3],70,50),baseAlpha:.14,baseY:.45,rayHeight:.4,phase:4.1,scrollSpeed:.09,waves:[[1.8,.09,.12],[4.2,.045,.28],[9.5,.018,.45]]},{color:rs(e[4],70,50),baseAlpha:.1,baseY:.5,rayHeight:.3,phase:5.5,scrollSpeed:.14,waves:[[2.5,.06,.22],[6,.03,.38],[12,.01,.6]]}]}const rd=64,Ii=72,b2=42;class w2{constructor(e){this.options=e,this.container=new st.Container,this.build(),this.startAnimation()}container;layers=[];auroraLayer;time=0;rafId=null;lastTime=null;getContainer(){return this.container}resize(e,r){e===this.options.width&&r===this.options.height||(this.options.width=e,this.options.height=r,this.rebuild())}updatePrompt(e){e!==this.options.prompt&&(this.options.prompt=e,this.rebuild())}dispose(){this.stopAnimation(),this.container.destroy({children:!0})}rebuild(){this.container.removeChildren(),this.layers=[],this.build()}startAnimation(){const e=r=>{if(this.lastTime!==null){const n=(r-this.lastTime)/1e3;this.time+=n,this.drawAurora()}this.lastTime=r,this.rafId=requestAnimationFrame(e)};this.rafId=requestAnimationFrame(e)}stopAnimation(){this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null)}build(){const{mode:e,width:r,height:n}=this.options;if(e==="panel"){const o=new st.Graphics;o.roundRect(0,0,r,n,4),o.fill({color:"#1E1B2E",alpha:1}),this.container.addChild(o)}else{const o=new st.Graphics;o.rect(0,0,r,n),o.fill({color:"#000000",alpha:.25}),this.container.addChild(o)}this.auroraLayer=new st.Container,this.layers=FV(this.options.assetNumber).map(o=>{const u=new st.Graphics;return this.auroraLayer.addChild(u),{...o,graphics:u}});const i=Math.min(Math.max(Math.min(r,n)*.04,12),40),a=new st.BlurFilter({strength:i,quality:4});this.auroraLayer.filters=[a];const s=new st.Graphics;e==="panel"?s.roundRect(0,0,r,n,4):s.rect(0,0,r,n),s.fill({color:"#ffffff"}),this.auroraLayer.addChild(s),this.auroraLayer.mask=s,this.container.addChild(this.auroraLayer),this.drawAurora(),this.buildBadge()}drawAurora(){const{width:e,height:r}=this.options,n=this.time,i=e/rd;for(const a of this.layers){a.graphics.clear();const s=Math.sin(n*.3+a.phase*1.7)*.5+.5,o=a.baseAlpha*(.7+.3*s),u=n*a.scrollSpeed;for(let l=0;l<rd;l+=1){const h=l/rd*Math.PI*2+u,p=DV(h,n,a.phase,a.waves),g=(a.baseY+p)*r,y=.6+.4*Math.sin(h*3.7+n*.2+a.phase*2.3),E=a.rayHeight*r*y,v=.4+.6*(Math.sin(h*5+n*.15+a.phase*3.1)*.5+.5)**.7,C=o*v,I=l*i;a.graphics.rect(I,g,i+1,E),a.graphics.fill({color:a.color,alpha:C})}}}buildBadge(){const{width:e,height:r,icon:n,assetNumber:i,prompt:a,assetType:s}=this.options,o=new st.Container;o.position.set(e/2-Ii/2,r/2-Ii/2);const u=new st.Graphics;u.circle(Ii/2,Ii/2,Ii/2),u.fill({color:"#000000",alpha:.5}),o.addChild(u);const l=new st.Graphics;l.svg(`<svg viewBox="0 0 24 24"><path d="${SV[n]}" fill="#C084FC" /></svg>`);const c=b2/24,h=(Ii-b2)/2;if(l.scale.set(c,c),l.position.set(h,h),o.addChild(l),i!==void 0){const p=s?i_(s):"",g=p?`${p} ${i}`:String(i),y=new st.Text({text:g,style:{fontFamily:"Arial",fontSize:18,fontWeight:"bold",fill:"#ffffff"}});y.anchor.set(.5,.5),y.position.set(Ii/2,Ii+15),o.addChild(y)}if(a){const p=n_(a,60),g=new st.Text({text:p,style:{fontFamily:"Arial",fontSize:16,fontWeight:"normal",fill:"#ffffff",align:"center",wordWrap:!0,wordWrapWidth:e*.8,lineHeight:20}});g.anchor.set(.5,0),g.position.set(Ii/2,Ii+40),o.addChild(g)}this.container.addChild(o)}}class _2 extends Je{sprite=null;texture=null;placeholder=null;aiOverlay=null;constructor(e,r){super(e,r,Ee.ImageToVideo)}async load(){await super.load();const e=this.getDisplaySize(),r=this.edit.getResolvedEdit()?.timeline.tracks.flatMap(h=>h.clips)??[],n=Wd(r,this.clipId??""),{asset:i}=this.clipConfiguration,a=an(i)&&i.prompt||"",s=an(i)?i.type:"image-to-video",{src:o,seed:u}=i,l=u??o,c=l?await this.tryLoadTexture(l):!1;c||(this.placeholder=fo(e.width,e.height),this.contentContainer.addChild(this.placeholder)),this.aiOverlay=new w2({mode:c?"badge":"panel",icon:"video",width:e.width,height:e.height,assetNumber:n??void 0,prompt:a,assetType:s}),this.contentContainer.addChild(this.aiOverlay.getContainer()),this.configureKeyframes()}update(e,r){super.update(e,r);const n=this.getDisplaySize();this.aiOverlay?.resize(n.width,n.height);const i=this.aiOverlay?.getContainer();if(i){const a=this.getContainerScale(),s=this.getSize();i.scale.set(1/a.x,1/a.y),i.position.set(s.width/2-n.width/(2*a.x),s.height/2-n.height/(2*a.y))}}getSize(){const e=this.getDisplaySize();return this.clipConfiguration.width&&this.clipConfiguration.height?{width:this.clipConfiguration.width,height:this.clipConfiguration.height}:{width:this.sprite?.width||e.width,height:this.sprite?.height||e.height}}dispose(){this.sprite&&(this.contentContainer.removeChild(this.sprite),this.sprite.destroy(),this.sprite=null),this.texture=null,this.placeholder?.destroy(),this.placeholder=null,this.aiOverlay?.dispose(),this.aiOverlay=null,super.dispose()}async tryLoadTexture(e){try{const r=`${e}${e.includes("?")?"&":"?"}x-cors=1`,n={src:r,crossorigin:"anonymous",data:{}},i=await this.edit.assetLoader.load(r,n);return i?.source instanceof st.ImageSource?(this.texture=i,this.sprite=new st.Sprite(this.texture),this.contentContainer.addChild(this.sprite),this.clipConfiguration.width&&this.clipConfiguration.height&&this.applyFixedDimensions(),!0):(i&&(i.destroy(!0),await this.edit.assetLoader.rejectAsset(r)),!1)}catch{return!1}}}class IV extends Je{texture;sprite;isPlaying;constructor(e,r){super(e,r,Ee.Luma),this.texture=null,this.sprite=null,this.isPlaying=!1}async load(){await super.load();const e=this.clipConfiguration.asset,r=e.src,n={src:r,data:{autoPlay:!1,muted:!0}},i=await this.edit.assetLoader.load(r,n);if(!(i?.source instanceof st.ImageSource||i?.source instanceof st.VideoSource))throw i&&(i.destroy(!0),await this.edit.assetLoader.rejectAsset(r)),new Error(`Invalid luma source '${e.src}'.`);i.source instanceof st.VideoSource&&(i.source.alphaMode="no-premultiply-alpha"),this.texture=i,this.sprite=new st.Sprite(this.texture),this.contentContainer.addChild(this.sprite),this.configureKeyframes()}update(e,r){if(super.update(e,r),!this.texture||!(this.texture.source instanceof st.VideoSource))return;const n=this.getPlaybackTime(),i=this.edit.isPlaying&&this.isActive();i&&(this.isPlaying||(this.isPlaying=!0,this.texture.source.resource.currentTime=n,this.texture.source.resource.play().catch(console.error)),this.texture.source.resource.volume!==this.getVolume()&&(this.texture.source.resource.volume=this.getVolume()),Math.abs(this.texture.source.resource.currentTime-n)>.1&&(this.texture.source.resource.currentTime=n)),!i&&this.isPlaying&&(this.isPlaying=!1,this.texture.source.resource.pause()),!this.edit.isPlaying&&this.isActive()&&(this.texture.source.resource.currentTime=n)}dispose(){super.dispose(),this.sprite?.destroy(),this.sprite=null,this.texture=null}getSize(){return this.clipConfiguration.width&&this.clipConfiguration.height?{width:this.clipConfiguration.width,height:this.clipConfiguration.height}:{width:this.sprite?.width??0,height:this.sprite?.height??0}}getVolume(){return 0}getSprite(){return this.sprite}isVideoSource(){return this.texture?.source instanceof st.VideoSource}getVideoCurrentTime(){return this.texture?.source instanceof st.VideoSource?this.texture.source.resource.currentTime:-1}}const Kl=t=>{const r=(t.split("/").pop()||"").replace(/\.(ttf|otf|woff|woff2)$/i,""),n=r.replace(/-(Bold|Light|Regular|Italic|Medium|SemiBold|Black|Thin|ExtraLight|ExtraBold|Heavy)$/i,"");return{full:r,base:n}},x2=t=>t.includes("fonts.gstatic.com"),NV=_({color:f(d()),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),padding:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),borderRadius:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),BV=_({family:f(d()),color:f(d()),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),size:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),lineHeight:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),stroke:f(d()),strokeWidth:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),TV=_({top:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),left:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),right:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),PV=_({type:$(["caption"]),src:d().min(1).regex(/\S/),font:f(BV),background:f(NV),margin:f(TV),trim:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),speed:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),MV=_({color:b([d().regex(/^#[0-9a-fA-F]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),threshold:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(0).lte(250)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),halo:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(0).lte(250)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),Jl=_({top:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),bottom:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),left:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),right:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),zV=_({host:d(),cpCode:d(),path:f(b([d(),Gr()])),filename:f(b([d(),Gr()]))}).strict(),VV=_({provider:xt("akamai-netstorage"),options:f(zV)}).strict(),OV=_({accountName:d(),container:d(),prefix:f(b([d(),Gr()])),filename:f(b([d(),Gr()]))}).strict(),RV=_({provider:xt("azure-blob-storage"),options:f(OV)}).strict(),$V=_({bucket:d(),prefix:f(d()),filename:f(d())}).strict(),LV=_({provider:xt("google-cloud-storage"),options:f($V)}).strict(),ZV=_({folderId:f(d()),filename:f(d())}).strict(),UV=_({provider:xt("google-drive"),options:f(ZV)}).strict(),jV=_({playbackPolicy:f(Vt($(["public","signed"]))),passthrough:f(d().max(255))}).strict(),GV=_({provider:xt("mux"),options:f(jV)}).strict(),WV=_({region:d(),bucket:d(),prefix:f(d()),filename:f(d()),acl:f(d())}).strict(),HV=_({provider:xt("s3"),options:f(WV)}).strict(),YV=_({provider:xt("shotstack"),exclude:f(Bt())}).strict(),qV=_({title:f(d().max(150)),privacyLevel:f($(["public","friends","private"])),disableDuet:f(Bt()).default(!1),disableStitch:f(Bt()).default(!1),disableComment:f(Bt()).default(!1)}).strict(),XV=_({provider:xt("tiktok"),options:f(qV)}).strict(),KV=_({view:f($(["anybody","nobody","contacts","password","unlisted"])),embed:f($(["public","private","whitelist"])),comments:f($(["anybody","nobody","contacts"])),download:f(Bt()),add:f(Bt())}).strict(),JV=_({name:f(d()),description:f(d()),privacy:f(KV),folderUri:f(d())}).strict(),QV=_({provider:xt("vimeo"),options:f(JV)}).strict(),Ql=Yo("provider",[YV,GV,HV,LV,UV,QV,XV,VV,RV]),tO=Ql,eO=_({horizontal:f(Bt()),vertical:f(Bt())}).strict(),rO=_({src:d()}).strict(),iO=_({type:$(["html5"]),html:d().max(1e6),css:f(d().max(5e5)),js:f(d().max(5e5))}).strict(),nO=_({type:$(["html"]),html:d(),css:f(d()),width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),height:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),background:f(d()),position:f($(["top","topRight","right","bottomRight","bottom","bottomLeft","left","topLeft","center"]))}).strict(),aO=_({type:$(["image"]),src:f(d().min(1).regex(/\S/)),prompt:f(d().max(4e3)),model:f(d()),resolution:f($(["1K","2K","4K"])),aspectRatio:f($(["1:1","16:9","9:16","4:3","3:4","21:9","9:21"])),crop:f(Jl)}).strict().superRefine((t,e)=>{var r=typeof t.src=="string"&&t.src.trim().length>0,n=typeof t.prompt=="string"&&t.prompt.trim().length>0;!r&&!n&&e.addIssue({code:Vn.custom,message:'A media asset requires either "src" (a source URL) or "prompt" (to generate the asset). Provide one.',path:["src"]})}),sO=_({type:$(["image-to-video"]),src:d().min(1),prompt:f(d()),aspectRatio:f($(["1:1","4:3","16:9","9:16","3:4","21:9","9:21"])),speed:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),crop:f(Jl)}).strict(),oO=_({preset:$(["conference","interview","lecture","meeting","mobile_phone","music","podcast","studio","voice_over"])}).strict(),uO=_({provider:d().default("dolby"),options:oO}).strict(),lO=_({enhancement:xt("dolbyEnhancement_DolbyEnhancement")}).strict().and(uO),cO=_({audio:f(lO)}).strict(),fO=_({status:d(),title:d(),detail:d()}).strict();_({errors:Vt(fO)}).strict();const hO=_({type:d(),id:d()}).strict();_({data:hO}).strict();const dO=_({id:d(),url:d(),expires:d()}).strict(),pO=_({type:d(),id:d(),attributes:dO}).strict();_({data:pO}).strict();const mO=_({speed:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),preservePitch:f(Bt())}).strict(),gO=_({format:f($(["srt","vtt"]))}).strict(),yO=_({type:$(["luma"]),src:d().min(1).regex(/\S/),trim:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),C2=_({find:d(),replace:sr()}).strict(),vO=_({capture:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}).strict(),bO=_({start:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),length:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),wO=_({id:d(),owner:d(),region:f(d()),renderId:f(d()),providerId:f(d()),filename:f(d()),url:f(d()),status:$(["importing","ready","failed","deleted"]),created:f(d()),updated:f(d())}).strict(),A2=_({type:d(),attributes:wO}).strict();_({data:Vt(A2)}).strict(),_({data:A2}).strict(),_({success:Bt(),message:d(),response:Wp(d(),sr())}).strict();const _O=_({message:d(),id:d()}).strict();_({success:Bt(),message:d(),response:_O}).strict();const xO=_({id:d(),name:d(),created:f(d()),updated:f(d())}).strict(),CO=_({owner:d(),templates:Vt(xO)}).strict();_({success:Bt(),message:d(),response:CO}).strict();const AO=_({message:d(),id:d()}).strict();_({success:Bt(),message:d(),response:AO}).strict();const EO=_({family:f(d()),weight:f(sr()).default("400"),color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),background:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(1),size:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(1).lte(500)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),textDecoration:f($(["none","underline","line-through"]))}).strict(),kO=_({style:$(["karaoke","highlight","pop","fade","slide","bounce","typewriter","none"]),direction:f($(["left","right","up","down"]))}).strict(),SO=_({family:f(d()).default("Roboto"),size:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(1).lte(500)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(24),weight:f(sr()).default("400"),color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default("#ffffff"),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(1),background:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),E2=_({horizontal:f($(["left","center","right"])),vertical:f($(["top","middle","bottom"]))}).strict(),DO=_({preset:$(["fadeIn","slideIn","typewriter","ascend","shift","movingLetters"]),duration:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(.1).lte(30)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),style:f($(["character","word"])),direction:f($(["left","right","up","down"]))}).strict(),k2=_({color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(1),borderRadius:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),wrap:f(Bt()).default(!1),padding:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(0).lte(200)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),S2=_({width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default("#000000"),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(1),radius:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0)}).strict(),D2=_({type:f($(["linear","radial"])),angle:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(360)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),stops:Vt(_({offset:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),color:b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])})).min(2)}).strict(),FO=_({letterSpacing:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),lineHeight:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(1.2),textTransform:f($(["none","uppercase","lowercase","capitalize"])),size:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(1).lte(500)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),textDecoration:f($(["none","underline","line-through"])),gradient:f(D2)}).strict(),F2=_({top:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),right:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),bottom:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),left:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0)}).strict(),id=_({offsetX:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),offsetY:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),blur:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default("#000000"),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(.5)}).strict(),tc=_({width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default("#000000"),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(1)}).strict(),IO=_({font:f(EO),stroke:f(b([tc,$(["none"])])),shadow:f(b([id,$(["none"])]))}).strict(),I2=_({type:$(["rich-caption"]),src:d().min(1),font:f(SO),style:f(FO),stroke:f(tc),shadow:f(id),background:f(k2),border:f(S2),padding:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),F2])),align:f(E2),active:f(IO),animation:f(kO)}).strict(),NO=I2,BO=_({family:f(d()).default("Open Sans"),size:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(1).lte(500)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(24),weight:f(sr()).default("400"),color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default("#000000"),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(1),background:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),stroke:f(tc)}).strict(),TO=_({letterSpacing:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),wordSpacing:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(0),lineHeight:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])).default(1.2),textTransform:f($(["none","uppercase","lowercase","capitalize"])),textDecoration:f($(["none","underline","line-through"])),gradient:f(D2)}).strict(),N2=_({type:$(["rich-text"]),text:d().max(5e3),font:f(BO),style:f(TO),stroke:f(tc),shadow:f(id),background:f(k2),border:f(S2),padding:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),F2])),align:f(E2),animation:f(DO)}).strict(),PO=N2,MO=_({id:f(d()),owner:f(d()),status:f($(["queued","failed"])),created:f(d())}).strict(),zO=_({type:f(d()),attributes:f(MO)}).strict();_({data:zO}).strict();const VO=_({url:d(),id:d(),destinations:Vt(Ql)}).strict(),OO=_({type:$(["shape"]),shape:$(["rectangle","circle","line"]),width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),height:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),fill:f(_({color:f(d()),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))})),stroke:f(_({color:f(d()),width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))})),rectangle:f(_({width:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),height:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),cornerRadius:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))})),circle:f(_({radius:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])})),line:f(_({length:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),thickness:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}))}).strict(),nd=_({width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(1).lte(4096)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),height:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(1).lte(4096)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),RO=nd,B2=_({format:f($(["mp4","webm","mov","avi","mkv","ogv","wmv","avif","gif","mp3","wav","jpg","png","webp","tif"])),size:f(nd),fit:f($(["cover","contain","crop"])),resolution:f($(["preview","mobile","sd","hd","fhd"])),quality:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(1).lte(100)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),fps:f(b([xt(12),xt(15),xt(23.976),xt(24),xt(25),xt(29.97),xt(30),xt(48),xt(50),xt(59.94),xt(60)])),speed:f(mO),keyframeInterval:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int().gte(1).lte(300)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),fixOffset:f(Bt()),fixRotation:f(Bt()),enhance:f(cO),filename:f(d())}).strict(),$O=_({renditions:f(Vt(B2)),transcription:f(gO)}).strict(),LO=_({id:d(),status:f($(["queued","importing","ready","failed","deleted","overwritten"])),url:f(d()),executionTime:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),transformation:f(B2),width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),height:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),duration:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),fps:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),ZO=_({renditions:f(Vt(LO))}).strict(),UO=_({id:d(),owner:d(),input:f(d()),source:f(d()),status:f($(["queued","importing","ready","failed","deleted","overwritten"])),outputs:f(ZO),width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),height:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),duration:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),fps:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),created:f(d()),updated:f(d())}).strict(),T2=_({type:d(),id:d(),attributes:UO}).strict();_({data:Vt(T2)}).strict(),_({data:T2}).strict();const jO=_({url:f(d()),outputs:f($O),destinations:f(Ql),callback:f(d())}).strict(),GO=_({src:d().min(1).regex(/\S/),effect:f($(["fadeIn","fadeOut","fadeInFadeOut"])),volume:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),P2=_({type:$(["svg"]),src:d().min(1).max(5e5)}).strict(),WO=P2,HO=_({id:d(),merge:f(Vt(C2))}).strict(),YO=_({horizontal:f($(["left","center","right"])),vertical:f($(["top","center","bottom"]))}).strict(),qO=_({preset:$(["typewriter"]),duration:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(.1).lte(30)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),XO=_({color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),padding:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(100)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),borderRadius:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),wrap:f(Bt())}).strict(),KO=_({family:f(d()),color:f(d()),opacity:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),size:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),weight:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),lineHeight:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),JO=_({width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),color:f(b([d().regex(/^#[A-Fa-f0-9]{6}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),QO=_({type:$(["text"]),text:d(),width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),height:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),font:f(KO),background:f(XO),alignment:f(YO),stroke:f(JO),animation:f(qO),ellipsis:f(d())}).strict().superRefine((t,e)=>{t.background&&t.background.wrap===!0&&e.addIssue({code:Vn.custom,message:'background.wrap is only supported on rich-text and rich-caption assets. For type "text", migrate to type "rich-text" to use this feature.',path:["background","wrap"]})}),tR=_({type:$(["text-to-image"]),prompt:d(),width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),height:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().int()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),crop:f(Jl)}).strict(),eR=_({capture:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),scale:b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}).strict(),M2=_({format:$(["mp4","gif","mp3","jpg","png","bmp"]),resolution:f($(["preview","mobile","sd","hd","1080","4k"])),aspectRatio:f($(["16:9","9:16","1:1","4:5","4:3"])),size:f(nd),fps:f(b([xt(12),xt(15),xt(23.976),xt(24),xt(25),xt(29.97),xt(30),xt(48),xt(50),xt(59.94),xt(60)])),scaleTo:f($(["preview","mobile","sd","hd","1080","4k"])),quality:f($(["verylow","low","medium","high","veryhigh"])),repeat:f(Bt()),mute:f(Bt()),range:f(bO),poster:f(vO),thumbnail:f(eR),destinations:f(Vt(Ql))}).strict().superRefine((t,e)=>{var r=t.format==="mp3";if(!r&&t.size!=null&&(t.size.width==null||t.size.height==null)){e.addIssue({code:Vn.custom,path:["size"],message:"size requires both width and height"});return}var n=typeof t.resolution=="string",i=t.size!=null&&t.size.width!=null&&t.size.height!=null;!r&&!n&&!i&&e.addIssue({code:Vn.custom,message:'output requires either "resolution" or "size" (with width and height)'})}),ec=M2,rR=_({in:f($(["none","fade","fadeSlow","fadeFast","reveal","revealSlow","revealFast","wipeLeft","wipeLeftSlow","wipeLeftFast","wipeRight","wipeRightSlow","wipeRightFast","slideLeft","slideLeftSlow","slideLeftFast","slideRight","slideRightSlow","slideRightFast","slideUp","slideUpSlow","slideUpFast","slideDown","slideDownSlow","slideDownFast","carouselLeft","carouselLeftSlow","carouselLeftFast","carouselRight","carouselRightSlow","carouselRightFast","carouselUp","carouselUpSlow","carouselUpFast","carouselDown","carouselDownSlow","carouselDownFast","shuffleTopRight","shuffleTopRightSlow","shuffleTopRightFast","shuffleRightTop","shuffleRightTopSlow","shuffleRightTopFast","shuffleRightBottom","shuffleRightBottomSlow","shuffleRightBottomFast","shuffleBottomRight","shuffleBottomRightSlow","shuffleBottomRightFast","shuffleBottomLeft","shuffleBottomLeftSlow","shuffleBottomLeftFast","shuffleLeftBottom","shuffleLeftBottomSlow","shuffleLeftBottomFast","shuffleLeftTop","shuffleLeftTopSlow","shuffleLeftTopFast","shuffleTopLeft","shuffleTopLeftSlow","shuffleTopLeftFast","zoom"])),out:f($(["none","fade","fadeSlow","fadeFast","reveal","revealSlow","revealFast","wipeLeft","wipeLeftSlow","wipeLeftFast","wipeRight","wipeRightSlow","wipeRightFast","slideLeft","slideLeftSlow","slideLeftFast","slideRight","slideRightSlow","slideRightFast","slideUp","slideUpSlow","slideUpFast","slideDown","slideDownSlow","slideDownFast","carouselLeft","carouselLeftSlow","carouselLeftFast","carouselRight","carouselRightSlow","carouselRightFast","carouselUp","carouselUpSlow","carouselUpFast","carouselDown","carouselDownSlow","carouselDownFast","shuffleTopRight","shuffleTopRightSlow","shuffleTopRightFast","shuffleRightTop","shuffleRightTopSlow","shuffleRightTopFast","shuffleRightBottom","shuffleRightBottomSlow","shuffleRightBottomFast","shuffleBottomRight","shuffleBottomRightSlow","shuffleBottomRightFast","shuffleBottomLeft","shuffleBottomLeftSlow","shuffleBottomLeftFast","shuffleLeftBottom","shuffleLeftBottomSlow","shuffleLeftBottomFast","shuffleLeftTop","shuffleLeftTopSlow","shuffleLeftTopFast","shuffleTopLeft","shuffleTopLeftSlow","shuffleTopLeftFast","zoom"]))}).strict(),Ni=_({from:f(sr()),to:f(sr()),start:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),length:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),interpolation:f($(["linear","bezier","constant"])),easing:f($(["ease","easeIn","easeOut","easeInOut","easeInQuad","easeInCubic","easeInQuart","easeInQuint","easeInSine","easeInExpo","easeInCirc","easeInBack","easeOutQuad","easeOutCubic","easeOutQuart","easeOutQuint","easeOutSine","easeOutExpo","easeOutCirc","easeOutBack","easeInOutQuad","easeInOutCubic","easeInOutQuart","easeInOutQuint","easeInOutSine","easeInOutExpo","easeInOutCirc","easeInOutBack"]))}).strict(),iR=_({type:$(["audio"]),src:f(d().min(1).regex(/\S/)),prompt:f(d().max(4e3)),voice:f(d()),language:f(d()),newscaster:f(Bt()).default(!1),model:f(d()),musicLengthMs:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(3e3).lte(6e5)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),forceInstrumental:f(Bt()).default(!1),compositionPlan:f(d().max(4e3)),trim:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),volume:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)])),speed:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),effect:f($(["none","fadeIn","fadeOut","fadeInFadeOut"]))}).strict().superRefine((t,e)=>{var r=typeof t.src=="string"&&t.src.trim().length>0,n=typeof t.prompt=="string"&&t.prompt.trim().length>0;!r&&!n&&e.addIssue({code:Vn.custom,message:'A media asset requires either "src" (a source URL) or "prompt" (to generate the asset). Provide one.',path:["src"]})}),z2=_({x:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(-10).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)])),y:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(-10).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)]))}).strict(),nR=_({angle:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(-360).lte(360)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)]))}).strict(),aR=_({x:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(-100).lte(100)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)])),y:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(-100).lte(100)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)]))}).strict(),sR=_({type:$(["text-to-speech"]),text:d(),voice:d(),language:f(d()),newscaster:f(Bt()).default(!1),trim:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),volume:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)])),speed:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),effect:f($(["none","fadeIn","fadeOut","fadeInFadeOut"]))}).strict(),oR=_({type:$(["title"]),text:d(),style:f($(["minimal","blockbuster","vogue","sketchy","skinny","chunk","chunkLight","marker","future","subtitle"])),color:f(d()),size:f($(["xx-small","x-small","small","medium","large","x-large","xx-large"])),background:f(d()),position:f($(["top","topRight","right","bottomRight","bottom","bottomLeft","left","topLeft","center"])),offset:f(z2)}).strict(),uR=_({rotate:f(nR),skew:f(aR),flip:f(eO)}).strict(),lR=_({type:$(["video"]),src:f(d().min(1).regex(/\S/)),prompt:f(d().max(4e3)),inputSrc:f(d().min(1)),model:f(d()),resolution:f($(["480p","720p","1080p"])),duration:f($(["auto","4","5","6","7","8","9","10","11","12","13","14","15"])),aspectRatio:f($(["1:1","16:9","9:16","4:3","3:4","21:9","9:21"])),generateAudio:f(Bt()).default(!1),transcode:f(Bt()),trim:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),volume:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(1)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)])),volumeEffect:f($(["none","fadeIn","fadeOut","fadeInFadeOut"])),speed:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0).lte(10)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),crop:f(Jl),chromaKey:f(MV)}).strict().superRefine((t,e)=>{var r=typeof t.src=="string"&&t.src.trim().length>0,n=typeof t.prompt=="string"&&t.prompt.trim().length>0;!r&&!n&&e.addIssue({code:Vn.custom,message:'A media asset requires either "src" (a source URL) or "prompt" (to generate the asset). Provide one.',path:["src"]})}),cR=Yo("type",[lR,aO,QO,N2,iR,yO,PV,I2,nO,iO,oR,OO,P2,tR,sO,sR]),V2=_({id:f(d()),asset:cR,start:b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),b([d().regex(/^(auto|alias:\/\/[A-Za-z0-9_-]+)$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])]),length:b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(0)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),b([d().regex(/^(auto|end|alias:\/\/[A-Za-z0-9_-]+)$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])]),fit:f($(["cover","contain","crop","none"])),scale:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)])),width:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(1).lte(3840)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),height:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D().gte(1).lte(2160)),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),position:f($(["top","topRight","right","bottomRight","bottom","bottomLeft","left","topLeft","center"])),offset:f(z2),transition:f(rR),effect:f($(["zoomIn","zoomInSlow","zoomInFast","zoomOut","zoomOutSlow","zoomOutFast","slideLeft","slideLeftSlow","slideLeftFast","slideRight","slideRightSlow","slideRightFast","slideUp","slideUpSlow","slideUpFast","slideDown","slideDownSlow","slideDownFast"])),filter:f($(["none","blur","boost","contrast","darken","greyscale","lighten","muted","negative"])),opacity:f(b([b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]),Vt(Ni)])),transform:f(uR),alias:f(b([d().regex(/^[A-Za-z0-9_-]+$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)]))}).strict(),Wa=V2,fR=V2.transform(t=>{if(t.asset&&typeof t.asset=="object"&&"type"in t.asset&&t.asset.type==="rich-text"){const{fit:r,...n}=t;return n}return t}),O2=_({clips:Vt(fR).min(1)}).strict(),ad=O2,R2=_({soundtrack:f(GO),background:f(d()),fonts:f(Vt(rO)),tracks:Vt(O2).min(1),cache:f(Bt())}).strict(),hR=R2,ho=_({timeline:R2,output:M2,merge:f(Vt(C2)),callback:f(d()),disk:f($(["local","mount"])),instance:f($(["s1","s2","a1"]))}).strict(),po=ho,dR=_({id:d(),owner:d(),plan:f(d()),status:$(["queued","fetching","preprocessing","rendering","saving","done","failed"]),error:f(d()),duration:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),renderTime:f(b([F(t=>{if(!(t===""||t===null||t===void 0))return Array.isArray(t)?t:typeof t=="string"?/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/.test(t)?t:Number(t):t},D()),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])),url:f(d()),poster:f(b([d(),Gr()])),thumbnail:f(b([d(),Gr()])),data:f(ho),created:f(d()),updated:f(d())}).strict();_({success:Bt(),message:d(),response:dR}).strict();const pR=_({id:d(),name:d(),owner:d(),template:ho}).strict();_({success:Bt(),message:d(),response:pR}).strict();const $2=_({name:d(),template:f(ho)}).strict();_({body:ho,path:f(ft()),query:f(ft())}).strict(),_({body:f(ft()),path:_({id:b([d().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(_({data:f(Bt()),merged:f(Bt())}))}).strict(),_({body:f(ft()),path:f(ft()),query:f(ft())}).strict(),_({body:$2,path:f(ft()),query:f(ft())}).strict(),_({body:f(ft()),path:_({id:b([d().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(ft())}).strict(),_({body:f(ft()),path:_({id:b([d().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(ft())}).strict(),_({body:$2,path:_({id:b([d().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(ft())}).strict(),_({body:HO,path:f(ft()),query:f(ft())}).strict(),_({body:f(ft()),path:_({url:d()}),query:f(ft())}).strict(),_({body:f(ft()),path:_({id:b([d().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(ft())}).strict(),_({body:f(ft()),path:_({id:b([d().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(ft())}).strict(),_({body:f(ft()),path:_({id:b([d().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(ft())}).strict(),_({body:VO,path:f(ft()),query:f(ft())}).strict(),_({body:f(ft()),path:f(ft()),query:f(ft())}).strict(),_({body:jO,path:f(ft()),query:f(ft())}).strict(),_({body:f(ft()),path:_({id:b([d().regex(/^[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(ft())}).strict(),_({body:f(ft()),path:_({id:b([d().regex(/^[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}$/),d().regex(/^\{\{\s*[A-Za-z0-9_]+\s*\}\}$/)])}),query:f(ft())}).strict(),_({body:f(ft()),path:f(ft()),query:f(ft())}).strict();const mR=tO,gR=RO,yR=ec.shape.format,vR=ec.shape.fps.unwrap(),bR=ec.shape.resolution,wR=ec.shape.aspectRatio,_R=d().regex(/^#[0-9A-Fa-f]{6}$|^#[0-9A-Fa-f]{8}$/),sd=Wa.extend({id:d()}),xR=ad.extend({clips:Vt(sd).min(1)});po.extend({timeline:hR.extend({tracks:Vt(xR).min(1)})});const L2=1500,Z2=5e3,CR=1e4;class mo extends Je{fontRegistry=null;layoutEngine=null;captionLayout=null;validatedAsset=null;generatorConfig=null;canvas=null;painter=null;currentRender=null;texture=null;sprite=null;words=[];loadComplete=!1;isPlaceholder=!1;fontRegistrationCache=new Map;lastRegisteredFontKey="";pendingLayoutId=0;resolvedPauseThreshold=500;constructor(e,r){const{fit:n,...i}=r;super(e,i,Ee.RichCaption)}static createPlaceholderWords(e){const r=["Your","captions","will","appear","here"],a=r.length*400+600,s=r.length*400,o=Math.max(1,Math.ceil((e-s)/a)+1),u=[];for(let l=0;l<o;l+=1){const c=l*a;for(let h=0;h<r.length;h+=1){const p=c+h*400;u.push({text:r[h],start:Math.round(p),end:Math.round(p+400),confidence:1})}}return u}async load(){await super.load();const e=this.clipConfiguration.asset;try{if(!NO.safeParse(e).success){this.createFallbackGraphic("Invalid caption asset");return}let n;if(e.src?br(e.src)?(n=mo.createPlaceholderWords(this.getLength()*1e3),this.isPlaceholder=!0,this.needsResolution=!0):(n=await this.fetchAndParseSubtitle(e.src),this.resolvedPauseThreshold=5):n=(e.words??[]).map(i=>({text:i.text,start:i.start,end:i.end,confidence:i.confidence})),n.length===0){this.createFallbackGraphic("No caption words found");return}if(n.length>Z2){this.createFallbackGraphic(`Word count (${n.length}) exceeds limit of ${Z2}`);return}n.length>L2&&console.warn(`RichCaptionPlayer: ${n.length} words exceeds soft limit of ${L2}. Performance may degrade.`),await this.buildRenderPipeline(e,n)}catch(r){console.error("RichCaptionPlayer load failed:",r),this.cleanupResources(),this.createFallbackGraphic("Failed to load caption")}}update(e,r){if(super.update(e,r),!this.isActive()||!this.loadComplete)return;const n=this.getPlaybackTime()*1e3;this.renderFrameSync(n)}async prepareStaticRender(){this.loadComplete&&await this.renderFrame(this.getPlaybackTime()*1e3)}async reloadAsset(){const e=this.clipConfiguration.asset;if(!e.src||br(e.src)){this.loadComplete&&!this.isPlaceholder&&(this.resolvedPauseThreshold=500,this.words=mo.createPlaceholderWords(this.getLength()*1e3),this.isPlaceholder=!0,this.needsResolution=!0,await this.reconfigure());return}this.loadComplete=!1,this.texture&&(this.texture.destroy(),this.texture=null),this.sprite&&(this.sprite.destroy(),this.sprite=null),this.captionLayout=null,this.validatedAsset=null,this.generatorConfig=null,this.canvas=null,this.painter=null,this.isPlaceholder=!1,this.needsResolution=!1;const r=await this.fetchAndParseSubtitle(e.src);if(this.resolvedPauseThreshold=5,r.length===0){this.createFallbackGraphic("No caption words found");return}await this.buildRenderPipeline(e,r)}reconfigureAfterRestore(){super.reconfigureAfterRestore(),this.reconfigure()}async reconfigure(){if(!(!this.loadComplete||!this.layoutEngine||!this.canvas||!this.painter))try{const e=this.clipConfiguration.asset;this.isPlaceholder&&(this.words=mo.createPlaceholderWords(this.getLength()*1e3));const r=`${e.font?.family??"Roboto"}|${e.font?.weight??400}`;r!==this.lastRegisteredFontKey&&(await this.registerFonts(e),this.lastRegisteredFontKey=r);const n=this.buildCanvasPayload(e,this.words),i=Lf.safeParse(n);if(!i.success){console.error("Caption reconfigure validation failed:",i.error?.issues);return}this.validatedAsset=i.data;const{width:a,height:s}=this.getSize(),o=qh(this.validatedAsset,a,s);this.captionLayout=await this.layoutEngine.layoutCaption(this.words,o),this.generatorConfig=Yh(a,s,1),this.renderFrameSync(this.getPlaybackTime()*1e3)}catch(e){console.error("RichCaptionPlayer reconfigure failed:",e)}}async buildRenderPipeline(e,r){const n=this.buildCanvasPayload(e,r),i=Lf.safeParse(n);if(!i.success){console.error("Canvas caption validation failed:",i.error?.issues??i.error),this.createFallbackGraphic("Caption validation failed");return}this.validatedAsset=i.data,this.words=r,this.fontRegistry=await Ah.getSharedInstance(),await this.registerFonts(e),this.lastRegisteredFontKey=`${e.font?.family??"Roboto"}|${e.font?.weight??400}`,this.layoutEngine=new uz(this.fontRegistry);const{width:a,height:s}=this.getSize(),o=qh(this.validatedAsset,a,s);this.captionLayout=await this.layoutEngine.layoutCaption(r,o),this.generatorConfig=Yh(a,s,1),this.canvas=document.createElement("canvas"),this.canvas.width=a,this.canvas.height=s,this.painter=zh(this.canvas),this.renderFrameSync(0),this.configureKeyframes(),this.loadComplete=!0}async renderFrame(e){for(;this.currentRender;)await this.currentRender;this.currentRender=this.paintFrame(e).finally(()=>{this.currentRender=null}),await this.currentRender}renderFrameSync(e){this.renderFrame(e).catch(()=>{})}async paintFrame(e){if(!(!this.layoutEngine||!this.captionLayout||!this.canvas||!this.painter||!this.validatedAsset||!this.generatorConfig))try{const{ops:r}=Uz(this.validatedAsset,this.captionLayout,e,this.layoutEngine,this.generatorConfig);if(r.length===0&&this.sprite){this.sprite.visible=!1;return}const n=this.canvas.getContext("2d");n&&n.clearRect(0,0,this.canvas.width,this.canvas.height),await this.painter.render(r),this.texture?this.texture.source.update():this.texture=st.Texture.from(this.canvas),this.sprite||(this.sprite=new st.Sprite(this.texture),this.contentContainer.addChild(this.sprite)),this.sprite.visible=!0}catch(r){console.error("Failed to render rich caption frame:",r)}}async fetchAndParseSubtitle(e){const r=new AbortController,n=setTimeout(()=>r.abort(),CR);try{const i=await fetch(e,{signal:r.signal});if(!i.ok)throw new Error(`Subtitle fetch failed: ${i.status}`);const a=await i.text();return Jz(a)}finally{clearTimeout(n)}}resolveFontsForAsset(e){const r=e.font?.family??"Roboto",n=e.font?.weight&&parseInt(String(e.font.weight),10)||400,i=new Map;for(const[o,u]of this.edit.getFontMetadata())i.set(o,u.baseFamilyName);const a=e.active?.font?.family,s=e.active?.font?.weight;return UM({family:r,weight:n,timelineFonts:this.edit.getTimelineFonts(),fontNameMap:i,...a?{activeFamily:a}:{},...s!=null?{activeWeight:s}:{}})}async registerFonts(e){if(!this.fontRegistry)return;const r=e.font?.family??"Roboto",n=e.font?.weight&&parseInt(String(e.font.weight),10)||400,i=this.resolveFontsForAsset(e);if(i.matched){for(const s of i.fonts)s.src&&await this.registerFontFromUrl(s.src,s.family,parseInt(s.weight,10)||400);return}const a=this.resolveFontWithWeight(r,n);a&&await this.registerFontFromUrl(a.url,a.baseFontFamily,a.fontWeight)}async registerFontFromUrl(e,r,n){if(!this.fontRegistry)return!1;const i=`${e}|${r}|${n}`,a=this.fontRegistrationCache.get(i);if(a)return a;const s=(async()=>{try{const o=await fetch(e);if(!o.ok)return!1;const u=await o.arrayBuffer();await this.fontRegistry.registerFromBytes(u,{family:r,weight:n.toString()});try{const l=new FontFace(r,u,{weight:n.toString()});await l.load(),document.fonts.add(l)}catch{}return!0}catch{return!1}})();return this.fontRegistrationCache.set(i,s),s}resolveFontWithWeight(e,r){const n=Qh(e),{baseFontFamily:i,fontWeight:a}=Dr(n),s=a!==400?a:r,o=this.edit.getFontUrlByFamilyAndWeight(i,s);if(o)return{url:o,baseFontFamily:i,fontWeight:s};const c=(this.edit.getEdit()?.timeline?.fonts||[]).find(g=>{const{full:y,base:E}=Kl(g.src),v=e.toLowerCase();return y.toLowerCase()===v||E.toLowerCase()===v});if(c)return{url:c.src,baseFontFamily:i,fontWeight:s};const h=this.buildWeightedFamilyName(i,s);if(h){const g=Ga(h);if(g)return{url:g,baseFontFamily:i,fontWeight:s}}const p=Ga(e);return p?{url:p,baseFontFamily:i,fontWeight:s}:null}buildWeightedFamilyName(e,r){const i={100:"Thin",200:"ExtraLight",300:"Light",400:"Regular",500:"Medium",600:"SemiBold",700:"Bold",800:"ExtraBold",900:"Black"}[r];return!i||i==="Regular"?null:`${e} ${i}`}buildCustomFontsFromTimeline(e){const r=e.font?.family;if(!r)return[];const n=Qh(r),{baseFontFamily:i,fontWeight:a}=Dr(n),s=this.edit.getTimelineFonts(),o=s.find(p=>{const{full:g,base:y}=Kl(p.src),E=n.toLowerCase();return g.toLowerCase()===E||y.toLowerCase()===E});if(o)return[{src:o.src,family:i||n,weight:a.toString()}];const u=this.edit.getFontMetadata(),l=(i||n).toLowerCase(),h=s.filter(p=>!x2(p.src)).find(p=>u.get(p.src)?.baseFamilyName.toLowerCase()===l);return h?[{src:h.src,family:i||n,weight:a.toString()}]:[]}buildCanvasPayload(e,r){const{width:n,height:i}=this.getSize(),a=this.resolveFontsForAsset(e),s=a.matched?a.resolvedFamily:Qh(e.font?.family??"Roboto"),o=a.matched?a.fonts.filter(c=>c.src).map(c=>({src:c.src,family:c.family,weight:c.weight})):this.buildCustomFontsFromTimeline(e),u={type:e.type,words:r.map(c=>({text:c.text,start:c.start,end:c.end,confidence:c.confidence})),font:{...e.font,family:s},width:n,height:i},l={active:e.active,stroke:e.stroke,shadow:e.shadow,background:e.background,border:e.border,padding:e.padding,style:e.style,animation:e.animation,align:e.align,pauseThreshold:this.resolvedPauseThreshold};for(const[c,h]of Object.entries(l))h!==void 0&&(u[c]=h);return o.length>0&&(u.customFonts=o),u}createFallbackGraphic(e){const{width:r,height:n}=this.getSize(),i=new st.TextStyle({fontFamily:"Arial",fontSize:24,fill:"#ffffff",align:"center",wordWrap:!0,wordWrapWidth:r}),a=new st.Text(e,i);a.anchor.set(.5,.5),a.x=r/2,a.y=n/2,this.contentContainer.addChild(a)}cleanupResources(){if(this.fontRegistry){try{this.fontRegistry.release()}catch(e){console.warn("Error releasing font registry:",e)}this.fontRegistry=null}this.layoutEngine=null,this.captionLayout=null,this.validatedAsset=null,this.generatorConfig=null,this.canvas=null,this.painter=null}dispose(){super.dispose(),this.loadComplete=!1,this.texture&&this.texture.destroy(),this.texture=null,this.sprite&&(this.sprite.destroy(),this.sprite=null),this.cleanupResources()}getSize(){const e=this.edit.getEdit();return{width:this.clipConfiguration.width||e?.output?.size?.width||this.edit.size.width,height:this.clipConfiguration.height||e?.output?.size?.height||this.edit.size.height}}getContentSize(){return{width:this.clipConfiguration.width||this.canvas?.width||this.edit.size.width,height:this.clipConfiguration.height||this.canvas?.height||this.edit.size.height}}getFitScale(){return 1}getContainerScale(){const e=this.getScale();return{x:e,y:e}}onDimensionsChanged(){this.words.length!==0&&this.rebuildForCurrentSize()}async rebuildForCurrentSize(){const e=this.getPlaybackTime()*1e3;if(this.texture&&(this.texture.destroy(),this.texture=null),this.sprite&&(this.contentContainer.removeChild(this.sprite),this.sprite.destroy(),this.sprite=null),this.contentContainer.mask){const{mask:c}=this.contentContainer;this.contentContainer.mask=null,c instanceof st.Graphics&&c.destroy()}this.captionLayout=null,this.validatedAsset=null,this.generatorConfig=null,this.canvas=null,this.painter=null;const{width:r,height:n}=this.getSize(),i=this.clipConfiguration.asset,a=this.buildCanvasPayload(i,this.words),s=Lf.safeParse(a);if(!s.success||(this.validatedAsset=s.data,this.generatorConfig=Yh(r,n,1),this.canvas=document.createElement("canvas"),this.canvas.width=r,this.canvas.height=n,this.painter=zh(this.canvas),!this.layoutEngine))return;const o=qh(this.validatedAsset,r,n);this.pendingLayoutId+=1;const u=this.pendingLayoutId,l=await this.layoutEngine.layoutCaption(this.words,o);u===this.pendingLayoutId&&(this.captionLayout=l,this.renderFrameSync(e))}supportsEdgeResize(){return!0}}class Fr extends Je{static PREVIEW_FPS=60;static NAMED_WEIGHTS={thin:100,hairline:100,extralight:200,ultralight:200,light:300,normal:400,regular:400,medium:500,semibold:600,demibold:600,bold:700,extrabold:800,ultrabold:800,black:900,heavy:900};static fontCapabilityCache=new Map;static fontBytesCache=new Map;textEngine=null;renderer=null;canvas=null;texture=null;sprite=null;lastRenderedTime=-1;isRendering=!1;pendingRenderTime=null;currentRender=null;validatedAsset=null;fontSupportsBold=!1;loadComplete=!1;fontRegistrationCache=new Map;static getFontSourceCacheKey(e){return e.split("#",1)[0].split("?",1)[0]}static fetchFontBytes(e){const r=Fr.getFontSourceCacheKey(e),n=Fr.fontBytesCache.get(r);if(n)return n;const i=fetch(e).then(a=>{if(!a.ok)throw new Error(`Failed to fetch font: ${a.status}`);return a.arrayBuffer()}).catch(a=>{throw Fr.fontBytesCache.delete(r),a});return Fr.fontBytesCache.set(r,i),i}constructor(e,r){const{fit:n,...i}=r;super(e,i,Ee.RichText)}resolveFontWeight(e,r){const n=e.font?.weight;if(typeof n=="number")return n;if(typeof n=="string"){const i=Fr.NAMED_WEIGHTS[n.toLowerCase().trim()];if(i!==void 0)return i;const a=parseInt(n,10);if(!Number.isNaN(a))return a;console.warn(`Unrecognized font weight "${n}", defaulting to ${r}`)}return r}buildCanvasPayload(e,r){const n=this.clipConfiguration.width||this.edit.size.width,i=this.clipConfiguration.height||this.edit.size.height,a=e.font?.family,{baseFontFamily:s,fontWeight:o}=r??(a?Dr(a):{baseFontFamily:a,fontWeight:400}),u=this.resolveFontWeight(e,o),l=this.edit.getTimelineFonts(),c=a?l.find(y=>{const{full:E,base:v}=Kl(y.src),C=a.toLowerCase();return E.toLowerCase()===C||v.toLowerCase()===C}):void 0;let h;if(c&&a)h=[{src:c.src,family:s||a,weight:u.toString()}];else if(a){const y=this.edit.getFontMetadata(),E=(s||a).toLowerCase(),C=l.filter(I=>!x2(I.src)).find(I=>y.get(I.src)?.baseFamilyName.toLowerCase()===E);C&&(h=[{src:C.src,family:s||a,weight:u.toString()}])}const g=h||a&&Ga(a,u)?s||a:void 0;return{...e,width:n,height:i,font:e.font?{...e.font,family:g||"Open Sans",weight:u}:void 0,stroke:e.font?.stroke,...h&&{customFonts:h}}}async registerFont(e,r,n){if(!this.textEngine)return!1;const i=Fr.getFontSourceCacheKey(n.path),a=`${n.type}:${i}|${e}|${r}`,s=this.fontRegistrationCache.get(a);if(s)return s;const o=(async()=>{try{const u={family:e,weight:r.toString()};if(n.type==="url"){const l=await Fr.fetchFontBytes(n.path);await this.textEngine.registerFontFromFile(new Blob([l]),u)}else await this.textEngine.registerFontFromFile(n.path,u);return!0}catch{return!1}})();return this.fontRegistrationCache.set(a,o),o}createFontCapabilityCheckPromise(e){return(async()=>{try{const r=await Fr.fetchFontBytes(e);return!!vc.parse(r).tables.fvar?.axes?.find(a=>a.tag==="wght")}catch(r){return console.warn("Failed to check font capabilities:",r),!1}})()}async prepareFontForAsset(e,r){const n=await this.ensureFontRegistered(e);if(!n)return;const i=Fr.getFontSourceCacheKey(n),a=Fr.fontCapabilityCache.get(i),s=a??this.createFontCapabilityCheckPromise(n);a||Fr.fontCapabilityCache.set(i,s),this.fontSupportsBold=await s,r&&this.edit.getInternalEvents().emit(Fe.FontCapabilitiesChanged,{supportsBold:this.fontSupportsBold})}supportsBold(){return this.fontSupportsBold}resolveFont(e,r){const{baseFontFamily:n}=Dr(e),i=this.edit.getFontUrlByFamilyAndWeight(n,r);if(i)return{url:i,baseFontFamily:n,fontWeight:r};const o=(this.edit.getEdit()?.timeline?.fonts||[]).find(l=>{const{full:c,base:h}=Kl(l.src),p=e.toLowerCase();return c.toLowerCase()===p||h.toLowerCase()===p});if(o)return{url:o.src,baseFontFamily:n,fontWeight:r};const u=Ga(e,r);return u?{url:u,baseFontFamily:n,fontWeight:r}:null}reconfigureAfterRestore(){super.reconfigureAfterRestore(),this.reconfigure(this.clipConfiguration.asset)}async reconfigure(e){try{if(await this.prepareFontForAsset(e,!0),this.texture?.destroy(),this.texture=null,this.lastRenderedTime=-1,this.textEngine){const r=this.buildCanvasPayload(e),{value:n}=this.textEngine.validate(r);this.validatedAsset=n}this.textEngine&&this.renderer&&this.renderFrameSafe(this.getPlaybackTime())}catch{}}async ensureFontRegistered(e){if(!this.textEngine)return null;const r=e.font?.family;if(!r)return null;const n=this.resolveFontWeight(e,Dr(r).fontWeight),i=this.resolveFont(r,n);return i?(await this.registerFont(i.baseFontFamily,n,{type:"url",path:i.url}),i.url):null}async load(){await super.load();const e=this.clipConfiguration.asset;try{if(!PO.safeParse(e).success){this.createFallbackText(e);return}const n=e.font?.family,i=n?Dr(n):void 0,a=this.buildCanvasPayload(e,i);this.textEngine=await cV({width:a.width,height:a.height,fps:Fr.PREVIEW_FPS});const{value:s}=this.textEngine.validate(a);this.validatedAsset=s,this.canvas=document.createElement("canvas"),this.canvas.width=a.width,this.canvas.height=a.height,this.renderer=this.textEngine.createRenderer(this.canvas),await this.prepareFontForAsset(e,!1),await this.renderFrame(0),this.configureKeyframes(),this.loadComplete=!0}catch{this.cleanupResources(),this.createFallbackText(e)}}cleanupResources(){if(this.textEngine){try{this.textEngine.destroy()}catch(e){console.warn("Error destroying text engine:",e)}this.textEngine=null}this.renderer=null,this.canvas=null,this.validatedAsset=null}async renderFrame(e){if(!(!this.textEngine||!this.renderer||!this.canvas||!this.validatedAsset))try{const r=this.getLength(),n=await this.textEngine.renderFrame(this.validatedAsset,e,r),i=this.canvas.getContext("2d");i&&i.clearRect(0,0,this.canvas.width,this.canvas.height),await this.renderer.render(n),this.texture?this.texture.source.update():this.texture=st.Texture.from(this.canvas),this.sprite?this.sprite.texture!==this.texture&&(this.sprite.texture=this.texture):(this.sprite=new st.Sprite(this.texture),this.contentContainer.addChild(this.sprite)),this.lastRenderedTime=e}catch(r){console.error("Failed to render rich text frame:",r)}}createFallbackText(e){const r=this.edit.getEdit(),n=this.clipConfiguration.width||r?.output?.size?.width||this.edit.size.width,i=this.clipConfiguration.height||r?.output?.size?.height||this.edit.size.height,a=new st.TextStyle({fontFamily:e.font?.family||"Arial",fontSize:e.font?.size||48,fill:e.font?.color||"#ffffff",align:e.align?.horizontal||"center",wordWrap:!0,wordWrapWidth:n}),s=new st.Text(e.text,a);switch(e.align?.horizontal){case"left":s.anchor.set(0,.5),s.x=0;break;case"right":s.anchor.set(1,.5),s.x=n;break;default:s.anchor.set(.5,.5),s.x=n/2}switch(e.align?.vertical){case"top":s.anchor.set(s.anchor.x,0),s.y=0;break;case"bottom":s.anchor.set(s.anchor.x,1),s.y=i;break;default:s.anchor.set(s.anchor.x,.5),s.y=i/2}this.contentContainer.addChild(s),this.configureKeyframes()}renderFrameSafe(e){if(this.isRendering){this.pendingRenderTime=e;return}this.isRendering=!0,this.pendingRenderTime=null,this.currentRender=this.renderFrame(e).catch(r=>console.error("Failed to render rich text frame:",r)).finally(()=>{if(this.isRendering=!1,this.currentRender=null,this.pendingRenderTime!==null&&this.pendingRenderTime!==e){const r=this.pendingRenderTime;this.pendingRenderTime=null,this.renderFrameSafe(r)}})}update(e,r){if(super.update(e,r),r===aa.SEEK_ELAPSED_MARKER&&(this.isRendering=!1,this.pendingRenderTime=null,this.lastRenderedTime=-1),!!this.isActive()&&this.loadComplete&&this.textEngine&&this.renderer&&!this.isRendering){const n=this.getPlaybackTime(),i=1/60;Math.abs(n-this.lastRenderedTime)>i&&this.renderFrameSafe(n)}}async prepareStaticRender(){!this.textEngine||!this.renderer||!this.loadComplete||await this.renderAtTime(this.getPlaybackTime())}async renderAtTime(e){for(;this.currentRender;)await this.currentRender;this.renderFrameSafe(e),this.currentRender&&await this.currentRender}dispose(){super.dispose(),this.loadComplete=!1,this.texture?.destroy(),this.texture=null,this.sprite&&(this.sprite.destroy(),this.sprite=null),this.canvas&&(this.canvas=null),this.textEngine&&(this.textEngine.destroy(),this.textEngine=null),this.renderer=null,this.validatedAsset=null}getSize(){const e=this.edit.getEdit();return{width:this.clipConfiguration.width||e?.output?.size?.width||this.edit.size.width,height:this.clipConfiguration.height||e?.output?.size?.height||this.edit.size.height}}getContentSize(){return{width:this.clipConfiguration.width||this.canvas?.width||this.edit.size.width,height:this.clipConfiguration.height||this.canvas?.height||this.edit.size.height}}getFitScale(){return 1}getContainerScale(){const e=this.getScale();return{x:e,y:e}}supportsEdgeResize(){return!0}onDimensionsChanged(){if(!this.textEngine||!this.renderer||!this.canvas)return;const e=this.clipConfiguration.asset,{width:r,height:n}=this.getSize();this.canvas.width=r,this.canvas.height=n,this.texture?.destroy(),this.texture=null,this.lastRenderedTime=-1;const i=this.buildCanvasPayload(e),{value:a}=this.textEngine.validate(i);this.validatedAsset=a,this.renderFrameSafe(this.getPlaybackTime())}updateTextContent(e){const r=this.clipConfiguration.asset;if(r.text=e,this.textEngine){const n=this.buildCanvasPayload(r),{value:i}=this.textEngine.validate(n);this.validatedAsset=i}this.texture?.destroy(),this.texture=null,this.lastRenderedTime=-1,this.textEngine&&this.renderer&&this.renderFrameSafe(this.getPlaybackTime())}}class AR extends Je{shape;shapeBackground;constructor(e,r){super(e,r,Ee.Shape),this.shape=null,this.shapeBackground=null}async load(){await super.load();const e=this.clipConfiguration.asset,r=new st.Graphics,n=e.width??this.edit.size.width,i=e.height??this.edit.size.height;r.fillStyle={color:"transparent"},r.rect(0,0,n,i),r.fill();const a=new st.Graphics;switch(e.shape){case"rectangle":{const s=e.rectangle,o=n/2-s.width/2,u=i/2-s.height/2;a.rect(o,u,s.width,s.height);break}case"circle":{const s=e.circle,o=n/2,u=i/2;a.circle(o,u,s.radius);break}case"line":{const s=e.line,o=n/2-s.length/2,u=i/2-s.thickness/2;a.rect(o,u,s.length,s.thickness);break}default:console.warn("Unsupported shape asset type.");break}if(a.fillStyle={color:e.fill?.color??"#ffffff",alpha:e.fill?.opacity??1},a.fill(),e.stroke){const s=new es.OutlineFilter({thickness:e.stroke.width,color:e.stroke.color});a.filters=[s]}this.shapeBackground=r,this.shape=a,this.contentContainer.addChild(r),r.addChild(a),this.configureKeyframes()}update(e,r){super.update(e,r)}dispose(){super.dispose(),this.shape?.destroy(),this.shape=null,this.shapeBackground?.destroy(),this.shapeBackground=null}getSize(){const e=this.clipConfiguration.asset;return{width:e.width??this.edit.size.width,height:e.height??this.edit.size.height}}getFitScale(){return 1}}class qi extends Je{static resvgInitialized=!1;static resvgInitPromise=null;texture=null;sprite=null;renderedWidth=0;renderedHeight=0;pendingRender=null;constructor(e,r){super(e,r,Ee.Svg)}static async initializeResvg(){if(!qi.resvgInitialized){if(qi.resvgInitPromise){await qi.resvgInitPromise;return}qi.resvgInitPromise=(async()=>{await jb(),qi.resvgInitialized=!0})(),await qi.resvgInitPromise}}async load(){await super.load();let e=this.clipConfiguration.asset;if(e.src){const r=this.edit.resolveMergeFields(e.src);r!==e.src&&(e={...e,src:r})}try{if(!WO.safeParse(e).success){this.createFallbackGraphic();return}await qi.initializeResvg(),await this.doRender(),this.configureKeyframes()}catch(r){console.error("Failed to render SVG asset:",r),this.createFallbackGraphic()}}async reloadAsset(){await this.rerenderAtCurrentDimensions()}createFallbackGraphic(){const e=this.clipConfiguration.width||this.edit.size.width,r=this.clipConfiguration.height||this.edit.size.height,n=fo(e,r);this.renderedWidth=e,this.renderedHeight=r,this.contentContainer.addChild(n),this.configureKeyframes()}update(e,r){super.update(e,r)}dispose(){super.dispose(),this.pendingRender=null,this.sprite&&(this.sprite.destroy(),this.sprite=null),this.texture&&(this.texture.destroy(!0),this.texture=null)}getSize(){return this.clipConfiguration.width&&this.clipConfiguration.height?{width:this.clipConfiguration.width,height:this.clipConfiguration.height}:{width:this.renderedWidth||this.edit.size.width,height:this.renderedHeight||this.edit.size.height}}getContentSize(){return{width:this.renderedWidth||this.edit.size.width,height:this.renderedHeight||this.edit.size.height}}getFitScale(){return 1}supportsEdgeResize(){return!0}onDimensionsChanged(){this.rerenderAtCurrentDimensions()}async rerenderAtCurrentDimensions(){this.pendingRender&&await this.pendingRender,this.sprite&&(this.contentContainer.removeChild(this.sprite),this.sprite.destroy(),this.sprite=null),this.texture&&(this.texture.destroy(!0),this.texture=null),this.pendingRender=this.doRender(),await this.pendingRender,this.pendingRender=null}async doRender(){const e=this.clipConfiguration.asset,r=this.clipConfiguration.width||this.edit.size.width,n=this.clipConfiguration.height||this.edit.size.height,i=await mD(e,{defaultWidth:r,defaultHeight:n});this.renderedWidth=i.width,this.renderedHeight=i.height;const a=new Blob([i.png],{type:"image/png"}),s=URL.createObjectURL(a),o=new Image;o.src=s,await new Promise((u,l)=>{o.onload=()=>u(),o.onerror=()=>l(new Error("Failed to load SVG image"))}),URL.revokeObjectURL(s),this.texture=st.Texture.from(o),this.sprite=new st.Sprite(this.texture),this.contentContainer.addChild(this.sprite),this.clipConfiguration.width&&this.clipConfiguration.height&&this.applyFixedDimensions()}}class go{static DEFAULT_BLINK_INTERVAL_MS=500;static DEFAULT_CURSOR_WIDTH_PX=2;static DEFAULT_CURSOR_COLOR=16777215;cursor=null;parent;textElement;clipConfig;textPosition=0;pixelX=0;pixelY=0;currentLine=0;isBlinking=!1;blinkInterval=null;blinkIntervalMs=500;width=2;color=16777215;isVisible=!0;constructor(e,r,n,i){this.parent=e,this.textElement=r,this.clipConfig=n,this.width=i?.width??go.DEFAULT_CURSOR_WIDTH_PX,this.color=i?.color??go.DEFAULT_CURSOR_COLOR,this.blinkIntervalMs=i?.blinkInterval??go.DEFAULT_BLINK_INTERVAL_MS,this.textPosition=0,this.isBlinking=!1,this.isVisible=!0,this.blinkInterval=null,this.createCursor()}updatePosition(e){if(!this.cursor||!this.textElement){console.warn("TextCursor: Cannot update position, cursor not initialized");return}this.textPosition=this.validateTextPosition(e),this.calculateAndApplyPixelPosition()}setPosition(e,r){if(!this.cursor){console.warn("TextCursor: Cannot set position, cursor not initialized");return}this.pixelX=e,this.pixelY=r,this.updateGraphicsPosition()}show(){this.setVisible(!0)}hide(){this.setVisible(!1)}setVisible(e){this.isVisible=e,this.cursor&&!this.isBlinking&&(this.cursor.visible=e)}startBlinking(){if(!this.cursor){console.warn("TextCursor: Cannot start blinking, cursor not initialized");return}this.isBlinking||this.startBlinkingAnimation()}stopBlinking(){this.stopBlinkingAnimation()}setBlinkInterval(e){this.blinkIntervalMs=e,this.isBlinking&&(this.stopBlinking(),this.startBlinking())}dispose(){if(this.stopBlinkingAnimation(),this.cursor&&this.parent)try{this.parent.removeChild(this.cursor)}catch(e){console.warn("TextCursor: Error removing cursor from parent:",e)}if(this.cursor)try{this.cursor.destroy()}catch(e){console.warn("TextCursor: Error destroying cursor graphics:",e)}finally{this.cursor=null}this.textPosition=0,this.pixelX=0,this.pixelY=0,this.currentLine=0,this.isVisible=!0}createCursor(){if(!this.textElement)return;this.cursor=new st.Graphics,this.cursor.fillStyle={color:this.color};const e=this.textElement.style.fontSize;this.cursor.rect(0,0,this.width,e),this.cursor.fill(),this.parent.addChild(this.cursor),this.cursor.visible=this.isVisible}validateTextPosition(e){return this.textElement?Math.max(0,Math.min(e,this.textElement.text.length)):0}calculateAndApplyPixelPosition(){this.calculatePixelPositionFromText(),this.updateGraphicsPosition()}calculatePixelPositionFromText(){if(!this.textElement)return;const{text:e}=this.textElement,r=this.textElement.style,n=e.substring(0,this.textPosition),i=n.match(/\n/g);this.currentLine=i?i.length:0;const a=e.split(`
398
398
  `),s=this.currentLine<a.length?a[this.currentLine]:"",o=n.lastIndexOf(`
399
- `),u=o===-1?this.textPosition:this.textPosition-o-1,l=s.substring(0,u);let c;l.length>0&&l.endsWith(" ")?c=this.measureText(`${l}x`,r)-this.measureText("x",r):c=this.measureText(l,r);const h=r.lineHeight;this.pixelY=this.currentLine*h;const g=this.clipConfig.asset.alignment?.horizontal??"center";let y=c;if(g!=="left"){const E=this.measureText(s,r),v=this.textElement.width;let C=0;g==="center"?C=(v-E)/2:g==="right"&&(C=v-E),y=C+c}this.pixelX=y}updateGraphicsPosition(){this.cursor&&this.cursor.position.set(this.pixelX,this.pixelY)}startBlinkingAnimation(){!this.cursor||this.isBlinking||(this.isBlinking=!0,this.blinkInterval=window.setInterval(()=>{this.cursor&&this.isBlinking&&(this.cursor.visible=!this.cursor.visible)},this.blinkIntervalMs))}stopBlinkingAnimation(){this.blinkInterval!==null&&(window.clearInterval(this.blinkInterval),this.blinkInterval=null),this.isBlinking=!1,this.cursor&&(this.cursor.visible=this.isVisible)}measureText(e,r){const n=new st.Text(e,r),{width:i}=n;return n.destroy(),i}isInitialized(){return this.cursor!==null}getState(){return{isInitialized:this.isInitialized(),isBlinking:this.isBlinking,isVisible:this.isVisible,textPosition:this.textPosition,pixelPosition:{x:this.pixelX,y:this.pixelY},currentLine:this.currentLine}}}class rc{static DEFAULT_FOCUS_DELAY_MS=50;hiddenInput=null;isFocused=!1;focusRetryCount=0;maxFocusRetries=3;focusDelay=rc.DEFAULT_FOCUS_DELAY_MS;eventHandlers={};abortController=null;textChangeCallback=null;lastSyncedText="";isComposing=!1;setupInput(e,r){this.focusDelay=r?.focusDelay??rc.DEFAULT_FOCUS_DELAY_MS,this.createHiddenTextarea(),this.hiddenInput&&(this.hiddenInput.value=e,this.lastSyncedText=e),this.setupEventListeners(),r?.autoFocus!==!1&&this.focusInput()}updateInputValue(e){this.hiddenInput&&(this.hiddenInput.value=e,this.lastSyncedText=e)}focusInput(){this.hiddenInput&&setTimeout(()=>{this.hiddenInput&&!this.isFocused&&(this.hiddenInput.focus(),setTimeout(()=>{!this.isFocused&&this.focusRetryCount<this.maxFocusRetries&&(this.focusRetryCount+=1,this.focusInput())},10))},this.focusDelay)}blurInput(){this.hiddenInput&&this.hiddenInput.blur()}setSelectionRange(e,r){if(!this.hiddenInput)return;const n=this.hiddenInput.value.length,i=Math.max(0,Math.min(e,n)),a=Math.max(i,Math.min(r,n));this.hiddenInput.setSelectionRange(i,a)}getCursorPosition(){return this.hiddenInput?.selectionStart||0}getValue(){return this.hiddenInput?.value||""}setTextInputHandler(e){this.textChangeCallback=e}setEventHandlers(e){this.eventHandlers={...this.eventHandlers,...e}}isFocusedInput(){return this.isFocused}dispose(){this.removeAllEventListeners(),this.hiddenInput&&this.hiddenInput.parentNode&&this.hiddenInput.parentNode.removeChild(this.hiddenInput),this.hiddenInput=null,this.isFocused=!1,this.focusRetryCount=0,this.textChangeCallback=null,this.eventHandlers={}}createHiddenTextarea(){this.hiddenInput=document.createElement("textarea");const e={position:"absolute",opacity:"0.01",pointerEvents:"none",zIndex:"18",left:"0px",top:"0px",width:"1px",height:"1px",border:"none",outline:"none",resize:"none",backgroundColor:"transparent"};Object.assign(this.hiddenInput.style,e),this.hiddenInput.tabIndex=0,document.body.appendChild(this.hiddenInput)}setupEventListeners(){if(!this.hiddenInput)return;this.abortController=new AbortController;const{signal:e}=this.abortController;this.hiddenInput.addEventListener("input",this.handleTextInput,{signal:e}),this.hiddenInput.addEventListener("keydown",this.handleKeyDown,{signal:e}),this.hiddenInput.addEventListener("compositionstart",this.handleCompositionStart,{signal:e}),this.hiddenInput.addEventListener("compositionend",this.handleCompositionEnd,{signal:e}),this.hiddenInput.addEventListener("focus",this.handleFocus,{signal:e}),this.hiddenInput.addEventListener("blur",this.handleBlur,{signal:e}),this.hiddenInput.addEventListener("paste",this.handlePaste,{signal:e})}removeAllEventListeners(){this.abortController?.abort(),this.abortController=null}handleTextInput=e=>{if(!this.hiddenInput||this.isComposing)return;const r=this.hiddenInput.value,n=this.hiddenInput.selectionStart||0;this.lastSyncedText=r,this.textChangeCallback?.(r,n)};handleKeyDown=e=>{if(document.activeElement!==this.hiddenInput)return;let r=!1;if((e.ctrlKey||e.metaKey)&&(r=this.handleKeyboardShortcuts(e),r)){e.preventDefault();return}if(e.key==="Tab"){const n=e.shiftKey?"backward":"forward";this.eventHandlers.onTabNavigation?.(n),e.preventDefault();return}switch(e.key){case"Escape":this.eventHandlers.onEscape?.(e),r=!0;break;case"Enter":r=!1;break;case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"ArrowDown":setTimeout(()=>{if(this.hiddenInput){const n=this.hiddenInput.value,i=this.hiddenInput.selectionStart||0;this.textChangeCallback?.(n,i)}},0),r=!1;break;case"Backspace":case"Delete":r=!1;break;default:r=this.eventHandlers.onCustomKey?.(e.key,e)||!1;break}r&&e.preventDefault()};handleKeyboardShortcuts(e){const{key:r}=e;switch(r.toLowerCase()){case"a":return this.selectAll(),!0;case"c":case"v":return!1;case"z":return this.eventHandlers.onCustomKey?.("undo",e),!0;case"y":return this.eventHandlers.onCustomKey?.("redo",e),!0;default:return!1}}handleCompositionStart=e=>{this.isComposing=!0};handleCompositionEnd=e=>{if(this.isComposing=!1,this.hiddenInput){const r=this.hiddenInput.value,n=this.hiddenInput.selectionStart||0;this.textChangeCallback?.(r,n)}};handleFocus=e=>{this.isFocused=!0,this.focusRetryCount=0,this.eventHandlers.onFocus?.(e)};handleBlur=e=>{this.isFocused=!1,this.eventHandlers.onBlur?.(e)};handlePaste=e=>{setTimeout(()=>{this.handleTextInput(e)},0)};selectAll(){this.hiddenInput&&this.hiddenInput.select()}}class Bi{static DOUBLE_CLICK_THRESHOLD_MS=300;static EDITING_BG_PADDING_PX=5;static EDITING_BG_ALPHA=.2;static CLICK_HANDLER_DELAY_MS=100;parent;targetText;clipConfig;isEditing=!1;lastClickTime=0;editingContainer=null;editableText=null;textCursor=null;textInputHandler=null;outsideClickHandler=null;constructor(e,r,n){this.parent=e,this.targetText=r,this.clipConfig=n,this.parent.getContainer().eventMode="static",this.parent.getContainer().on("click",this.checkForDoubleClick)}dispose(){this.parent.getContainer().off("click",this.checkForDoubleClick),this.stopEditing(),this.outsideClickHandler&&(window.removeEventListener("click",this.outsideClickHandler),this.outsideClickHandler=null)}startEditing(){if(this.isEditing||!this.targetText)return;const e=structuredClone(this.clipConfig);this.targetText.visible=!1,this.createEditingEnvironment(),this.setupOutsideClickHandler(e),this.isEditing=!0}stopEditing(e=!1,r){if(!this.isEditing)return;let n="";this.editableText&&(n=this.editableText.text),this.editingContainer&&(this.parent.getContainer().removeChild(this.editingContainer),this.editingContainer.destroy(),this.editingContainer=null),this.editableText=null,this.textCursor&&(this.textCursor.dispose(),this.textCursor=null),this.textInputHandler&&(this.textInputHandler.dispose(),this.textInputHandler=null),this.targetText.visible=!0,e&&r&&n!==""&&this.parent.updateTextContent(n,r),this.isEditing=!1}checkForDoubleClick=e=>{const r=Date.now();r-this.lastClickTime<Bi.DOUBLE_CLICK_THRESHOLD_MS&&this.startEditing(),this.lastClickTime=r};setupOutsideClickHandler(e){this.outsideClickHandler=r=>{const i=this.parent.getContainer().getBounds(),a=r.clientX,s=r.clientY;(a<i.x||a>i.x+i.width||s<i.y||s>i.y+i.height)&&(this.stopEditing(!0,e),this.outsideClickHandler&&(window.removeEventListener("click",this.outsideClickHandler),this.outsideClickHandler=null))},setTimeout(()=>{this.outsideClickHandler&&window.addEventListener("click",this.outsideClickHandler)},Bi.CLICK_HANDLER_DELAY_MS)}createEditingEnvironment(){this.setupEditingContainer(),this.editingContainer&&this.editableText&&(this.textCursor=new go(this.editingContainer,this.editableText,this.clipConfig),this.textCursor.updatePosition(this.targetText.text.length),this.textCursor.startBlinking()),this.setupTextInputHandler(),this.updateTextAlignment()}setupEditingContainer(){this.editingContainer=new st.Container,this.parent.getContainer().addChild(this.editingContainer);const e=new st.Graphics;e.fillStyle={color:0,alpha:Bi.EDITING_BG_ALPHA},e.rect(-5,-5,this.targetText.width+2*Bi.EDITING_BG_PADDING_PX,this.targetText.height+2*Bi.EDITING_BG_PADDING_PX),e.fill(),this.editingContainer.addChild(e),this.editableText=new st.Text(this.targetText.text,this.targetText.style),this.editableText.eventMode="static",this.editableText.cursor="text",this.editingContainer.addChild(this.editableText)}setupTextInputHandler(){this.textInputHandler=new rc,this.textInputHandler.setTextInputHandler((e,r)=>{this.editableText&&(this.editableText.text=e,this.updateTextAlignment()),this.textCursor?.updatePosition(r)}),this.textInputHandler.setEventHandlers({onEscape:e=>this.stopEditing(!1),onTabNavigation:e=>this.stopEditing(!0)}),this.textInputHandler.setupInput(this.targetText.text,{autoFocus:!0})}updateTextAlignment(){if(!this.editableText||!this.editingContainer)return;const e=this.getContainerDimensions(),r=this.getAlignmentSettings(),n=this.calculateHorizontalPosition({width:this.editableText.width},e,r.horizontal),i=this.calculateVerticalPosition({height:this.editableText.height},e,r.vertical);if(this.editingContainer.position.set(n,i),this.editingContainer.children.length>0){const a=this.editingContainer.getChildAt(0);a instanceof st.Graphics&&(a.clear(),a.fillStyle={color:0,alpha:Bi.EDITING_BG_ALPHA},a.rect(-5,-5,this.editableText.width+2*Bi.EDITING_BG_PADDING_PX,this.editableText.height+2*Bi.EDITING_BG_PADDING_PX),a.fill())}}calculateHorizontalPosition(e,r,n="center"){switch(n){case"center":return r.width/2-e.width/2;case"right":return r.width-e.width;case"left":default:return 0}}calculateVerticalPosition(e,r,n="center"){switch(n){case"center":return r.height/2-e.height/2;case"bottom":return r.height-e.height;case"top":default:return 0}}getContainerDimensions(){const e=this.clipConfig.asset;return{width:e.width??this.parent.getSize().width,height:e.height??this.parent.getSize().height}}getAlignmentSettings(){const e=this.clipConfig.asset;return{horizontal:e.alignment?.horizontal??"center",vertical:e.alignment?.vertical??"center"}}}class Ha extends Je{static loadedFonts=new Set;background=null;text=null;textEditor=null;constructor(e,r){super(e,r,Ee.Text)}async load(){await super.load();const e=this.clipConfiguration.asset,r=e.font?.family??"Open Sans";if(await this.loadFont(r),this.background=new st.Graphics,this.drawBackground(),this.text=new st.Text({text:e.text??"",style:this.createTextStyle(e)}),this.positionText(e),e.stroke?.width&&e.stroke.width>0&&e.stroke.color){const n=new es.OutlineFilter({thickness:e.stroke.width,color:e.stroke.color});this.text.filters=[n]}this.contentContainer.addChild(this.background),this.contentContainer.addChild(this.text),this.configureKeyframes(),this.textEditor=new Bi(this,this.text,this.clipConfiguration)}update(e,r){super.update(e,r)}reconfigureAfterRestore(){super.reconfigureAfterRestore(),this.reconfigure()}async reconfigure(){const e=this.clipConfiguration.asset,r=e.font?.family??"Open Sans";if(await this.loadFont(r),this.drawBackground(),this.text){if(this.text.text=e.text??"",this.text.style=this.createTextStyle(e),e.stroke?.width&&e.stroke.width>0&&e.stroke.color){const n=new es.OutlineFilter({thickness:e.stroke.width,color:e.stroke.color});this.text.filters=[n]}else this.text.filters=[];this.positionText(e)}}dispose(){super.dispose(),this.background?.destroy(),this.background=null,this.text?.destroy(),this.text=null,this.textEditor?.dispose(),this.textEditor=null}getSize(){const e=this.clipConfiguration.asset;return{width:this.clipConfiguration.width??e.width??this.edit.size.width,height:this.clipConfiguration.height??e.height??this.edit.size.height}}getFitScale(){return 1}getContainerScale(){const e=this.getScale();return{x:e,y:e}}supportsEdgeResize(){return!0}onDimensionsChanged(){if(this.drawBackground(),this.text){const e=this.clipConfiguration.asset;this.text.style.wordWrapWidth=this.getSize().width,this.positionText(e)}}applyFixedDimensions(){}createTextStyle(e){const r=e.font?.family??"Open Sans",{baseFontFamily:n,fontWeight:i}=Dr(r),{width:a}=this.getSize();return new st.TextStyle({fontFamily:n,fontSize:e.font?.size??32,fill:e.font?.color??"#ffffff",fontWeight:i.toString(),wordWrap:!0,wordWrapWidth:a,lineHeight:(e.font?.lineHeight??1)*(e.font?.size??32),align:e.alignment?.horizontal??"center"})}positionText(e){if(!this.text)return;const r=e.alignment?.horizontal??"center",n=e.alignment?.vertical??"center",{width:i,height:a}=this.getSize();let s=i/2-this.text.width/2,o=a/2-this.text.height/2;r==="left"?s=0:r==="right"&&(s=i-this.text.width),n==="top"?o=0:n==="bottom"&&(o=a-this.text.height),this.text.position.set(s,o)}drawBackground(){const e=this.clipConfiguration.asset;if(!this.background||!e.background||!e.background.color)return;const{width:r,height:n}=this.getSize();this.background.clear(),this.background.fillStyle={color:e.background.color,alpha:e.background.opacity??1},this.background.rect(0,0,r,n),this.background.fill()}updateTextContent(e,r){this.edit.updateTextContent(this,e,r)}async loadFont(e){const{baseFontFamily:r,fontWeight:n}=Dr(e),i=`${r}-${n}`;if(Ha.loadedFonts.has(i))return;const a=Ga(e);if(a){const s=new FontFace(r,`url(${a})`,{weight:n.toString()});await s.load(),document.fonts.add(s),Ha.loadedFonts.add(i)}}static resetFontCache(){Ha.loadedFonts.clear()}}class U2 extends Je{aiOverlay=null;lastPrompt="";constructor(e,r){super(e,r,Ee.TextToImage)}async load(){await super.load();const{width:e,height:r}=this.getSize(),n=this.edit.getResolvedEdit()?.timeline.tracks.flatMap(u=>u.clips)??[],i=Wd(n,this.clipId??""),{asset:a}=this.clipConfiguration,s=an(a)&&a.prompt||"",o=an(a)?a.type:"text-to-image";this.aiOverlay=new w2({mode:"panel",icon:"image",width:e,height:r,assetNumber:i??void 0,prompt:s,assetType:o}),this.contentContainer.addChild(this.aiOverlay.getContainer()),this.configureKeyframes()}update(e,r){super.update(e,r);const{width:n,height:i}=this.getSize();this.aiOverlay?.resize(n,i);const{asset:a}=this.clipConfiguration,s=an(a)&&a.prompt||"";s!==this.lastPrompt&&(this.aiOverlay?.updatePrompt(s),this.lastPrompt=s)}getSize(){const e=this.clipConfiguration.asset;return{width:this.clipConfiguration.width??e.width??this.edit.size.width,height:this.clipConfiguration.height??e.height??this.edit.size.height}}dispose(){this.aiOverlay?.dispose(),this.aiOverlay=null,super.dispose()}}class j2 extends Je{constructor(e,r){super(e,r,Ee.TextToSpeech)}async load(){await super.load(),this.configureKeyframes()}update(e,r){super.update(e,r),this.getContainer().alpha=0}getSize(){return{width:0,height:0}}}class ER extends Je{texture;sprite;placeholder;isPlaying;volumeKeyframeBuilder;syncTimer;activeSyncTimer;skipVideoUpdate;constructor(e,r){super(e,r,Ee.Video),this.texture=null,this.sprite=null,this.placeholder=null,this.isPlaying=!1;const n=this.clipConfiguration.asset;this.volumeKeyframeBuilder=new Pn(n.volume??1,this.getLength()),this.syncTimer=0,this.activeSyncTimer=0,this.skipVideoUpdate=!1}async load(){await super.load();try{await this.loadVideo(),this.configureKeyframes()}catch(e){console.warn(`[VideoPlayer.load] FAILED clipId=${this.clipId}:`,e),this.createFallbackGraphic()}}createFallbackGraphic(){const{width:e,height:r}=this.getDisplaySize();this.clearPlaceholder(),this.placeholder=fo(e,r),this.contentContainer.addChild(this.placeholder),this.configureKeyframes()}update(e,r){if(super.update(e,r),this.skipVideoUpdate)return;const{trim:n=0}=this.clipConfiguration.asset;if(this.syncTimer+=r,!this.texture)return;const i=this.getPlaybackTime(),a=this.edit.isPlaying&&this.isActive();a&&(this.isPlaying||(this.isPlaying=!0,this.activeSyncTimer=0,this.texture.source.resource.volume=this.getVolume(),this.texture.source.resource.currentTime=i+n,this.texture.source.resource.play().catch(console.error)),this.texture.source.resource.volume!==this.getVolume()&&(this.texture.source.resource.volume=this.getVolume()),this.activeSyncTimer+=r,this.activeSyncTimer>1e3&&(this.activeSyncTimer=0,Math.abs(this.texture.source.resource.currentTime-n-i)>.3&&(this.texture.source.resource.currentTime=i+n))),!a&&this.isPlaying&&(this.isPlaying=!1,this.texture.source.resource.pause());const s=this.syncTimer>100;!this.edit.isPlaying&&this.isActive()&&s&&(this.syncTimer=0,this.texture.source.resource.currentTime=i+n)}dispose(){this.disposeVideo(),this.clearPlaceholder(),super.dispose()}getSize(){return this.clipConfiguration.width&&this.clipConfiguration.height?{width:this.clipConfiguration.width,height:this.clipConfiguration.height}:this.sprite?{width:this.sprite.width,height:this.sprite.height}:this.placeholder?this.getDisplaySize():{width:0,height:0}}supportsEdgeResize(){return!0}async reloadAsset(){this.skipVideoUpdate=!0,this.isPlaying=!1,this.syncTimer=0,this.activeSyncTimer=0;try{this.disposeVideo(),this.clearPlaceholder(),await this.loadVideo()}catch(e){console.warn(`[VideoPlayer.reloadAsset] FAILED clipId=${this.clipId}:`,e),this.createFallbackGraphic()}finally{this.skipVideoUpdate=!1}}reconfigureAfterRestore(){super.reconfigureAfterRestore();const e=this.clipConfiguration.asset;this.volumeKeyframeBuilder=new Pn(e.volume??1,this.getLength())}async loadVideo(){const e=this.clipConfiguration.asset,{src:r}=e;if(!r)throw new Error("Video asset has no src to load.");if(r.endsWith(".mov"))throw new Error(`Video source '${r}' is not supported. .mov files cannot be played in the browser. Please convert to .webm or .mp4 first.`);const n=`${r}${r.includes("?")?"&":"?"}x-cors=1`,i={src:n,data:{autoPlay:!1,muted:!1}},a=await this.edit.assetLoader.loadVideoUnique(n,i);if(!a||!(a.source instanceof st.VideoSource))throw new Error(`Invalid video source '${r}'.`);this.clearPlaceholder(),a.source.alphaMode="no-premultiply-alpha",this.texture=this.createCroppedTexture(a);const s=this.texture.source.resource;s instanceof HTMLVideoElement&&s.readyState<2&&await new Promise(o=>{const u=()=>{s.removeEventListener("loadeddata",u),o()};s.addEventListener("loadeddata",u),s.readyState>=2&&o()}),this.sprite=new st.Sprite(this.texture),this.contentContainer.addChild(this.sprite),this.texture.source.resource.volume=this.getVolume()}disposeVideo(){this.texture?.source?.resource&&(this.texture.source.resource.pause(),this.texture.source.resource.src="",this.texture.source.resource.load()),this.sprite&&(this.contentContainer.removeChild(this.sprite),this.sprite.destroy(),this.sprite=null),this.texture&&(this.texture.destroy(!0),this.texture=null)}clearPlaceholder(){this.placeholder&&(this.contentContainer.removeChild(this.placeholder),this.placeholder.destroy(),this.placeholder=null)}getVolume(){return this.volumeKeyframeBuilder.getValue(this.getPlaybackTime())}getCurrentDrift(){if(!this.texture?.source?.resource)return 0;const{trim:e=0}=this.clipConfiguration.asset,r=this.texture.source.resource.currentTime,n=this.getPlaybackTime();return Math.abs(r-e-n)}createCroppedTexture(e){const r=this.clipConfiguration.asset;if(!r.crop)return e;const n=e.width,i=e.height;if(n<=0||i<=0)return e;const a=Math.floor((r.crop?.left??0)*n),s=Math.floor((r.crop?.right??0)*n),o=Math.floor((r.crop?.top??0)*i),u=Math.floor((r.crop?.bottom??0)*i),l=a,c=o,h=n-a-s,p=i-o-u,g=new st.Rectangle(l,c,h,p);return new st.Texture({source:e.source,frame:g})}}class G2{static create(e,r){if(!r.asset?.type)throw new Error("Invalid clip configuration: missing asset type");const n=Mo(r.asset);switch(r.asset.type){case"text":return new Ha(e,r);case"rich-text":return new Fr(e,r);case"shape":return new AR(e,r);case"html":return new mV(e,r);case"html5":return new Xl(e,r);case"image":return n?new U2(e,r):new kV(e,r);case"video":return n?new _2(e,r):new ER(e,r);case"audio":return n?new j2(e,r):new a_(e,r);case"luma":return new IV(e,r);case"caption":return new Gl(e,r);case"rich-caption":return new mo(e,r);case"svg":return new qi(e,r);case"text-to-image":return new U2(e,r);case"image-to-video":return new _2(e,r);case"text-to-speech":return new j2(e,r);default:throw new Error(`Unsupported asset type: ${r.asset.type}`)}}static cleanup(){Ha.resetFontCache()}}function od(t){try{return JSON.parse(t)}catch{return null}}function W2(t){const e=t.trim();if(!e)return null;const r=od(e);if(r!==null)return r;const n=e.replace(/^,+\s*/,"").replace(/\s*,+$/,"");if(n!==e&&n.length>0){const i=od(n);if(i!==null)return i}if(n.length>0){const i=od(`[${n}]`);if(i!==null)return i}return null}function kR(t){const e=W2(t);return!e||typeof e!="object"||Array.isArray(e)?null:e}function SR(t){const e=kR(t);if(!e)return null;const r=Wa.safeParse(e);return r.success?r.data:null}function DR(t){const e=W2(t);if(e===null)return null;const r=Array.isArray(e)?e:[e];if(r.length===0)return null;const n=[];for(const i of r){const a=ad.safeParse(i);if(!a.success)return null;n.push(a.data)}return n}function FR(t){const e=structuredClone(t);return delete e.id,JSON.stringify(e,null,2)}const ue=()=>({status:"success"}),re=t=>({status:"noop",message:t});class ud{name="addTrack";trackIdx;preparedTrack;constructor(e,r){this.trackIdx=e,r&&(this.preparedTrack={...r,clips:r.clips.map(n=>{const i=structuredClone(n);return i.id||(i.id=crypto.randomUUID()),i})})}execute(e){if(!e)throw new Error("AddTrackCommand.execute: context is required");const r=e.getDocument();if(!r)throw new Error("AddTrackCommand.execute: document is required");if(r.addTrack(this.trackIdx,this.preparedTrack),e.resolve(),e.updateDuration(),e.emitEvent(Ft.TrackAdded,{trackIndex:this.trackIdx,totalTracks:r.getTrackCount()}),this.preparedTrack)for(let n=0;n<this.preparedTrack.clips.length;n+=1)e.emitEvent(Ft.ClipAdded,{trackIndex:this.trackIdx,clipIndex:n});return ue()}undo(e){if(!e)throw new Error("AddTrackCommand.undo: context is required");const r=e.getDocument();if(!r)throw new Error("AddTrackCommand.undo: document is required");const i=r.getTrack(this.trackIdx)?.clips.length??0;r.removeTrack(this.trackIdx),e.resolve(),e.updateDuration();for(let a=i-1;a>=0;a-=1)e.emitEvent(Ft.ClipDeleted,{trackIndex:this.trackIdx,clipIndex:a});return e.emitEvent(Ft.TrackRemoved,{trackIndex:this.trackIdx}),ue()}dispose(){}}function H2(t,e,r,n){const i=Math.max(t,r),a=Math.min(e,n);return Math.max(0,a-i)}function IR(t){const{preferredTrackIndex:e,preferredTrackClips:r,desiredStart:n,desiredLength:i}=t;if(r&&r.length>0){const a=n+i;if(r.some(o=>H2(n,a,o.start,o.start+o.length)>0))return{type:"insert-track",insertionIndex:0}}return{type:"place",trackIndex:e}}async function ld(t,e,r){const n=typeof r.start=="number"?r.start:0,i=typeof r.length=="number"?r.length:0,s=t.getTracks()[e],o=IR({preferredTrackIndex:e,preferredTrackClips:s?.map(u=>({start:u.getStart(),length:u.getEnd()-u.getStart()})),desiredStart:n,desiredLength:i});if(o.type==="insert-track"){Wa.parse(r),await t.executeEditCommand(new ud(o.insertionIndex,{clips:[r]}));return}await t.addClip(o.trackIndex,r)}const Y2="[shotstack-studio:svg-clipboard]",NR=["script","foreignObject"],BR=/^on/i,TR=/^\s*javascript:/i;function cd(t){if(typeof DOMParser>"u"||typeof XMLSerializer>"u")throw new Error(`${Y2} sanitiseSvg requires DOMParser/XMLSerializer; call this only in a browser context`);const e=new DOMParser().parseFromString(t,"image/svg+xml");if(e.querySelector("parsererror"))return console.warn(`${Y2} sanitiseSvg: parser error, returning input unchanged`),t;for(const r of NR)e.querySelectorAll(r).forEach(n=>n.remove());return e.querySelectorAll("*").forEach(r=>{for(const n of Array.from(r.attributes))(BR.test(n.name)||(n.name==="href"||n.name==="xlink:href")&&TR.test(n.value))&&r.removeAttribute(n.name)}),new XMLSerializer().serializeToString(e)}function PR(t){if(typeof DOMParser>"u")return{};const e=new DOMParser().parseFromString(t,"image/svg+xml");if(e.querySelector("parsererror"))return{};const r=e.querySelector("svg");if(!r)return{};const n=o=>{if(!o)return;const u=parseFloat(o);return Number.isFinite(u)&&u>0?u:void 0},i=n(r.getAttribute("width")),a=n(r.getAttribute("height"));if(i!==void 0&&a!==void 0)return{width:i,height:a};const s=r.getAttribute("viewBox");if(s){const o=s.trim().split(/[\s,]+/).map(Number);if(o.length===4&&o.every(Number.isFinite)){const[,,u,l]=o;return{width:i??(u>0?u:void 0),height:a??(l>0?l:void 0)}}}return{width:i,height:a}}function fd(t,e,r,n){const i=new Map,a=`alias://${r}`;for(let s=0;s<t.getTrackCount();s+=1){const o=t.getClipsInTrack(s);for(let u=0;u<o.length;u+=1)if(!n?.has(`${s}:${u}`)){const l=o[u],c=l.id,h=e.timeline.tracks[s]?.clips[u];let p=!1;const g={};if(l.start===a&&(g.start=l.start,p=!0),l.length===a&&(g.length=l.length,p=!0),p&&c&&h){i.set(c,g);const y={};g.start&&(y.start=h.start),g.length&&(y.length=h.length),t.updateClip(s,u,y)}}}return i}function MR(t,e,r,n){const i=new Map;for(const a of r){const s=fd(t,e,a,n);for(const[o,u]of s){const l=i.get(o);l?i.set(o,{...l,...u}):i.set(o,u)}}return i}function hd(t,e){for(const[r,n]of e){const i=t.getClipById(r);if(i){const a={};n.start&&(a.start=n.start),n.length&&(a.length=n.length),t.updateClip(i.trackIndex,i.clipIndex,a)}}}function zR(t){const e=[];for(const r of t){const{alias:n}=r;n&&e.push(n)}return e}class VR{constructor(e,r){this.trackIdx=e,this.clip=r}name="addClip";addedClipId;convertedReferences;execute(e){if(!e)throw new Error("AddClipCommand.execute: context is required");const r=e.getDocument();if(!r)throw new Error("AddClipCommand.execute: no document");const n=e.documentAddClip(this.trackIdx,this.clip);this.addedClipId=n.id,this.convertedReferences&&this.convertedReferences.size>0&&hd(r,this.convertedReferences),e.resolve(),e.updateDuration();const s=e.getDocumentTrack(this.trackIdx)?.clips?.findIndex(o=>o.id===this.addedClipId)??-1;return e.emitEvent(Ft.ClipAdded,{trackIndex:this.trackIdx,clipIndex:s}),ue()}undo(e){if(!e)throw new Error("AddClipCommand.undo: context is required");if(!this.addedClipId)return re("No clip ID stored");const r=e.getDocument();if(!r)throw new Error("AddClipCommand.undo: no document");const i=e.getDocumentTrack(this.trackIdx)?.clips,a=i?.findIndex(u=>u.id===this.addedClipId)??-1;if(a===-1)return re(`Clip ${this.addedClipId} not found in track ${this.trackIdx}`);const s=i?.[a]?.alias;if(s){const u=new Set([`${this.trackIdx}:${a}`]);this.convertedReferences=fd(r,e.getEditState(),s,u)}const o=e.getSelectedClip();return o&&o.clipId===this.addedClipId&&(e.setSelectedClip(null),e.emitEvent(Ft.SelectionCleared)),e.documentRemoveClip(this.trackIdx,a),e.resolve(),e.updateDuration(),e.emitEvent(Ft.ClipDeleted,{trackIndex:this.trackIdx,clipIndex:a}),ue()}dispose(){this.addedClipId=void 0,this.convertedReferences=void 0}}class OR{name="addTracks";subCommands;executedCount=0;constructor(e,r){this.subCommands=[];for(let n=r.length-1;n>=0;n-=1)this.subCommands.push(new ud(e,r[n]))}execute(e){if(!e)throw new Error("AddTracksCommand.execute: context is required");try{for(const r of this.subCommands)r.execute(e),this.executedCount+=1}catch(r){for(let n=this.executedCount-1;n>=0;n-=1)try{this.subCommands[n].undo(e)}catch(i){throw new Error(`AddTracksCommand: execute failed at sub-command ${this.executedCount} (${r instanceof Error?r.message:String(r)}) and rollback failed at sub-command ${n} (${i instanceof Error?i.message:String(i)}). State may be corrupted.`)}throw this.executedCount=0,r}return ue()}undo(e){if(!e)throw new Error("AddTracksCommand.undo: context is required");if(this.executedCount===0)return re("Command was not executed");for(let r=this.executedCount-1;r>=0;r-=1)this.subCommands[r].undo(e);return this.executedCount=0,ue()}dispose(){for(const e of this.subCommands)e.dispose?.()}}class dd{constructor(e){this.trackIdx=e}name="deleteTrack";deletedClips=[];convertedReferences;execute(e){if(!e)throw new Error("DeleteTrackCommand.execute: context is required");const r=e.getDocument();if(!r)throw new Error("DeleteTrackCommand: no document");if(r.getTrackCount()<=1)return re("Cannot delete the last track");const n=r.getTrack(this.trackIdx);n&&(this.deletedClips=n.clips.map(a=>structuredClone(a)));const i=zR(this.deletedClips);if(i.length>0){const a=new Set;for(let s=0;s<this.deletedClips.length;s+=1)a.add(`${this.trackIdx}:${s}`);this.convertedReferences=MR(r,e.getEditState(),i,a)}return r.removeTrack(this.trackIdx),e.resolve(),e.updateDuration(),e.emitEvent(Ft.TrackRemoved,{trackIndex:this.trackIdx}),ue()}undo(e){if(!e)throw new Error("DeleteTrackCommand.undo: context is required");const r=e.getDocument();if(!r)throw new Error("DeleteTrackCommand.undo: no document");r.addTrack(this.trackIdx);for(let n=0;n<this.deletedClips.length;n+=1)r.addClip(this.trackIdx,this.deletedClips[n],n);return this.convertedReferences&&this.convertedReferences.size>0&&hd(r,this.convertedReferences),e.resolve(),e.updateDuration(),e.emitEvent(Ft.TrackAdded,{trackIndex:this.trackIdx,totalTracks:r.getTrackCount()}),ue()}dispose(){this.deletedClips=[],this.convertedReferences=void 0}}class pd{constructor(e,r){this.trackIdx=e,this.clipIdx=r}name="deleteClip";deletedClipConfig;deletedClipId;deleteTrackCommand;trackWasDeleted=!1;storedBindings;convertedReferences;execute(e){if(!e)throw new Error("DeleteClipCommand.execute: context is required");const r=e.getDocument();if(!r)throw new Error("DeleteClipCommand: no document");const n=r.getClip(this.trackIdx,this.clipIdx);if(!n)return re(`No clip at track ${this.trackIdx}, index ${this.clipIdx}`);if(r.getClipCount()<=1)return re("Cannot delete the last clip");if(this.deletedClipConfig=structuredClone(n),this.deletedClipId=n.id,this.deletedClipId){const o=e.getClipBindings(this.deletedClipId);this.storedBindings=o?new Map(o):void 0,r.clearClipBindings(this.deletedClipId)}const i=n.alias;if(i){const o=new Set([`${this.trackIdx}:${this.clipIdx}`]);this.convertedReferences=fd(r,e.getEditState(),i,o)}e.clearClipError(this.trackIdx,this.clipIdx);const a=e.getSelectedClip();a&&this.deletedClipId&&a.clipId===this.deletedClipId&&(e.setSelectedClip(null),e.emitEvent(Ft.SelectionCleared)),e.documentRemoveClip(this.trackIdx,this.clipIdx);const s=r.getTrack(this.trackIdx);return s&&s.clips.length===0&&(this.deleteTrackCommand=new dd(this.trackIdx),this.deleteTrackCommand.execute(e).status==="success"&&(this.trackWasDeleted=!0)),e.resolve(),e.updateDuration(),e.emitEvent(Ft.ClipDeleted,{trackIndex:this.trackIdx,clipIndex:this.clipIdx}),ue()}undo(e){if(!e)throw new Error("DeleteClipCommand.undo: context is required");if(!this.deletedClipConfig)return re("No deleted clip config");const r=e.getDocument();if(!r)throw new Error("DeleteClipCommand.undo: no document");this.trackWasDeleted&&r.addTrack(this.trackIdx);const i=e.documentAddClip(this.trackIdx,this.deletedClipConfig,this.clipIdx).id;return i&&this.storedBindings&&this.storedBindings.size>0&&r.setClipBindingsForClip(i,this.storedBindings),this.convertedReferences&&this.convertedReferences.size>0&&hd(r,this.convertedReferences),e.resolve(),e.updateDuration(),this.trackWasDeleted&&(e.emitEvent(Ft.TrackAdded,{trackIndex:this.trackIdx,totalTracks:r.getTrackCount()}),this.trackWasDeleted=!1),e.emitEvent(Ft.ClipRestored,{trackIndex:this.trackIdx,clipIndex:this.clipIdx}),ue()}dispose(){this.deletedClipConfig=void 0,this.deletedClipId=void 0,this.deleteTrackCommand=void 0,this.storedBindings=void 0,this.convertedReferences=void 0}}function Ye(t){const{id:e,...r}=t;return r}class RR{constructor(e,r,n,i){this.fromTrackIndex=e,this.fromClipIndex=r,this.toTrackIndex=n,this.newStart=i,this.effectiveToTrackIndex=n}name="moveClip";clipId=null;originalStart;previousDocClip;deleteTrackCommand;sourceTrackWasDeleted=!1;effectiveToTrackIndex;newClipIndex=0;execute(e){if(!e)throw new Error("MoveClipCommand.execute: context is required");const r=e.getDocument();if(!r)throw new Error("MoveClipCommand.execute: document is required");const n=e.getClipAt(this.fromTrackIndex,this.fromClipIndex);if(!n)return re(`Invalid clip at ${this.fromTrackIndex}/${this.fromClipIndex}`);const i=r.getClip(this.fromTrackIndex,this.fromClipIndex);if(!i)return re(`Document clip not found at ${this.fromTrackIndex}/${this.fromClipIndex}`);this.clipId=n.clipId,this.previousDocClip=structuredClone(i),this.originalStart=i.start,this.effectiveToTrackIndex=this.toTrackIndex,r.moveClip(this.fromTrackIndex,this.fromClipIndex,this.toTrackIndex,{start:this.newStart}),this.fromTrackIndex!==this.toTrackIndex&&r.getClipsInTrack(this.fromTrackIndex).length===0&&(this.deleteTrackCommand=new dd(this.fromTrackIndex),this.deleteTrackCommand.execute(e).status==="success"&&(this.sourceTrackWasDeleted=!0,this.toTrackIndex>this.fromTrackIndex&&(this.effectiveToTrackIndex=this.toTrackIndex-1))),e.resolve();const a=this.clipId?r.getClipById(this.clipId):null;this.newClipIndex=a?.clipIndex??0,e.updateDuration(),this.fromTrackIndex!==this.toTrackIndex&&!this.sourceTrackWasDeleted&&e.propagateTimingChanges(this.fromTrackIndex,this.fromClipIndex-1),e.propagateTimingChanges(this.effectiveToTrackIndex,this.newClipIndex);const s=r.getClip(this.effectiveToTrackIndex,this.newClipIndex);if(!this.previousDocClip||!s)throw new Error(`MoveClipCommand: document clip not found after mutation at ${this.effectiveToTrackIndex}/${this.newClipIndex}`);e.emitEvent(Ft.ClipUpdated,{previous:{clip:Ye(this.previousDocClip),trackIndex:this.fromTrackIndex,clipIndex:this.fromClipIndex},current:{clip:Ye(s),trackIndex:this.effectiveToTrackIndex,clipIndex:this.newClipIndex}});const o=this.clipId?e.getPlayerByClipId(this.clipId):n;return o&&(e.setSelectedClip(o),e.emitEvent(Ft.ClipSelected,{clip:Ye(s),trackIndex:this.effectiveToTrackIndex,clipIndex:this.newClipIndex})),ue()}async undo(e){if(!e)throw new Error("MoveClipCommand.undo: context is required");if(!this.clipId||this.originalStart===void 0)return re("No clip state stored");const r=e.getDocument();if(!r)throw new Error("MoveClipCommand.undo: document is required");this.sourceTrackWasDeleted&&this.deleteTrackCommand&&(this.deleteTrackCommand.undo(e),this.sourceTrackWasDeleted=!1,this.toTrackIndex>this.fromTrackIndex&&(this.effectiveToTrackIndex=this.toTrackIndex));const n=r.getClipById(this.clipId);if(!n)return re(`Clip ${this.clipId} not found in document`);const i=structuredClone(r.getClip(n.trackIndex,n.clipIndex));r.moveClip(n.trackIndex,n.clipIndex,this.fromTrackIndex,{start:this.originalStart}),e.resolve(),e.updateDuration(),this.fromTrackIndex!==this.effectiveToTrackIndex&&e.propagateTimingChanges(this.effectiveToTrackIndex,this.newClipIndex-1),e.propagateTimingChanges(this.fromTrackIndex,this.fromClipIndex);const a=r.getClip(this.fromTrackIndex,this.fromClipIndex);this.previousDocClip&&e.emitEvent(Ft.ClipUpdated,{previous:{clip:Ye(i??this.previousDocClip),trackIndex:this.effectiveToTrackIndex,clipIndex:this.newClipIndex},current:{clip:Ye(a??this.previousDocClip),trackIndex:this.fromTrackIndex,clipIndex:this.fromClipIndex}});const s=e.getPlayerByClipId(this.clipId);return s&&a&&(e.setSelectedClip(s),e.emitEvent(Ft.ClipSelected,{clip:Ye(a),trackIndex:this.fromTrackIndex,clipIndex:this.fromClipIndex})),this.effectiveToTrackIndex=this.toTrackIndex,ue()}dispose(){this.clipId=null,this.deleteTrackCommand=void 0}}class $R{constructor(e){this.aspectRatio=e}name="setOutputAspectRatio";previousAspectRatio;execute(e){if(!e)throw new Error("SetOutputAspectRatioCommand requires context");return this.previousAspectRatio=e.getOutputAspectRatio(),e.setOutputAspectRatio(this.aspectRatio),ue()}undo(e){if(!e)throw new Error("SetOutputAspectRatioCommand requires context");return this.previousAspectRatio===void 0?re("No previous aspect ratio stored"):(e.setOutputAspectRatio(this.previousAspectRatio),ue())}dispose(){this.previousAspectRatio=void 0}}class LR{constructor(e){this.destinations=e}name="setOutputDestinations";previousDestinations;execute(e){if(!e)throw new Error("SetOutputDestinationsCommand requires context");return this.previousDestinations=e.getOutputDestinations(),e.setOutputDestinations(this.destinations),ue()}undo(e){if(!e)throw new Error("SetOutputDestinationsCommand requires context");return this.previousDestinations===void 0?re("No previous destinations stored"):(e.setOutputDestinations(this.previousDestinations),ue())}dispose(){this.previousDestinations=void 0}}class ZR{constructor(e){this.format=e}name="setOutputFormat";previousFormat;execute(e){if(!e)throw new Error("SetOutputFormatCommand requires context");return this.previousFormat=e.getOutputFormat(),e.setOutputFormat(this.format),ue()}undo(e){if(!e)throw new Error("SetOutputFormatCommand requires context");return this.previousFormat===void 0?re("No previous format stored"):(e.setOutputFormat(this.previousFormat),ue())}dispose(){this.previousFormat=void 0}}class UR{constructor(e){this.fps=e}name="setOutputFps";previousFps;execute(e){if(!e)throw new Error("SetOutputFpsCommand requires context");return this.previousFps=e.getOutputFps(),e.setOutputFps(this.fps),ue()}undo(e){if(!e)throw new Error("SetOutputFpsCommand requires context");return this.previousFps===void 0?re("No previous FPS stored"):(e.setOutputFps(this.previousFps),ue())}dispose(){this.previousFps=void 0}}class jR{constructor(e){this.resolution=e}name="setOutputResolution";previousResolution;execute(e){if(!e)throw new Error("SetOutputResolutionCommand requires context");return this.previousResolution=e.getOutputResolution(),e.setOutputResolution(this.resolution),ue()}undo(e){if(!e)throw new Error("SetOutputResolutionCommand requires context");return this.previousResolution===void 0?re("No previous resolution stored"):(e.setOutputResolution(this.previousResolution),ue())}dispose(){this.previousResolution=void 0}}class GR{constructor(e,r){this.width=e,this.height=r}name="setOutputSize";previousSize;execute(e){if(!e)throw new Error("SetOutputSizeCommand requires context");return this.previousSize=e.getOutputSize(),e.setOutputSize(this.width,this.height),ue()}undo(e){if(!e)throw new Error("SetOutputSizeCommand requires context");return this.previousSize?(e.setOutputSize(this.previousSize.width,this.previousSize.height),ue()):re("No previous size stored")}dispose(){this.previousSize=void 0}}class WR{constructor(e){this.color=e}name="setTimelineBackground";previousColor;execute(e){if(!e)throw new Error("SetTimelineBackgroundCommand requires context");return this.previousColor=e.getTimelineBackground(),e.setTimelineBackground(this.color),ue()}undo(e){if(!e)throw new Error("SetTimelineBackgroundCommand requires context");return this.previousColor===void 0?re("No previous color stored"):(e.setTimelineBackground(this.previousColor),ue())}dispose(){this.previousColor=void 0}}class md{constructor(e,r,n){this.initialClipConfig=e,this.finalClipConfig=r,this.trackIndex=n?.trackIndex??-1,this.clipIndex=n?.clipIndex??-1}name="setUpdatedClip";clipId=null;storedInitialConfig=null;storedFinalConfig=null;storedInitialBindings=new Map;previousDocClip=null;trackIndex;clipIndex;async execute(e){if(!e)throw new Error("SetUpdatedClipCommand.execute: context is required");const r=e.getDocument();if(!r)throw new Error("SetUpdatedClipCommand.execute: document is required");const n=e.getClipAt(this.trackIndex,this.clipIndex);if(!n)return re(`Invalid clip at ${this.trackIndex}/${this.clipIndex}`);this.clipId=n.clipId,this.storedInitialConfig||(this.storedInitialConfig=this.initialClipConfig?structuredClone(this.initialClipConfig):structuredClone(n.clipConfiguration)),this.storedFinalConfig||(this.storedFinalConfig=this.finalClipConfig?structuredClone(this.finalClipConfig):structuredClone(n.clipConfiguration));const i=e.getDocumentClip(this.trackIndex>=0?this.trackIndex:n.layer-1,this.clipIndex>=0?this.clipIndex:e.getTracks()[n.layer-1]?.indexOf(n)??-1);this.previousDocClip=i?structuredClone(i):null;const a=this.clipId?e.getClipBindings(this.clipId):void 0;this.storedInitialBindings=a?new Map(a):new Map;const s=this.trackIndex>=0?this.trackIndex:n.layer-1,o=this.clipIndex>=0?this.clipIndex:e.getTracks()[s]?.indexOf(n)??-1,u=this.storedFinalConfig??this.finalClipConfig;u&&r.replaceClipProperties(s,o,u),e.resolve();const l=e.getClipAt(s,o);for(const[E,{resolvedValue:v}]of this.storedInitialBindings)(l?Hl(l.clipConfiguration,E):void 0)!==v&&this.clipId&&e.removeClipBinding(this.clipId,E);const c=this.storedInitialConfig??this.initialClipConfig,h=this.storedFinalConfig??this.finalClipConfig,p=c?.asset,g=h?.asset;if(p?.src!==g?.src){const E=e.getClipAt(s,o);E&&E.getTimingIntent().length==="auto"&&await e.resolveClipAutoLength(E)}const y=e.getDocumentClip(s,o);if(!this.previousDocClip||!y)throw new Error(`SetUpdatedClipCommand: document clip not found after mutation at ${s}/${o}`);return e.emitEvent(Ft.ClipUpdated,{previous:{clip:Ye(this.previousDocClip),trackIndex:s,clipIndex:o},current:{clip:Ye(y),trackIndex:s,clipIndex:o}}),ue()}async undo(e){if(!e)throw new Error("SetUpdatedClipCommand.undo: context is required");const r=this.storedInitialConfig??this.initialClipConfig;if(!r)return re("No stored initial config");const n=e.getDocument();if(!n)throw new Error("SetUpdatedClipCommand.undo: document is required");const i=this.clipId?e.getPlayerByClipId(this.clipId):e.getClipAt(this.trackIndex,this.clipIndex);if(!i)return re("Clip not found for undo");const a=this.trackIndex>=0?this.trackIndex:i.layer-1,s=this.clipIndex>=0?this.clipIndex:e.getTracks()[a]?.indexOf(i)??-1,o=structuredClone(e.getDocumentClip(a,s));if(n.replaceClipProperties(a,s,r),e.resolve(),this.clipId){const p=new Map(this.storedInitialBindings);p.size>0?e.getDocument()?.setClipBindingsForClip(this.clipId,p):e.getDocument()?.clearClipBindings(this.clipId)}const l=(this.storedFinalConfig??this.finalClipConfig)?.asset,c=r?.asset;if(l?.src!==c?.src){const p=e.getClipAt(a,s);p&&p.getTimingIntent().length==="auto"&&await e.resolveClipAutoLength(p)}const h=e.getDocumentClip(a,s);if(!o||!h)throw new Error(`SetUpdatedClipCommand: document clip not found after undo at ${a}/${s}`);return e.emitEvent(Ft.ClipUpdated,{previous:{clip:Ye(o),trackIndex:a,clipIndex:s},current:{clip:Ye(h),trackIndex:a,clipIndex:s}}),ue()}dispose(){this.clipId=null,this.storedInitialConfig=null,this.storedFinalConfig=null,this.storedInitialBindings.clear(),this.previousDocClip=null}}class HR{constructor(e,r,n){this.trackIndex=e,this.clipIndex=r,this.params=n}name="UpdateClipTiming";originalStart;originalLength;clipId;execute(e){if(!e)throw new Error("UpdateClipTimingCommand.execute: context is required");const r=e.getDocument();if(!r)throw new Error("UpdateClipTimingCommand.execute: document is required");const i=e.getDocumentTrack(this.trackIndex)?.clips[this.clipIndex];if(!i)return re(`Invalid clip at ${this.trackIndex}/${this.clipIndex}`);const a=e.getClipAt(this.trackIndex,this.clipIndex);if(!a)return re(`Player not found at ${this.trackIndex}/${this.clipIndex}`);this.originalStart=i.start,this.originalLength=i.length,this.clipId=a.clipId??void 0;const s=structuredClone(i),o={};this.params.start!==void 0&&(o.start=this.params.start),this.params.length!==void 0&&(o.length=this.params.length),r.updateClip(this.trackIndex,this.clipIndex,o),this.clipId?e.resolveClip(this.clipId):e.resolve(),o.length==="auto"&&e.resolveClipAutoLength(a).then(()=>{e.updateDuration(),e.propagateTimingChanges(this.trackIndex,this.clipIndex)}),e.updateDuration();const u=e.getDocumentClip(this.trackIndex,this.clipIndex);if(!u)throw new Error(`UpdateClipTimingCommand: document clip not found after mutation at ${this.trackIndex}/${this.clipIndex}`);return e.emitEvent(Ft.ClipUpdated,{previous:{trackIndex:this.trackIndex,clipIndex:this.clipIndex,clip:Ye(s)},current:{trackIndex:this.trackIndex,clipIndex:this.clipIndex,clip:Ye(u)}}),e.propagateTimingChanges(this.trackIndex,this.clipIndex),ue()}undo(e){if(!e)throw new Error("UpdateClipTimingCommand.undo: context is required");if(this.originalStart===void 0&&this.originalLength===void 0)throw new Error("UpdateClipTimingCommand.undo: no original values");const r=e.getDocument();if(!r)throw new Error("UpdateClipTimingCommand.undo: document is required");const n=e.getClipAt(this.trackIndex,this.clipIndex);if(!n)throw new Error("UpdateClipTimingCommand.undo: player not found");const i=structuredClone(e.getDocumentClip(this.trackIndex,this.clipIndex)),a={};this.originalStart!==void 0&&(a.start=this.originalStart),this.originalLength!==void 0&&(a.length=this.originalLength),r.updateClip(this.trackIndex,this.clipIndex,a),this.clipId?e.resolveClip(this.clipId):e.resolve(),this.originalLength==="auto"&&e.resolveClipAutoLength(n).then(()=>{e.updateDuration(),e.propagateTimingChanges(this.trackIndex,this.clipIndex)}),e.updateDuration();const s=e.getDocumentClip(this.trackIndex,this.clipIndex);if(!i||!s)throw new Error(`UpdateClipTimingCommand: document clip not found after undo at ${this.trackIndex}/${this.clipIndex}`);return e.emitEvent(Ft.ClipUpdated,{previous:{trackIndex:this.trackIndex,clipIndex:this.clipIndex,clip:Ye(i)},current:{trackIndex:this.trackIndex,clipIndex:this.clipIndex,clip:Ye(s)}}),e.propagateTimingChanges(this.trackIndex,this.clipIndex),ue()}}class YR{constructor(e,r,n){this.trackIndex=e,this.clipIndex=r,this.newText=n}name="updateTextContent";clipId=null;previousText="";previousDocClip;execute(e){if(!e)throw new Error("UpdateTextContentCommand.execute: context is required");const r=e.getDocument();if(!r)throw new Error("UpdateTextContentCommand.execute: document is required");const n=e.getClipAt(this.trackIndex,this.clipIndex);if(!n)return re(`Invalid clip at ${this.trackIndex}/${this.clipIndex}`);const i=r.getClip(this.trackIndex,this.clipIndex);if(!i)return re("Clip not found in document");this.clipId=n.clipId,this.previousDocClip=structuredClone(i);const a=i.asset;this.previousText=a&&"text"in a?a.text??"":"";const o={...i.asset,text:this.newText};r.updateClip(this.trackIndex,this.clipIndex,{asset:o}),this.clipId?e.resolveClip(this.clipId):e.resolve();const u=e.getDocumentClip(this.trackIndex,this.clipIndex);if(!this.previousDocClip||!u)throw new Error(`UpdateTextContentCommand: document clip not found after mutation at ${this.trackIndex}/${this.clipIndex}`);return e.emitEvent(Ft.ClipUpdated,{previous:{clip:Ye(this.previousDocClip),trackIndex:this.trackIndex,clipIndex:this.clipIndex},current:{clip:Ye(u),trackIndex:this.trackIndex,clipIndex:this.clipIndex}}),ue()}undo(e){if(!e)throw new Error("UpdateTextContentCommand.undo: context is required");const r=e.getDocument();if(!r)throw new Error("UpdateTextContentCommand.undo: document is required");const n=structuredClone(e.getDocumentClip(this.trackIndex,this.clipIndex)),i=r.getClip(this.trackIndex,this.clipIndex);if(!i)return re("Clip not found for undo");const s={...i.asset,text:this.previousText};r.updateClip(this.trackIndex,this.clipIndex,{asset:s}),this.clipId?e.resolveClip(this.clipId):e.resolve();const o=e.getDocumentClip(this.trackIndex,this.clipIndex);if(this.previousDocClip){if(!n||!o)throw new Error(`UpdateTextContentCommand: document clip not found after undo at ${this.trackIndex}/${this.clipIndex}`);e.emitEvent(Ft.ClipUpdated,{previous:{clip:Ye(n),trackIndex:this.trackIndex,clipIndex:this.clipIndex},current:{clip:Ye(o),trackIndex:this.trackIndex,clipIndex:this.clipIndex}})}return ue()}dispose(){this.clipId=null,this.previousDocClip=void 0}}class q2{events;constructor(){this.events={}}on(e,r){return this.events[e]||(this.events[e]=new Set),this.events[e].add(r),()=>this.off(e,r)}once(e,r){const n=i=>{this.off(e,n),r(i)};return this.on(e,n)}off(e,r){this.events[e]&&(this.events[e].delete(r),!(this.events[e].size>0)&&delete this.events[e])}clear(e){delete this.events[e]}emit(e,...r){if(!this.events[e])return;const n=r[0];for(const i of this.events[e])i(n)}}const qR=.5,XR=1/30;class KR{constructor(e,r,n){this.getCanvas=e,this.getTracks=r,this.events=n,this.onClipChangedBound=()=>this.rebuildLumaMasksIfNeeded(),this.onPlayerLoadedBound=i=>this.onPlayerLoaded(i)}activeLumaMasks=[];pendingMaskCleanup=[];onClipChangedBound;onPlayerLoadedBound;initialize(){this.setupEventListeners()}update(){this.updateLumaMasks(),this.processPendingMaskCleanup()}getActiveMaskCount(){return this.activeLumaMasks.length}dispose(){this.removeEventListeners();for(const e of this.activeLumaMasks){const r=e.contentClip.getLumaWrapper();r&&!r.destroyed&&(r.mask=null),e.tempContainer.destroy({children:!0}),e.maskSprite.destroy({texture:!0})}this.activeLumaMasks=[];for(const e of this.pendingMaskCleanup)try{e.maskSprite.parent?.removeChild(e.maskSprite),e.maskSprite.destroy({texture:!0})}catch{}this.pendingMaskCleanup=[]}cleanupForPlayer(e){const r=this.activeLumaMasks.findIndex(i=>i.lumaPlayer===e);if(r===-1)return;const n=this.activeLumaMasks[r];n.contentClip&&(n.contentClip.getLumaWrapper().mask=null),n.maskSprite.parent?.removeChild(n.maskSprite),n.tempContainer.destroy({children:!0}),this.activeLumaMasks.splice(r,1),this.pendingMaskCleanup.push({maskSprite:n.maskSprite,frameCount:0})}onPlayerLoaded(e){const{player:r,trackIndex:n}=e;if(r.playerType!==Ee.Luma){this.rebuildLumaMasksIfNeeded();return}const i=r,a=i.getSprite();if(!a?.texture){console.warn("PlayerLoaded fired for luma player before texture ready");return}const s=this.getTracks();if(n>=s.length)return;const u=s[n].filter(c=>c.playerType!==Ee.Luma);u.length===0||this.activeLumaMasks.find(c=>c.lumaPlayer===i)||(this.setupLumaMask(i,a.texture,u[0]),i.getContainer().parent?.removeChild(i.getContainer()))}setupLumaMask(e,r,n){const i=this.getCanvas();if(!i)return;const{renderer:a}=i.application,{width:s,height:o}=n.getSize();if(s<=0||o<=0)return;const u=new st.Container,l=new st.Sprite(r);l.width=s,l.height=o;const c=new st.ColorMatrixFilter;c.negative(!1),l.filters=[c],u.addChild(l);const h=st.RenderTexture.create({width:s,height:o,resolution:qR});a.render({container:u,target:h,clear:!0});const p=new st.Sprite(h);n.getContainer().addChild(p);const g=n.getLumaWrapper();g.mask=p,this.activeLumaMasks.push({lumaPlayer:e,maskSprite:p,maskTexture:h,tempContainer:u,contentClip:n,lastVideoTime:-1})}updateLumaMasks(){const e=this.getCanvas();if(!e)return;const{renderer:r}=e.application;for(const n of this.activeLumaMasks)if(n.lumaPlayer.isVideoSource()){const i=n.lumaPlayer.getVideoCurrentTime();Math.abs(i-n.lastVideoTime)>=XR&&(n.lastVideoTime=i,r.render({container:n.tempContainer,target:n.maskTexture,clear:!0}))}}setupEventListeners(){this.events.on(Fe.PlayerLoaded,this.onPlayerLoadedBound),this.events.on(Ft.ClipUpdated,this.onClipChangedBound),this.events.on(Fe.PlayerMovedBetweenTracks,this.onClipChangedBound)}removeEventListeners(){this.events.off(Fe.PlayerLoaded,this.onPlayerLoadedBound),this.events.off(Ft.ClipUpdated,this.onClipChangedBound),this.events.off(Fe.PlayerMovedBetweenTracks,this.onClipChangedBound)}processPendingMaskCleanup(){for(let e=this.pendingMaskCleanup.length-1;e>=0;e-=1){const r=this.pendingMaskCleanup[e];if(r.frameCount+=1,r.frameCount>=3){try{r.maskSprite.parent?.removeChild(r.maskSprite),r.maskSprite.destroy({texture:!0})}catch{}this.pendingMaskCleanup.splice(e,1)}}}rebuildLumaMasksIfNeeded(){if(!this.getCanvas())return;const r=this.getTracks();for(let n=0;n<r.length;n+=1){const i=r[n],a=i.find(u=>u.playerType===Ee.Luma),s=i.filter(u=>u.playerType!==Ee.Luma);a&&a.getContainer().parent?.removeChild(a.getContainer());const o=a&&this.activeLumaMasks.find(u=>u.lumaPlayer===a);if(a&&!o&&s.length>0){const u=a.getSprite();u?.texture&&this.setupLumaMask(a,u.texture,s[0])}}}}function JR(t){return{find:t.name,replace:t.defaultValue}}function QR(t){const e=typeof t.replace=="string"?t.replace:JSON.stringify(t.replace);return{name:t.find,defaultValue:e}}const t$=/\{\{\s*([A-Z_0-9]+)\s*\}\}/gi,gd=/\{\{\s*[A-Z_0-9]+\s*\}\}/i;class e${fields=new Map;events;constructor(e){this.events=e}register(e,r){this.fields.set(e.name,e),r?.silent||this.events.emit(Ft.MergeFieldChanged,{fields:this.getAll()})}remove(e,r){const n=this.fields.delete(e);return n&&!r?.silent&&this.events.emit(Ft.MergeFieldChanged,{fields:this.getAll()}),n}get(e){return this.fields.get(e)}getAll(){return Array.from(this.fields.values())}clear(){this.fields.clear()}resolve(e){return!e||this.fields.size===0?e:e.replace(t$,(r,n)=>this.fields.get(n)?.defaultValue??r)}resolveToNumber(e){if(!this.isMergeFieldTemplate(e))return null;const r=this.resolve(e),n=parseFloat(r);return Number.isFinite(n)?n:null}hasUnresolved(e){if(!e)return!1;const r=this.resolve(e);return gd.test(r)}extractFieldName(e){if(!e)return null;const r=gd.exec(e);if(!r)return null;const n=r[0].match(/\{\{\s*([A-Z_0-9]+)\s*\}\}/i);return n?n[1]:null}isMergeFieldTemplate(e){return gd.test(e)}createTemplate(e){return`{{ ${e} }}`}toSerializedArray(){return this.getAll().map(JR)}loadFromSerialized(e){this.fields.clear();for(const r of e){const n=QR(r);this.fields.set(r.find,n)}}generateUniqueName(e){const r=new Set(this.fields.keys());let n=1;for(;r.has(`${e}_${n}`);)n+=1;return`${e}_${n}`}}const r$={preview:{width:512,height:288},mobile:{width:640,height:360},sd:{width:1024,height:576},hd:{width:1280,height:720},1080:{width:1920,height:1080},"4k":{width:3840,height:2160}};function ic(t,e="16:9"){const r=r$[t];if(!r)throw new Error(`Unknown resolution: ${t}`);switch(e){case"16:9":return{width:r.width,height:r.height};case"9:16":return{width:r.height,height:r.width};case"1:1":return{width:r.height,height:r.height};case"4:5":return{width:Math.round(r.height*4/5),height:r.height};case"4:3":return{width:Math.round(r.height*4/3),height:r.height};default:throw new Error(`Unknown aspectRatio: ${e}`)}}class i${constructor(e){this.edit=e}setSize(e,r){gR.parse({width:e,height:r});const n={width:e,height:r};this.edit.size=n;const i=this.edit.getResolvedEdit();i&&(i.output={...i.output,size:n},delete i.output.resolution,delete i.output.aspectRatio);const a=this.edit.getDocument();a?.setSize(n),a?.clearResolution(),a?.clearAspectRatio(),this.edit.updateCanvasForSize(),this.edit.getInternalEvents().emit(Ft.OutputResized,n)}getSize(){return this.edit.size}setFps(e){const r=vR.parse(e),n=this.edit.getResolvedEdit();n&&(n.output={...n.output,fps:r}),this.edit.getDocument()?.setFps(r),this.edit.getInternalEvents().emit(Ft.OutputFpsChanged,{fps:e})}getFps(){return this.edit.getResolvedEdit()?.output?.fps??30}setFormat(e){const r=yR.parse(e),n=this.edit.getResolvedEdit();n&&(n.output={...n.output,format:r}),this.edit.getDocument()?.setFormat(r),this.edit.getInternalEvents().emit(Ft.OutputFormatChanged,{format:r})}getFormat(){return this.edit.getResolvedEdit()?.output?.format??"mp4"}setDestinations(e){const r=mR.array().parse(e),n=this.edit.getResolvedEdit();n&&(n.output={...n.output,destinations:r}),this.edit.getInternalEvents().emit(Ft.OutputDestinationsChanged,{destinations:r})}getDestinations(){return this.edit.getResolvedEdit()?.output?.destinations??[]}setResolution(e){const r=bR.parse(e),n=this.edit.getResolvedEdit(),i=n?.output?.aspectRatio??"16:9",a=ic(r,i);this.edit.size=a,n&&(n.output={...n.output,resolution:r},delete n.output.size);const s=this.edit.getDocument();s?.setResolution(r),s?.clearSize(),this.edit.updateCanvasForSize(),this.edit.getInternalEvents().emit(Ft.OutputResolutionChanged,{resolution:r}),this.edit.getInternalEvents().emit(Ft.OutputResized,{width:a.width,height:a.height})}getResolution(){return this.edit.getResolvedEdit()?.output?.resolution}setAspectRatio(e){const r=wR.parse(e),n=this.edit.getResolvedEdit(),i=n?.output?.resolution;if(!i){n&&(n.output={...n.output,aspectRatio:r}),this.edit.getDocument()?.setAspectRatio(r),this.edit.getInternalEvents().emit(Ft.OutputAspectRatioChanged,{aspectRatio:r});return}const a=ic(i,r);this.edit.size=a,n&&(n.output={...n.output,aspectRatio:r},delete n.output.size);const s=this.edit.getDocument();s?.setAspectRatio(r),s?.clearSize(),this.edit.updateCanvasForSize(),this.edit.getInternalEvents().emit(Ft.OutputAspectRatioChanged,{aspectRatio:r}),this.edit.getInternalEvents().emit(Ft.OutputResized,{width:a.width,height:a.height})}getAspectRatio(){return this.edit.getResolvedEdit()?.output?.aspectRatio}}const n$="[shotstack-studio:system-clipboard]";async function a$(t){if(!(typeof navigator>"u"||!navigator.clipboard||typeof navigator.clipboard.writeText!="function"))try{await navigator.clipboard.writeText(t)}catch(e){console.warn(`${n$} writeText failed`,e)}}class s${constructor(e){this.edit=e}selectedClip=null;copiedClip=null;selectClip(e,r){const n=this.edit.getPlayerClip(e,r);if(n){this.selectedClip=n;const i=this.edit.getDocumentClip(e,r);i&&this.edit.getInternalEvents().emit(Ft.ClipSelected,{clip:Ye(i),trackIndex:e,clipIndex:r})}}selectPlayer(e){const r=this.findClipIndices(e);r&&this.selectClip(r.trackIndex,r.clipIndex)}clearSelection(){this.selectedClip=null,this.edit.getInternalEvents().emit(Ft.SelectionCleared)}isClipSelected(e,r){if(!this.selectedClip)return!1;const n=this.selectedClip.layer-1,a=this.edit.getTracks()[n];if(!a)return!1;const s=a.indexOf(this.selectedClip);return e===n&&r===s}isPlayerSelected(e){return this.edit.isInExportMode()?!1:this.selectedClip===e}getSelectedClipInfo(){if(!this.selectedClip)return null;const e=this.selectedClip.layer-1,n=this.edit.getTracks()[e];if(!n)return null;const i=n.indexOf(this.selectedClip);return{trackIndex:e,clipIndex:i,player:this.selectedClip}}getSelectedClip(){return this.selectedClip}setSelectedClip(e){this.selectedClip=e}copyClip(e,r){const n=this.edit.getResolvedClip(e,r);n&&(this.copiedClip={trackIndex:e,clipConfiguration:structuredClone(n)},this.edit.getInternalEvents().emit(Ft.ClipCopied,{trackIndex:e,clipIndex:r}),a$(FR(n)).catch(()=>{}))}pasteClip(){if(!this.copiedClip)return Promise.resolve();const e=structuredClone(this.copiedClip.clipConfiguration);return e.start=this.edit.playbackTime,delete e.id,ld(this.edit,this.copiedClip.trackIndex,e)}hasCopiedClip(){return this.copiedClip!==null}findClipIndices(e){const r=this.edit.getTracks();for(let n=0;n<r.length;n+=1){const i=r[n].indexOf(e);if(i!==-1)return{trackIndex:n,clipIndex:i}}return null}}const o$=new Set(["video","audio","text-to-speech"]),u$={video:"Video",audio:"Audio","text-to-speech":"TTS"},l$=/^\{\{\s*([A-Za-z0-9_]+)\s*\}\}$/,c$=/^source_[\da-f]{8}$/i;function f$(t){return!!t&&!c$.test(t)}function h$(t){try{const{pathname:e}=new URL(t),r=e.split("/").pop();return r?decodeURIComponent(r.replace(/\.[^.]+$/,"")):null}catch{return null}}function d$(t,e){return t.length<=e?t:`${t.slice(0,e).trimEnd()}...`}function p$(t,e,r,n){const i=u$[e]??e,{alias:a}=t,s=t.asset,o=`Track ${r+1} · Clip ${n+1}`;if(f$(a))return`${a} · ${i} · ${o}`;if(e==="text-to-speech"){const h=s.text??"",p=s.voice??"",g=d$(h,25),y=p?` (${p})`:"";return`"${g}"${y} · ${o}`}const u=s.src??"",l=l$.exec(u);if(l)return`${l[1]} · ${i} · ${o}`;const c=h$(u);return c?`${c} · ${i} · ${o}`:`${i} · ${o}`}function m$(t){const e=t.getDocument();if(!e)return[];const r=[],n=e.getTrackCount();for(let i=n-1;i>=0;i-=1)e.getClipsInTrack(i).forEach((s,o)=>{const u=s.asset?.type;if(!u||!o$.has(u))return;const l=t.getClipId(i,o);l&&r.push({trackIndex:i,clipIndex:o,clipId:l,assetType:u,displayLabel:p$(s,u,i,o),currentAlias:s.alias})});return r}function g$(t){return`source_${t.slice(-8)}`}async function y$(t,e,r){const i=t.getDocumentClip(e,r)?.alias;if(i)return i;const a=t.getClipId(e,r);if(!a)throw new Error(`No clip ID at track ${e}, clip ${r}`);const s=g$(a);return await t.updateClip(e,r,{alias:s}),s}const v$=3;function b$(t){return new Promise(e=>{const r=document.createElement("video");r.preload="metadata",r.crossOrigin="anonymous",r.onloadedmetadata=()=>e(r.duration),r.onerror=()=>e(null),r.src=t})}async function X2(t){const e=t;if(["video","audio","luma"].includes(e.type)&&e.src){const r=await b$(e.src);if(r!==null&&!Number.isNaN(r)){const n=e.trim??0;return r-n}}return v$}function K2(t,e,r){return e===0?0:r[t][e-1].getEnd()}function J2(t,e){return Math.max(0,e-t)}function yd(t){let e=0;for(const r of t)for(const n of r)n.getTimingIntent().length!=="end"&&(e=Math.max(e,n.getEnd()));return e}class w${constructor(e){this.edit=e}cachedTimelineEnd=0;getTimelineEnd(){return this.cachedTimelineEnd}invalidateTimelineEndCache(){this.cachedTimelineEnd=0}async resolveAllTiming(){const e=this.edit.getTracks(),r=this.edit.getResolvedEdit();for(let a=0;a<e.length;a+=1){const s=e[a],o=r.timeline.tracks[a];for(let u=0;u<s.length;u+=1){const l=s[u],c=o?.clips[u];if(c){const h=l.getTimingIntent(),p=c.start;let g=c.length;h.length==="auto"&&(g=await X2(l.clipConfiguration.asset)),l.setResolvedTiming({start:p,length:g}),c.start=p,c.length=g}}}const n=yd(e);this.cachedTimelineEnd=n;const i=this.getEndLengthClips();for(const a of i){const s=a.getResolvedTiming(),o=J2(s.start,n);a.setResolvedTiming({start:s.start,length:o});const u=a.layer-1,l=e[u]?.indexOf(a)??-1,c=r.timeline.tracks[u]?.clips[l];c&&(c.start=s.start,c.length=o)}for(const a of i)a.reconfigureAfterRestore()}propagateTimingChanges(e,r){const n=this.edit.getTracks(),i=n[e];if(!i)return;for(let s=Math.max(0,r);s<i.length;s+=1){const o=i[s];if(o.getTimingIntent().start==="auto"){const u=K2(e,s,n);o.setResolvedTiming({start:u,length:o.getLength()}),o.reconfigureAfterRestore()}}this.propagateAliasChanges();const a=yd(n);if(a!==this.cachedTimelineEnd){this.cachedTimelineEnd=a;const s=this.getEndLengthClips();for(const o of s){const u=J2(o.getStart(),a),l=o.getLength();Math.abs(u-l)>.001&&(o.setResolvedTiming({start:o.getStart(),length:u}),o.reconfigureAfterRestore())}}this.edit.updateTotalDuration(),this.edit.getInternalEvents().emit(Ft.TimelineUpdated,{current:this.edit.getEdit()})}propagateAliasChanges(){const e=this.edit.getTracks(),r=this.edit.getResolvedEdit();for(let n=0;n<e.length;n+=1){const i=e[n],a=r.timeline.tracks[n];for(let s=0;s<i.length;s+=1){const o=i[s],u=a?.clips[s],l=o.getTimingIntent(),c=br(l.start),h=br(l.length);if((c||h)&&u){const p=o.getStart(),g=o.getLength(),y=Math.abs(u.start-p)>.001,E=Math.abs(u.length-g)>.001;(y||E)&&(o.setResolvedTiming({start:u.start,length:u.length}),o.reconfigureAfterRestore())}}}}getEndLengthClips(){const e=this.edit.getTracks(),r=[];for(const n of e)for(const i of n)i.getTimingIntent().length==="end"&&r.push(i);return r}}class _$ extends q2{registry;constructor(){super(),this.registry={}}}class nc{static VIDEO_EXTENSIONS=[".mp4",".m4v",".webm",".ogg",".ogv"];static VIDEO_MIME={".mp4":"video/mp4",".m4v":"video/mp4",".webm":"video/webm",".ogg":"video/ogg",".ogv":"video/ogg"};loadTracker=new _$;refCounts=new Map;incrementRef(e){this.refCounts.set(e,(this.refCounts.get(e)??0)+1)}decrementRef(e){const r=this.refCounts.get(e)??0;return r<=1?(this.refCounts.delete(e),!0):(this.refCounts.set(e,r-1),!1)}constructor(){st.Assets.setPreferences({crossOrigin:"anonymous"})}async rejectAsset(e){console.warn(`[AssetLoader.rejectAsset] Rejected invalid asset "${e}".`),await this.cleanupFailedLoad(e)}async load(e,r){this.updateAssetLoadMetadata(e,"pending",0),this.incrementRef(e);try{const i=await this.shouldUseSafariVideoLoader(r)?await this.loadVideoForSafari(e,r):await st.Assets.load(r,a=>{this.updateAssetLoadMetadata(e,"loading",a)});return i==null?(console.warn(`[AssetLoader.load] Empty asset returned for "${e}"`),this.updateAssetLoadMetadata(e,"failed",1),await this.cleanupFailedLoad(e),null):(this.updateAssetLoadMetadata(e,"success",1),i)}catch(n){return console.warn(`[AssetLoader.load] Failed to load "${e}":`,n),this.updateAssetLoadMetadata(e,"failed",1),await this.cleanupFailedLoad(e),null}}async loadVideoUnique(e,r){this.updateAssetLoadMetadata(e,"pending",0);try{const n=this.extractUrl(r);if(!n)throw new Error("No URL provided for video loading");const i=typeof r=="object"?r.data??{}:{},a=await new Promise((s,o)=>{const u=document.createElement("video");u.crossOrigin="anonymous",u.playsInline=!0,u.muted=i.muted??!1,u.preload="auto",u.addEventListener("loadedmetadata",()=>{try{const l=new st.VideoSource({resource:u,autoPlay:i.autoPlay??!1,...i});s(new st.Texture({source:l}))}catch(l){o(l)}},{once:!0}),u.addEventListener("error",()=>o(new Error("Video loading failed")),{once:!0}),this.updateAssetLoadMetadata(e,"loading",.5),u.src=n});return this.updateAssetLoadMetadata(e,"success",1),a}catch{return this.updateAssetLoadMetadata(e,"failed",1),null}}getProgress(){const e=Object.keys(this.loadTracker.registry);return e.length===0?0:e.reduce((n,i)=>n+this.loadTracker.registry[i].progress,0)/e.length}async cleanupFailedLoad(e){this.decrementRef(e);try{await st.Assets.unload(e)}catch{}}extractUrl(e){if(typeof e=="string")return e;const r=Array.isArray(e.src)?e.src[0]:e.src;return typeof r=="string"?r:r?.src}hasVideoExtension(e){const r=new URL(e,window.location.origin).pathname.toLowerCase();return nc.VIDEO_EXTENSIONS.some(n=>r.endsWith(n))}async getContentType(e){try{return(await fetch(e,{method:"HEAD"})).headers.get("content-type")}catch{return null}}canPlayVideo(e){const r=new URL(e,window.location.origin).pathname.toLowerCase(),n=r.slice(r.lastIndexOf(".")),i=nc.VIDEO_MIME[n];return i?document.createElement("video").canPlayType(i)!=="":!1}async isPlayableVideo(e){if(this.hasVideoExtension(e))return this.canPlayVideo(e);const r=await this.getContentType(e);return r?.startsWith("video/")?document.createElement("video").canPlayType(r)!=="":!1}async shouldUseSafariVideoLoader(e){const r=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),n=this.extractUrl(e);return r&&n!==void 0&&await this.isPlayableVideo(n)}async loadVideoForSafari(e,r){const n=this.extractUrl(r),i=typeof r=="object"?r.data??{}:{},a=await new Promise((s,o)=>{const u=document.createElement("video");u.crossOrigin="anonymous",u.playsInline=!0,u.muted=!0,u.preload="metadata",u.addEventListener("loadedmetadata",()=>{try{const l=new st.VideoSource({resource:u,autoPlay:i.autoPlay??!1,...i});s(new st.Texture({source:l}))}catch(l){o(l)}},{once:!0}),u.addEventListener("error",()=>o(new Error("Video loading failed")),{once:!0}),this.updateAssetLoadMetadata(e,"loading",.5),u.src=n});return this.updateAssetLoadMetadata(e,"success",1),a}updateAssetLoadMetadata(e,r,n){this.loadTracker.registry[e]?(this.loadTracker.registry[e].progress=n,this.loadTracker.registry[e].status=r):this.loadTracker.registry[e]={progress:n,status:r};const i={...this.loadTracker.registry};this.loadTracker.emit("onAssetLoadInfoUpdated",{registry:i})}}function Q2(t){const e=t.names,r=e.fontFamily??e.windows?.fontFamily??e.macintosh?.fontFamily??{},n=r.en??r[Object.keys(r)[0]];if(!n)throw new Error(`Font has no readable family name; name tables present: ${Object.keys(e).join(", ")||"none"}`);return n}class ac{static Name="FontLoadParser";id;name;extension;validFontExtensions;woff2Decompressor;constructor(){this.id=ac.Name,this.name=ac.Name,this.extension={type:[st.ExtensionType.LoadParser],priority:st.LoaderParserPriority.High,ref:null},this.validFontExtensions=["ttf","otf","woff","woff2"],this.woff2Decompressor=null}test(e){const r=e.split("?")[0]?.split(".").pop()?.toLowerCase()??"";return this.validFontExtensions.includes(r)}async load(e,r,n){const i=e.split("?")[0]?.split(".").pop()?.toLowerCase()??"",a=await fetch(e).then(p=>p.arrayBuffer());if(i!=="woff2"){const p=vc.parse(new Uint8Array(a).buffer),g=Q2(p),y=new FontFace(g,`url(${e})`);return await y.load(),document.fonts.add(y),y}if(await this.loadWoff2Decompressor(),!this.woff2Decompressor)throw new Error("Cannot initialize Woff2 decompressor.");const s=this.woff2Decompressor.decompress(a),o=vc.parse(new Uint8Array(s).buffer),u=Q2(o),l=new Blob([s],{type:"font/ttf"}),c=URL.createObjectURL(l),h=new FontFace(u,`url(${c})`);return await h.load(),document.fonts.add(h),h}async loadWoff2Decompressor(){if(this.woff2Decompressor)return;const r=`${await fetch("https://unpkg.com/wawoff2@2.0.1/build/decompress_binding.js").then(n=>n.text())}; return Module`;this.woff2Decompressor=new Function(r)(),await new Promise(n=>{this.woff2Decompressor.onRuntimeInitialized=n})}unload(e){e&&document.fonts.delete(e)}}class x${queue=[];isProcessing=!1;async enqueue(e){return new Promise((r,n)=>{this.queue.push(async()=>{try{const i=await e();r(i)}catch(i){n(i)}}),this.processQueue()})}async processQueue(){if(!this.isProcessing){for(this.isProcessing=!0;this.queue.length>0;){const e=this.queue.shift();if(e)try{await e()}catch{}}this.isProcessing=!1}}}function ui(t){return structuredClone(t)}class Ya{data;clipBindings=new Map;constructor(e){this.data=ui(e),this.hydrateIds()}hydrateIds(){const e=new Set;for(const r of this.data.timeline.tracks)for(let n=0;n<r.clips.length;n+=1){const i=r.clips[n];if(e.has(i)){const a=structuredClone(i);a.id=crypto.randomUUID(),r.clips[n]=a}else e.add(i),i.id||(i.id=crypto.randomUUID())}}getTimeline(){return this.data.timeline}getBackground(){return this.data.timeline.background}getTracks(){return this.data.timeline.tracks}getTrack(e){return this.data.timeline.tracks[e]??null}getTrackCount(){return this.data.timeline.tracks.length}getSoundtrack(){return this.data.timeline.soundtrack}getClip(e,r){const n=this.data.timeline.tracks[e];return n?n.clips[r]??null:null}getClipsInTrack(e){return this.data.timeline.tracks[e]?.clips??[]}getClipCount(){return this.data.timeline.tracks.reduce((e,r)=>e+r.clips.length,0)}getClipCountInTrack(e){return this.data.timeline.tracks[e]?.clips.length??0}getClipById(e){for(let r=0;r<this.data.timeline.tracks.length;r+=1){const n=this.data.timeline.tracks[r].clips;for(let i=0;i<n.length;i+=1)if(n[i].id===e)return{clip:n[i],trackIndex:r,clipIndex:i}}return null}updateClipById(e,r){const n=this.getClipById(e);n&&Object.assign(n.clip,ui(r))}removeClipById(e){const r=this.getClipById(e);return r?this.removeClip(r.trackIndex,r.clipIndex):null}getClipId(e,r){return this.getClip(e,r)?.id??null}getOutput(){return this.data.output}getSize(){const{size:e}=this.data.output;if(!e?.width||!e?.height)throw new Error("Output size is not defined");return{width:e.width,height:e.height}}getFormat(){return this.data.output.format}getFps(){return this.data.output.fps}getResolution(){return this.data.output.resolution}getAspectRatio(){return this.data.output.aspectRatio}getMergeFields(){return this.data.merge}addTrack(e,r){const n=r?ui(r):{clips:[]};return this.data.timeline.tracks.splice(e,0,n),n}removeTrack(e){if(e<0||e>=this.data.timeline.tracks.length)return null;if(this.data.timeline.tracks.length<=1)return console.warn("Cannot remove the last track"),null;const[r]=this.data.timeline.tracks.splice(e,1);return r??null}addClip(e,r,n){const i=this.data.timeline.tracks[e];if(!i)throw new Error(`Track ${e} does not exist`);const a=ui(r);a.id||(a.id=crypto.randomUUID());const s=n??i.clips.length;return i.clips.splice(s,0,a),a}removeClip(e,r){const n=this.data.timeline.tracks[e];if(!n||r<0||r>=n.clips.length)return null;const[i]=n.clips.splice(r,1);return i??null}updateClip(e,r,n){const i=this.getClip(e,r);if(!i)throw new Error(`Clip at track ${e}, index ${r} does not exist`);Object.assign(i,ui(n))}replaceClipProperties(e,r,n){const i=this.data.timeline.tracks[e],a=i?.clips[r];if(!i||!a)throw new Error(`Clip at track ${e}, index ${r} does not exist`);const{id:s}=a,o=ui(n);s&&(o.id=s),i.clips[r]=o}replaceClip(e,r,n){const i=this.data.timeline.tracks[e];if(!i||r<0||r>=i.clips.length)return null;const a=i.clips[r];return i.clips[r]=ui(n),a}moveClip(e,r,n,i){const a=this.data.timeline.tracks[e];if(!a||r<0||r>=a.clips.length)return null;const s=this.data.timeline.tracks[n];if(!s)return null;const[o]=a.clips.splice(r,1);if(!o)return null;i&&Object.assign(o,ui(i));const u=typeof o.start=="number"?o.start:0;let l=0;for(let c=0;c<s.clips.length;c+=1){const h=s.clips[c].start;if(u<(typeof h=="number"?h:0))break;l+=1}return s.clips.splice(l,0,o),o}setBackground(e){this.data.timeline.background=e}setSoundtrack(e){this.data.timeline.soundtrack=e?ui(e):void 0}getFonts(){return this.data.timeline.fonts??[]}addFont(e){this.data.timeline.fonts||(this.data.timeline.fonts=[]),this.data.timeline.fonts.some(r=>r.src===e)||this.data.timeline.fonts.push({src:e})}removeFont(e){this.data.timeline.fonts&&(this.data.timeline.fonts=this.data.timeline.fonts.filter(r=>r.src!==e))}setFonts(e){this.data.timeline.fonts=ui(e)}setSize(e){this.data.output.size={width:e.width,height:e.height}}setFormat(e){this.data.output.format=e}setFps(e){this.data.output.fps=e}setResolution(e){this.data.output.resolution=e}clearResolution(){delete this.data.output.resolution}setAspectRatio(e){this.data.output.aspectRatio=e}clearAspectRatio(){delete this.data.output.aspectRatio}clearSize(){delete this.data.output.size}setMergeFields(e){this.data.merge=ui(e)}setClipBinding(e,r,n){let i=this.clipBindings.get(e);i||(i=new Map,this.clipBindings.set(e,i)),i.set(r,n)}getClipBinding(e,r){return this.clipBindings.get(e)?.get(r)}removeClipBinding(e,r){const n=this.clipBindings.get(e);n&&(n.delete(r),n.size===0&&this.clipBindings.delete(e))}getClipBindings(e){return this.clipBindings.get(e)}setClipBindingsForClip(e,r){r.size===0?this.clipBindings.delete(e):this.clipBindings.set(e,new Map(r))}clearClipBindings(e){this.clipBindings.delete(e)}getClipIdsWithBindings(){return Array.from(this.clipBindings.keys())}toJSON(e){const r=structuredClone(this.data),n=e?.includeIds??!1,i=r.timeline.fonts??[],a=new Set(i.map(s=>s.src));for(const s of r.timeline.tracks)for(const o of s.clips){const u=o.id;if(u){const h=this.clipBindings.get(u);if(h)for(const[p,{placeholder:g}]of h)Yi(o,p,g)}n||delete o.id;const l=o.asset?.font?.family,c=l?dV(l):void 0;c&&!a.has(c)&&(i.push({src:c}),a.add(c))}return i.length>0&&(r.timeline.fonts=i),r.merge?.length===0&&delete r.merge,r}static fromJSON(e){return new Ya(e)}clone(){return new Ya(this.data)}}const t6=new Set(["asset","start","length","id"]);class C${constructor(e){this.edit=e,this.edit.getInternalEvents().on(Fe.Resolved,this.onResolved)}isReconciling=!1;enableCreation=!0;inFlightLoads=new Set;onResolved=({edit:e})=>{this.reconcile(e)};async reconcileInitial(e){const r=this.reconcile(e);return await Promise.all(r.pendingLoads),r}async whenSettled(){for(;this.inFlightLoads.size>0;)await Promise.allSettled([...this.inFlightLoads])}reconcile(e){if(this.isReconciling)return{created:[],updated:[],disposed:[],pendingLoads:[]};this.isReconciling=!0;try{const r=[],n={created:[],updated:[],disposed:[],pendingLoads:r},i=new Set;for(let s=0;s<e.timeline.tracks.length;s+=1){const o=e.timeline.tracks[s];for(let u=0;u<o.clips.length;u+=1){const l=o.clips[u],c=l.id;if(c){i.add(c);const h=this.edit.getPlayerByClipId(c);if(h){const p=this.updatePlayer(h,l,s);p==="recreate"?(this.disposePlayer(c),r.push(this.createPlayer(l,c,s,u)),n.disposed.push(c),n.created.push(c)):p&&n.updated.push(c)}else this.enableCreation&&(this.createPlayer(l,c,s,u),n.created.push(c))}}}const a=this.findOrphanedPlayers(i);for(const s of a)this.disposePlayer(s),n.disposed.push(s);return(n.created.length>0||n.disposed.length>0||n.updated.length>0)&&this.rebuildTracksOrdering(e),this.syncTrackContainers(e.timeline.tracks.length),n}finally{this.isReconciling=!1}}updateSinglePlayer(e,r,n,i=0){const a=this.updatePlayer(e,r,n);if(a==="recreate"){const{clipId:s}=e;return s&&(this.disposePlayer(s),this.createPlayer(r,s,n,i)),"recreate"}return a}createPlayer(e,r,n,i){const a=this.edit.createPlayerFromAssetType(e);a.layer=n+1,a.clipId=r,this.edit.registerPlayerByClipId(r,a),this.edit.addPlayerToTracksArray(n,a),this.edit.addPlayerToContainer(n,a);const s=e.asset?.type??"unknown",o=a.load().then(()=>{this.edit.getInternalEvents().emit(Fe.PlayerLoaded,{player:a,trackIndex:n,clipIndex:i}),Mo(e.asset)&&this.edit.getInternalEvents().emit(Ft.ClipUnresolved,{trackIndex:n,clipIndex:i,assetType:s,clipId:r}),a.needsResolution&&this.edit.getInternalEvents().emit(Ft.ClipUnresolved,{trackIndex:n,clipIndex:i,assetType:s,clipId:r})}).catch(u=>{const l=u instanceof Error?u.message:String(u);this.edit.getInternalEvents().emit(Ft.ClipLoadFailed,{trackIndex:n,clipIndex:i,error:l,assetType:s})});return this.inFlightLoads.add(o),o.finally(()=>this.inFlightLoads.delete(o))}updatePlayer(e,r,n){const i=e.clipConfiguration.asset?.type,a=r.asset?.type;if(i!==a||Mo(e.clipConfiguration.asset)!==Mo(r.asset))return"recreate";let s=!1;const o=e.layer-1,u=e.clipConfiguration.start,l=e.clipConfiguration.length;return(u!==r.start||l!==r.length)&&(e.setResolvedTiming({start:r.start,length:r.length}),e.reconfigureAfterRestore(),s=!0),o!==n&&(e.layer=n+1,this.edit.movePlayerBetweenTracks(e,o,n),s=!0),this.assetChanged(e.clipConfiguration.asset,r.asset)&&(this.updateAsset(e,r.asset),s=!0),this.clipPropertiesChanged(e.clipConfiguration,r)&&(this.updateClipProperties(e,r),s=!0),s}clipPropertiesChanged(e,r){const n=e,i=r,a=new Set([...Object.keys(n),...Object.keys(i)]);for(const s of a)if(!t6.has(s)&&JSON.stringify(n[s])!==JSON.stringify(i[s]))return!0;return!1}updateClipProperties(e,r){const n=e.clipConfiguration,i=r,a=new Set([...Object.keys(n),...Object.keys(i)]);for(const s of a)t6.has(s)||(i[s]!==void 0?n[s]=i[s]:delete n[s]);e.reconfigureAfterRestore()}assetChanged(e,r){return JSON.stringify(e)!==JSON.stringify(r)}updateAsset(e,r){const n=e.clipConfiguration.asset,i=r?.type;e.clipConfiguration.asset=r;let a;if(i==="html5")a=JSON.stringify(n)!==JSON.stringify(r);else{const s=n?.src,o=r?.src;a=s!==o}a&&e.reloadAsset?e.reloadAsset().then(()=>{e.reconfigureAfterRestore()}).catch(s=>{console.error("Failed to reload asset:",s)}):e.reconfigureAfterRestore()}syncTrackContainers(e){const r=this.edit.getTracks().length;if(e>r)for(let n=r;n<e;n+=1)this.edit.ensureTrackExists(n);else if(e<r)for(let n=r-1;n>=e;n-=1)this.edit.removeEmptyTrack(n)}findOrphanedPlayers(e){const r=[];for(const[n]of this.edit.getPlayerMap())e.has(n)||r.push(n);return r}disposePlayer(e){const r=this.edit.getPlayerByClipId(e);r&&(this.edit.unregisterPlayerByClipId(e),this.edit.queuePlayerForDisposal(r))}rebuildTracksOrdering(e){const r=this.edit.getTracks();for(let n=0;n<r.length;n+=1)r[n]=[];for(let n=0;n<e.timeline.tracks.length;n+=1){for(;r.length<=n;)r.push([]);for(const i of e.timeline.tracks[n].clips){const a=i.id;if(a){const s=this.edit.getPlayerByClipId(a);s&&r[n].push(s)}}}}dispose(){this.edit.getInternalEvents().off(Fe.Resolved,this.onResolved)}}const A$=new Set(["text","src"]);function e6(t,e){function r(n,i){if(typeof n=="string"&&e.isMergeFieldTemplate(n)){if(i&&A$.has(i))return e.resolve(n);const a=e.resolveToNumber(n);return a!==null?a:e.resolve(n)}if(Array.isArray(n))return n.map(a=>r(a,i));if(n!==null&&typeof n=="object"){const a={};for(const[s,o]of Object.entries(n))a[s]=r(o,s);return a}return n}return r(structuredClone(t))}function E$(t){const e=new Map,r=new Map,n=[];for(let i=0;i<t.getTrackCount();i+=1){const a=t.getClipsInTrack(i);for(let s=0;s<a.length;s+=1){const o=a[s];if(!o.id)throw new Error(`Clip at track ${i}, index ${s} is missing an ID. EditDocument hydration may have been skipped.`);const u=o.alias??o.id,l={clip:o,trackIndex:i,clipIndex:s};if(n.push({...l,id:u}),o.alias){if(r.has(o.alias))throw new Error(`Duplicate alias "${o.alias}" found. Each alias must be unique.`);r.set(o.alias,l)}}}for(let i=0;i<t.getTrackCount();i+=1){const a=t.getClipsInTrack(i);for(let s=0;s<a.length;s+=1){const o=a[s],u=o.alias??o.id,l=new Set;if(br(o.start)){const c=Po(o.start);if(!r.has(c))throw new Error(`Alias reference "alias://${c}" not found. No clip defines alias "${c}".`);l.add(c)}if(br(o.length)){const c=Po(o.length);if(!r.has(c))throw new Error(`Alias reference "alias://${c}" not found. No clip defines alias "${c}".`);l.add(c)}if(o.start==="auto"&&s>0){const c=a[s-1],h=c.alias??c.id;l.add(h)}l.size>0&&e.set(u,l)}}return{dependencies:e,clipsByAlias:r,allClips:n}}function k$(t){const e=new Set,r=new Set;function n(i,a){e.add(i),r.add(i);const s=t.get(i);if(s)for(const o of s){if(r.has(o))return[...a,o];if(!e.has(o)){const u=n(o,[...a,o]);if(u)return u}}return r.delete(i),null}for(const i of t.keys())if(!e.has(i)){const a=n(i,[i]);if(a)return a}return null}function S$(t,e){const r=[],n=new Set;function i(a){if(n.has(a))return;n.add(a);const s=t.get(a);if(s)for(const o of s)i(o);r.push(a)}for(const a of t.keys())i(a);for(const a of e)i(a);return r}function r6(t,e,r){let n;if(t.start==="auto")n=e;else if(br(t.start)){const s=Po(t.start),o=r.get(s);if(!o)throw new Error(`Internal error: Alias "${s}" not resolved.`);n=o.start}else n=t.start;let i,a=!1;if(t.length==="end")i=1,a=!0;else if(t.length==="auto")i=3;else if(br(t.length)){const s=Po(t.length),o=r.get(s);if(!o)throw new Error(`Internal error: Alias "${s}" not resolved.`);i=o.length}else i=t.length;return{...t,id:t.id??crypto.randomUUID(),start:n,length:i,pendingEndLength:a||void 0}}function D$(t){let e=0;for(const r of t)for(const n of r.clips)if(!n.pendingEndLength){const i=n.start+n.length;i>e&&(e=i)}return e}function vd(t){const{pendingEndLength:e,...r}=t;return r}function F$(t,e,r){const n=t.getClipById(e);if(!n)return null;const{clip:i,trackIndex:a,clipIndex:s}=n,u=e6(i,r.mergeFields),l=r.resolvedAliases??new Map,c=r6(u,r.previousClipEnd,l);return c.pendingEndLength&&r.cachedTimelineEnd!==void 0&&(c.length=Math.max(r.cachedTimelineEnd-c.start,.1)),{resolved:vd(c),trackIndex:a,clipIndex:s}}function i6(t,e){const{dependencies:r,allClips:n}=E$(t);if(r.size>0){const g=k$(r);if(g)throw new Error(`Circular alias reference detected: ${g.join(" -> ")}`)}const i=n.map(g=>g.id),a=S$(r,i),s=new Map;for(const g of n)s.set(g.id,g);const o=new Map,u=new Map,l=new Map;for(const g of a){const y=s.get(g);if(y){const{clip:E,trackIndex:v,clipIndex:C}=y,I=e6(E,e.mergeFields),x=l.get(v)??0,A=r6(I,x,u);o.set(`${v}-${C}`,A);const S=A.start+A.length,w=l.get(v)??0;S>w&&l.set(v,S),E.alias&&u.set(E.alias,{start:A.start,length:A.length})}}const c=[];for(let g=0;g<t.getTrackCount();g+=1){const y=t.getClipsInTrack(g).length,E=[];for(let v=0;v<y;v+=1){const C=o.get(`${g}-${v}`);if(!C)throw new Error(`Internal error: Clip at track ${g}, index ${v} was not resolved.`);E.push(C)}c.push({clips:E})}const h=D$(c),p=c.map(g=>({clips:g.clips.map(y=>{if(y.pendingEndLength){const E=Math.max(h-y.start,.1);return vd({...y,length:E})}return vd(y)})}));return{timeline:{background:t.getBackground(),tracks:p,fonts:t.getFonts()},output:t.getOutput()}}class n6 extends Error{code="INVALID_ASSET_URL";url;status;reason;constructor(e,r,n){super(`Asset URL ${e} failed validation: ${n}`),this.name="InvalidAssetUrlError",this.url=e,this.status=r,this.reason=n}}function I$(t,e,r){typeof r=="string"&&/^https?:\/\//i.test(r)&&(e.has(r)||(e.add(r),t.push(r)))}function a6(t,e,r){if(!t||typeof t!="object")return;const{asset:n}=t;n&&I$(e,r,n.src)}function N$(t){const e=[];return a6(t,e,new Set),e}function B$(t){const e=[],r=new Set,{clips:n}=t;if(Array.isArray(n))for(const i of n)a6(i,e,r);return e}class aa{static MAX_HISTORY_SIZE=100;static SEEK_ELAPSED_MARKER=101;document;size;backgroundColor;tracks;playbackTime;totalDuration;isPlaying;playWallAnchorMs=0;playTimeAnchorSeconds=0;get clips(){return this.tracks.flat()}assetLoader;internalEvents;events;canvas=null;timingManager;lumaMaskController;playerReconciler;outputSettings;selectionManager;mergeFieldService;commandHistory=[];commandIndex=-1;commandQueue=new x$;clipsToDispose=new Set;clipErrors=new Map;playerByClipId=new Map;lumaContentRelations=new Map;fontMetadata=new Map;isBatchingEvents=!1;isExporting=!1;lastResolved=null;constructor(e){po.parse(e),this.tracks=[],this.playbackTime=0,this.totalDuration=0,this.isPlaying=!1,this.document=new Ya(e);const r=this.document.getResolution(),n=this.document.getAspectRatio();this.backgroundColor=this.document.getBackground()??"#000000",this.size=r?ic(r,n):this.document.getSize(),this.assetLoader=new nc,this.internalEvents=new q2,this.events=this.internalEvents,this.lumaMaskController=new KR(()=>this.canvas,()=>this.tracks,this.internalEvents),this.playerReconciler=new C$(this),this.mergeFieldService=new e$(this.internalEvents),this.outputSettings=new i$(this),this.selectionManager=new s$(this),this.timingManager=new w$(this),this.setupIntentListeners()}async load(){await this.initializeFromDocument()}async initializeFromDocument(e="load"){const r=this.document.toJSON(),n=r.merge??[];this.mergeFieldService.loadFromSerialized(n),this.lastResolved=null;const i=this.detectMergeFieldBindings(n),a=po.parse(r);await Promise.all((a.timeline.fonts??[]).map(async o=>{const u=o.src,l={src:u,parser:ac.Name},c=await this.assetLoader.load(u,l);if(c?.family){const h=c.family.replace(/^["']|["']$/g,""),{baseFontFamily:p,fontWeight:g}=Dr(h);this.fontMetadata.set(u,{baseFamilyName:p,weight:g})}return c}));const s=this.getResolvedEdit();this.lumaMaskController.initialize(),await this.playerReconciler.reconcileInitial(s),this.normalizeLumaAttachments();for(const[o,u]of i)u.size>0&&this.document.setClipBindingsForClip(o,u);await this.timingManager.resolveAllTiming(),this.updateTotalDuration(),a.timeline.soundtrack&&await this.loadSoundtrack(a.timeline.soundtrack),this.internalEvents.emit(Ft.TimelineUpdated,{current:this.getEdit()}),this.emitEditChanged(e)}getInternalEvents(){return this.internalEvents}update(e,r){for(const n of this.clips)n.shouldDispose&&this.queueDisposeClip(n),n.update(e,r);if(this.disposeClips(),this.lumaMaskController.update(),this.isPlaying){const n=(performance.now()-this.playWallAnchorMs)/1e3;this.playbackTime=Math.max(0,Math.min(this.playTimeAnchorSeconds+n,this.totalDuration)),this.playbackTime===this.totalDuration&&this.pause()}}dispose(){this.clearClips(),this.lumaMaskController.dispose(),this.playerReconciler.dispose();for(const e of this.commandHistory)e.dispose?.();this.commandHistory=[],this.commandIndex=-1,this.lumaContentRelations.clear(),G2.cleanup()}updateCanvasForSize(){this.internalEvents.emit(Fe.ViewportSizeChanged,{width:this.size.width,height:this.size.height,backgroundColor:this.backgroundColor}),this.internalEvents.emit(Fe.ViewportNeedsZoomToFit)}play(){this.isPlaying=!0,this.playWallAnchorMs=performance.now(),this.playTimeAnchorSeconds=this.playbackTime,this.internalEvents.emit(Ft.PlaybackPlay)}pause(){this.isPlaying=!1,this.internalEvents.emit(Ft.PlaybackPause)}seek(e){this.playbackTime=Math.max(0,Math.min(e,this.totalDuration)),this.pause(),this.update(0,aa.SEEK_ELAPSED_MARKER)}stop(){this.seek(0)}async loadEdit(e){if(po.parse(e),this.pause(),this.tracks.length>0&&!this.hasStructuralChanges(e)){this.lastResolved=null;const s=structuredClone(e);this.preserveClipIdsForGranularUpdate(s);const o=this.document.getTracks(),u=this.document.getOutput();this.document=new Ya(s),this.isBatchingEvents=!0,await this.applyGranularChanges(s,o,u),this.updateTotalDuration(),this.isBatchingEvents=!1,this.emitEditChanged("loadEdit:granular");return}const r=this.document,n=this.lastResolved,i=this.size,a=this.backgroundColor;try{this.lastResolved=null,this.document=new Ya(e);const s=this.document.getResolution(),o=this.document.getAspectRatio();this.size=s?ic(s,o):this.document.getSize(),this.backgroundColor=this.document.getBackground()??"#000000",this.internalEvents.emit(Fe.ViewportSizeChanged,{width:this.size.width,height:this.size.height,backgroundColor:this.backgroundColor}),this.internalEvents.emit(Fe.ViewportNeedsZoomToFit),this.clearClips(),await this.initializeFromDocument("loadEdit")}catch(s){throw this.document=r,this.lastResolved=n,this.size=i,this.backgroundColor=a,s}}async loadSoundtrack(e){const r={id:crypto.randomUUID(),asset:{type:"audio",src:e.src,effect:e.effect,volume:e.volume??1},fit:"crop",start:0,length:this.totalDuration},n=this.createPlayerFromAssetType(r);n.layer=this.tracks.length+1,await this.addPlayer(this.tracks.length,n)}getEdit(e){const r=this.document.toJSON(e),n=this.mergeFieldService.toSerializedArray();return n.length>0&&(r.merge=n),r}getClipById(e){const r=this.document.getClipById(e)?.clip;return r?structuredClone(r):null}getClipPositionById(e){const r=this.document.getClipById(e);return r?{trackIndex:r.trackIndex,clipIndex:r.clipIndex}:null}updateClipById(e,r){const n=this.document.getClipById(e);return n?this.updateClip(n.trackIndex,n.clipIndex,r):(console.warn(`updateClipById: no clip with id ${e}`),Promise.resolve(re(`No clip with id ${e}`)))}deleteClipById(e){const r=this.document.getClipById(e);return r?this.deleteClip(r.trackIndex,r.clipIndex):(console.warn(`deleteClipById: no clip with id ${e}`),Promise.resolve(re(`No clip with id ${e}`)))}moveClipById(e,r,n){const i=this.document.getClipById(e);if(!i)return console.warn(`moveClipById: no clip with id ${e}`),Promise.resolve(re(`No clip with id ${e}`));const a=i.clip.start,s=n??(typeof a=="number"?a:null);if(s===null)return Promise.reject(new Error(`moveClipById: clip ${e} has a smart-clip start ("${a}"). Pass newStart explicitly or resolve start to a number first.`));const o=new RR(i.trackIndex,i.clipIndex,r,s);return this.executeCommand(o)}validateEdit(e){const r=po.safeParse(e);return r.success?{valid:!0,errors:[]}:{valid:!1,errors:r.error.issues.map(n=>({path:n.path.join("."),message:n.message}))}}getResolvedEdit(){return this.lastResolved||(this.lastResolved=i6(this.document,{mergeFields:this.mergeFieldService})),this.lastResolved}getResolvedClip(e,r){return this.getResolvedEdit()?.timeline?.tracks?.[e]?.clips?.[r]??null}getResolvedClipById(e){const r=this.getResolvedEdit();for(const n of r.timeline.tracks)for(const i of n.clips)if(i.id===e)return i;return null}getClipId(e,r){return this.document?.getClipId(e,r)??null}getDocumentClip(e,r){return this.document?.getClip(e,r)??null}getDocument(){return this.document}resolve(){return this.lastResolved=i6(this.document,{mergeFields:this.mergeFieldService}),this.internalEvents.emit(Fe.Resolved,{edit:this.lastResolved}),this.lastResolved}resolveClip(e){const r=this.getPlayerByClipId(e);if(!r)return!1;const n=this.document.getClipById(e);if(n?.clip.alias)return this.resolve(),!0;const i=n?.clip;if(i&&(br(i.start)||br(i.length)))return this.resolve(),!0;const a=r.layer-1,s=this.tracks[a],o=s?s.indexOf(r):-1;if(o<0)return!1;const u=o>0?s[o-1]:null,l=u?u.getEnd():0,c={mergeFields:this.mergeFieldService,previousClipEnd:l,cachedTimelineEnd:this.timingManager.getTimelineEnd()},h=F$(this.document,e,c);if(!h)return!1;if(this.lastResolved){const g=this.lastResolved.timeline.tracks[h.trackIndex];g&&g.clips[h.clipIndex]&&(g.clips[h.clipIndex]=h.resolved)}return this.playerReconciler.updateSinglePlayer(r,h.resolved,h.trackIndex,h.clipIndex)!==!1}async addClip(e,r){Wa.parse(r),await this.preflightAssetUrls(N$(r));const n=new VR(e,r);return this.executeCommand(n)}addSvgClip(e,r={}){const n=cd(e),{width:i,height:a}=PR(n),s=r.trackIndex??this.selectionManager.getSelectedClipInfo()?.trackIndex??0,o={asset:{type:"svg",src:n},start:r.start??this.playbackTime,length:r.length??5,fit:"contain",...i!==void 0?{width:i}:{},...a!==void 0?{height:a}:{}};return ld(this,s,o)}addClipFromJson(e,r={}){const n=typeof e=="string"?SR(e):structuredClone(e);if(!n)return Promise.reject(new Error("addClipFromJson: invalid clip JSON or schema validation failed"));delete n.id;const i=n.asset;i?.type==="svg"&&typeof i.src=="string"&&(i.src=cd(i.src)),r.start!==void 0&&(n.start=r.start),r.length!==void 0&&(n.length=r.length);const a=r.trackIndex??this.selectionManager.getSelectedClipInfo()?.trackIndex??0;return ld(this,a,n)}async addTracksFromJson(e,r={}){let n;if(typeof e=="string"){const u=DR(e);if(!u)throw new Error("addTracksFromJson: invalid tracks JSON or schema validation failed");n=u}else Array.isArray(e)?n=e:n=[e];if(n.length===0)throw new Error("addTracksFromJson: no tracks to paste");let i=1/0;for(const u of n)for(const l of u.clips){const c=typeof l.start=="number"?l.start:0;c<i&&(i=c)}Number.isFinite(i)||(i=0);const s=(r.start??this.playbackTime)-i,o=n.map(u=>({...u,clips:u.clips.map(l=>{const c=structuredClone(l);delete c.id;const h=c.asset;h?.type==="svg"&&typeof h.src=="string"&&(h.src=cd(h.src));const p=typeof c.start=="number"?c.start:0;return c.start=p+s,c})}));await this.executeCommand(new OR(0,o))}getClip(e,r){const n=this.tracks[e];return!n||r<0||r>=n.length?null:structuredClone(n[r].clipConfiguration)}getClipError(e,r){return this.clipErrors.get(`${e}-${r}`)??null}clearClipErrorAndShift(e,r){this.clipErrors.delete(`${e}-${r}`);const n=[];for(const[i,a]of this.clipErrors){const[s,o]=i.split("-").map(Number);s===e&&o>r&&n.push({oldKey:i,newKey:`${s}-${o-1}`,value:a})}for(const{oldKey:i,newKey:a,value:s}of n)this.clipErrors.delete(i),this.clipErrors.set(a,s)}getPlayerClip(e,r){const n=this.tracks[e];return!n||r<0||r>=n.length?null:n[r]}getPlayerByClipId(e){return this.playerByClipId.get(e)??null}getDocumentClipById(e){return this.document?.getClipById(e)?.clip??null}registerPlayerByClipId(e,r){this.playerByClipId.set(e,r)}unregisterPlayerByClipId(e){this.playerByClipId.delete(e)}getPlayerMap(){return this.playerByClipId}addPlayerToTracksArray(e,r){for(;this.tracks.length<=e;)this.tracks.push([]);this.tracks[e].push(r)}movePlayerBetweenTracks(e,r,n){const i=this.tracks[r];if(i){const a=i.indexOf(e);a!==-1&&i.splice(a,1)}for(;this.tracks.length<=n;)this.tracks.push([]);this.tracks[n].push(e),this.movePlayerToTrackContainer(e,r,n)}queuePlayerForDisposal(e){this.queueDisposeClip(e),this.disposeClips()}ensureTrackExists(e){for(;this.tracks.length<=e;)this.tracks.push([])}removeEmptyTrack(e){if(e<0||e>=this.tracks.length)return;const r=this.tracks[e];if(r&&r.length>0){console.warn(`Cannot remove non-empty track ${e}`);return}this.tracks.splice(e,1),this.internalEvents.emit(Fe.TrackContainerRemoved,{trackIndex:e});for(let n=e;n<this.tracks.length;n+=1)for(const i of this.tracks[n])i.layer=n+1}getOriginalAsset(e,r){const n=this.getPlayerClip(e,r);if(!n)return;const i=n.getExportableClip();if(!i)return;const{clipId:a}=n;if(a&&this.document){const s=this.document.getClipBindings(a);if(s){for(const[o,{placeholder:u}]of s)if(o.startsWith("asset.")){const l=o.slice(6);Yi(i.asset,l,u)}}}return i.asset}canDeleteClip(e,r){return this.document.getClipCount()<=1?!1:this.document.getClip(e,r)!==null}async deleteClip(e,r){const n=this.tracks[e];if(!n)return re(`No track at index ${e}`);const i=n[r];if(!i)return re(`No clip at track ${e}, index ${r}`);if(i.playerType!==Ee.Luma){const o=n.findIndex(u=>u.playerType===Ee.Luma);if(o!==-1){if(this.document.getClipCount()<=2)return re("Cannot delete the last clip");const u=o<r?r-1:r,l=new pd(e,o);await this.executeCommand(l);const c=new pd(e,u);return this.executeCommand(c)}}const s=new pd(e,r);return this.executeCommand(s)}async addTrack(e,r){ad.parse(r),await this.preflightAssetUrls(B$(r));const n=await this.executeCommand(new ud(e,r));return await this.autoLinkCaptionSources(e,r.clips),n}async addFont(e){await this.preflightAssetUrls([e]),await this.commandQueue.enqueue(()=>{this.document.addFont(e),this.emitEditChanged("addFont")})}async setFonts(e){await this.preflightAssetUrls(e.map(r=>r.src)),await this.commandQueue.enqueue(()=>{this.document.setFonts(e),this.emitEditChanged("setFonts")})}async autoLinkCaptionSources(e,r){for(let n=0;n<r.length;n+=1){const a=r[n].asset;if(a.type==="rich-caption"&&br(a.src)){const s=m$(this);if(s.length>0){const o=s[0],u=await y$(this,o.trackIndex,o.clipIndex);await this.updateClip(e,n,{asset:{src:`alias://${u}`}})}}}}getTrack(e){const r=this.clips.filter(n=>n.layer===e+1);return r.length===0?null:{clips:r.map(n=>structuredClone(n.clipConfiguration))}}deleteTrack(e){const r=new dd(e);return this.executeCommand(r)}undo(){return this.commandQueue.enqueue(async()=>{if(this.commandIndex<0)return re("Nothing to undo");const e=this.commandHistory[this.commandIndex];if(!e.undo)return re("Command cannot be undone");const r=this.createCommandContext(),n=await Promise.resolve(e.undo(r));return this.commandIndex-=1,this.internalEvents.emit(Ft.EditUndo,{command:e.name}),this.emitEditChanged(`undo:${e.name}`),n})}redo(){return this.commandQueue.enqueue(async()=>{if(this.commandIndex>=this.commandHistory.length-1)return re("Nothing to redo");const e=this.commandIndex+1,r=this.commandHistory[e],n=this.createCommandContext(),i=await Promise.resolve(r.execute(n));return this.commandIndex=e,this.internalEvents.emit(Ft.EditRedo,{command:r.name}),this.emitEditChanged(`redo:${r.name}`),i})}get canUndo(){return this.commandIndex>=0}get canRedo(){return this.commandIndex<this.commandHistory.length-1}setUpdatedClip(e,r=null,n=null){const i=e.layer-1,a=this.tracks[i],s=a?a.indexOf(e):-1,o=new md(r,n,{trackIndex:i,clipIndex:s});this.executeCommand(o)}updateClipInDocument(e,r){const n=this.document.getClipById(e);n&&this.document.updateClip(n.trackIndex,n.clipIndex,r)}commitClipUpdate(e,r,n){const i=this.document.getClipById(e);if(!i){console.warn(`commitClipUpdate: clip ${e} not found in document`);return}sd.parse(n);const a=new md(r,structuredClone(n),{trackIndex:i.trackIndex,clipIndex:i.clipIndex});this.addCommandToHistory(a)}pushCommandToHistory(e){const r=this.commandHistory.slice(this.commandIndex+1);for(const n of r)n.dispose?.();for(this.commandHistory=this.commandHistory.slice(0,this.commandIndex+1),this.commandHistory.push(e),this.commandIndex+=1;this.commandHistory.length>aa.MAX_HISTORY_SIZE;)this.commandHistory.shift()?.dispose?.(),this.commandIndex-=1}addCommandToHistory(e){this.pushCommandToHistory(e),this.emitEditChanged(`commit:${e.name}`)}updateClip(e,r,n){const i=this.getPlayerClip(e,r);if(!i)return console.warn(`Clip not found at track ${e}, index ${r}`),Promise.resolve(re(`No clip at track ${e}, index ${r}`));const a=this.document?.getClip(e,r),s=structuredClone(a??i.clipConfiguration),o=structuredClone(a??i.clipConfiguration),u=td(o,n);sd.parse(u);const l=new md(s,u,{trackIndex:e,clipIndex:r});return this.executeCommand(l)}updateClipTiming(e,r,n){if(!this.getPlayerClip(e,r)){console.warn(`Clip not found at track ${e}, index ${r}`);return}const a=new HR(e,r,n);this.executeCommand(a)}updateTextContent(e,r,n){const i=e.layer-1,a=this.tracks[i]?.indexOf(e)??-1;if(a<0){console.warn("UpdateTextContent: clip not found in track");return}const s=new YR(i,a,r);this.executeCommand(s)}executeEditCommand(e){return this.executeCommand(e)}async preflightAssetUrls(e){if(typeof document>"u"||e.length===0)return;const r=await Promise.all(e.map(async n=>{try{const i=await fetch(n,{method:"HEAD",signal:AbortSignal.timeout(4e3),redirect:"follow"});return{url:n,status:i.status}}catch{return{url:n,status:0}}}));for(const{url:n,status:i}of r)if(i>=400&&i<500)throw new n6(n,i,`HTTP ${i}`)}executeCommand(e){return this.commandQueue.enqueue(async()=>{const r=this.createCommandContext(),n=await Promise.resolve(e.execute(r));return this.handleCommandResult(e,n),n})}handleCommandResult(e,r){r.status==="success"&&(this.pushCommandToHistory(e),this.emitEditChanged(e.name))}emitEditChanged(e){this.isBatchingEvents||this.internalEvents.emit(Ft.EditChanged,{source:e,timestamp:Date.now()})}detectMergeFieldBindings(e){const r=new Map;if(!e.length)return r;const n=new Map;for(const{find:i,replace:a}of e){const s=typeof a=="string"?a:JSON.stringify(a);n.set(i.toUpperCase(),s)}for(let i=0;i<this.document.getTrackCount();i+=1){const a=this.document.getClipsInTrack(i);for(let s=0;s<a.length;s+=1){const o=this.document.getClipId(i,s);if(o){const u=this.detectBindingsInObject(a[s],"",n);u.size>0&&r.set(o,u)}}}return r}detectBindingsInObject(e,r,n){const i=new Map;if(typeof e=="string"){if(/\{\{\s*([A-Z_0-9]+)\s*\}\}/gi.test(e)){const o=e.replace(/\{\{\s*([A-Z_0-9]+)\s*\}\}/gi,(u,l)=>n.get(l.toUpperCase())??u);i.set(r,{placeholder:e,resolvedValue:o})}return i}if(Array.isArray(e)){for(let a=0;a<e.length;a+=1){const s=r?`${r}[${a}]`:`[${a}]`,o=this.detectBindingsInObject(e[a],s,n);for(const[u,l]of o)i.set(u,l)}return i}if(e!==null&&typeof e=="object")for(const[a,s]of Object.entries(e)){const o=r?`${r}.${a}`:a,u=this.detectBindingsInObject(s,o,n);for(const[l,c]of u)i.set(l,c)}return i}hasStructuralChanges(e){if(!this.document)return!0;const r=this.document.getTracks(),n=e.timeline.tracks;if(r.length!==n.length)return!0;for(let i=0;i<r.length;i+=1){if(r[i].clips.length!==n[i].clips.length)return!0;for(let a=0;a<r[i].clips.length;a+=1){const s=r[i].clips[a]?.asset?.type,o=n[i].clips[a]?.asset?.type;if(s!==o)return!0}}return JSON.stringify(this.document.getMergeFields()??[])!==JSON.stringify(e.merge??[])||JSON.stringify(this.document.getFonts())!==JSON.stringify(e.timeline.fonts??[])||JSON.stringify(this.document.getSoundtrack())!==JSON.stringify(e.timeline.soundtrack)}preserveClipIdsForGranularUpdate(e){if(!this.document)return;const r=this.document.getTracks();for(let n=0;n<e.timeline.tracks.length;n+=1){const i=r[n],a=e.timeline.tracks[n];if(i&&a)for(let s=0;s<a.clips.length;s+=1){const o=this.document.getClipId(n,s);o&&(a.clips[s].id=o)}}}async applyGranularChanges(e,r,n){const i=e.output;if(i?.size&&(n?.size?.width!==i.size.width||n?.size?.height!==i.size.height)){const o=i.size.width??this.size.width,u=i.size.height??this.size.height;await this.setOutputSize(o,u)}i?.fps!==void 0&&n?.fps!==i.fps&&await this.setOutputFps(i.fps),i?.format!==void 0&&n?.format!==i.format&&await this.setOutputFormat(i.format),i?.destinations&&JSON.stringify(n?.destinations)!==JSON.stringify(i.destinations)&&await this.setOutputDestinations(i.destinations),i?.resolution!==void 0&&n?.resolution!==i.resolution&&await this.setOutputResolution(i.resolution),i?.aspectRatio!==void 0&&n?.aspectRatio!==i.aspectRatio&&await this.setOutputAspectRatio(i.aspectRatio);const a=e.timeline?.background;a&&this.backgroundColor!==a&&await this.setTimelineBackground(a);const s=e.timeline.tracks;for(let o=0;o<s.length;o+=1){const u=r[o].clips,l=s[o].clips;for(let c=0;c<l.length;c+=1){const h=u[c],p=l[c];JSON.stringify(h)!==JSON.stringify(p)&&await this.updateClip(o,c,p)}}}createCommandContext(){return{getClips:()=>this.clips,getTracks:()=>this.tracks,getTrack:e=>e>=0&&e<this.tracks.length?this.tracks[e]:null,getContainer:()=>this.getViewportContainer(),addPlayer:(e,r)=>this.addPlayer(e,r),addPlayerToContainer:(e,r)=>{this.addPlayerToContainer(e,r)},createPlayerFromAssetType:e=>this.createPlayerFromAssetType(e),queueDisposeClip:e=>this.queueDisposeClip(e),disposeClips:()=>this.disposeClips(),clearClipError:(e,r)=>this.clearClipErrorAndShift(e,r),undeleteClip:(e,r)=>{let n=0;if(e>=0&&e<this.tracks.length){const i=this.tracks[e];n=i.length;for(let a=0;a<i.length;a+=1)if(i[a].getStart()>r.getStart()){n=a;break}i.splice(n,0,r)}if(this.document){const i=r.getExportableClip();this.document.addClip(e,i,n);const a=this.document.getClipId(e,n);a&&(r.clipId=a,this.playerByClipId.set(a,r))}this.addPlayerToContainer(e,r),r.load().catch(i=>{const a=r.clipConfiguration?.asset?.type??"unknown",s=i instanceof Error?i.message:String(i);this.clipErrors.set(`${e}-${n}`,{error:s,assetType:a}),this.internalEvents.emit(Ft.ClipLoadFailed,{trackIndex:e,clipIndex:n,error:s,assetType:a})}),this.updateTotalDuration()},setUpdatedClip:()=>{},restoreClipConfiguration:(e,r)=>{const n=structuredClone(r),i=e.clipConfiguration;for(const a of Object.keys(i))delete i[a];if(Object.assign(i,n),e.reconfigureAfterRestore(),this.document){const a=this.findClipIndices(e);if(a){const s=e.getExportableClip();this.document.replaceClip(a.trackIndex,a.clipIndex,s)}}},updateDuration:()=>this.updateTotalDuration(),emitEvent:(e,...r)=>this.internalEvents.emit(e,...r),findClipIndices:e=>this.selectionManager.findClipIndices(e),getClipAt:(e,r)=>this.getClipAt(e,r),getSelectedClip:()=>this.selectionManager.getSelectedClip(),setSelectedClip:e=>{this.selectionManager.setSelectedClip(e)},movePlayerToTrackContainer:(e,r,n)=>this.movePlayerToTrackContainer(e,r,n),getEditState:()=>this.getResolvedEdit(),propagateTimingChanges:(e,r)=>this.propagateTimingChanges(e,r),resolveClipAutoLength:e=>this.resolveClipAutoLength(e),getMergeFields:()=>this.mergeFieldService,getOutputSize:()=>this.outputSettings.getSize(),setOutputSize:(e,r)=>this.outputSettings.setSize(e,r),getOutputFps:()=>this.outputSettings.getFps(),setOutputFps:e=>this.outputSettings.setFps(e),getOutputFormat:()=>this.outputSettings.getFormat(),setOutputFormat:e=>this.outputSettings.setFormat(e),getOutputResolution:()=>this.outputSettings.getResolution(),setOutputResolution:e=>this.outputSettings.setResolution(e),getOutputAspectRatio:()=>this.outputSettings.getAspectRatio(),setOutputAspectRatio:e=>this.outputSettings.setAspectRatio(e),getOutputDestinations:()=>this.outputSettings.getDestinations(),setOutputDestinations:e=>this.outputSettings.setDestinations(e),getTimelineBackground:()=>this.getTimelineBackground(),setTimelineBackground:e=>this.setTimelineBackgroundInternal(e),getDocument:()=>this.document,getDocumentTrack:e=>this.document?.getTrack(e)??null,getDocumentClip:(e,r)=>this.document?.getClip(e,r)??null,documentUpdateClip:(e,r,n)=>{if(!this.document)throw new Error("Document not initialized - cannot update clip");this.document.updateClip(e,r,n)},documentAddClip:(e,r,n)=>{if(!this.document)throw new Error("Document not initialized - cannot add clip");for(;this.document.getTrackCount()<=e;)this.document.addTrack(this.document.getTrackCount());return this.document.addClip(e,r,n)},documentRemoveClip:(e,r)=>{if(!this.document)throw new Error("Document not initialized - cannot remove clip");return this.document.removeClip(e,r)},derivePlayerFromDocument:(e,r)=>{const n=this.document?.getClip(e,r);if(!n)throw new Error(`derivePlayerFromDocument: No document clip at ${e}/${r} - state desync`);const i=this.getClipAt(e,r);if(!i)throw new Error(`derivePlayerFromDocument: No player at ${e}/${r} - state desync`);const{asset:a,...s}=n;Object.assign(i.clipConfiguration,s),i.reconfigureAfterRestore()},buildResolutionContext:(e,r)=>{let n=0;if(r>0){const o=this.tracks[e];o&&o[r-1]&&(n=o[r-1].getEnd())}const i=yd(this.tracks);let a=null;const s=this.getClipAt(e,r);return s&&s.getTimingIntent().length==="auto"&&(a=s.getLength()),{previousClipEnd:n,timelineEnd:i,intrinsicDuration:a}},resolve:()=>this.resolve(),resolveClip:e=>this.resolveClip(e),getPlayerByClipId:e=>this.playerByClipId.get(e)??null,registerPlayerByClipId:(e,r)=>{this.playerByClipId.set(e,r)},unregisterPlayerByClipId:e=>{this.playerByClipId.delete(e)},setClipBinding:(e,r,n)=>{this.document?.setClipBinding(e,r,n)},getClipBinding:(e,r)=>this.document?.getClipBinding(e,r),removeClipBinding:(e,r)=>{this.document?.removeClipBinding(e,r)},getClipBindings:e=>this.document?.getClipBindings(e),getEditSession:()=>this}}queueDisposeClip(e){this.clipsToDispose.add(e)}disposeClips(){if(this.clipsToDispose.size!==0){for(const e of this.clipsToDispose)e.playerType===Ee.Luma&&(this.lumaMaskController.cleanupForPlayer(e),e.clipId&&this.lumaContentRelations.delete(e.clipId));for(const e of this.clipsToDispose)e.clipId&&this.playerByClipId.delete(e.clipId);for(const e of this.clipsToDispose)this.disposeClip(e);for(const e of this.clipsToDispose){const r=e.layer-1;if(r>=0&&r<this.tracks.length){const n=this.tracks[r].indexOf(e);n!==-1&&this.tracks[r].splice(n,1)}}this.clipsToDispose.clear(),this.updateTotalDuration(),this.cleanupUnusedFonts()}}cleanupUnusedFonts(){if(!this.document)return;const e=this.document.getFonts();if(e.length===0)return;const r=new Set;for(const n of this.clips){const{asset:i}=n.clipConfiguration;i&&(i.type==="rich-text"||i.type==="rich-caption")&&i.font?.family&&r.add(i.font.family)}for(const n of e)if(n.src.includes("fonts.gstatic.com")){const a=this.extractFilenameFromUrl(n.src);a&&!r.has(a)&&this.document.removeFont(n.src)}}extractFilenameFromUrl(e){try{const{pathname:r}=new URL(e),n=r.split("/").pop();return n?n.replace(/\.[^.]+$/,""):null}catch{return null}}disposeClip(e){try{const r=this.canvas?.getViewportContainer();if(r){for(const n of r.children)if(n instanceof st.Container&&n.label?.toString().startsWith("shotstack-track-")&&n.children.includes(e.getContainer())){n.removeChild(e.getContainer());break}}}catch(r){console.warn(`Attempting to unmount an unmounted clip: ${r}`)}this.unloadClipAssets(e),this.timingManager.invalidateTimelineEndCache(),e.dispose()}unloadClipAssets(e){const{asset:r}=e.clipConfiguration;r&&"src"in r&&typeof r.src=="string"&&this.assetLoader.decrementRef(r.src)&&st.Assets.cache.has(r.src)&&st.Assets.unload(r.src)}clearClips(){for(const e of this.clips)this.disposeClip(e);this.tracks=[],this.playerByClipId.clear(),this.clipsToDispose.clear(),this.clipErrors.clear(),this.lumaContentRelations.clear(),this.updateTotalDuration()}updateTotalDuration(){let e=0;for(const n of this.tracks)for(const i of n)e=Math.max(e,i.getEnd());const r=this.totalDuration;this.totalDuration=e,r!==this.totalDuration&&this.internalEvents.emit(Ft.DurationChanged,{duration:this.totalDuration})}propagateTimingChanges(e,r){this.timingManager.propagateTimingChanges(e,r)}async resolveClipAutoLength(e){const r=e.getTimingIntent();if(r.length!=="auto")return;const n=this.findClipIndices(e);let i=e.getStart();r.start==="auto"&&n&&(i=K2(n.trackIndex,n.clipIndex,this.tracks));const a=await X2(e.clipConfiguration.asset);e.setResolvedTiming({start:i,length:a}),e.reconfigureAfterRestore(),n&&this.propagateTimingChanges(n.trackIndex,n.clipIndex)}addPlayerToContainer(e,r){this.internalEvents.emit(Fe.PlayerAddedToTrack,{player:r,trackIndex:e})}movePlayerToTrackContainer(e,r,n){this.internalEvents.emit(Fe.PlayerMovedBetweenTracks,{player:e,fromTrackIndex:r,toTrackIndex:n})}createPlayerFromAssetType(e){return G2.create(this,e)}async addPlayer(e,r){for(;this.tracks.length<=e;)this.tracks.push([]);this.tracks[e].push(r),this.internalEvents.emit(Fe.PlayerAddedToTrack,{player:r,trackIndex:e}),await r.load(),this.updateTotalDuration()}selectClip(e,r){this.selectionManager.selectClip(e,r)}focusClip(e,r){this.internalEvents.emit(Fe.ClipFocused,{trackIndex:e,clipIndex:r})}blurClip(){this.internalEvents.emit(Fe.ClipBlurred)}clearSelection(){this.selectionManager.clearSelection()}isClipSelected(e,r){return this.selectionManager.isClipSelected(e,r)}getSelectedClipInfo(){return this.selectionManager.getSelectedClipInfo()}copyClip(e,r){this.selectionManager.copyClip(e,r)}pasteClip(){return this.selectionManager.pasteClip()}hasCopiedClip(){return this.selectionManager.hasCopiedClip()}findClipIndices(e){return this.selectionManager.findClipIndices(e)}getClipAt(e,r){return e>=0&&e<this.tracks.length&&r>=0&&r<this.tracks[e].length?this.tracks[e][r]:null}selectPlayer(e){this.selectionManager.selectPlayer(e)}isPlayerSelected(e){return this.selectionManager.isPlayerSelected(e)}getActivePlayersExcept(e){const r=[];for(const n of this.tracks)for(const i of n)i!==e&&i.isActive()&&r.push(i);return r}showAlignmentGuide(e,r,n,i){this.canvas?.showAlignmentGuide(e,r,n,i)}clearAlignmentGuides(){this.canvas?.clearAlignmentGuides()}moveSelectedClip(e,r){const n=this.getSelectedClipInfo();if(!n)return;const{player:i,trackIndex:a,clipIndex:s}=n,o=this.getResolvedClip(a,s);if(!o)return;const u=structuredClone(o),l=i.calculateMoveOffset(e,r),c=structuredClone(u);c.offset=l,this.setUpdatedClip(i,u,c)}setExportMode(e){this.isExporting=e}isInExportMode(){return this.isExporting}setCanvas(e){this.canvas=e}getCanvas(){return this.canvas}getCanvasZoom(){return this.canvas?.getZoom()??1}getClipViewportRect(e,r){const n=this.getPlayerClip(e,r);if(!n||!n.isActive()||!this.canvas)return null;const i=n.getContainer().getBounds(),a=this.canvas.application.renderer?.resolution??1;return{left:i.x/a,top:i.y/a,width:i.width/a,height:i.height/a}}getCanvasElement(){return this.canvas?.application.canvas??null}getViewportContainer(){if(!this.canvas)throw new Error("Canvas not attached. Viewport container requires Canvas.");return this.canvas.getViewportContainer()}setOutputSize(e,r){const n=new GR(e,r);return this.executeCommand(n)}setOutputFps(e){const r=new UR(e);return this.executeCommand(r)}getOutputFps(){return this.outputSettings.getFps()}setOutputFormat(e){const r=new ZR(e);return this.executeCommand(r)}getOutputFormat(){return this.outputSettings.getFormat()}setOutputDestinations(e){const r=new LR(e);return this.executeCommand(r)}getOutputDestinations(){return this.outputSettings.getDestinations()}setOutputResolution(e){const r=new jR(e);return this.executeCommand(r)}getOutputResolution(){return this.outputSettings.getResolution()}setOutputAspectRatio(e){const r=new $R(e);return this.executeCommand(r)}whenSettled(){return this.playerReconciler.whenSettled()}async captureFrame(e={}){return this.captureStatic(e,r=>this.canvas.captureFrame(r))}async captureViewport(e={}){return this.captureStatic(e,r=>this.canvas.captureViewport(r))}async captureStatic(e,r){if(!this.canvas)throw new Error("captureFrame: no Canvas is attached — Edit must be mounted to a viewport.");e.time!==void 0&&(this.seek(e.time),await ed()),await this.playerReconciler.whenSettled();const n=[];for(const i of this.tracks)for(const a of i)a.isActive()&&n.push(a);try{await Promise.all(n.map(i=>i.prepareStaticRender()));for(const i of n)i.applyPlayheadState();return await r({format:e.format,quality:e.quality})}finally{for(const i of n)i.endStaticRender()}}async setOutput(e){if(e.size&&e.resolution!==void 0)throw new Error("setOutput: `size` and `resolution` are mutually exclusive — pick one. Use `size` for custom dimensions or `resolution` for a preset (preview, mobile, sd, hd, 1080, 4k).");e.size&&await this.setOutputSize(e.size.width,e.size.height),e.resolution!==void 0&&await this.setOutputResolution(e.resolution),e.format!==void 0&&await this.setOutputFormat(e.format),e.fps!==void 0&&await this.setOutputFps(e.fps),e.aspectRatio!==void 0&&await this.setOutputAspectRatio(e.aspectRatio)}getOutputAspectRatio(){return this.outputSettings.getAspectRatio()}getTimelineFonts(){return this.document.getFonts()}getFontMetadata(){return this.fontMetadata}getFontUrlByFamilyAndWeight(e,r){const{baseFontFamily:n}=Dr(e),i=n.toLowerCase();for(const[a,s]of this.fontMetadata)if(s.baseFamilyName.toLowerCase()===i&&s.weight===r)return a;for(const[a,s]of this.fontMetadata)if(s.baseFamilyName.toLowerCase()===i)return a;return null}pruneUnusedFonts(){this.cleanupUnusedFonts()}setTimelineBackground(e){const r=new WR(e);return this.executeCommand(r)}setTimelineBackgroundInternal(e){_R.parse(e),this.backgroundColor=e,this.document.setBackground(e),this.internalEvents.emit(Fe.ViewportSizeChanged,{width:this.size.width,height:this.size.height,backgroundColor:this.backgroundColor}),this.internalEvents.emit(Ft.TimelineBackgroundChanged,{color:e})}getTimelineBackground(){return this.backgroundColor}resolveMergeFields(e){return this.mergeFieldService.resolve(e)}refreshMergeFields(){const e=this.detectMergeFieldBindings(this.mergeFieldService.toSerializedArray());for(const[r,n]of e)n.size>0&&this.document.setClipBindingsForClip(r,n);this.resolve()}getTemplateClip(e,r){const n=this.getPlayerClip(e,r);if(!n)return null;const i=n.getExportableClip();if(!i)return null;const{clipId:a}=n;if(a&&this.document){const s=this.document.getClipBindings(a);if(s)for(const[o,{placeholder:u}]of s)Yi(i,o,u)}return i}getTemplateClipById(e){const r=this.getPlayerByClipId(e);if(!r)return null;const n=r.getExportableClip();if(!n||!this.document)return null;const i=this.document.getClipBindings(e);if(i)for(const[a,{placeholder:s}]of i)Yi(n,a,s);return n}getTemplateClipText(e,r){const n=this.getTemplateClip(e,r);return n?n.asset?.text??null:null}getLumaClipIdForContent(e){for(const[r,n]of this.lumaContentRelations)if(n===e)return r;return null}getContentClipIdForLuma(e){return this.lumaContentRelations.get(e)??null}setLumaContentRelationship(e,r){this.lumaContentRelations.set(e,r)}clearLumaContentRelationship(e){this.lumaContentRelations.delete(e)}getLumaContentRelationship(e){return this.lumaContentRelations.get(e)}normalizeLumaAttachments(){let e=!1;for(let r=0;r<this.tracks.length;r+=1){const n=this.tracks[r];for(const i of n)if(i.playerType===Ee.Luma){const a=this.findBestContentMatch(r,i);if(a){i.clipId&&a.clipId&&this.lumaContentRelations.set(i.clipId,a.clipId);const s=n.indexOf(i);this.document.updateClip(r,s,{start:a.getStart(),length:a.getLength()}),e=!0}}}e&&this.resolve()}findBestContentMatch(e,r){const n=this.tracks[e],i=r.getStart(),a=i+r.getLength();let s=null,o=0;for(const u of n)if(u.playerType!==Ee.Luma){const l=u.getStart(),c=l+u.getLength(),h=H2(i,a,l,c);h>o&&(o=h,s=u)}return s}lastClipClick=null;static DoubleClickThresholdMs=500;setupIntentListeners(){this.internalEvents.on(Fe.CanvasClipClicked,e=>{if(!(this.getSelectedClipInfo()?.player===e.player)){this.selectPlayer(e.player),this.lastClipClick=null;return}const n=performance.now(),i=this.lastClipClick&&n-this.lastClipClick.at<=aa.DoubleClickThresholdMs;this.lastClipClick?.player===e.player&&i?(this.internalEvents.emit(Fe.CanvasClipDoubleClicked,{player:e.player}),this.lastClipClick=null):this.lastClipClick={player:e.player,at:n}}),this.internalEvents.on(Fe.CanvasBackgroundClicked,()=>{this.clearSelection(),this.lastClipClick=null})}getTracks(){return this.tracks}}class s6{constructor(e,r,n,i,a,s){this.clipId=e,this.propertyPath=r,this.fieldName=n,this.previousFieldName=i,this.storedPreviousValue=a,this.storedNewValue=s}name="setMergeField";storedPreviousValue;storedNewValue;storedPreviousBinding;updateDocumentClip(e,r,n){const i=e.getDocument();if(!i)return;const a=i.getClipById(this.clipId);if(!a)return;const s=a.clip;if(n)Yi(s,this.propertyPath,r);else{const u=(typeof r=="string"?r.trim():"").length>0?Number(r):NaN;Yi(s,this.propertyPath,Number.isFinite(u)?u:r)}}async execute(e){if(!e)throw new Error("SetMergeFieldCommand.execute: context is required");const r=e.getMergeFields();if(this.storedPreviousBinding=e.getClipBinding(this.clipId,this.propertyPath),this.fieldName){const n={placeholder:r.createTemplate(this.fieldName),resolvedValue:this.storedNewValue};e.setClipBinding(this.clipId,this.propertyPath,n)}else e.removeClipBinding(this.clipId,this.propertyPath);if(this.fieldName?r.register({name:this.fieldName,defaultValue:this.storedNewValue},{silent:!0}):this.previousFieldName&&r.remove(this.previousFieldName,{silent:!0}),this.fieldName){const n=r.createTemplate(this.fieldName);this.updateDocumentClip(e,n,!0)}else this.updateDocumentClip(e,this.storedNewValue,!1);return e.resolve(),e.emitEvent(Ft.MergeFieldChanged,{fields:r.getAll()}),ue()}async undo(e){if(!e)throw new Error("SetMergeFieldCommand.undo: context is required");const r=e.getMergeFields();return this.storedPreviousBinding?e.setClipBinding(this.clipId,this.propertyPath,this.storedPreviousBinding):e.removeClipBinding(this.clipId,this.propertyPath),this.previousFieldName&&r.register({name:this.previousFieldName,defaultValue:this.storedPreviousValue},{silent:!0}),this.storedPreviousBinding?this.updateDocumentClip(e,this.storedPreviousBinding.placeholder,!0):this.updateDocumentClip(e,this.storedPreviousValue,!1),e.resolve(),e.emitEvent(Ft.MergeFieldChanged,{fields:r.getAll()}),ue()}dispose(){this.storedPreviousBinding=void 0}}function T$(t){if(typeof t!="object"||t===null)return!1;const e=t;return e.type==="text"&&(!e.text||e.text.trim()==="")}function o6(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}function P$(t){const e=t.width??100,r=t.height??100,n=o6(t.background?.color??"#000000"),i=t.background?.opacity??1,a=t.background?.borderRadius??0,s=[`width="${e}"`,`height="${r}"`,`fill="${n}"`];if(i!==1&&s.push(`fill-opacity="${i}"`),a>0&&s.push(`rx="${a}"`,`ry="${a}"`),t.stroke?.width&&t.stroke.width>0){const o=o6(t.stroke.color??"#000000");s.push(`stroke="${o}"`),s.push(`stroke-width="${t.stroke.width}"`)}return`<svg viewBox="0 0 ${e} ${r}" xmlns="http://www.w3.org/2000/svg"><rect ${s.join(" ")}/></svg>`}function M$(t){const e=t.asset,r=P$(e),n={...t,asset:{type:"svg",src:r}};return e.width!==void 0&&n.width===void 0&&(n.width=e.width),e.height!==void 0&&n.height===void 0&&(n.height=e.height),n}class z$ extends aa{isUpdatingMergeFields=!1;get mergeFields(){return this.mergeFieldService}applyMergeField(e,r,n,i,a){const s=this.getResolvedClipById(e),o=s?Hl(s,r):null,u=a??(o!=null?String(o):""),l=this.getTemplateClipById(e),c=l?Hl(l,r):null,h=typeof c=="string"?this.mergeFieldService.extractFieldName(c):null,p=new s6(e,r,n,h,u,i);return this.executeCommand(p)}removeMergeField(e,r,n){const i=this.getMergeFieldForProperty(e,r);if(!i)return Promise.resolve(re("No merge field on this property"));const a=new s6(e,r,null,i,n,n);return this.executeCommand(a)}getMergeFieldForProperty(e,r){const n=this.getTemplateClipById(e);if(!n)return null;const i=Hl(n,r);return typeof i=="string"?this.mergeFieldService.extractFieldName(i):null}updateMergeFieldValueLive(e,r){if(!this.isUpdatingMergeFields){this.isUpdatingMergeFields=!0;try{const n=this.mergeFieldService.get(e);if(!n)return;this.mergeFieldService.register({...n,defaultValue:r},{silent:!0});for(const[,i]of this.getPlayerMap())this.updateMergeFieldBindings(i,e,r);this.resolve(),this.getInternalEvents().emit(Ft.TimelineUpdated,{current:this.getEdit()})}finally{this.isUpdatingMergeFields=!1}}}isSrcMergeField(e){for(const[r,n]of this.getPlayerMap())if(n.clipId){const i=this.getTemplateClipById(r);if(i){const a=i.asset?.type;if(a==="image"||a==="video"||a==="audio"){const o=this.getMergeFieldUsage(i,e);if(o.used&&o.isSrcField)return!0}}}return!1}validateMergeFieldValue(e,r){const n=this.getDocument();if(!n)return null;const i=this.mergeFieldService.get(e);if(!i)return null;const a=i.defaultValue;this.mergeFieldService.register({...i,defaultValue:r},{silent:!0});try{for(const s of n.getClipIdsWithBindings()){const o=n.getClipBindings(s);if(o&&this.clipUsesField(o,e)){const u=n.getClipById(s);if(u){const l=structuredClone(u.clip);for(const[h,p]of o){const g=this.mergeFieldService.resolve(p.placeholder);Yi(l,h,g)}delete l.id;const c=Wa.safeParse(l);if(!c.success)return c.error.issues[0]?.message??"Invalid value"}}}return null}finally{this.mergeFieldService.register({...i,defaultValue:a},{silent:!0})}}isValueCompatibleWithClipProperty(e,r,n){const i=this.getResolvedClipById(e);if(!i)return!0;const a=structuredClone(i);return Yi(a,r,n),delete a.id,Wa.safeParse(a).success}clipUsesField(e,r){for(const[,n]of e)if(this.mergeFieldService.extractFieldName(n.placeholder)===r)return!0;return!1}getMergeFieldClipLocation(e){const r=this.getDocument();if(!r)return null;for(const n of r.getClipIdsWithBindings()){const i=r.getClipBindings(n);if(i&&this.clipUsesField(i,e))return this.getClipPositionById(n)}return null}async deleteMergeFieldGlobally(e){const r=this.mergeFieldService.get(e);if(!r)return;const n=this.mergeFieldService.createTemplate(e),i=r.defaultValue;for(const[s]of this.getPlayerMap()){const o=this.getTemplateClipById(s);o&&await this.restoreMergeFieldInClip(s,o,n,i)}this.mergeFieldService.remove(e)||this.getInternalEvents().emit(Ft.MergeFieldChanged,{fields:this.mergeFieldService.getAll()})}async convertAllTextAssets(){const e=this.getDocument();if(!e)return console.error("No document available for conversion"),{richText:0,svg:0};const r=JSON.parse(JSON.stringify(e.toJSON()));let n=0,i=0;const a=r.timeline?.tracks;if(a){for(const s of a)if(s.clips)for(let o=0;o<s.clips.length;o+=1){const u=s.clips[o],l=u.asset;l?.type==="text"&&(T$(l)?(s.clips[o]=M$(u),i+=1):(s.clips[o]=this.convertTextClipToRichText(u),n+=1))}}return console.log("CONVERTED TEMPLATE - Copy the JSON below:"),console.log(JSON.stringify(r,null," ")),{richText:n,svg:i}}mapVerticalAlign(e){return e==="center"?"middle":e==="top"||e==="bottom"?e:"middle"}convertTextClipToRichText(e){const r=e.asset,n=r.font?.family??"Open Sans",{fontWeight:i}=Dr(n),a={family:n,size:typeof r.font?.size=="string"?Number(r.font.size):r.font?.size??32,weight:r.font?.weight??i,color:r.font?.color??"#ffffff",opacity:r.font?.opacity??1};r.stroke?.width&&r.stroke.width>0&&(a.stroke={width:r.stroke.width,color:r.stroke.color??"#000000",opacity:1});const s={letterSpacing:0,wordSpacing:0,lineHeight:r.font?.lineHeight??1.2,textTransform:"none",textDecoration:"none"},o={type:"rich-text",text:r.text??"",font:a,style:s,align:{horizontal:r.alignment?.horizontal??"center",vertical:this.mapVerticalAlign(r.alignment?.vertical)}};r.background&&(o.background={color:r.background.color,opacity:r.background.opacity??1,borderRadius:r.background.borderRadius??0},r.background.padding&&(o.padding=r.background.padding)),r.animation&&(o.animation={preset:r.animation.preset,duration:r.animation.duration}),r.ellipsis!==void 0&&console.warn("TextAsset ellipsis property not supported in RichTextAsset, value dropped");const u={...e,asset:o};return r.width!==void 0&&u.width===void 0&&(u.width=r.width),r.height!==void 0&&u.height===void 0&&(u.height=r.height),u}updateMergeFieldBindings(e,r,n){if(!e)return;const{clipId:i}=e;if(!i)return;const a=this.getDocument();if(!a)return;const s=a.getClipBindings(i);if(!s)return;const o=a.getClipById(i);for(const[u,l]of s)if(this.mergeFieldService.extractFieldName(l.placeholder)===r){const h=this.mergeFieldService.resolve(l.placeholder),p={placeholder:l.placeholder,resolvedValue:h};if(a.setClipBinding(i,u,p),o){const g=u.split(".").pop()??"",y=g==="text"||g==="html",v=(typeof h=="string"?h.trim():"").length>0?Number(h):NaN,C=!y&&Number.isFinite(v)?v:h;Yi(o.clip,u,C)}}}getMergeFieldUsage(e,r,n=""){if(!e||typeof e!="object")return{used:!1,isSrcField:!1};for(const[i,a]of Object.entries(e)){const s=n?`${n}.${i}`:i;if(typeof a=="string"){if(this.mergeFieldService.extractFieldName(a)===r)return{used:!0,isSrcField:s==="asset.src"||s.endsWith(".src")}}else if(typeof a=="object"&&a!==null){const o=this.getMergeFieldUsage(a,r,s);if(o.used)return o}}return{used:!1,isSrcField:!1}}async restoreMergeFieldInClip(e,r,n,i,a=""){if(!(!r||typeof r!="object"))for(const s of Object.keys(r)){const o=r[s],u=a?`${a}.${s}`:s;if(typeof o=="string"){const l=this.mergeFieldService.extractFieldName(o),c=this.mergeFieldService.extractFieldName(n);if(l&&c&&l===c){const h=o.replace(new RegExp(`\\{\\{\\s*${l}\\s*\\}\\}`,"gi"),i);await this.removeMergeField(e,u,h)}}else typeof o=="object"&&o!==null&&await this.restoreMergeFieldInClip(e,o,n,i,u)}}}var Tt,Xi=new Array(128).fill(void 0);Xi.push(void 0,null,!0,!1);var yo=Xi.length;function Ir(t){yo===Xi.length&&Xi.push(Xi.length+1);const e=yo;return yo=Xi[e],Xi[e]=t,e}function gr(t){return Xi[t]}function V$(t){t<132||(Xi[t]=yo,yo=t)}function Ki(t){const e=gr(t);return V$(t),e}var vo=0,bo=null;function sc(){return(bo===null||bo.byteLength===0)&&(bo=new Uint8Array(Tt.memory.buffer)),bo}var oc=typeof TextEncoder<"u"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},O$=typeof oc.encodeInto=="function"?function(t,e){return oc.encodeInto(t,e)}:function(t,e){const r=oc.encode(t);return e.set(r),{read:t.length,written:r.length}};function bd(t,e,r){if(r===void 0){const o=oc.encode(t),u=e(o.length,1)>>>0;return sc().subarray(u,u+o.length).set(o),vo=o.length,u}let n=t.length,i=e(n,1)>>>0;const a=sc();let s=0;for(;s<n;s++){const o=t.charCodeAt(s);if(o>127)break;a[i+s]=o}if(s!==n){s!==0&&(t=t.slice(s)),i=r(i,n,n=s+t.length*3,1)>>>0;const o=sc().subarray(i+s,i+n),u=O$(t,o);s+=u.written,i=r(i,n,s,1)>>>0}return vo=s,i}function wd(t){return t==null}var wo=null;function Xe(){return(wo===null||wo.byteLength===0)&&(wo=new Int32Array(Tt.memory.buffer)),wo}var u6=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&u6.decode();function uc(t,e){return t=t>>>0,u6.decode(sc().subarray(t,t+e))}function R$(t,e){if(!(t instanceof e))throw new Error(`expected instance of ${e.name}`);return t.ptr}function $$(t,e){try{return t.apply(this,e)}catch(r){Tt.__wbindgen_exn_store(Ir(r))}}var l6=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(t=>Tt.__wbg_bbox_free(t>>>0)),_d=class z6{static __wrap(e){e=e>>>0;const r=Object.create(z6.prototype);return r.__wbg_ptr=e,l6.register(r,r.__wbg_ptr,r),r}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,l6.unregister(this),e}free(){const e=this.__destroy_into_raw();Tt.__wbg_bbox_free(e)}get x(){return Tt.__wbg_get_bbox_x(this.__wbg_ptr)}set x(e){Tt.__wbg_set_bbox_x(this.__wbg_ptr,e)}get y(){return Tt.__wbg_get_bbox_y(this.__wbg_ptr)}set y(e){Tt.__wbg_set_bbox_y(this.__wbg_ptr,e)}get width(){return Tt.__wbg_get_bbox_width(this.__wbg_ptr)}set width(e){Tt.__wbg_set_bbox_width(this.__wbg_ptr,e)}get height(){return Tt.__wbg_get_bbox_height(this.__wbg_ptr)}set height(e){Tt.__wbg_set_bbox_height(this.__wbg_ptr,e)}},c6=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(t=>Tt.__wbg_renderedimage_free(t>>>0)),L$=class V6{static __wrap(e){e=e>>>0;const r=Object.create(V6.prototype);return r.__wbg_ptr=e,c6.register(r,r.__wbg_ptr,r),r}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,c6.unregister(this),e}free(){const e=this.__destroy_into_raw();Tt.__wbg_renderedimage_free(e)}get width(){return Tt.renderedimage_width(this.__wbg_ptr)>>>0}get height(){return Tt.renderedimage_height(this.__wbg_ptr)>>>0}asPng(){try{const i=Tt.__wbindgen_add_to_stack_pointer(-16);Tt.renderedimage_asPng(i,this.__wbg_ptr);var e=Xe()[i/4+0],r=Xe()[i/4+1],n=Xe()[i/4+2];if(n)throw Ki(r);return Ki(e)}finally{Tt.__wbindgen_add_to_stack_pointer(16)}}get pixels(){const e=Tt.renderedimage_pixels(this.__wbg_ptr);return Ki(e)}},Z$=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(t=>Tt.__wbg_resvg_free(t>>>0)),U$=class{__destroy_into_raw(){const t=this.__wbg_ptr;return this.__wbg_ptr=0,Z$.unregister(this),t}free(){const t=this.__destroy_into_raw();Tt.__wbg_resvg_free(t)}constructor(t,e,r){try{const u=Tt.__wbindgen_add_to_stack_pointer(-16);var n=wd(e)?0:bd(e,Tt.__wbindgen_malloc,Tt.__wbindgen_realloc),i=vo;Tt.resvg_new(u,Ir(t),n,i,wd(r)?0:Ir(r));var a=Xe()[u/4+0],s=Xe()[u/4+1],o=Xe()[u/4+2];if(o)throw Ki(s);return this.__wbg_ptr=a>>>0,this}finally{Tt.__wbindgen_add_to_stack_pointer(16)}}get width(){return Tt.resvg_width(this.__wbg_ptr)}get height(){return Tt.resvg_height(this.__wbg_ptr)}render(){try{const n=Tt.__wbindgen_add_to_stack_pointer(-16);Tt.resvg_render(n,this.__wbg_ptr);var t=Xe()[n/4+0],e=Xe()[n/4+1],r=Xe()[n/4+2];if(r)throw Ki(e);return L$.__wrap(t)}finally{Tt.__wbindgen_add_to_stack_pointer(16)}}toString(){let t,e;try{const i=Tt.__wbindgen_add_to_stack_pointer(-16);Tt.resvg_toString(i,this.__wbg_ptr);var r=Xe()[i/4+0],n=Xe()[i/4+1];return t=r,e=n,uc(r,n)}finally{Tt.__wbindgen_add_to_stack_pointer(16),Tt.__wbindgen_free(t,e,1)}}innerBBox(){const t=Tt.resvg_innerBBox(this.__wbg_ptr);return t===0?void 0:_d.__wrap(t)}getBBox(){const t=Tt.resvg_getBBox(this.__wbg_ptr);return t===0?void 0:_d.__wrap(t)}cropByBBox(t){R$(t,_d),Tt.resvg_cropByBBox(this.__wbg_ptr,t.__wbg_ptr)}imagesToResolve(){try{const n=Tt.__wbindgen_add_to_stack_pointer(-16);Tt.resvg_imagesToResolve(n,this.__wbg_ptr);var t=Xe()[n/4+0],e=Xe()[n/4+1],r=Xe()[n/4+2];if(r)throw Ki(e);return Ki(t)}finally{Tt.__wbindgen_add_to_stack_pointer(16)}}resolveImage(t,e){try{const i=Tt.__wbindgen_add_to_stack_pointer(-16),a=bd(t,Tt.__wbindgen_malloc,Tt.__wbindgen_realloc),s=vo;Tt.resvg_resolveImage(i,this.__wbg_ptr,a,s,Ir(e));var r=Xe()[i/4+0],n=Xe()[i/4+1];if(n)throw Ki(r)}finally{Tt.__wbindgen_add_to_stack_pointer(16)}}};async function j$(t,e){if(typeof Response=="function"&&t instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(t,e)}catch(n){if(t.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",n);else throw n}const r=await t.arrayBuffer();return await WebAssembly.instantiate(r,e)}else{const r=await WebAssembly.instantiate(t,e);return r instanceof WebAssembly.Instance?{instance:r,module:t}:r}}function G$(){const t={};return t.wbg={},t.wbg.__wbg_new_28c511d9baebfa89=function(e,r){const n=new Error(uc(e,r));return Ir(n)},t.wbg.__wbindgen_memory=function(){const e=Tt.memory;return Ir(e)},t.wbg.__wbg_buffer_12d079cc21e14bdb=function(e){const r=gr(e).buffer;return Ir(r)},t.wbg.__wbg_newwithbyteoffsetandlength_aa4a17c33a06e5cb=function(e,r,n){const i=new Uint8Array(gr(e),r>>>0,n>>>0);return Ir(i)},t.wbg.__wbindgen_object_drop_ref=function(e){Ki(e)},t.wbg.__wbg_new_63b92bc8671ed464=function(e){const r=new Uint8Array(gr(e));return Ir(r)},t.wbg.__wbg_values_839f3396d5aac002=function(e){const r=gr(e).values();return Ir(r)},t.wbg.__wbg_next_196c84450b364254=function(){return $$(function(e){const r=gr(e).next();return Ir(r)},arguments)},t.wbg.__wbg_done_298b57d23c0fc80c=function(e){return gr(e).done},t.wbg.__wbg_value_d93c65011f51a456=function(e){const r=gr(e).value;return Ir(r)},t.wbg.__wbg_instanceof_Uint8Array_2b3bbecd033d19f6=function(e){let r;try{r=gr(e)instanceof Uint8Array}catch{r=!1}return r},t.wbg.__wbindgen_string_get=function(e,r){const n=gr(r),i=typeof n=="string"?n:void 0;var a=wd(i)?0:bd(i,Tt.__wbindgen_malloc,Tt.__wbindgen_realloc),s=vo;Xe()[e/4+1]=s,Xe()[e/4+0]=a},t.wbg.__wbg_new_16b304a2cfa7ff4a=function(){const e=new Array;return Ir(e)},t.wbg.__wbindgen_string_new=function(e,r){const n=uc(e,r);return Ir(n)},t.wbg.__wbg_push_a5b05aedc7234f9f=function(e,r){return gr(e).push(gr(r))},t.wbg.__wbg_length_c20a40f15020d68a=function(e){return gr(e).length},t.wbg.__wbg_set_a47bac70306a19a7=function(e,r,n){gr(e).set(gr(r),n>>>0)},t.wbg.__wbindgen_throw=function(e,r){throw new Error(uc(e,r))},t}function W$(t,e){return Tt=t.exports,f6.__wbindgen_wasm_module=e,wo=null,bo=null,Tt}async function f6(t){if(Tt!==void 0)return Tt;typeof t>"u"&&(t=new URL("index_bg.wasm",void 0));const e=G$();(typeof t=="string"||typeof Request=="function"&&t instanceof Request||typeof URL=="function"&&t instanceof URL)&&(t=fetch(t));const{instance:r,module:n}=await j$(await t,e);return W$(r,n)}var H$=f6,xd=!1,Y$=async t=>{if(xd)throw new Error("Already initialized. The `initWasm()` function can be used only once.");await H$(await t),xd=!0},q$=class extends U${constructor(t,e){if(!xd)throw new Error("Wasm has not been initialized. Call `initWasm()` function.");const r=e?.font;if(r&&X$(r)){const n={...e,font:{...r,fontBuffers:void 0}};super(t,JSON.stringify(n),r.fontBuffers)}else super(t,JSON.stringify(e))}};function X$(t){return Object.prototype.hasOwnProperty.call(t,"fontBuffers")}const K$=Object.freeze(Object.defineProperty({__proto__:null,Resvg:q$,initWasm:Y$},Symbol.toStringTag,{value:"Module"})),lc=Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"}));var J$=Ze({"node_modules/.pnpm/harfbuzzjs@0.4.12/node_modules/harfbuzzjs/hb.js"(t,e){var r=(()=>{var n=typeof document<"u"?document.currentScript?.src:void 0;return async function(i={}){var a,s=i,o=typeof window=="object",u=typeof WorkerGlobalScope<"u",l=typeof process=="object"&&process.versions?.node&&process.type!="renderer",c=(B,mt)=>{throw mt};typeof __filename<"u"?n=__filename:u&&(n=self.location.href);var h="";function p(B){return s.locateFile?s.locateFile(B,h):h+B}var g,y;if(l){var E=m_("fs");h=__dirname+"/",y=B=>{B=A(B)?new URL(B):B;var mt=E.readFileSync(B);return mt},g=async(B,mt=!0)=>{B=A(B)?new URL(B):B;var Xt=E.readFileSync(B,mt?void 0:"utf8");return Xt},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),c=(B,mt)=>{throw process.exitCode=B,mt}}else if(o||u){try{h=new URL(".",n).href}catch{}u&&(y=B=>{var mt=new XMLHttpRequest;return mt.open("GET",B,!1),mt.responseType="arraybuffer",mt.send(null),new Uint8Array(mt.response)}),g=async B=>{if(A(B))return new Promise((Xt,de)=>{var ae=new XMLHttpRequest;ae.open("GET",B,!0),ae.responseType="arraybuffer",ae.onload=()=>{if(ae.status==200||ae.status==0&&ae.response){Xt(ae.response);return}de(ae.status)},ae.onerror=de,ae.send(null)});var mt=await fetch(B,{credentials:"same-origin"});if(mt.ok)return mt.arrayBuffer();throw new Error(mt.status+" : "+mt.url)}}console.log.bind(console);var v=console.error.bind(console),C,I=!1,x,A=B=>B.startsWith("file://"),S,w,Z,T,L=!1;function N(){var B=Z.buffer;s.HEAP8=new Int8Array(B),s.HEAPU8=T=new Uint8Array(B),s.HEAP32=new Int32Array(B),s.HEAPU32=new Uint32Array(B),s.HEAPF32=new Float32Array(B),new BigInt64Array(B),new BigUint64Array(B)}function G(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)W(s.preRun.shift());ce(tt)}function z(){L=!0,lr.__wasm_call_ctors()}function rt(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)U(s.postRun.shift());ce(H)}var X=0,ot=null;function pt(B){X++,s.monitorRunDependencies?.(X)}function dt(B){if(X--,s.monitorRunDependencies?.(X),X==0&&ot){var mt=ot;ot=null,mt()}}function j(B){s.onAbort?.(B),B="Aborted("+B+")",v(B),I=!0,B+=". Build with -sASSERTIONS for more info.";var mt=new WebAssembly.RuntimeError(B);throw w?.(mt),mt}var J;function it(){return p("hb.wasm")}function kt(B){if(B==J&&C)return new Uint8Array(C);if(y)return y(B);throw"both async and sync fetching of the wasm failed"}async function Lt(B){if(!C)try{var mt=await g(B);return new Uint8Array(mt)}catch{}return kt(B)}async function Gt(B,mt){try{var Xt=await Lt(B),de=await WebAssembly.instantiate(Xt,mt);return de}catch(ae){v(`failed to asynchronously prepare wasm: ${ae}`),j(ae)}}async function le(B,mt,Xt){if(!B&&!A(mt)&&!l)try{var de=fetch(mt,{credentials:"same-origin"}),ae=await WebAssembly.instantiateStreaming(de,Xt);return ae}catch(Le){v(`wasm streaming compile failed: ${Le}`),v("falling back to ArrayBuffer instantiation")}return Gt(mt,Xt)}function fe(){return{env:$r,wasi_snapshot_preview1:$r}}async function ie(){function B(Le,Lr){return lr=Le.exports,s.wasmExports=lr,Z=lr.memory,s.wasmMemory=Z,N(),Yt=lr.__indirect_function_table,vr(lr),dt(),lr}pt();function mt(Le){return B(Le.instance)}var Xt=fe();if(s.instantiateWasm)return new Promise((Le,Lr)=>{s.instantiateWasm(Xt,(li,ua)=>{Le(B(li))})});J??(J=it());var de=await le(C,J,Xt),ae=mt(de);return ae}class je{constructor(mt){zt(this,"name","ExitStatus"),this.message=`Program terminated with exit(${mt})`,this.status=mt}}var ce=B=>{for(;B.length>0;)B.shift()(s)},H=[],U=B=>H.push(B),tt=[],W=B=>tt.push(B),yt=!0,At=()=>j(""),vt=0,Et=()=>{yt=!1,vt=0},Pt={},K=B=>{if(B instanceof je||B=="unwind")return x;c(1,B)},at=()=>yt||vt>0,wt=B=>{x=B,at()||(s.onExit?.(B),I=!0),c(B,new je(B))},nt=(B,mt)=>{x=B,wt(B)},Ht=nt,Dt=()=>{if(!at())try{Ht(x)}catch(B){K(B)}},Nt=B=>{if(!I)try{B(),Dt()}catch(mt){K(mt)}},Ct=()=>performance.now(),oe=(B,mt)=>{if(Pt[B]&&(clearTimeout(Pt[B].id),delete Pt[B]),!mt)return 0;var Xt=setTimeout(()=>{delete Pt[B],Nt(()=>ri(B,Ct()))},mt);return Pt[B]={id:Xt,timeout_ms:mt},0},he=()=>2147483648,gt=(B,mt)=>Math.ceil(B/mt)*mt,Ve=B=>{var mt=Z.buffer.byteLength,Xt=(B-mt+65535)/65536|0;try{return Z.grow(Xt),N(),1}catch{}},ar=B=>{var mt=T.length;B>>>=0;var Xt=he();if(B>Xt)return!1;for(var de=1;de<=4;de*=2){var ae=mt*(1+.2/de);ae=Math.min(ae,B+100663296);var Le=Math.min(Xt,gt(Math.max(B,ae),65536)),Lr=Ve(Le);if(Lr)return!0}return!1},we=B=>{const mt=B.length;return[mt%128|128,mt>>7,...B]},Rr={i:127,p:127,j:126,f:125,d:124,e:111},Re=B=>we(Array.from(B,mt=>{var Xt=Rr[mt];return Xt})),te=(B,mt)=>{var Xt=Uint8Array.of(0,97,115,109,1,0,0,0,1,...we([1,96,...Re(mt.slice(1)),...Re(mt[0]==="v"?"":mt[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),de=new WebAssembly.Module(Xt),ae=new WebAssembly.Instance(de,{e:{f:B}}),Le=ae.exports.f;return Le},Yt,ur=B=>Yt.get(B),yr=(B,mt)=>{if(Ke)for(var Xt=B;Xt<B+mt;Xt++){var de=ur(Xt);de&&Ke.set(de,Xt)}},Ke,De=B=>(Ke||(Ke=new WeakMap,yr(0,Yt.length)),Ke.get(B)||0),Me=[],sa=()=>Me.length?Me.pop():Yt.grow(1),Ji=(B,mt)=>Yt.set(B,mt),Qi=(B,mt)=>{var Xt=De(B);if(Xt)return Xt;var de=sa();try{Ji(de,B)}catch(Le){if(!(Le instanceof TypeError))throw Le;var ae=te(B,mt);Ji(de,ae)}return Ke.set(B,de),de},Fn=B=>{Ke.delete(ur(B)),Ji(B,null),Me.push(B)};s.noExitRuntime&&(yt=s.noExitRuntime),s.print&&s.print,s.printErr&&(v=s.printErr),s.wasmBinary&&(C=s.wasmBinary),s.arguments&&s.arguments,s.thisProgram&&s.thisProgram,s.wasmMemory=Z,s.wasmExports=lr,s.addFunction=Qi,s.removeFunction=Fn;var ri;function vr(B){s._hb_blob_create=B.hb_blob_create,s._hb_blob_destroy=B.hb_blob_destroy,s._hb_blob_get_length=B.hb_blob_get_length,s._hb_blob_get_data=B.hb_blob_get_data,s._hb_buffer_serialize_glyphs=B.hb_buffer_serialize_glyphs,s._hb_buffer_create=B.hb_buffer_create,s._hb_buffer_destroy=B.hb_buffer_destroy,s._hb_buffer_get_content_type=B.hb_buffer_get_content_type,s._hb_buffer_set_direction=B.hb_buffer_set_direction,s._hb_buffer_set_script=B.hb_buffer_set_script,s._hb_buffer_set_language=B.hb_buffer_set_language,s._hb_buffer_set_flags=B.hb_buffer_set_flags,s._hb_buffer_set_cluster_level=B.hb_buffer_set_cluster_level,s._hb_buffer_get_length=B.hb_buffer_get_length,s._hb_buffer_get_glyph_infos=B.hb_buffer_get_glyph_infos,s._hb_buffer_get_glyph_positions=B.hb_buffer_get_glyph_positions,s._hb_glyph_info_get_glyph_flags=B.hb_glyph_info_get_glyph_flags,s._hb_buffer_guess_segment_properties=B.hb_buffer_guess_segment_properties,s._hb_buffer_add_utf8=B.hb_buffer_add_utf8,s._hb_buffer_add_utf16=B.hb_buffer_add_utf16,s._hb_buffer_set_message_func=B.hb_buffer_set_message_func,s._hb_language_from_string=B.hb_language_from_string,s._hb_script_from_string=B.hb_script_from_string,s._hb_version=B.hb_version,s._hb_version_string=B.hb_version_string,s._hb_feature_from_string=B.hb_feature_from_string,s._malloc=B.malloc,s._free=B.free,s._hb_draw_funcs_set_move_to_func=B.hb_draw_funcs_set_move_to_func,s._hb_draw_funcs_set_line_to_func=B.hb_draw_funcs_set_line_to_func,s._hb_draw_funcs_set_quadratic_to_func=B.hb_draw_funcs_set_quadratic_to_func,s._hb_draw_funcs_set_cubic_to_func=B.hb_draw_funcs_set_cubic_to_func,s._hb_draw_funcs_set_close_path_func=B.hb_draw_funcs_set_close_path_func,s._hb_draw_funcs_create=B.hb_draw_funcs_create,s._hb_draw_funcs_destroy=B.hb_draw_funcs_destroy,s._hb_face_create=B.hb_face_create,s._hb_face_destroy=B.hb_face_destroy,s._hb_face_reference_table=B.hb_face_reference_table,s._hb_face_get_upem=B.hb_face_get_upem,s._hb_face_collect_unicodes=B.hb_face_collect_unicodes,s._hb_font_draw_glyph=B.hb_font_draw_glyph,s._hb_font_glyph_to_string=B.hb_font_glyph_to_string,s._hb_font_create=B.hb_font_create,s._hb_font_set_variations=B.hb_font_set_variations,s._hb_font_destroy=B.hb_font_destroy,s._hb_font_set_scale=B.hb_font_set_scale,s._hb_set_create=B.hb_set_create,s._hb_set_destroy=B.hb_set_destroy,s._hb_ot_var_get_axis_infos=B.hb_ot_var_get_axis_infos,s._hb_set_get_population=B.hb_set_get_population,s._hb_set_next_many=B.hb_set_next_many,s._hb_shape=B.hb_shape,ri=B._emscripten_timeout}var $r={_abort_js:At,_emscripten_runtime_keepalive_clear:Et,_setitimer_js:oe,emscripten_resize_heap:ar,proc_exit:wt},lr=await ie();function tn(){if(X>0){ot=tn;return}if(G(),X>0){ot=tn;return}function B(){s.calledRun=!0,!I&&(z(),S?.(s),s.onRuntimeInitialized?.(),rt())}s.setStatus?(s.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>s.setStatus(""),1),B()},1)):B()}function oa(){if(s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.shift()()}return oa(),tn(),L?a=s:a=new Promise((B,mt)=>{S=B,w=mt}),a}})();typeof t=="object"&&typeof e=="object"?(e.exports=r,e.exports.default=r):typeof define=="function"&&define.amd&&define([],()=>r)}});const Q$=J$(),tL=Object.freeze(Object.defineProperty({__proto__:null,default:Q$},Symbol.toStringTag,{value:"Module"}));var eL=Ze({"node_modules/.pnpm/harfbuzzjs@0.4.12/node_modules/harfbuzzjs/hbjs.js"(t,e){function r(n){var i=n.wasmExports,a=new TextDecoder("utf8");let s=n.addFunction,o=n.removeFunction;var u=s(function(j){i.free(j)},"vi"),l=2,c=-1,h=2,p=0,g=1,y=2;function E(j){return(j.charCodeAt(0)&255)<<24|(j.charCodeAt(1)&255)<<16|(j.charCodeAt(2)&255)<<8|(j.charCodeAt(3)&255)<<0}var v=E("JSON"),C=4;function I(j){return[String.fromCharCode(j>>24&255),String.fromCharCode(j>>16&255),String.fromCharCode(j>>8&255),String.fromCharCode(j>>0&255)].join("")}function x(j){return j=="BOT"?1:j=="EOT"?2:j=="PRESERVE_DEFAULT_IGNORABLES"?4:j=="REMOVE_DEFAULT_IGNORABLES"?8:j=="DO_NOT_INSERT_DOTTED_CIRCLE"?16:j=="PRODUCE_UNSAFE_TO_CONCAT"?64:0}function A(j){var J=i.malloc(j.byteLength);n.HEAPU8.set(new Uint8Array(j),J);var it=i.hb_blob_create(J,j.byteLength,l,J,u);return{ptr:it,destroy:function(){i.hb_blob_destroy(it)}}}function S(j){const J=i.hb_set_get_population(j),it=i.malloc(J<<2),kt=it>>2,Lt=n.HEAPU32.subarray(kt,kt+J);return n.HEAPU32.set(Lt,kt),i.hb_set_next_many(j,c,it,J),Lt}function w(j,J){var it=i.hb_face_create(j.ptr,J);const kt=i.hb_face_get_upem(it);return{ptr:it,upem:kt,reference_table:function(Lt){var Gt=i.hb_face_reference_table(it,E(Lt)),le=i.hb_blob_get_length(Gt);if(le){var fe=i.hb_blob_get_data(Gt,null),ie=n.HEAPU8.subarray(fe,fe+le);return ie}},getAxisInfos:function(){var Lt=i.malloc(2048),Gt=i.malloc(4);n.HEAPU32[Gt/4]=64,i.hb_ot_var_get_axis_infos(it,0,Gt,Lt);var le={};return Array.from({length:n.HEAPU32[Gt/4]}).forEach(function(fe,ie){le[I(n.HEAPU32[Lt/4+ie*8+1])]={min:n.HEAPF32[Lt/4+ie*8+4],default:n.HEAPF32[Lt/4+ie*8+5],max:n.HEAPF32[Lt/4+ie*8+6]}}),i.free(Gt),i.free(Lt),le},collectUnicodes:function(){var Lt=i.hb_set_create();i.hb_face_collect_unicodes(it,Lt);var Gt=S(Lt);return i.hb_set_destroy(Lt),Gt},destroy:function(){i.hb_face_destroy(it)}}}var Z="",T=256,L=i.malloc(T);function N(j){var J=i.hb_font_create(j.ptr),it=null,kt=null,Lt=null,Gt=null,le=null,fe=null;function ie(ce){if(!it){var H=function(At,vt,Et,Pt,K,at){Z+=`M${Pt},${K}`},U=function(At,vt,Et,Pt,K,at){Z+=`L${Pt},${K}`},tt=function(At,vt,Et,Pt,K,at,wt,nt,Ht,Dt){Z+=`C${Pt},${K} ${at},${wt} ${nt},${Ht}`},W=function(At,vt,Et,Pt,K,at,wt,nt){Z+=`Q${Pt},${K} ${at},${wt}`},yt=function(At,vt,Et,Pt){Z+="Z"};kt=s(H,"viiiffi"),Lt=s(U,"viiiffi"),Gt=s(tt,"viiiffffffi"),le=s(W,"viiiffffi"),fe=s(yt,"viiii"),it=i.hb_draw_funcs_create(),i.hb_draw_funcs_set_move_to_func(it,kt,0,0),i.hb_draw_funcs_set_line_to_func(it,Lt,0,0),i.hb_draw_funcs_set_cubic_to_func(it,Gt,0,0),i.hb_draw_funcs_set_quadratic_to_func(it,le,0,0),i.hb_draw_funcs_set_close_path_func(it,fe,0,0)}return Z="",i.hb_font_draw_glyph(J,ce,it,0),Z}function je(ce){i.hb_font_glyph_to_string(J,ce,L,T);var H=n.HEAPU8.subarray(L,L+T);return a.decode(H.slice(0,H.indexOf(0)))}return{ptr:J,glyphName:je,glyphToPath:ie,glyphToJson:function(ce){var H=ie(ce);return H.replace(/([MLQCZ])/g,"|$1 ").split("|").filter(function(U){return U.length}).map(function(U){var tt=U.split(/[ ,]/g);return{type:tt[0],values:tt.slice(1).filter(function(W){return W.length}).map(function(W){return+W})}})},setScale:function(ce,H){i.hb_font_set_scale(J,ce,H)},setVariations:function(ce){var H=Object.entries(ce),U=i.malloc(8*H.length);H.forEach(function(tt,W){n.HEAPU32[U/4+W*2+0]=E(tt[0]),n.HEAPF32[U/4+W*2+1]=tt[1]}),i.hb_font_set_variations(J,U,H.length),i.free(U)},destroy:function(){i.hb_font_destroy(J),it&&(i.hb_draw_funcs_destroy(it),it=null,o(kt),o(Lt),o(Gt),o(le),o(fe))}}}function G(j){var J=i.malloc(j.length+1);for(let it=0;it<j.length;++it){const kt=j.charCodeAt(it);if(kt>127)throw new Error("Expected ASCII text");n.HEAPU8[J+it]=kt}return n.HEAPU8[J+j.length]=0,{ptr:J,length:j.length,free:function(){i.free(J)}}}function z(j){const J=i.malloc(j.length*2),it=new Uint16Array(n.wasmMemory.buffer,J,j.length);for(let kt=0;kt<it.length;++kt)it[kt]=j.charCodeAt(kt);return{ptr:J,length:it.length,free:function(){i.free(J)}}}function rt(){var j=i.hb_buffer_create();return{ptr:j,addText:function(J){const it=z(J);i.hb_buffer_add_utf16(j,it.ptr,it.length,0,it.length),it.free()},guessSegmentProperties:function(){return i.hb_buffer_guess_segment_properties(j)},setDirection:function(J){i.hb_buffer_set_direction(j,{ltr:4,rtl:5,ttb:6,btt:7}[J]||0)},setFlags:function(J){var it=0;J.forEach(function(kt){it|=x(kt)}),i.hb_buffer_set_flags(j,it)},setLanguage:function(J){var it=G(J);i.hb_buffer_set_language(j,i.hb_language_from_string(it.ptr,-1)),it.free()},setScript:function(J){var it=G(J);i.hb_buffer_set_script(j,i.hb_script_from_string(it.ptr,-1)),it.free()},setClusterLevel:function(J){i.hb_buffer_set_cluster_level(j,J)},json:function(){for(var J=i.hb_buffer_get_length(j),it=[],kt=i.hb_buffer_get_glyph_infos(j,0),Lt=kt/4,Gt=i.hb_buffer_get_glyph_positions(j,0)/4,le=n.HEAPU32.subarray(Lt,Lt+5*J),fe=n.HEAP32.subarray(Gt,Gt+5*J),ie=0;ie<J;++ie)it.push({g:le[ie*5+0],cl:le[ie*5+2],ax:fe[ie*5+0],ay:fe[ie*5+1],dx:fe[ie*5+2],dy:fe[ie*5+3],flags:i.hb_glyph_info_get_glyph_flags(kt+ie*20)});return it},destroy:function(){i.hb_buffer_destroy(j)}}}function X(j,J,it){var kt=0,Lt=0;it&&(it=it.split(","),kt=i.malloc(16*it.length),it.forEach(function(Gt,le){var fe=G(Gt);i.hb_feature_from_string(fe.ptr,-1,kt+Lt*16)&&Lt++,fe.free()})),i.hb_shape(j.ptr,J.ptr,kt,Lt),kt&&i.free(kt)}function ot(j,J,it,kt,Lt){var Gt=[],le=p,fe=!1,ie=1024*1024,je=i.malloc(ie),ce=function(U,tt,W,yt){var At=a.decode(n.HEAPU8.subarray(W,n.HEAPU8.indexOf(0,W)));return At.startsWith("start table GSUB")?le=g:At.startsWith("start table GPOS")&&(le=y),le!=Lt&&(fe=!1),Lt!=p&&le==Lt&&At.startsWith("end lookup "+kt)&&(fe=!0),fe?0:(i.hb_buffer_serialize_glyphs(U,0,i.hb_buffer_get_length(U),je,ie,0,tt,v,C),Gt.push({m:At,t:JSON.parse(a.decode(n.HEAPU8.subarray(je,n.HEAPU8.indexOf(0,je)))),glyphs:i.hb_buffer_get_content_type(U)==h}),1)},H=s(ce,"iiiii");return i.hb_buffer_set_message_func(J.ptr,H,0,0),X(j,J,it),i.free(je),o(H),Gt}function pt(){var j=i.malloc(12);i.hb_version(j,j+4,j+8);var J={major:n.HEAPU32[j/4],minor:n.HEAPU32[(j+4)/4],micro:n.HEAPU32[(j+8)/4]};return i.free(j),J}function dt(){var j=i.hb_version_string(),J=a.decode(n.HEAPU8.subarray(j,n.HEAPU8.indexOf(0,j)));return J}return{createBlob:A,createFace:w,createFont:N,createBuffer:rt,shape:X,shapeWithTrace:ot,version:pt,version_string:dt}}try{e.exports=r}catch{}}});const rL=eL(),iL=Object.freeze(Object.defineProperty({__proto__:null,default:rL},Symbol.toStringTag,{value:"Module"}));Ur.Edit=aa,Ur.InvalidAssetUrlError=n6,Ur.ShotstackEdit=z$,Object.defineProperty(Ur,Symbol.toStringTag,{value:"Module"})});
399
+ `),u=o===-1?this.textPosition:this.textPosition-o-1,l=s.substring(0,u);let c;l.length>0&&l.endsWith(" ")?c=this.measureText(`${l}x`,r)-this.measureText("x",r):c=this.measureText(l,r);const h=r.lineHeight;this.pixelY=this.currentLine*h;const g=this.clipConfig.asset.alignment?.horizontal??"center";let y=c;if(g!=="left"){const E=this.measureText(s,r),v=this.textElement.width;let C=0;g==="center"?C=(v-E)/2:g==="right"&&(C=v-E),y=C+c}this.pixelX=y}updateGraphicsPosition(){this.cursor&&this.cursor.position.set(this.pixelX,this.pixelY)}startBlinkingAnimation(){!this.cursor||this.isBlinking||(this.isBlinking=!0,this.blinkInterval=window.setInterval(()=>{this.cursor&&this.isBlinking&&(this.cursor.visible=!this.cursor.visible)},this.blinkIntervalMs))}stopBlinkingAnimation(){this.blinkInterval!==null&&(window.clearInterval(this.blinkInterval),this.blinkInterval=null),this.isBlinking=!1,this.cursor&&(this.cursor.visible=this.isVisible)}measureText(e,r){const n=new st.Text(e,r),{width:i}=n;return n.destroy(),i}isInitialized(){return this.cursor!==null}getState(){return{isInitialized:this.isInitialized(),isBlinking:this.isBlinking,isVisible:this.isVisible,textPosition:this.textPosition,pixelPosition:{x:this.pixelX,y:this.pixelY},currentLine:this.currentLine}}}class rc{static DEFAULT_FOCUS_DELAY_MS=50;hiddenInput=null;isFocused=!1;focusRetryCount=0;maxFocusRetries=3;focusDelay=rc.DEFAULT_FOCUS_DELAY_MS;eventHandlers={};abortController=null;textChangeCallback=null;lastSyncedText="";isComposing=!1;setupInput(e,r){this.focusDelay=r?.focusDelay??rc.DEFAULT_FOCUS_DELAY_MS,this.createHiddenTextarea(),this.hiddenInput&&(this.hiddenInput.value=e,this.lastSyncedText=e),this.setupEventListeners(),r?.autoFocus!==!1&&this.focusInput()}updateInputValue(e){this.hiddenInput&&(this.hiddenInput.value=e,this.lastSyncedText=e)}focusInput(){this.hiddenInput&&setTimeout(()=>{this.hiddenInput&&!this.isFocused&&(this.hiddenInput.focus(),setTimeout(()=>{!this.isFocused&&this.focusRetryCount<this.maxFocusRetries&&(this.focusRetryCount+=1,this.focusInput())},10))},this.focusDelay)}blurInput(){this.hiddenInput&&this.hiddenInput.blur()}setSelectionRange(e,r){if(!this.hiddenInput)return;const n=this.hiddenInput.value.length,i=Math.max(0,Math.min(e,n)),a=Math.max(i,Math.min(r,n));this.hiddenInput.setSelectionRange(i,a)}getCursorPosition(){return this.hiddenInput?.selectionStart||0}getValue(){return this.hiddenInput?.value||""}setTextInputHandler(e){this.textChangeCallback=e}setEventHandlers(e){this.eventHandlers={...this.eventHandlers,...e}}isFocusedInput(){return this.isFocused}dispose(){this.removeAllEventListeners(),this.hiddenInput&&this.hiddenInput.parentNode&&this.hiddenInput.parentNode.removeChild(this.hiddenInput),this.hiddenInput=null,this.isFocused=!1,this.focusRetryCount=0,this.textChangeCallback=null,this.eventHandlers={}}createHiddenTextarea(){this.hiddenInput=document.createElement("textarea");const e={position:"absolute",opacity:"0.01",pointerEvents:"none",zIndex:"18",left:"0px",top:"0px",width:"1px",height:"1px",border:"none",outline:"none",resize:"none",backgroundColor:"transparent"};Object.assign(this.hiddenInput.style,e),this.hiddenInput.tabIndex=0,document.body.appendChild(this.hiddenInput)}setupEventListeners(){if(!this.hiddenInput)return;this.abortController=new AbortController;const{signal:e}=this.abortController;this.hiddenInput.addEventListener("input",this.handleTextInput,{signal:e}),this.hiddenInput.addEventListener("keydown",this.handleKeyDown,{signal:e}),this.hiddenInput.addEventListener("compositionstart",this.handleCompositionStart,{signal:e}),this.hiddenInput.addEventListener("compositionend",this.handleCompositionEnd,{signal:e}),this.hiddenInput.addEventListener("focus",this.handleFocus,{signal:e}),this.hiddenInput.addEventListener("blur",this.handleBlur,{signal:e}),this.hiddenInput.addEventListener("paste",this.handlePaste,{signal:e})}removeAllEventListeners(){this.abortController?.abort(),this.abortController=null}handleTextInput=e=>{if(!this.hiddenInput||this.isComposing)return;const r=this.hiddenInput.value,n=this.hiddenInput.selectionStart||0;this.lastSyncedText=r,this.textChangeCallback?.(r,n)};handleKeyDown=e=>{if(document.activeElement!==this.hiddenInput)return;let r=!1;if((e.ctrlKey||e.metaKey)&&(r=this.handleKeyboardShortcuts(e),r)){e.preventDefault();return}if(e.key==="Tab"){const n=e.shiftKey?"backward":"forward";this.eventHandlers.onTabNavigation?.(n),e.preventDefault();return}switch(e.key){case"Escape":this.eventHandlers.onEscape?.(e),r=!0;break;case"Enter":r=!1;break;case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"ArrowDown":setTimeout(()=>{if(this.hiddenInput){const n=this.hiddenInput.value,i=this.hiddenInput.selectionStart||0;this.textChangeCallback?.(n,i)}},0),r=!1;break;case"Backspace":case"Delete":r=!1;break;default:r=this.eventHandlers.onCustomKey?.(e.key,e)||!1;break}r&&e.preventDefault()};handleKeyboardShortcuts(e){const{key:r}=e;switch(r.toLowerCase()){case"a":return this.selectAll(),!0;case"c":case"v":return!1;case"z":return this.eventHandlers.onCustomKey?.("undo",e),!0;case"y":return this.eventHandlers.onCustomKey?.("redo",e),!0;default:return!1}}handleCompositionStart=e=>{this.isComposing=!0};handleCompositionEnd=e=>{if(this.isComposing=!1,this.hiddenInput){const r=this.hiddenInput.value,n=this.hiddenInput.selectionStart||0;this.textChangeCallback?.(r,n)}};handleFocus=e=>{this.isFocused=!0,this.focusRetryCount=0,this.eventHandlers.onFocus?.(e)};handleBlur=e=>{this.isFocused=!1,this.eventHandlers.onBlur?.(e)};handlePaste=e=>{setTimeout(()=>{this.handleTextInput(e)},0)};selectAll(){this.hiddenInput&&this.hiddenInput.select()}}class Bi{static DOUBLE_CLICK_THRESHOLD_MS=300;static EDITING_BG_PADDING_PX=5;static EDITING_BG_ALPHA=.2;static CLICK_HANDLER_DELAY_MS=100;parent;targetText;clipConfig;isEditing=!1;lastClickTime=0;editingContainer=null;editableText=null;textCursor=null;textInputHandler=null;outsideClickHandler=null;constructor(e,r,n){this.parent=e,this.targetText=r,this.clipConfig=n,this.parent.getContainer().eventMode="static",this.parent.getContainer().on("click",this.checkForDoubleClick)}dispose(){this.parent.getContainer().off("click",this.checkForDoubleClick),this.stopEditing(),this.outsideClickHandler&&(window.removeEventListener("click",this.outsideClickHandler),this.outsideClickHandler=null)}startEditing(){if(this.isEditing||!this.targetText)return;const e=structuredClone(this.clipConfig);this.targetText.visible=!1,this.createEditingEnvironment(),this.setupOutsideClickHandler(e),this.isEditing=!0}stopEditing(e=!1,r){if(!this.isEditing)return;let n="";this.editableText&&(n=this.editableText.text),this.editingContainer&&(this.parent.getContainer().removeChild(this.editingContainer),this.editingContainer.destroy(),this.editingContainer=null),this.editableText=null,this.textCursor&&(this.textCursor.dispose(),this.textCursor=null),this.textInputHandler&&(this.textInputHandler.dispose(),this.textInputHandler=null),this.targetText.visible=!0,e&&r&&n!==""&&this.parent.updateTextContent(n,r),this.isEditing=!1}checkForDoubleClick=e=>{const r=Date.now();r-this.lastClickTime<Bi.DOUBLE_CLICK_THRESHOLD_MS&&this.startEditing(),this.lastClickTime=r};setupOutsideClickHandler(e){this.outsideClickHandler=r=>{const i=this.parent.getContainer().getBounds(),a=r.clientX,s=r.clientY;(a<i.x||a>i.x+i.width||s<i.y||s>i.y+i.height)&&(this.stopEditing(!0,e),this.outsideClickHandler&&(window.removeEventListener("click",this.outsideClickHandler),this.outsideClickHandler=null))},setTimeout(()=>{this.outsideClickHandler&&window.addEventListener("click",this.outsideClickHandler)},Bi.CLICK_HANDLER_DELAY_MS)}createEditingEnvironment(){this.setupEditingContainer(),this.editingContainer&&this.editableText&&(this.textCursor=new go(this.editingContainer,this.editableText,this.clipConfig),this.textCursor.updatePosition(this.targetText.text.length),this.textCursor.startBlinking()),this.setupTextInputHandler(),this.updateTextAlignment()}setupEditingContainer(){this.editingContainer=new st.Container,this.parent.getContainer().addChild(this.editingContainer);const e=new st.Graphics;e.fillStyle={color:0,alpha:Bi.EDITING_BG_ALPHA},e.rect(-5,-5,this.targetText.width+2*Bi.EDITING_BG_PADDING_PX,this.targetText.height+2*Bi.EDITING_BG_PADDING_PX),e.fill(),this.editingContainer.addChild(e),this.editableText=new st.Text(this.targetText.text,this.targetText.style),this.editableText.eventMode="static",this.editableText.cursor="text",this.editingContainer.addChild(this.editableText)}setupTextInputHandler(){this.textInputHandler=new rc,this.textInputHandler.setTextInputHandler((e,r)=>{this.editableText&&(this.editableText.text=e,this.updateTextAlignment()),this.textCursor?.updatePosition(r)}),this.textInputHandler.setEventHandlers({onEscape:e=>this.stopEditing(!1),onTabNavigation:e=>this.stopEditing(!0)}),this.textInputHandler.setupInput(this.targetText.text,{autoFocus:!0})}updateTextAlignment(){if(!this.editableText||!this.editingContainer)return;const e=this.getContainerDimensions(),r=this.getAlignmentSettings(),n=this.calculateHorizontalPosition({width:this.editableText.width},e,r.horizontal),i=this.calculateVerticalPosition({height:this.editableText.height},e,r.vertical);if(this.editingContainer.position.set(n,i),this.editingContainer.children.length>0){const a=this.editingContainer.getChildAt(0);a instanceof st.Graphics&&(a.clear(),a.fillStyle={color:0,alpha:Bi.EDITING_BG_ALPHA},a.rect(-5,-5,this.editableText.width+2*Bi.EDITING_BG_PADDING_PX,this.editableText.height+2*Bi.EDITING_BG_PADDING_PX),a.fill())}}calculateHorizontalPosition(e,r,n="center"){switch(n){case"center":return r.width/2-e.width/2;case"right":return r.width-e.width;case"left":default:return 0}}calculateVerticalPosition(e,r,n="center"){switch(n){case"center":return r.height/2-e.height/2;case"bottom":return r.height-e.height;case"top":default:return 0}}getContainerDimensions(){const e=this.clipConfig.asset;return{width:e.width??this.parent.getSize().width,height:e.height??this.parent.getSize().height}}getAlignmentSettings(){const e=this.clipConfig.asset;return{horizontal:e.alignment?.horizontal??"center",vertical:e.alignment?.vertical??"center"}}}class Ha extends Je{static loadedFonts=new Set;background=null;text=null;textEditor=null;constructor(e,r){super(e,r,Ee.Text)}async load(){await super.load();const e=this.clipConfiguration.asset,r=e.font?.family??"Open Sans";if(await this.loadFont(r),this.background=new st.Graphics,this.drawBackground(),this.text=new st.Text({text:e.text??"",style:this.createTextStyle(e)}),this.positionText(e),e.stroke?.width&&e.stroke.width>0&&e.stroke.color){const n=new es.OutlineFilter({thickness:e.stroke.width,color:e.stroke.color});this.text.filters=[n]}this.contentContainer.addChild(this.background),this.contentContainer.addChild(this.text),this.configureKeyframes(),this.textEditor=new Bi(this,this.text,this.clipConfiguration)}update(e,r){super.update(e,r)}reconfigureAfterRestore(){super.reconfigureAfterRestore(),this.reconfigure()}async reconfigure(){const e=this.clipConfiguration.asset,r=e.font?.family??"Open Sans";if(await this.loadFont(r),this.drawBackground(),this.text){if(this.text.text=e.text??"",this.text.style=this.createTextStyle(e),e.stroke?.width&&e.stroke.width>0&&e.stroke.color){const n=new es.OutlineFilter({thickness:e.stroke.width,color:e.stroke.color});this.text.filters=[n]}else this.text.filters=[];this.positionText(e)}}dispose(){super.dispose(),this.background?.destroy(),this.background=null,this.text?.destroy(),this.text=null,this.textEditor?.dispose(),this.textEditor=null}getSize(){const e=this.clipConfiguration.asset;return{width:this.clipConfiguration.width??e.width??this.edit.size.width,height:this.clipConfiguration.height??e.height??this.edit.size.height}}getFitScale(){return 1}getContainerScale(){const e=this.getScale();return{x:e,y:e}}supportsEdgeResize(){return!0}onDimensionsChanged(){if(this.drawBackground(),this.text){const e=this.clipConfiguration.asset;this.text.style.wordWrapWidth=this.getSize().width,this.positionText(e)}}applyFixedDimensions(){}createTextStyle(e){const r=e.font?.family??"Open Sans",{baseFontFamily:n,fontWeight:i}=Dr(r),{width:a}=this.getSize();return new st.TextStyle({fontFamily:n,fontSize:e.font?.size??32,fill:e.font?.color??"#ffffff",fontWeight:i.toString(),wordWrap:!0,wordWrapWidth:a,lineHeight:(e.font?.lineHeight??1)*(e.font?.size??32),align:e.alignment?.horizontal??"center"})}positionText(e){if(!this.text)return;const r=e.alignment?.horizontal??"center",n=e.alignment?.vertical??"center",{width:i,height:a}=this.getSize();let s=i/2-this.text.width/2,o=a/2-this.text.height/2;r==="left"?s=0:r==="right"&&(s=i-this.text.width),n==="top"?o=0:n==="bottom"&&(o=a-this.text.height),this.text.position.set(s,o)}drawBackground(){const e=this.clipConfiguration.asset;if(!this.background||!e.background||!e.background.color)return;const{width:r,height:n}=this.getSize();this.background.clear(),this.background.fillStyle={color:e.background.color,alpha:e.background.opacity??1},this.background.rect(0,0,r,n),this.background.fill()}updateTextContent(e,r){this.edit.updateTextContent(this,e,r)}async loadFont(e){const{baseFontFamily:r,fontWeight:n}=Dr(e),i=`${r}-${n}`;if(Ha.loadedFonts.has(i))return;const a=Ga(e);if(a){const s=new FontFace(r,`url(${a})`,{weight:n.toString()});await s.load(),document.fonts.add(s),Ha.loadedFonts.add(i)}}static resetFontCache(){Ha.loadedFonts.clear()}}class U2 extends Je{aiOverlay=null;lastPrompt="";constructor(e,r){super(e,r,Ee.TextToImage)}async load(){await super.load();const{width:e,height:r}=this.getSize(),n=this.edit.getResolvedEdit()?.timeline.tracks.flatMap(u=>u.clips)??[],i=Wd(n,this.clipId??""),{asset:a}=this.clipConfiguration,s=an(a)&&a.prompt||"",o=an(a)?a.type:"text-to-image";this.aiOverlay=new w2({mode:"panel",icon:"image",width:e,height:r,assetNumber:i??void 0,prompt:s,assetType:o}),this.contentContainer.addChild(this.aiOverlay.getContainer()),this.configureKeyframes()}update(e,r){super.update(e,r);const{width:n,height:i}=this.getSize();this.aiOverlay?.resize(n,i);const{asset:a}=this.clipConfiguration,s=an(a)&&a.prompt||"";s!==this.lastPrompt&&(this.aiOverlay?.updatePrompt(s),this.lastPrompt=s)}getSize(){const e=this.clipConfiguration.asset;return{width:this.clipConfiguration.width??e.width??this.edit.size.width,height:this.clipConfiguration.height??e.height??this.edit.size.height}}dispose(){this.aiOverlay?.dispose(),this.aiOverlay=null,super.dispose()}}class j2 extends Je{constructor(e,r){super(e,r,Ee.TextToSpeech)}async load(){await super.load(),this.configureKeyframes()}update(e,r){super.update(e,r),this.getContainer().alpha=0}getSize(){return{width:0,height:0}}}class ER extends Je{texture;sprite;placeholder;isPlaying;volumeKeyframeBuilder;syncTimer;activeSyncTimer;skipVideoUpdate;constructor(e,r){super(e,r,Ee.Video),this.texture=null,this.sprite=null,this.placeholder=null,this.isPlaying=!1;const n=this.clipConfiguration.asset;this.volumeKeyframeBuilder=new Pn(n.volume??1,this.getLength()),this.syncTimer=0,this.activeSyncTimer=0,this.skipVideoUpdate=!1}async load(){await super.load();try{await this.loadVideo(),this.configureKeyframes()}catch(e){console.warn(`[VideoPlayer.load] FAILED clipId=${this.clipId}:`,e),this.createFallbackGraphic()}}createFallbackGraphic(){const{width:e,height:r}=this.getDisplaySize();this.clearPlaceholder(),this.placeholder=fo(e,r),this.contentContainer.addChild(this.placeholder),this.configureKeyframes()}update(e,r){if(super.update(e,r),this.skipVideoUpdate||(this.syncTimer+=r,!this.texture))return;const n=this.getAssetSpeed(),i=this.getSourceTime(),a=this.edit.isPlaying&&this.isActive()&&n>0;a&&(this.isPlaying||(this.isPlaying=!0,this.activeSyncTimer=0,this.texture.source.resource.volume=this.getVolume(),this.texture.source.resource.currentTime=i,this.texture.source.resource.play().catch(console.error)),this.texture.source.resource.volume!==this.getVolume()&&(this.texture.source.resource.volume=this.getVolume()),this.texture.source.resource.playbackRate!==n&&(this.texture.source.resource.playbackRate=n),this.activeSyncTimer+=r,this.activeSyncTimer>1e3&&(this.activeSyncTimer=0,Math.abs(this.texture.source.resource.currentTime-i)>.3&&(this.texture.source.resource.currentTime=i))),!a&&this.isPlaying&&(this.isPlaying=!1,this.texture.source.resource.pause());const s=this.syncTimer>100;(!this.edit.isPlaying||n===0)&&this.isActive()&&s&&(this.syncTimer=0,this.texture.source.resource.currentTime=i)}dispose(){this.disposeVideo(),this.clearPlaceholder(),super.dispose()}getSize(){return this.clipConfiguration.width&&this.clipConfiguration.height?{width:this.clipConfiguration.width,height:this.clipConfiguration.height}:this.sprite?{width:this.sprite.width,height:this.sprite.height}:this.placeholder?this.getDisplaySize():{width:0,height:0}}supportsEdgeResize(){return!0}async reloadAsset(){this.skipVideoUpdate=!0,this.isPlaying=!1,this.syncTimer=0,this.activeSyncTimer=0;try{this.disposeVideo(),this.clearPlaceholder(),await this.loadVideo()}catch(e){console.warn(`[VideoPlayer.reloadAsset] FAILED clipId=${this.clipId}:`,e),this.createFallbackGraphic()}finally{this.skipVideoUpdate=!1}}reconfigureAfterRestore(){super.reconfigureAfterRestore();const e=this.clipConfiguration.asset;this.volumeKeyframeBuilder=new Pn(e.volume??1,this.getLength())}async loadVideo(){const e=this.clipConfiguration.asset,{src:r}=e;if(!r)throw new Error("Video asset has no src to load.");if(r.endsWith(".mov"))throw new Error(`Video source '${r}' is not supported. .mov files cannot be played in the browser. Please convert to .webm or .mp4 first.`);const n=`${r}${r.includes("?")?"&":"?"}x-cors=1`,i={src:n,data:{autoPlay:!1,muted:!1}},a=await this.edit.assetLoader.loadVideoUnique(n,i);if(!a||!(a.source instanceof st.VideoSource))throw new Error(`Invalid video source '${r}'.`);this.clearPlaceholder(),a.source.alphaMode="no-premultiply-alpha",this.texture=this.createCroppedTexture(a);const s=this.texture.source.resource;s instanceof HTMLVideoElement&&s.readyState<2&&await new Promise(o=>{const u=()=>{s.removeEventListener("loadeddata",u),o()};s.addEventListener("loadeddata",u),s.readyState>=2&&o()}),this.sprite=new st.Sprite(this.texture),this.contentContainer.addChild(this.sprite),this.texture.source.resource.volume=this.getVolume(),this.texture.source.resource.preservesPitch=!1}disposeVideo(){this.texture?.source?.resource&&(this.texture.source.resource.pause(),this.texture.source.resource.src="",this.texture.source.resource.load()),this.sprite&&(this.contentContainer.removeChild(this.sprite),this.sprite.destroy(),this.sprite=null),this.texture&&(this.texture.destroy(!0),this.texture=null)}clearPlaceholder(){this.placeholder&&(this.contentContainer.removeChild(this.placeholder),this.placeholder.destroy(),this.placeholder=null)}getVolume(){return this.volumeKeyframeBuilder.getValue(this.getPlaybackTime())}getSourceDuration(){const e=this.texture?.source?.resource?.duration;return typeof e=="number"&&Number.isFinite(e)&&e>0?e:null}getCurrentDrift(){return this.texture?.source?.resource?Math.abs(this.texture.source.resource.currentTime-this.getSourceTime()):0}createCroppedTexture(e){const r=this.clipConfiguration.asset;if(!r.crop)return e;const n=e.width,i=e.height;if(n<=0||i<=0)return e;const a=Math.floor((r.crop?.left??0)*n),s=Math.floor((r.crop?.right??0)*n),o=Math.floor((r.crop?.top??0)*i),u=Math.floor((r.crop?.bottom??0)*i),l=a,c=o,h=n-a-s,p=i-o-u,g=new st.Rectangle(l,c,h,p);return new st.Texture({source:e.source,frame:g})}}class G2{static create(e,r){if(!r.asset?.type)throw new Error("Invalid clip configuration: missing asset type");const n=Mo(r.asset);switch(r.asset.type){case"text":return new Ha(e,r);case"rich-text":return new Fr(e,r);case"shape":return new AR(e,r);case"html":return new mV(e,r);case"html5":return new Xl(e,r);case"image":return n?new U2(e,r):new kV(e,r);case"video":return n?new _2(e,r):new ER(e,r);case"audio":return n?new j2(e,r):new a_(e,r);case"luma":return new IV(e,r);case"caption":return new Gl(e,r);case"rich-caption":return new mo(e,r);case"svg":return new qi(e,r);case"text-to-image":return new U2(e,r);case"image-to-video":return new _2(e,r);case"text-to-speech":return new j2(e,r);default:throw new Error(`Unsupported asset type: ${r.asset.type}`)}}static cleanup(){Ha.resetFontCache()}}function od(t){try{return JSON.parse(t)}catch{return null}}function W2(t){const e=t.trim();if(!e)return null;const r=od(e);if(r!==null)return r;const n=e.replace(/^,+\s*/,"").replace(/\s*,+$/,"");if(n!==e&&n.length>0){const i=od(n);if(i!==null)return i}if(n.length>0){const i=od(`[${n}]`);if(i!==null)return i}return null}function kR(t){const e=W2(t);return!e||typeof e!="object"||Array.isArray(e)?null:e}function SR(t){const e=kR(t);if(!e)return null;const r=Wa.safeParse(e);return r.success?r.data:null}function DR(t){const e=W2(t);if(e===null)return null;const r=Array.isArray(e)?e:[e];if(r.length===0)return null;const n=[];for(const i of r){const a=ad.safeParse(i);if(!a.success)return null;n.push(a.data)}return n}function FR(t){const e=structuredClone(t);return delete e.id,JSON.stringify(e,null,2)}const ue=()=>({status:"success"}),re=t=>({status:"noop",message:t});class ud{name="addTrack";trackIdx;preparedTrack;constructor(e,r){this.trackIdx=e,r&&(this.preparedTrack={...r,clips:r.clips.map(n=>{const i=structuredClone(n);return i.id||(i.id=crypto.randomUUID()),i})})}execute(e){if(!e)throw new Error("AddTrackCommand.execute: context is required");const r=e.getDocument();if(!r)throw new Error("AddTrackCommand.execute: document is required");if(r.addTrack(this.trackIdx,this.preparedTrack),e.resolve(),e.updateDuration(),e.emitEvent(Ft.TrackAdded,{trackIndex:this.trackIdx,totalTracks:r.getTrackCount()}),this.preparedTrack)for(let n=0;n<this.preparedTrack.clips.length;n+=1)e.emitEvent(Ft.ClipAdded,{trackIndex:this.trackIdx,clipIndex:n});return ue()}undo(e){if(!e)throw new Error("AddTrackCommand.undo: context is required");const r=e.getDocument();if(!r)throw new Error("AddTrackCommand.undo: document is required");const i=r.getTrack(this.trackIdx)?.clips.length??0;r.removeTrack(this.trackIdx),e.resolve(),e.updateDuration();for(let a=i-1;a>=0;a-=1)e.emitEvent(Ft.ClipDeleted,{trackIndex:this.trackIdx,clipIndex:a});return e.emitEvent(Ft.TrackRemoved,{trackIndex:this.trackIdx}),ue()}dispose(){}}function H2(t,e,r,n){const i=Math.max(t,r),a=Math.min(e,n);return Math.max(0,a-i)}function IR(t){const{preferredTrackIndex:e,preferredTrackClips:r,desiredStart:n,desiredLength:i}=t;if(r&&r.length>0){const a=n+i;if(r.some(o=>H2(n,a,o.start,o.start+o.length)>0))return{type:"insert-track",insertionIndex:0}}return{type:"place",trackIndex:e}}async function ld(t,e,r){const n=typeof r.start=="number"?r.start:0,i=typeof r.length=="number"?r.length:0,s=t.getTracks()[e],o=IR({preferredTrackIndex:e,preferredTrackClips:s?.map(u=>({start:u.getStart(),length:u.getEnd()-u.getStart()})),desiredStart:n,desiredLength:i});if(o.type==="insert-track"){Wa.parse(r),await t.executeEditCommand(new ud(o.insertionIndex,{clips:[r]}));return}await t.addClip(o.trackIndex,r)}const Y2="[shotstack-studio:svg-clipboard]",NR=["script","foreignObject"],BR=/^on/i,TR=/^\s*javascript:/i;function cd(t){if(typeof DOMParser>"u"||typeof XMLSerializer>"u")throw new Error(`${Y2} sanitiseSvg requires DOMParser/XMLSerializer; call this only in a browser context`);const e=new DOMParser().parseFromString(t,"image/svg+xml");if(e.querySelector("parsererror"))return console.warn(`${Y2} sanitiseSvg: parser error, returning input unchanged`),t;for(const r of NR)e.querySelectorAll(r).forEach(n=>n.remove());return e.querySelectorAll("*").forEach(r=>{for(const n of Array.from(r.attributes))(BR.test(n.name)||(n.name==="href"||n.name==="xlink:href")&&TR.test(n.value))&&r.removeAttribute(n.name)}),new XMLSerializer().serializeToString(e)}function PR(t){if(typeof DOMParser>"u")return{};const e=new DOMParser().parseFromString(t,"image/svg+xml");if(e.querySelector("parsererror"))return{};const r=e.querySelector("svg");if(!r)return{};const n=o=>{if(!o)return;const u=parseFloat(o);return Number.isFinite(u)&&u>0?u:void 0},i=n(r.getAttribute("width")),a=n(r.getAttribute("height"));if(i!==void 0&&a!==void 0)return{width:i,height:a};const s=r.getAttribute("viewBox");if(s){const o=s.trim().split(/[\s,]+/).map(Number);if(o.length===4&&o.every(Number.isFinite)){const[,,u,l]=o;return{width:i??(u>0?u:void 0),height:a??(l>0?l:void 0)}}}return{width:i,height:a}}function fd(t,e,r,n){const i=new Map,a=`alias://${r}`;for(let s=0;s<t.getTrackCount();s+=1){const o=t.getClipsInTrack(s);for(let u=0;u<o.length;u+=1)if(!n?.has(`${s}:${u}`)){const l=o[u],c=l.id,h=e.timeline.tracks[s]?.clips[u];let p=!1;const g={};if(l.start===a&&(g.start=l.start,p=!0),l.length===a&&(g.length=l.length,p=!0),p&&c&&h){i.set(c,g);const y={};g.start&&(y.start=h.start),g.length&&(y.length=h.length),t.updateClip(s,u,y)}}}return i}function MR(t,e,r,n){const i=new Map;for(const a of r){const s=fd(t,e,a,n);for(const[o,u]of s){const l=i.get(o);l?i.set(o,{...l,...u}):i.set(o,u)}}return i}function hd(t,e){for(const[r,n]of e){const i=t.getClipById(r);if(i){const a={};n.start&&(a.start=n.start),n.length&&(a.length=n.length),t.updateClip(i.trackIndex,i.clipIndex,a)}}}function zR(t){const e=[];for(const r of t){const{alias:n}=r;n&&e.push(n)}return e}class VR{constructor(e,r){this.trackIdx=e,this.clip=r}name="addClip";addedClipId;convertedReferences;execute(e){if(!e)throw new Error("AddClipCommand.execute: context is required");const r=e.getDocument();if(!r)throw new Error("AddClipCommand.execute: no document");const n=e.documentAddClip(this.trackIdx,this.clip);this.addedClipId=n.id,this.convertedReferences&&this.convertedReferences.size>0&&hd(r,this.convertedReferences),e.resolve(),e.updateDuration();const s=e.getDocumentTrack(this.trackIdx)?.clips?.findIndex(o=>o.id===this.addedClipId)??-1;return e.emitEvent(Ft.ClipAdded,{trackIndex:this.trackIdx,clipIndex:s}),ue()}undo(e){if(!e)throw new Error("AddClipCommand.undo: context is required");if(!this.addedClipId)return re("No clip ID stored");const r=e.getDocument();if(!r)throw new Error("AddClipCommand.undo: no document");const i=e.getDocumentTrack(this.trackIdx)?.clips,a=i?.findIndex(u=>u.id===this.addedClipId)??-1;if(a===-1)return re(`Clip ${this.addedClipId} not found in track ${this.trackIdx}`);const s=i?.[a]?.alias;if(s){const u=new Set([`${this.trackIdx}:${a}`]);this.convertedReferences=fd(r,e.getEditState(),s,u)}const o=e.getSelectedClip();return o&&o.clipId===this.addedClipId&&(e.setSelectedClip(null),e.emitEvent(Ft.SelectionCleared)),e.documentRemoveClip(this.trackIdx,a),e.resolve(),e.updateDuration(),e.emitEvent(Ft.ClipDeleted,{trackIndex:this.trackIdx,clipIndex:a}),ue()}dispose(){this.addedClipId=void 0,this.convertedReferences=void 0}}class OR{name="addTracks";subCommands;executedCount=0;constructor(e,r){this.subCommands=[];for(let n=r.length-1;n>=0;n-=1)this.subCommands.push(new ud(e,r[n]))}execute(e){if(!e)throw new Error("AddTracksCommand.execute: context is required");try{for(const r of this.subCommands)r.execute(e),this.executedCount+=1}catch(r){for(let n=this.executedCount-1;n>=0;n-=1)try{this.subCommands[n].undo(e)}catch(i){throw new Error(`AddTracksCommand: execute failed at sub-command ${this.executedCount} (${r instanceof Error?r.message:String(r)}) and rollback failed at sub-command ${n} (${i instanceof Error?i.message:String(i)}). State may be corrupted.`)}throw this.executedCount=0,r}return ue()}undo(e){if(!e)throw new Error("AddTracksCommand.undo: context is required");if(this.executedCount===0)return re("Command was not executed");for(let r=this.executedCount-1;r>=0;r-=1)this.subCommands[r].undo(e);return this.executedCount=0,ue()}dispose(){for(const e of this.subCommands)e.dispose?.()}}class dd{constructor(e){this.trackIdx=e}name="deleteTrack";deletedClips=[];convertedReferences;execute(e){if(!e)throw new Error("DeleteTrackCommand.execute: context is required");const r=e.getDocument();if(!r)throw new Error("DeleteTrackCommand: no document");if(r.getTrackCount()<=1)return re("Cannot delete the last track");const n=r.getTrack(this.trackIdx);n&&(this.deletedClips=n.clips.map(a=>structuredClone(a)));const i=zR(this.deletedClips);if(i.length>0){const a=new Set;for(let s=0;s<this.deletedClips.length;s+=1)a.add(`${this.trackIdx}:${s}`);this.convertedReferences=MR(r,e.getEditState(),i,a)}return r.removeTrack(this.trackIdx),e.resolve(),e.updateDuration(),e.emitEvent(Ft.TrackRemoved,{trackIndex:this.trackIdx}),ue()}undo(e){if(!e)throw new Error("DeleteTrackCommand.undo: context is required");const r=e.getDocument();if(!r)throw new Error("DeleteTrackCommand.undo: no document");r.addTrack(this.trackIdx);for(let n=0;n<this.deletedClips.length;n+=1)r.addClip(this.trackIdx,this.deletedClips[n],n);return this.convertedReferences&&this.convertedReferences.size>0&&hd(r,this.convertedReferences),e.resolve(),e.updateDuration(),e.emitEvent(Ft.TrackAdded,{trackIndex:this.trackIdx,totalTracks:r.getTrackCount()}),ue()}dispose(){this.deletedClips=[],this.convertedReferences=void 0}}class pd{constructor(e,r){this.trackIdx=e,this.clipIdx=r}name="deleteClip";deletedClipConfig;deletedClipId;deleteTrackCommand;trackWasDeleted=!1;storedBindings;convertedReferences;execute(e){if(!e)throw new Error("DeleteClipCommand.execute: context is required");const r=e.getDocument();if(!r)throw new Error("DeleteClipCommand: no document");const n=r.getClip(this.trackIdx,this.clipIdx);if(!n)return re(`No clip at track ${this.trackIdx}, index ${this.clipIdx}`);if(r.getClipCount()<=1)return re("Cannot delete the last clip");if(this.deletedClipConfig=structuredClone(n),this.deletedClipId=n.id,this.deletedClipId){const o=e.getClipBindings(this.deletedClipId);this.storedBindings=o?new Map(o):void 0,r.clearClipBindings(this.deletedClipId)}const i=n.alias;if(i){const o=new Set([`${this.trackIdx}:${this.clipIdx}`]);this.convertedReferences=fd(r,e.getEditState(),i,o)}e.clearClipError(this.trackIdx,this.clipIdx);const a=e.getSelectedClip();a&&this.deletedClipId&&a.clipId===this.deletedClipId&&(e.setSelectedClip(null),e.emitEvent(Ft.SelectionCleared)),e.documentRemoveClip(this.trackIdx,this.clipIdx);const s=r.getTrack(this.trackIdx);return s&&s.clips.length===0&&(this.deleteTrackCommand=new dd(this.trackIdx),this.deleteTrackCommand.execute(e).status==="success"&&(this.trackWasDeleted=!0)),e.resolve(),e.updateDuration(),e.emitEvent(Ft.ClipDeleted,{trackIndex:this.trackIdx,clipIndex:this.clipIdx}),ue()}undo(e){if(!e)throw new Error("DeleteClipCommand.undo: context is required");if(!this.deletedClipConfig)return re("No deleted clip config");const r=e.getDocument();if(!r)throw new Error("DeleteClipCommand.undo: no document");this.trackWasDeleted&&r.addTrack(this.trackIdx);const i=e.documentAddClip(this.trackIdx,this.deletedClipConfig,this.clipIdx).id;return i&&this.storedBindings&&this.storedBindings.size>0&&r.setClipBindingsForClip(i,this.storedBindings),this.convertedReferences&&this.convertedReferences.size>0&&hd(r,this.convertedReferences),e.resolve(),e.updateDuration(),this.trackWasDeleted&&(e.emitEvent(Ft.TrackAdded,{trackIndex:this.trackIdx,totalTracks:r.getTrackCount()}),this.trackWasDeleted=!1),e.emitEvent(Ft.ClipRestored,{trackIndex:this.trackIdx,clipIndex:this.clipIdx}),ue()}dispose(){this.deletedClipConfig=void 0,this.deletedClipId=void 0,this.deleteTrackCommand=void 0,this.storedBindings=void 0,this.convertedReferences=void 0}}function Ye(t){const{id:e,...r}=t;return r}class RR{constructor(e,r,n,i){this.fromTrackIndex=e,this.fromClipIndex=r,this.toTrackIndex=n,this.newStart=i,this.effectiveToTrackIndex=n}name="moveClip";clipId=null;originalStart;previousDocClip;deleteTrackCommand;sourceTrackWasDeleted=!1;effectiveToTrackIndex;newClipIndex=0;execute(e){if(!e)throw new Error("MoveClipCommand.execute: context is required");const r=e.getDocument();if(!r)throw new Error("MoveClipCommand.execute: document is required");const n=e.getClipAt(this.fromTrackIndex,this.fromClipIndex);if(!n)return re(`Invalid clip at ${this.fromTrackIndex}/${this.fromClipIndex}`);const i=r.getClip(this.fromTrackIndex,this.fromClipIndex);if(!i)return re(`Document clip not found at ${this.fromTrackIndex}/${this.fromClipIndex}`);this.clipId=n.clipId,this.previousDocClip=structuredClone(i),this.originalStart=i.start,this.effectiveToTrackIndex=this.toTrackIndex,r.moveClip(this.fromTrackIndex,this.fromClipIndex,this.toTrackIndex,{start:this.newStart}),this.fromTrackIndex!==this.toTrackIndex&&r.getClipsInTrack(this.fromTrackIndex).length===0&&(this.deleteTrackCommand=new dd(this.fromTrackIndex),this.deleteTrackCommand.execute(e).status==="success"&&(this.sourceTrackWasDeleted=!0,this.toTrackIndex>this.fromTrackIndex&&(this.effectiveToTrackIndex=this.toTrackIndex-1))),e.resolve();const a=this.clipId?r.getClipById(this.clipId):null;this.newClipIndex=a?.clipIndex??0,e.updateDuration(),this.fromTrackIndex!==this.toTrackIndex&&!this.sourceTrackWasDeleted&&e.propagateTimingChanges(this.fromTrackIndex,this.fromClipIndex-1),e.propagateTimingChanges(this.effectiveToTrackIndex,this.newClipIndex);const s=r.getClip(this.effectiveToTrackIndex,this.newClipIndex);if(!this.previousDocClip||!s)throw new Error(`MoveClipCommand: document clip not found after mutation at ${this.effectiveToTrackIndex}/${this.newClipIndex}`);e.emitEvent(Ft.ClipUpdated,{previous:{clip:Ye(this.previousDocClip),trackIndex:this.fromTrackIndex,clipIndex:this.fromClipIndex},current:{clip:Ye(s),trackIndex:this.effectiveToTrackIndex,clipIndex:this.newClipIndex}});const o=this.clipId?e.getPlayerByClipId(this.clipId):n;return o&&(e.setSelectedClip(o),e.emitEvent(Ft.ClipSelected,{clip:Ye(s),trackIndex:this.effectiveToTrackIndex,clipIndex:this.newClipIndex})),ue()}async undo(e){if(!e)throw new Error("MoveClipCommand.undo: context is required");if(!this.clipId||this.originalStart===void 0)return re("No clip state stored");const r=e.getDocument();if(!r)throw new Error("MoveClipCommand.undo: document is required");this.sourceTrackWasDeleted&&this.deleteTrackCommand&&(this.deleteTrackCommand.undo(e),this.sourceTrackWasDeleted=!1,this.toTrackIndex>this.fromTrackIndex&&(this.effectiveToTrackIndex=this.toTrackIndex));const n=r.getClipById(this.clipId);if(!n)return re(`Clip ${this.clipId} not found in document`);const i=structuredClone(r.getClip(n.trackIndex,n.clipIndex));r.moveClip(n.trackIndex,n.clipIndex,this.fromTrackIndex,{start:this.originalStart}),e.resolve(),e.updateDuration(),this.fromTrackIndex!==this.effectiveToTrackIndex&&e.propagateTimingChanges(this.effectiveToTrackIndex,this.newClipIndex-1),e.propagateTimingChanges(this.fromTrackIndex,this.fromClipIndex);const a=r.getClip(this.fromTrackIndex,this.fromClipIndex);this.previousDocClip&&e.emitEvent(Ft.ClipUpdated,{previous:{clip:Ye(i??this.previousDocClip),trackIndex:this.effectiveToTrackIndex,clipIndex:this.newClipIndex},current:{clip:Ye(a??this.previousDocClip),trackIndex:this.fromTrackIndex,clipIndex:this.fromClipIndex}});const s=e.getPlayerByClipId(this.clipId);return s&&a&&(e.setSelectedClip(s),e.emitEvent(Ft.ClipSelected,{clip:Ye(a),trackIndex:this.fromTrackIndex,clipIndex:this.fromClipIndex})),this.effectiveToTrackIndex=this.toTrackIndex,ue()}dispose(){this.clipId=null,this.deleteTrackCommand=void 0}}class $R{constructor(e){this.aspectRatio=e}name="setOutputAspectRatio";previousAspectRatio;execute(e){if(!e)throw new Error("SetOutputAspectRatioCommand requires context");return this.previousAspectRatio=e.getOutputAspectRatio(),e.setOutputAspectRatio(this.aspectRatio),ue()}undo(e){if(!e)throw new Error("SetOutputAspectRatioCommand requires context");return this.previousAspectRatio===void 0?re("No previous aspect ratio stored"):(e.setOutputAspectRatio(this.previousAspectRatio),ue())}dispose(){this.previousAspectRatio=void 0}}class LR{constructor(e){this.destinations=e}name="setOutputDestinations";previousDestinations;execute(e){if(!e)throw new Error("SetOutputDestinationsCommand requires context");return this.previousDestinations=e.getOutputDestinations(),e.setOutputDestinations(this.destinations),ue()}undo(e){if(!e)throw new Error("SetOutputDestinationsCommand requires context");return this.previousDestinations===void 0?re("No previous destinations stored"):(e.setOutputDestinations(this.previousDestinations),ue())}dispose(){this.previousDestinations=void 0}}class ZR{constructor(e){this.format=e}name="setOutputFormat";previousFormat;execute(e){if(!e)throw new Error("SetOutputFormatCommand requires context");return this.previousFormat=e.getOutputFormat(),e.setOutputFormat(this.format),ue()}undo(e){if(!e)throw new Error("SetOutputFormatCommand requires context");return this.previousFormat===void 0?re("No previous format stored"):(e.setOutputFormat(this.previousFormat),ue())}dispose(){this.previousFormat=void 0}}class UR{constructor(e){this.fps=e}name="setOutputFps";previousFps;execute(e){if(!e)throw new Error("SetOutputFpsCommand requires context");return this.previousFps=e.getOutputFps(),e.setOutputFps(this.fps),ue()}undo(e){if(!e)throw new Error("SetOutputFpsCommand requires context");return this.previousFps===void 0?re("No previous FPS stored"):(e.setOutputFps(this.previousFps),ue())}dispose(){this.previousFps=void 0}}class jR{constructor(e){this.resolution=e}name="setOutputResolution";previousResolution;execute(e){if(!e)throw new Error("SetOutputResolutionCommand requires context");return this.previousResolution=e.getOutputResolution(),e.setOutputResolution(this.resolution),ue()}undo(e){if(!e)throw new Error("SetOutputResolutionCommand requires context");return this.previousResolution===void 0?re("No previous resolution stored"):(e.setOutputResolution(this.previousResolution),ue())}dispose(){this.previousResolution=void 0}}class GR{constructor(e,r){this.width=e,this.height=r}name="setOutputSize";previousSize;execute(e){if(!e)throw new Error("SetOutputSizeCommand requires context");return this.previousSize=e.getOutputSize(),e.setOutputSize(this.width,this.height),ue()}undo(e){if(!e)throw new Error("SetOutputSizeCommand requires context");return this.previousSize?(e.setOutputSize(this.previousSize.width,this.previousSize.height),ue()):re("No previous size stored")}dispose(){this.previousSize=void 0}}class WR{constructor(e){this.color=e}name="setTimelineBackground";previousColor;execute(e){if(!e)throw new Error("SetTimelineBackgroundCommand requires context");return this.previousColor=e.getTimelineBackground(),e.setTimelineBackground(this.color),ue()}undo(e){if(!e)throw new Error("SetTimelineBackgroundCommand requires context");return this.previousColor===void 0?re("No previous color stored"):(e.setTimelineBackground(this.previousColor),ue())}dispose(){this.previousColor=void 0}}class md{constructor(e,r,n){this.initialClipConfig=e,this.finalClipConfig=r,this.trackIndex=n?.trackIndex??-1,this.clipIndex=n?.clipIndex??-1}name="setUpdatedClip";clipId=null;storedInitialConfig=null;storedFinalConfig=null;storedInitialBindings=new Map;previousDocClip=null;trackIndex;clipIndex;async execute(e){if(!e)throw new Error("SetUpdatedClipCommand.execute: context is required");const r=e.getDocument();if(!r)throw new Error("SetUpdatedClipCommand.execute: document is required");const n=e.getClipAt(this.trackIndex,this.clipIndex);if(!n)return re(`Invalid clip at ${this.trackIndex}/${this.clipIndex}`);this.clipId=n.clipId,this.storedInitialConfig||(this.storedInitialConfig=this.initialClipConfig?structuredClone(this.initialClipConfig):structuredClone(n.clipConfiguration)),this.storedFinalConfig||(this.storedFinalConfig=this.finalClipConfig?structuredClone(this.finalClipConfig):structuredClone(n.clipConfiguration));const i=e.getDocumentClip(this.trackIndex>=0?this.trackIndex:n.layer-1,this.clipIndex>=0?this.clipIndex:e.getTracks()[n.layer-1]?.indexOf(n)??-1);this.previousDocClip=i?structuredClone(i):null;const a=this.clipId?e.getClipBindings(this.clipId):void 0;this.storedInitialBindings=a?new Map(a):new Map;const s=this.trackIndex>=0?this.trackIndex:n.layer-1,o=this.clipIndex>=0?this.clipIndex:e.getTracks()[s]?.indexOf(n)??-1,u=this.storedFinalConfig??this.finalClipConfig;u&&r.replaceClipProperties(s,o,u),e.resolve();const l=e.getClipAt(s,o);for(const[E,{resolvedValue:v}]of this.storedInitialBindings)(l?Hl(l.clipConfiguration,E):void 0)!==v&&this.clipId&&e.removeClipBinding(this.clipId,E);const c=this.storedInitialConfig??this.initialClipConfig,h=this.storedFinalConfig??this.finalClipConfig,p=c?.asset,g=h?.asset;if(p?.src!==g?.src){const E=e.getClipAt(s,o);E&&E.getTimingIntent().length==="auto"&&await e.resolveClipAutoLength(E)}const y=e.getDocumentClip(s,o);if(!this.previousDocClip||!y)throw new Error(`SetUpdatedClipCommand: document clip not found after mutation at ${s}/${o}`);return e.emitEvent(Ft.ClipUpdated,{previous:{clip:Ye(this.previousDocClip),trackIndex:s,clipIndex:o},current:{clip:Ye(y),trackIndex:s,clipIndex:o}}),ue()}async undo(e){if(!e)throw new Error("SetUpdatedClipCommand.undo: context is required");const r=this.storedInitialConfig??this.initialClipConfig;if(!r)return re("No stored initial config");const n=e.getDocument();if(!n)throw new Error("SetUpdatedClipCommand.undo: document is required");const i=this.clipId?e.getPlayerByClipId(this.clipId):e.getClipAt(this.trackIndex,this.clipIndex);if(!i)return re("Clip not found for undo");const a=this.trackIndex>=0?this.trackIndex:i.layer-1,s=this.clipIndex>=0?this.clipIndex:e.getTracks()[a]?.indexOf(i)??-1,o=structuredClone(e.getDocumentClip(a,s));if(n.replaceClipProperties(a,s,r),e.resolve(),this.clipId){const p=new Map(this.storedInitialBindings);p.size>0?e.getDocument()?.setClipBindingsForClip(this.clipId,p):e.getDocument()?.clearClipBindings(this.clipId)}const l=(this.storedFinalConfig??this.finalClipConfig)?.asset,c=r?.asset;if(l?.src!==c?.src){const p=e.getClipAt(a,s);p&&p.getTimingIntent().length==="auto"&&await e.resolveClipAutoLength(p)}const h=e.getDocumentClip(a,s);if(!o||!h)throw new Error(`SetUpdatedClipCommand: document clip not found after undo at ${a}/${s}`);return e.emitEvent(Ft.ClipUpdated,{previous:{clip:Ye(o),trackIndex:a,clipIndex:s},current:{clip:Ye(h),trackIndex:a,clipIndex:s}}),ue()}dispose(){this.clipId=null,this.storedInitialConfig=null,this.storedFinalConfig=null,this.storedInitialBindings.clear(),this.previousDocClip=null}}class HR{constructor(e,r,n){this.trackIndex=e,this.clipIndex=r,this.params=n}name="UpdateClipTiming";originalStart;originalLength;clipId;execute(e){if(!e)throw new Error("UpdateClipTimingCommand.execute: context is required");const r=e.getDocument();if(!r)throw new Error("UpdateClipTimingCommand.execute: document is required");const i=e.getDocumentTrack(this.trackIndex)?.clips[this.clipIndex];if(!i)return re(`Invalid clip at ${this.trackIndex}/${this.clipIndex}`);const a=e.getClipAt(this.trackIndex,this.clipIndex);if(!a)return re(`Player not found at ${this.trackIndex}/${this.clipIndex}`);this.originalStart=i.start,this.originalLength=i.length,this.clipId=a.clipId??void 0;const s=structuredClone(i),o={};this.params.start!==void 0&&(o.start=this.params.start),this.params.length!==void 0&&(o.length=this.params.length),r.updateClip(this.trackIndex,this.clipIndex,o),this.clipId?e.resolveClip(this.clipId):e.resolve(),o.length==="auto"&&e.resolveClipAutoLength(a).then(()=>{e.updateDuration(),e.propagateTimingChanges(this.trackIndex,this.clipIndex)}),e.updateDuration();const u=e.getDocumentClip(this.trackIndex,this.clipIndex);if(!u)throw new Error(`UpdateClipTimingCommand: document clip not found after mutation at ${this.trackIndex}/${this.clipIndex}`);return e.emitEvent(Ft.ClipUpdated,{previous:{trackIndex:this.trackIndex,clipIndex:this.clipIndex,clip:Ye(s)},current:{trackIndex:this.trackIndex,clipIndex:this.clipIndex,clip:Ye(u)}}),e.propagateTimingChanges(this.trackIndex,this.clipIndex),ue()}undo(e){if(!e)throw new Error("UpdateClipTimingCommand.undo: context is required");if(this.originalStart===void 0&&this.originalLength===void 0)throw new Error("UpdateClipTimingCommand.undo: no original values");const r=e.getDocument();if(!r)throw new Error("UpdateClipTimingCommand.undo: document is required");const n=e.getClipAt(this.trackIndex,this.clipIndex);if(!n)throw new Error("UpdateClipTimingCommand.undo: player not found");const i=structuredClone(e.getDocumentClip(this.trackIndex,this.clipIndex)),a={};this.originalStart!==void 0&&(a.start=this.originalStart),this.originalLength!==void 0&&(a.length=this.originalLength),r.updateClip(this.trackIndex,this.clipIndex,a),this.clipId?e.resolveClip(this.clipId):e.resolve(),this.originalLength==="auto"&&e.resolveClipAutoLength(n).then(()=>{e.updateDuration(),e.propagateTimingChanges(this.trackIndex,this.clipIndex)}),e.updateDuration();const s=e.getDocumentClip(this.trackIndex,this.clipIndex);if(!i||!s)throw new Error(`UpdateClipTimingCommand: document clip not found after undo at ${this.trackIndex}/${this.clipIndex}`);return e.emitEvent(Ft.ClipUpdated,{previous:{trackIndex:this.trackIndex,clipIndex:this.clipIndex,clip:Ye(i)},current:{trackIndex:this.trackIndex,clipIndex:this.clipIndex,clip:Ye(s)}}),e.propagateTimingChanges(this.trackIndex,this.clipIndex),ue()}}class YR{constructor(e,r,n){this.trackIndex=e,this.clipIndex=r,this.newText=n}name="updateTextContent";clipId=null;previousText="";previousDocClip;execute(e){if(!e)throw new Error("UpdateTextContentCommand.execute: context is required");const r=e.getDocument();if(!r)throw new Error("UpdateTextContentCommand.execute: document is required");const n=e.getClipAt(this.trackIndex,this.clipIndex);if(!n)return re(`Invalid clip at ${this.trackIndex}/${this.clipIndex}`);const i=r.getClip(this.trackIndex,this.clipIndex);if(!i)return re("Clip not found in document");this.clipId=n.clipId,this.previousDocClip=structuredClone(i);const a=i.asset;this.previousText=a&&"text"in a?a.text??"":"";const o={...i.asset,text:this.newText};r.updateClip(this.trackIndex,this.clipIndex,{asset:o}),this.clipId?e.resolveClip(this.clipId):e.resolve();const u=e.getDocumentClip(this.trackIndex,this.clipIndex);if(!this.previousDocClip||!u)throw new Error(`UpdateTextContentCommand: document clip not found after mutation at ${this.trackIndex}/${this.clipIndex}`);return e.emitEvent(Ft.ClipUpdated,{previous:{clip:Ye(this.previousDocClip),trackIndex:this.trackIndex,clipIndex:this.clipIndex},current:{clip:Ye(u),trackIndex:this.trackIndex,clipIndex:this.clipIndex}}),ue()}undo(e){if(!e)throw new Error("UpdateTextContentCommand.undo: context is required");const r=e.getDocument();if(!r)throw new Error("UpdateTextContentCommand.undo: document is required");const n=structuredClone(e.getDocumentClip(this.trackIndex,this.clipIndex)),i=r.getClip(this.trackIndex,this.clipIndex);if(!i)return re("Clip not found for undo");const s={...i.asset,text:this.previousText};r.updateClip(this.trackIndex,this.clipIndex,{asset:s}),this.clipId?e.resolveClip(this.clipId):e.resolve();const o=e.getDocumentClip(this.trackIndex,this.clipIndex);if(this.previousDocClip){if(!n||!o)throw new Error(`UpdateTextContentCommand: document clip not found after undo at ${this.trackIndex}/${this.clipIndex}`);e.emitEvent(Ft.ClipUpdated,{previous:{clip:Ye(n),trackIndex:this.trackIndex,clipIndex:this.clipIndex},current:{clip:Ye(o),trackIndex:this.trackIndex,clipIndex:this.clipIndex}})}return ue()}dispose(){this.clipId=null,this.previousDocClip=void 0}}class q2{events;constructor(){this.events={}}on(e,r){return this.events[e]||(this.events[e]=new Set),this.events[e].add(r),()=>this.off(e,r)}once(e,r){const n=i=>{this.off(e,n),r(i)};return this.on(e,n)}off(e,r){this.events[e]&&(this.events[e].delete(r),!(this.events[e].size>0)&&delete this.events[e])}clear(e){delete this.events[e]}emit(e,...r){if(!this.events[e])return;const n=r[0];for(const i of this.events[e])i(n)}}const qR=.5,XR=1/30;class KR{constructor(e,r,n){this.getCanvas=e,this.getTracks=r,this.events=n,this.onClipChangedBound=()=>this.rebuildLumaMasksIfNeeded(),this.onPlayerLoadedBound=i=>this.onPlayerLoaded(i)}activeLumaMasks=[];pendingMaskCleanup=[];onClipChangedBound;onPlayerLoadedBound;initialize(){this.setupEventListeners()}update(){this.updateLumaMasks(),this.processPendingMaskCleanup()}getActiveMaskCount(){return this.activeLumaMasks.length}dispose(){this.removeEventListeners();for(const e of this.activeLumaMasks){const r=e.contentClip.getLumaWrapper();r&&!r.destroyed&&(r.mask=null),e.tempContainer.destroy({children:!0}),e.maskSprite.destroy({texture:!0})}this.activeLumaMasks=[];for(const e of this.pendingMaskCleanup)try{e.maskSprite.parent?.removeChild(e.maskSprite),e.maskSprite.destroy({texture:!0})}catch{}this.pendingMaskCleanup=[]}cleanupForPlayer(e){const r=this.activeLumaMasks.findIndex(i=>i.lumaPlayer===e);if(r===-1)return;const n=this.activeLumaMasks[r];n.contentClip&&(n.contentClip.getLumaWrapper().mask=null),n.maskSprite.parent?.removeChild(n.maskSprite),n.tempContainer.destroy({children:!0}),this.activeLumaMasks.splice(r,1),this.pendingMaskCleanup.push({maskSprite:n.maskSprite,frameCount:0})}onPlayerLoaded(e){const{player:r,trackIndex:n}=e;if(r.playerType!==Ee.Luma){this.rebuildLumaMasksIfNeeded();return}const i=r,a=i.getSprite();if(!a?.texture){console.warn("PlayerLoaded fired for luma player before texture ready");return}const s=this.getTracks();if(n>=s.length)return;const u=s[n].filter(c=>c.playerType!==Ee.Luma);u.length===0||this.activeLumaMasks.find(c=>c.lumaPlayer===i)||(this.setupLumaMask(i,a.texture,u[0]),i.getContainer().parent?.removeChild(i.getContainer()))}setupLumaMask(e,r,n){const i=this.getCanvas();if(!i)return;const{renderer:a}=i.application,{width:s,height:o}=n.getSize();if(s<=0||o<=0)return;const u=new st.Container,l=new st.Sprite(r);l.width=s,l.height=o;const c=new st.ColorMatrixFilter;c.negative(!1),l.filters=[c],u.addChild(l);const h=st.RenderTexture.create({width:s,height:o,resolution:qR});a.render({container:u,target:h,clear:!0});const p=new st.Sprite(h);n.getContainer().addChild(p);const g=n.getLumaWrapper();g.mask=p,this.activeLumaMasks.push({lumaPlayer:e,maskSprite:p,maskTexture:h,tempContainer:u,contentClip:n,lastVideoTime:-1})}updateLumaMasks(){const e=this.getCanvas();if(!e)return;const{renderer:r}=e.application;for(const n of this.activeLumaMasks)if(n.lumaPlayer.isVideoSource()){const i=n.lumaPlayer.getVideoCurrentTime();Math.abs(i-n.lastVideoTime)>=XR&&(n.lastVideoTime=i,r.render({container:n.tempContainer,target:n.maskTexture,clear:!0}))}}setupEventListeners(){this.events.on(Fe.PlayerLoaded,this.onPlayerLoadedBound),this.events.on(Ft.ClipUpdated,this.onClipChangedBound),this.events.on(Fe.PlayerMovedBetweenTracks,this.onClipChangedBound)}removeEventListeners(){this.events.off(Fe.PlayerLoaded,this.onPlayerLoadedBound),this.events.off(Ft.ClipUpdated,this.onClipChangedBound),this.events.off(Fe.PlayerMovedBetweenTracks,this.onClipChangedBound)}processPendingMaskCleanup(){for(let e=this.pendingMaskCleanup.length-1;e>=0;e-=1){const r=this.pendingMaskCleanup[e];if(r.frameCount+=1,r.frameCount>=3){try{r.maskSprite.parent?.removeChild(r.maskSprite),r.maskSprite.destroy({texture:!0})}catch{}this.pendingMaskCleanup.splice(e,1)}}}rebuildLumaMasksIfNeeded(){if(!this.getCanvas())return;const r=this.getTracks();for(let n=0;n<r.length;n+=1){const i=r[n],a=i.find(u=>u.playerType===Ee.Luma),s=i.filter(u=>u.playerType!==Ee.Luma);a&&a.getContainer().parent?.removeChild(a.getContainer());const o=a&&this.activeLumaMasks.find(u=>u.lumaPlayer===a);if(a&&!o&&s.length>0){const u=a.getSprite();u?.texture&&this.setupLumaMask(a,u.texture,s[0])}}}}function JR(t){return{find:t.name,replace:t.defaultValue}}function QR(t){const e=typeof t.replace=="string"?t.replace:JSON.stringify(t.replace);return{name:t.find,defaultValue:e}}const t$=/\{\{\s*([A-Z_0-9]+)\s*\}\}/gi,gd=/\{\{\s*[A-Z_0-9]+\s*\}\}/i;class e${fields=new Map;events;constructor(e){this.events=e}register(e,r){this.fields.set(e.name,e),r?.silent||this.events.emit(Ft.MergeFieldChanged,{fields:this.getAll()})}remove(e,r){const n=this.fields.delete(e);return n&&!r?.silent&&this.events.emit(Ft.MergeFieldChanged,{fields:this.getAll()}),n}get(e){return this.fields.get(e)}getAll(){return Array.from(this.fields.values())}clear(){this.fields.clear()}resolve(e){return!e||this.fields.size===0?e:e.replace(t$,(r,n)=>this.fields.get(n)?.defaultValue??r)}resolveToNumber(e){if(!this.isMergeFieldTemplate(e))return null;const r=this.resolve(e),n=parseFloat(r);return Number.isFinite(n)?n:null}hasUnresolved(e){if(!e)return!1;const r=this.resolve(e);return gd.test(r)}extractFieldName(e){if(!e)return null;const r=gd.exec(e);if(!r)return null;const n=r[0].match(/\{\{\s*([A-Z_0-9]+)\s*\}\}/i);return n?n[1]:null}isMergeFieldTemplate(e){return gd.test(e)}createTemplate(e){return`{{ ${e} }}`}toSerializedArray(){return this.getAll().map(JR)}loadFromSerialized(e){this.fields.clear();for(const r of e){const n=QR(r);this.fields.set(r.find,n)}}generateUniqueName(e){const r=new Set(this.fields.keys());let n=1;for(;r.has(`${e}_${n}`);)n+=1;return`${e}_${n}`}}const r$={preview:{width:512,height:288},mobile:{width:640,height:360},sd:{width:1024,height:576},hd:{width:1280,height:720},1080:{width:1920,height:1080},"4k":{width:3840,height:2160}};function ic(t,e="16:9"){const r=r$[t];if(!r)throw new Error(`Unknown resolution: ${t}`);switch(e){case"16:9":return{width:r.width,height:r.height};case"9:16":return{width:r.height,height:r.width};case"1:1":return{width:r.height,height:r.height};case"4:5":return{width:Math.round(r.height*4/5),height:r.height};case"4:3":return{width:Math.round(r.height*4/3),height:r.height};default:throw new Error(`Unknown aspectRatio: ${e}`)}}class i${constructor(e){this.edit=e}setSize(e,r){gR.parse({width:e,height:r});const n={width:e,height:r};this.edit.size=n;const i=this.edit.getResolvedEdit();i&&(i.output={...i.output,size:n},delete i.output.resolution,delete i.output.aspectRatio);const a=this.edit.getDocument();a?.setSize(n),a?.clearResolution(),a?.clearAspectRatio(),this.edit.updateCanvasForSize(),this.edit.getInternalEvents().emit(Ft.OutputResized,n)}getSize(){return this.edit.size}setFps(e){const r=vR.parse(e),n=this.edit.getResolvedEdit();n&&(n.output={...n.output,fps:r}),this.edit.getDocument()?.setFps(r),this.edit.getInternalEvents().emit(Ft.OutputFpsChanged,{fps:e})}getFps(){return this.edit.getResolvedEdit()?.output?.fps??30}setFormat(e){const r=yR.parse(e),n=this.edit.getResolvedEdit();n&&(n.output={...n.output,format:r}),this.edit.getDocument()?.setFormat(r),this.edit.getInternalEvents().emit(Ft.OutputFormatChanged,{format:r})}getFormat(){return this.edit.getResolvedEdit()?.output?.format??"mp4"}setDestinations(e){const r=mR.array().parse(e),n=this.edit.getResolvedEdit();n&&(n.output={...n.output,destinations:r}),this.edit.getInternalEvents().emit(Ft.OutputDestinationsChanged,{destinations:r})}getDestinations(){return this.edit.getResolvedEdit()?.output?.destinations??[]}setResolution(e){const r=bR.parse(e),n=this.edit.getResolvedEdit(),i=n?.output?.aspectRatio??"16:9",a=ic(r,i);this.edit.size=a,n&&(n.output={...n.output,resolution:r},delete n.output.size);const s=this.edit.getDocument();s?.setResolution(r),s?.clearSize(),this.edit.updateCanvasForSize(),this.edit.getInternalEvents().emit(Ft.OutputResolutionChanged,{resolution:r}),this.edit.getInternalEvents().emit(Ft.OutputResized,{width:a.width,height:a.height})}getResolution(){return this.edit.getResolvedEdit()?.output?.resolution}setAspectRatio(e){const r=wR.parse(e),n=this.edit.getResolvedEdit(),i=n?.output?.resolution;if(!i){n&&(n.output={...n.output,aspectRatio:r}),this.edit.getDocument()?.setAspectRatio(r),this.edit.getInternalEvents().emit(Ft.OutputAspectRatioChanged,{aspectRatio:r});return}const a=ic(i,r);this.edit.size=a,n&&(n.output={...n.output,aspectRatio:r},delete n.output.size);const s=this.edit.getDocument();s?.setAspectRatio(r),s?.clearSize(),this.edit.updateCanvasForSize(),this.edit.getInternalEvents().emit(Ft.OutputAspectRatioChanged,{aspectRatio:r}),this.edit.getInternalEvents().emit(Ft.OutputResized,{width:a.width,height:a.height})}getAspectRatio(){return this.edit.getResolvedEdit()?.output?.aspectRatio}}const n$="[shotstack-studio:system-clipboard]";async function a$(t){if(!(typeof navigator>"u"||!navigator.clipboard||typeof navigator.clipboard.writeText!="function"))try{await navigator.clipboard.writeText(t)}catch(e){console.warn(`${n$} writeText failed`,e)}}class s${constructor(e){this.edit=e}selectedClip=null;copiedClip=null;selectClip(e,r){const n=this.edit.getPlayerClip(e,r);if(n){this.selectedClip=n;const i=this.edit.getDocumentClip(e,r);i&&this.edit.getInternalEvents().emit(Ft.ClipSelected,{clip:Ye(i),trackIndex:e,clipIndex:r})}}selectPlayer(e){const r=this.findClipIndices(e);r&&this.selectClip(r.trackIndex,r.clipIndex)}clearSelection(){this.selectedClip=null,this.edit.getInternalEvents().emit(Ft.SelectionCleared)}isClipSelected(e,r){if(!this.selectedClip)return!1;const n=this.selectedClip.layer-1,a=this.edit.getTracks()[n];if(!a)return!1;const s=a.indexOf(this.selectedClip);return e===n&&r===s}isPlayerSelected(e){return this.edit.isInExportMode()?!1:this.selectedClip===e}getSelectedClipInfo(){if(!this.selectedClip)return null;const e=this.selectedClip.layer-1,n=this.edit.getTracks()[e];if(!n)return null;const i=n.indexOf(this.selectedClip);return{trackIndex:e,clipIndex:i,player:this.selectedClip}}getSelectedClip(){return this.selectedClip}setSelectedClip(e){this.selectedClip=e}copyClip(e,r){const n=this.edit.getResolvedClip(e,r);n&&(this.copiedClip={trackIndex:e,clipConfiguration:structuredClone(n)},this.edit.getInternalEvents().emit(Ft.ClipCopied,{trackIndex:e,clipIndex:r}),a$(FR(n)).catch(()=>{}))}pasteClip(){if(!this.copiedClip)return Promise.resolve();const e=structuredClone(this.copiedClip.clipConfiguration);return e.start=this.edit.playbackTime,delete e.id,ld(this.edit,this.copiedClip.trackIndex,e)}hasCopiedClip(){return this.copiedClip!==null}findClipIndices(e){const r=this.edit.getTracks();for(let n=0;n<r.length;n+=1){const i=r[n].indexOf(e);if(i!==-1)return{trackIndex:n,clipIndex:i}}return null}}const o$=new Set(["video","audio","text-to-speech"]),u$={video:"Video",audio:"Audio","text-to-speech":"TTS"},l$=/^\{\{\s*([A-Za-z0-9_]+)\s*\}\}$/,c$=/^source_[\da-f]{8}$/i;function f$(t){return!!t&&!c$.test(t)}function h$(t){try{const{pathname:e}=new URL(t),r=e.split("/").pop();return r?decodeURIComponent(r.replace(/\.[^.]+$/,"")):null}catch{return null}}function d$(t,e){return t.length<=e?t:`${t.slice(0,e).trimEnd()}...`}function p$(t,e,r,n){const i=u$[e]??e,{alias:a}=t,s=t.asset,o=`Track ${r+1} · Clip ${n+1}`;if(f$(a))return`${a} · ${i} · ${o}`;if(e==="text-to-speech"){const h=s.text??"",p=s.voice??"",g=d$(h,25),y=p?` (${p})`:"";return`"${g}"${y} · ${o}`}const u=s.src??"",l=l$.exec(u);if(l)return`${l[1]} · ${i} · ${o}`;const c=h$(u);return c?`${c} · ${i} · ${o}`:`${i} · ${o}`}function m$(t){const e=t.getDocument();if(!e)return[];const r=[],n=e.getTrackCount();for(let i=n-1;i>=0;i-=1)e.getClipsInTrack(i).forEach((s,o)=>{const u=s.asset?.type;if(!u||!o$.has(u))return;const l=t.getClipId(i,o);l&&r.push({trackIndex:i,clipIndex:o,clipId:l,assetType:u,displayLabel:p$(s,u,i,o),currentAlias:s.alias})});return r}function g$(t){return`source_${t.slice(-8)}`}async function y$(t,e,r){const i=t.getDocumentClip(e,r)?.alias;if(i)return i;const a=t.getClipId(e,r);if(!a)throw new Error(`No clip ID at track ${e}, clip ${r}`);const s=g$(a);return await t.updateClip(e,r,{alias:s}),s}const v$=3;function b$(t){return new Promise(e=>{const r=document.createElement("video");r.preload="metadata",r.crossOrigin="anonymous",r.onloadedmetadata=()=>e(r.duration),r.onerror=()=>e(null),r.src=t})}async function X2(t){const e=t;if(["video","audio","luma"].includes(e.type)&&e.src){const r=await b$(e.src);if(r!==null&&!Number.isNaN(r)){const n=e.trim??0;return r-n}}return v$}function K2(t,e,r){return e===0?0:r[t][e-1].getEnd()}function J2(t,e){return Math.max(0,e-t)}function yd(t){let e=0;for(const r of t)for(const n of r)n.getTimingIntent().length!=="end"&&(e=Math.max(e,n.getEnd()));return e}class w${constructor(e){this.edit=e}cachedTimelineEnd=0;getTimelineEnd(){return this.cachedTimelineEnd}invalidateTimelineEndCache(){this.cachedTimelineEnd=0}async resolveAllTiming(){const e=this.edit.getTracks(),r=this.edit.getResolvedEdit();for(let a=0;a<e.length;a+=1){const s=e[a],o=r.timeline.tracks[a];for(let u=0;u<s.length;u+=1){const l=s[u],c=o?.clips[u];if(c){const h=l.getTimingIntent(),p=c.start;let g=c.length;h.length==="auto"&&(g=await X2(l.clipConfiguration.asset)),l.setResolvedTiming({start:p,length:g}),c.start=p,c.length=g}}}const n=yd(e);this.cachedTimelineEnd=n;const i=this.getEndLengthClips();for(const a of i){const s=a.getResolvedTiming(),o=J2(s.start,n);a.setResolvedTiming({start:s.start,length:o});const u=a.layer-1,l=e[u]?.indexOf(a)??-1,c=r.timeline.tracks[u]?.clips[l];c&&(c.start=s.start,c.length=o)}for(const a of i)a.reconfigureAfterRestore()}propagateTimingChanges(e,r){const n=this.edit.getTracks(),i=n[e];if(!i)return;for(let s=Math.max(0,r);s<i.length;s+=1){const o=i[s];if(o.getTimingIntent().start==="auto"){const u=K2(e,s,n);o.setResolvedTiming({start:u,length:o.getLength()}),o.reconfigureAfterRestore()}}this.propagateAliasChanges();const a=yd(n);if(a!==this.cachedTimelineEnd){this.cachedTimelineEnd=a;const s=this.getEndLengthClips();for(const o of s){const u=J2(o.getStart(),a),l=o.getLength();Math.abs(u-l)>.001&&(o.setResolvedTiming({start:o.getStart(),length:u}),o.reconfigureAfterRestore())}}this.edit.updateTotalDuration(),this.edit.getInternalEvents().emit(Ft.TimelineUpdated,{current:this.edit.getEdit()})}propagateAliasChanges(){const e=this.edit.getTracks(),r=this.edit.getResolvedEdit();for(let n=0;n<e.length;n+=1){const i=e[n],a=r.timeline.tracks[n];for(let s=0;s<i.length;s+=1){const o=i[s],u=a?.clips[s],l=o.getTimingIntent(),c=br(l.start),h=br(l.length);if((c||h)&&u){const p=o.getStart(),g=o.getLength(),y=Math.abs(u.start-p)>.001,E=Math.abs(u.length-g)>.001;(y||E)&&(o.setResolvedTiming({start:u.start,length:u.length}),o.reconfigureAfterRestore())}}}}getEndLengthClips(){const e=this.edit.getTracks(),r=[];for(const n of e)for(const i of n)i.getTimingIntent().length==="end"&&r.push(i);return r}}class _$ extends q2{registry;constructor(){super(),this.registry={}}}class nc{static VIDEO_EXTENSIONS=[".mp4",".m4v",".webm",".ogg",".ogv"];static VIDEO_MIME={".mp4":"video/mp4",".m4v":"video/mp4",".webm":"video/webm",".ogg":"video/ogg",".ogv":"video/ogg"};loadTracker=new _$;refCounts=new Map;incrementRef(e){this.refCounts.set(e,(this.refCounts.get(e)??0)+1)}decrementRef(e){const r=this.refCounts.get(e)??0;return r<=1?(this.refCounts.delete(e),!0):(this.refCounts.set(e,r-1),!1)}constructor(){st.Assets.setPreferences({crossOrigin:"anonymous"})}async rejectAsset(e){console.warn(`[AssetLoader.rejectAsset] Rejected invalid asset "${e}".`),await this.cleanupFailedLoad(e)}async load(e,r){this.updateAssetLoadMetadata(e,"pending",0),this.incrementRef(e);try{const i=await this.shouldUseSafariVideoLoader(r)?await this.loadVideoForSafari(e,r):await st.Assets.load(r,a=>{this.updateAssetLoadMetadata(e,"loading",a)});return i==null?(console.warn(`[AssetLoader.load] Empty asset returned for "${e}"`),this.updateAssetLoadMetadata(e,"failed",1),await this.cleanupFailedLoad(e),null):(this.updateAssetLoadMetadata(e,"success",1),i)}catch(n){return console.warn(`[AssetLoader.load] Failed to load "${e}":`,n),this.updateAssetLoadMetadata(e,"failed",1),await this.cleanupFailedLoad(e),null}}async loadVideoUnique(e,r){this.updateAssetLoadMetadata(e,"pending",0);try{const n=this.extractUrl(r);if(!n)throw new Error("No URL provided for video loading");const i=typeof r=="object"?r.data??{}:{},a=await new Promise((s,o)=>{const u=document.createElement("video");u.crossOrigin="anonymous",u.playsInline=!0,u.muted=i.muted??!1,u.preload="auto",u.addEventListener("loadedmetadata",()=>{try{const l=new st.VideoSource({resource:u,autoPlay:i.autoPlay??!1,...i});s(new st.Texture({source:l}))}catch(l){o(l)}},{once:!0}),u.addEventListener("error",()=>o(new Error("Video loading failed")),{once:!0}),this.updateAssetLoadMetadata(e,"loading",.5),u.src=n});return this.updateAssetLoadMetadata(e,"success",1),a}catch{return this.updateAssetLoadMetadata(e,"failed",1),null}}getProgress(){const e=Object.keys(this.loadTracker.registry);return e.length===0?0:e.reduce((n,i)=>n+this.loadTracker.registry[i].progress,0)/e.length}async cleanupFailedLoad(e){this.decrementRef(e);try{await st.Assets.unload(e)}catch{}}extractUrl(e){if(typeof e=="string")return e;const r=Array.isArray(e.src)?e.src[0]:e.src;return typeof r=="string"?r:r?.src}hasVideoExtension(e){const r=new URL(e,window.location.origin).pathname.toLowerCase();return nc.VIDEO_EXTENSIONS.some(n=>r.endsWith(n))}async getContentType(e){try{return(await fetch(e,{method:"HEAD"})).headers.get("content-type")}catch{return null}}canPlayVideo(e){const r=new URL(e,window.location.origin).pathname.toLowerCase(),n=r.slice(r.lastIndexOf(".")),i=nc.VIDEO_MIME[n];return i?document.createElement("video").canPlayType(i)!=="":!1}async isPlayableVideo(e){if(this.hasVideoExtension(e))return this.canPlayVideo(e);const r=await this.getContentType(e);return r?.startsWith("video/")?document.createElement("video").canPlayType(r)!=="":!1}async shouldUseSafariVideoLoader(e){const r=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),n=this.extractUrl(e);return r&&n!==void 0&&await this.isPlayableVideo(n)}async loadVideoForSafari(e,r){const n=this.extractUrl(r),i=typeof r=="object"?r.data??{}:{},a=await new Promise((s,o)=>{const u=document.createElement("video");u.crossOrigin="anonymous",u.playsInline=!0,u.muted=!0,u.preload="metadata",u.addEventListener("loadedmetadata",()=>{try{const l=new st.VideoSource({resource:u,autoPlay:i.autoPlay??!1,...i});s(new st.Texture({source:l}))}catch(l){o(l)}},{once:!0}),u.addEventListener("error",()=>o(new Error("Video loading failed")),{once:!0}),this.updateAssetLoadMetadata(e,"loading",.5),u.src=n});return this.updateAssetLoadMetadata(e,"success",1),a}updateAssetLoadMetadata(e,r,n){this.loadTracker.registry[e]?(this.loadTracker.registry[e].progress=n,this.loadTracker.registry[e].status=r):this.loadTracker.registry[e]={progress:n,status:r};const i={...this.loadTracker.registry};this.loadTracker.emit("onAssetLoadInfoUpdated",{registry:i})}}function Q2(t){const e=t.names,r=e.fontFamily??e.windows?.fontFamily??e.macintosh?.fontFamily??{},n=r.en??r[Object.keys(r)[0]];if(!n)throw new Error(`Font has no readable family name; name tables present: ${Object.keys(e).join(", ")||"none"}`);return n}class ac{static Name="FontLoadParser";id;name;extension;validFontExtensions;woff2Decompressor;constructor(){this.id=ac.Name,this.name=ac.Name,this.extension={type:[st.ExtensionType.LoadParser],priority:st.LoaderParserPriority.High,ref:null},this.validFontExtensions=["ttf","otf","woff","woff2"],this.woff2Decompressor=null}test(e){const r=e.split("?")[0]?.split(".").pop()?.toLowerCase()??"";return this.validFontExtensions.includes(r)}async load(e,r,n){const i=e.split("?")[0]?.split(".").pop()?.toLowerCase()??"",a=await fetch(e).then(p=>p.arrayBuffer());if(i!=="woff2"){const p=vc.parse(new Uint8Array(a).buffer),g=Q2(p),y=new FontFace(g,`url(${e})`);return await y.load(),document.fonts.add(y),y}if(await this.loadWoff2Decompressor(),!this.woff2Decompressor)throw new Error("Cannot initialize Woff2 decompressor.");const s=this.woff2Decompressor.decompress(a),o=vc.parse(new Uint8Array(s).buffer),u=Q2(o),l=new Blob([s],{type:"font/ttf"}),c=URL.createObjectURL(l),h=new FontFace(u,`url(${c})`);return await h.load(),document.fonts.add(h),h}async loadWoff2Decompressor(){if(this.woff2Decompressor)return;const r=`${await fetch("https://unpkg.com/wawoff2@2.0.1/build/decompress_binding.js").then(n=>n.text())}; return Module`;this.woff2Decompressor=new Function(r)(),await new Promise(n=>{this.woff2Decompressor.onRuntimeInitialized=n})}unload(e){e&&document.fonts.delete(e)}}class x${queue=[];isProcessing=!1;async enqueue(e){return new Promise((r,n)=>{this.queue.push(async()=>{try{const i=await e();r(i)}catch(i){n(i)}}),this.processQueue()})}async processQueue(){if(!this.isProcessing){for(this.isProcessing=!0;this.queue.length>0;){const e=this.queue.shift();if(e)try{await e()}catch{}}this.isProcessing=!1}}}function ui(t){return structuredClone(t)}class Ya{data;clipBindings=new Map;constructor(e){this.data=ui(e),this.hydrateIds()}hydrateIds(){const e=new Set;for(const r of this.data.timeline.tracks)for(let n=0;n<r.clips.length;n+=1){const i=r.clips[n];if(e.has(i)){const a=structuredClone(i);a.id=crypto.randomUUID(),r.clips[n]=a}else e.add(i),i.id||(i.id=crypto.randomUUID())}}getTimeline(){return this.data.timeline}getBackground(){return this.data.timeline.background}getTracks(){return this.data.timeline.tracks}getTrack(e){return this.data.timeline.tracks[e]??null}getTrackCount(){return this.data.timeline.tracks.length}getSoundtrack(){return this.data.timeline.soundtrack}getClip(e,r){const n=this.data.timeline.tracks[e];return n?n.clips[r]??null:null}getClipsInTrack(e){return this.data.timeline.tracks[e]?.clips??[]}getClipCount(){return this.data.timeline.tracks.reduce((e,r)=>e+r.clips.length,0)}getClipCountInTrack(e){return this.data.timeline.tracks[e]?.clips.length??0}getClipById(e){for(let r=0;r<this.data.timeline.tracks.length;r+=1){const n=this.data.timeline.tracks[r].clips;for(let i=0;i<n.length;i+=1)if(n[i].id===e)return{clip:n[i],trackIndex:r,clipIndex:i}}return null}updateClipById(e,r){const n=this.getClipById(e);n&&Object.assign(n.clip,ui(r))}removeClipById(e){const r=this.getClipById(e);return r?this.removeClip(r.trackIndex,r.clipIndex):null}getClipId(e,r){return this.getClip(e,r)?.id??null}getOutput(){return this.data.output}getSize(){const{size:e}=this.data.output;if(!e?.width||!e?.height)throw new Error("Output size is not defined");return{width:e.width,height:e.height}}getFormat(){return this.data.output.format}getFps(){return this.data.output.fps}getResolution(){return this.data.output.resolution}getAspectRatio(){return this.data.output.aspectRatio}getMergeFields(){return this.data.merge}addTrack(e,r){const n=r?ui(r):{clips:[]};return this.data.timeline.tracks.splice(e,0,n),n}removeTrack(e){if(e<0||e>=this.data.timeline.tracks.length)return null;if(this.data.timeline.tracks.length<=1)return console.warn("Cannot remove the last track"),null;const[r]=this.data.timeline.tracks.splice(e,1);return r??null}addClip(e,r,n){const i=this.data.timeline.tracks[e];if(!i)throw new Error(`Track ${e} does not exist`);const a=ui(r);a.id||(a.id=crypto.randomUUID());const s=n??i.clips.length;return i.clips.splice(s,0,a),a}removeClip(e,r){const n=this.data.timeline.tracks[e];if(!n||r<0||r>=n.clips.length)return null;const[i]=n.clips.splice(r,1);return i??null}updateClip(e,r,n){const i=this.getClip(e,r);if(!i)throw new Error(`Clip at track ${e}, index ${r} does not exist`);Object.assign(i,ui(n))}replaceClipProperties(e,r,n){const i=this.data.timeline.tracks[e],a=i?.clips[r];if(!i||!a)throw new Error(`Clip at track ${e}, index ${r} does not exist`);const{id:s}=a,o=ui(n);s&&(o.id=s),i.clips[r]=o}replaceClip(e,r,n){const i=this.data.timeline.tracks[e];if(!i||r<0||r>=i.clips.length)return null;const a=i.clips[r];return i.clips[r]=ui(n),a}moveClip(e,r,n,i){const a=this.data.timeline.tracks[e];if(!a||r<0||r>=a.clips.length)return null;const s=this.data.timeline.tracks[n];if(!s)return null;const[o]=a.clips.splice(r,1);if(!o)return null;i&&Object.assign(o,ui(i));const u=typeof o.start=="number"?o.start:0;let l=0;for(let c=0;c<s.clips.length;c+=1){const h=s.clips[c].start;if(u<(typeof h=="number"?h:0))break;l+=1}return s.clips.splice(l,0,o),o}setBackground(e){this.data.timeline.background=e}setSoundtrack(e){this.data.timeline.soundtrack=e?ui(e):void 0}getFonts(){return this.data.timeline.fonts??[]}addFont(e){this.data.timeline.fonts||(this.data.timeline.fonts=[]),this.data.timeline.fonts.some(r=>r.src===e)||this.data.timeline.fonts.push({src:e})}removeFont(e){this.data.timeline.fonts&&(this.data.timeline.fonts=this.data.timeline.fonts.filter(r=>r.src!==e))}setFonts(e){this.data.timeline.fonts=ui(e)}setSize(e){this.data.output.size={width:e.width,height:e.height}}setFormat(e){this.data.output.format=e}setFps(e){this.data.output.fps=e}setResolution(e){this.data.output.resolution=e}clearResolution(){delete this.data.output.resolution}setAspectRatio(e){this.data.output.aspectRatio=e}clearAspectRatio(){delete this.data.output.aspectRatio}clearSize(){delete this.data.output.size}setMergeFields(e){this.data.merge=ui(e)}setClipBinding(e,r,n){let i=this.clipBindings.get(e);i||(i=new Map,this.clipBindings.set(e,i)),i.set(r,n)}getClipBinding(e,r){return this.clipBindings.get(e)?.get(r)}removeClipBinding(e,r){const n=this.clipBindings.get(e);n&&(n.delete(r),n.size===0&&this.clipBindings.delete(e))}getClipBindings(e){return this.clipBindings.get(e)}setClipBindingsForClip(e,r){r.size===0?this.clipBindings.delete(e):this.clipBindings.set(e,new Map(r))}clearClipBindings(e){this.clipBindings.delete(e)}getClipIdsWithBindings(){return Array.from(this.clipBindings.keys())}toJSON(e){const r=structuredClone(this.data),n=e?.includeIds??!1,i=r.timeline.fonts??[],a=new Set(i.map(s=>s.src));for(const s of r.timeline.tracks)for(const o of s.clips){const u=o.id;if(u){const h=this.clipBindings.get(u);if(h)for(const[p,{placeholder:g}]of h)Yi(o,p,g)}n||delete o.id;const l=o.asset?.font?.family,c=l?dV(l):void 0;c&&!a.has(c)&&(i.push({src:c}),a.add(c))}return i.length>0&&(r.timeline.fonts=i),r.merge?.length===0&&delete r.merge,r}static fromJSON(e){return new Ya(e)}clone(){return new Ya(this.data)}}const t6=new Set(["asset","start","length","id"]);class C${constructor(e){this.edit=e,this.edit.getInternalEvents().on(Fe.Resolved,this.onResolved)}isReconciling=!1;enableCreation=!0;inFlightLoads=new Set;onResolved=({edit:e})=>{this.reconcile(e)};async reconcileInitial(e){const r=this.reconcile(e);return await Promise.all(r.pendingLoads),r}async whenSettled(){for(;this.inFlightLoads.size>0;)await Promise.allSettled([...this.inFlightLoads])}reconcile(e){if(this.isReconciling)return{created:[],updated:[],disposed:[],pendingLoads:[]};this.isReconciling=!0;try{const r=[],n={created:[],updated:[],disposed:[],pendingLoads:r},i=new Set;for(let s=0;s<e.timeline.tracks.length;s+=1){const o=e.timeline.tracks[s];for(let u=0;u<o.clips.length;u+=1){const l=o.clips[u],c=l.id;if(c){i.add(c);const h=this.edit.getPlayerByClipId(c);if(h){const p=this.updatePlayer(h,l,s);p==="recreate"?(this.disposePlayer(c),r.push(this.createPlayer(l,c,s,u)),n.disposed.push(c),n.created.push(c)):p&&n.updated.push(c)}else this.enableCreation&&(this.createPlayer(l,c,s,u),n.created.push(c))}}}const a=this.findOrphanedPlayers(i);for(const s of a)this.disposePlayer(s),n.disposed.push(s);return(n.created.length>0||n.disposed.length>0||n.updated.length>0)&&this.rebuildTracksOrdering(e),this.syncTrackContainers(e.timeline.tracks.length),n}finally{this.isReconciling=!1}}updateSinglePlayer(e,r,n,i=0){const a=this.updatePlayer(e,r,n);if(a==="recreate"){const{clipId:s}=e;return s&&(this.disposePlayer(s),this.createPlayer(r,s,n,i)),"recreate"}return a}createPlayer(e,r,n,i){const a=this.edit.createPlayerFromAssetType(e);a.layer=n+1,a.clipId=r,this.edit.registerPlayerByClipId(r,a),this.edit.addPlayerToTracksArray(n,a),this.edit.addPlayerToContainer(n,a);const s=e.asset?.type??"unknown",o=a.load().then(()=>{this.edit.getInternalEvents().emit(Fe.PlayerLoaded,{player:a,trackIndex:n,clipIndex:i}),Mo(e.asset)&&this.edit.getInternalEvents().emit(Ft.ClipUnresolved,{trackIndex:n,clipIndex:i,assetType:s,clipId:r}),a.needsResolution&&this.edit.getInternalEvents().emit(Ft.ClipUnresolved,{trackIndex:n,clipIndex:i,assetType:s,clipId:r})}).catch(u=>{const l=u instanceof Error?u.message:String(u);this.edit.getInternalEvents().emit(Ft.ClipLoadFailed,{trackIndex:n,clipIndex:i,error:l,assetType:s})});return this.inFlightLoads.add(o),o.finally(()=>this.inFlightLoads.delete(o))}updatePlayer(e,r,n){const i=e.clipConfiguration.asset?.type,a=r.asset?.type;if(i!==a||Mo(e.clipConfiguration.asset)!==Mo(r.asset))return"recreate";let s=!1;const o=e.layer-1,u=e.clipConfiguration.start,l=e.clipConfiguration.length;return(u!==r.start||l!==r.length)&&(e.setResolvedTiming({start:r.start,length:r.length}),e.reconfigureAfterRestore(),s=!0),o!==n&&(e.layer=n+1,this.edit.movePlayerBetweenTracks(e,o,n),s=!0),this.assetChanged(e.clipConfiguration.asset,r.asset)&&(this.updateAsset(e,r.asset),s=!0),this.clipPropertiesChanged(e.clipConfiguration,r)&&(this.updateClipProperties(e,r),s=!0),s}clipPropertiesChanged(e,r){const n=e,i=r,a=new Set([...Object.keys(n),...Object.keys(i)]);for(const s of a)if(!t6.has(s)&&JSON.stringify(n[s])!==JSON.stringify(i[s]))return!0;return!1}updateClipProperties(e,r){const n=e.clipConfiguration,i=r,a=new Set([...Object.keys(n),...Object.keys(i)]);for(const s of a)t6.has(s)||(i[s]!==void 0?n[s]=i[s]:delete n[s]);e.reconfigureAfterRestore()}assetChanged(e,r){return JSON.stringify(e)!==JSON.stringify(r)}updateAsset(e,r){const n=e.clipConfiguration.asset,i=r?.type;e.clipConfiguration.asset=r;let a;if(i==="html5")a=JSON.stringify(n)!==JSON.stringify(r);else{const s=n?.src,o=r?.src;a=s!==o}a&&e.reloadAsset?e.reloadAsset().then(()=>{e.reconfigureAfterRestore()}).catch(s=>{console.error("Failed to reload asset:",s)}):e.reconfigureAfterRestore()}syncTrackContainers(e){const r=this.edit.getTracks().length;if(e>r)for(let n=r;n<e;n+=1)this.edit.ensureTrackExists(n);else if(e<r)for(let n=r-1;n>=e;n-=1)this.edit.removeEmptyTrack(n)}findOrphanedPlayers(e){const r=[];for(const[n]of this.edit.getPlayerMap())e.has(n)||r.push(n);return r}disposePlayer(e){const r=this.edit.getPlayerByClipId(e);r&&(this.edit.unregisterPlayerByClipId(e),this.edit.queuePlayerForDisposal(r))}rebuildTracksOrdering(e){const r=this.edit.getTracks();for(let n=0;n<r.length;n+=1)r[n]=[];for(let n=0;n<e.timeline.tracks.length;n+=1){for(;r.length<=n;)r.push([]);for(const i of e.timeline.tracks[n].clips){const a=i.id;if(a){const s=this.edit.getPlayerByClipId(a);s&&r[n].push(s)}}}}dispose(){this.edit.getInternalEvents().off(Fe.Resolved,this.onResolved)}}const A$=new Set(["text","src"]);function e6(t,e){function r(n,i){if(typeof n=="string"&&e.isMergeFieldTemplate(n)){if(i&&A$.has(i))return e.resolve(n);const a=e.resolveToNumber(n);return a!==null?a:e.resolve(n)}if(Array.isArray(n))return n.map(a=>r(a,i));if(n!==null&&typeof n=="object"){const a={};for(const[s,o]of Object.entries(n))a[s]=r(o,s);return a}return n}return r(structuredClone(t))}function E$(t){const e=new Map,r=new Map,n=[];for(let i=0;i<t.getTrackCount();i+=1){const a=t.getClipsInTrack(i);for(let s=0;s<a.length;s+=1){const o=a[s];if(!o.id)throw new Error(`Clip at track ${i}, index ${s} is missing an ID. EditDocument hydration may have been skipped.`);const u=o.alias??o.id,l={clip:o,trackIndex:i,clipIndex:s};if(n.push({...l,id:u}),o.alias){if(r.has(o.alias))throw new Error(`Duplicate alias "${o.alias}" found. Each alias must be unique.`);r.set(o.alias,l)}}}for(let i=0;i<t.getTrackCount();i+=1){const a=t.getClipsInTrack(i);for(let s=0;s<a.length;s+=1){const o=a[s],u=o.alias??o.id,l=new Set;if(br(o.start)){const c=Po(o.start);if(!r.has(c))throw new Error(`Alias reference "alias://${c}" not found. No clip defines alias "${c}".`);l.add(c)}if(br(o.length)){const c=Po(o.length);if(!r.has(c))throw new Error(`Alias reference "alias://${c}" not found. No clip defines alias "${c}".`);l.add(c)}if(o.start==="auto"&&s>0){const c=a[s-1],h=c.alias??c.id;l.add(h)}l.size>0&&e.set(u,l)}}return{dependencies:e,clipsByAlias:r,allClips:n}}function k$(t){const e=new Set,r=new Set;function n(i,a){e.add(i),r.add(i);const s=t.get(i);if(s)for(const o of s){if(r.has(o))return[...a,o];if(!e.has(o)){const u=n(o,[...a,o]);if(u)return u}}return r.delete(i),null}for(const i of t.keys())if(!e.has(i)){const a=n(i,[i]);if(a)return a}return null}function S$(t,e){const r=[],n=new Set;function i(a){if(n.has(a))return;n.add(a);const s=t.get(a);if(s)for(const o of s)i(o);r.push(a)}for(const a of t.keys())i(a);for(const a of e)i(a);return r}function r6(t,e,r){let n;if(t.start==="auto")n=e;else if(br(t.start)){const s=Po(t.start),o=r.get(s);if(!o)throw new Error(`Internal error: Alias "${s}" not resolved.`);n=o.start}else n=t.start;let i,a=!1;if(t.length==="end")i=1,a=!0;else if(t.length==="auto")i=3;else if(br(t.length)){const s=Po(t.length),o=r.get(s);if(!o)throw new Error(`Internal error: Alias "${s}" not resolved.`);i=o.length}else i=t.length;return{...t,id:t.id??crypto.randomUUID(),start:n,length:i,pendingEndLength:a||void 0}}function D$(t){let e=0;for(const r of t)for(const n of r.clips)if(!n.pendingEndLength){const i=n.start+n.length;i>e&&(e=i)}return e}function vd(t){const{pendingEndLength:e,...r}=t;return r}function F$(t,e,r){const n=t.getClipById(e);if(!n)return null;const{clip:i,trackIndex:a,clipIndex:s}=n,u=e6(i,r.mergeFields),l=r.resolvedAliases??new Map,c=r6(u,r.previousClipEnd,l);return c.pendingEndLength&&r.cachedTimelineEnd!==void 0&&(c.length=Math.max(r.cachedTimelineEnd-c.start,.1)),{resolved:vd(c),trackIndex:a,clipIndex:s}}function i6(t,e){const{dependencies:r,allClips:n}=E$(t);if(r.size>0){const g=k$(r);if(g)throw new Error(`Circular alias reference detected: ${g.join(" -> ")}`)}const i=n.map(g=>g.id),a=S$(r,i),s=new Map;for(const g of n)s.set(g.id,g);const o=new Map,u=new Map,l=new Map;for(const g of a){const y=s.get(g);if(y){const{clip:E,trackIndex:v,clipIndex:C}=y,I=e6(E,e.mergeFields),x=l.get(v)??0,A=r6(I,x,u);o.set(`${v}-${C}`,A);const S=A.start+A.length,w=l.get(v)??0;S>w&&l.set(v,S),E.alias&&u.set(E.alias,{start:A.start,length:A.length})}}const c=[];for(let g=0;g<t.getTrackCount();g+=1){const y=t.getClipsInTrack(g).length,E=[];for(let v=0;v<y;v+=1){const C=o.get(`${g}-${v}`);if(!C)throw new Error(`Internal error: Clip at track ${g}, index ${v} was not resolved.`);E.push(C)}c.push({clips:E})}const h=D$(c),p=c.map(g=>({clips:g.clips.map(y=>{if(y.pendingEndLength){const E=Math.max(h-y.start,.1);return vd({...y,length:E})}return vd(y)})}));return{timeline:{background:t.getBackground(),tracks:p,fonts:t.getFonts()},output:t.getOutput()}}class n6 extends Error{code="INVALID_ASSET_URL";url;status;reason;constructor(e,r,n){super(`Asset URL ${e} failed validation: ${n}`),this.name="InvalidAssetUrlError",this.url=e,this.status=r,this.reason=n}}function I$(t,e,r){typeof r=="string"&&/^https?:\/\//i.test(r)&&(e.has(r)||(e.add(r),t.push(r)))}function a6(t,e,r){if(!t||typeof t!="object")return;const{asset:n}=t;n&&I$(e,r,n.src)}function N$(t){const e=[];return a6(t,e,new Set),e}function B$(t){const e=[],r=new Set,{clips:n}=t;if(Array.isArray(n))for(const i of n)a6(i,e,r);return e}class aa{static MAX_HISTORY_SIZE=100;static SEEK_ELAPSED_MARKER=101;document;size;backgroundColor;tracks;playbackTime;totalDuration;isPlaying;playWallAnchorMs=0;playTimeAnchorSeconds=0;get clips(){return this.tracks.flat()}assetLoader;internalEvents;events;canvas=null;timingManager;lumaMaskController;playerReconciler;outputSettings;selectionManager;mergeFieldService;commandHistory=[];commandIndex=-1;commandQueue=new x$;clipsToDispose=new Set;clipErrors=new Map;playerByClipId=new Map;lumaContentRelations=new Map;fontMetadata=new Map;isBatchingEvents=!1;isExporting=!1;lastResolved=null;constructor(e){po.parse(e),this.tracks=[],this.playbackTime=0,this.totalDuration=0,this.isPlaying=!1,this.document=new Ya(e);const r=this.document.getResolution(),n=this.document.getAspectRatio();this.backgroundColor=this.document.getBackground()??"#000000",this.size=r?ic(r,n):this.document.getSize(),this.assetLoader=new nc,this.internalEvents=new q2,this.events=this.internalEvents,this.lumaMaskController=new KR(()=>this.canvas,()=>this.tracks,this.internalEvents),this.playerReconciler=new C$(this),this.mergeFieldService=new e$(this.internalEvents),this.outputSettings=new i$(this),this.selectionManager=new s$(this),this.timingManager=new w$(this),this.setupIntentListeners()}async load(){await this.initializeFromDocument()}async initializeFromDocument(e="load"){const r=this.document.toJSON(),n=r.merge??[];this.mergeFieldService.loadFromSerialized(n),this.lastResolved=null;const i=this.detectMergeFieldBindings(n),a=po.parse(r);await Promise.all((a.timeline.fonts??[]).map(async o=>{const u=o.src,l={src:u,parser:ac.Name},c=await this.assetLoader.load(u,l);if(c?.family){const h=c.family.replace(/^["']|["']$/g,""),{baseFontFamily:p,fontWeight:g}=Dr(h);this.fontMetadata.set(u,{baseFamilyName:p,weight:g})}return c}));const s=this.getResolvedEdit();this.lumaMaskController.initialize(),await this.playerReconciler.reconcileInitial(s),this.normalizeLumaAttachments();for(const[o,u]of i)u.size>0&&this.document.setClipBindingsForClip(o,u);await this.timingManager.resolveAllTiming(),this.updateTotalDuration(),a.timeline.soundtrack&&await this.loadSoundtrack(a.timeline.soundtrack),this.internalEvents.emit(Ft.TimelineUpdated,{current:this.getEdit()}),this.emitEditChanged(e)}getInternalEvents(){return this.internalEvents}update(e,r){for(const n of this.clips)n.shouldDispose&&this.queueDisposeClip(n),n.update(e,r);if(this.disposeClips(),this.lumaMaskController.update(),this.isPlaying){const n=(performance.now()-this.playWallAnchorMs)/1e3;this.playbackTime=Math.max(0,Math.min(this.playTimeAnchorSeconds+n,this.totalDuration)),this.playbackTime===this.totalDuration&&this.pause()}}dispose(){this.clearClips(),this.lumaMaskController.dispose(),this.playerReconciler.dispose();for(const e of this.commandHistory)e.dispose?.();this.commandHistory=[],this.commandIndex=-1,this.lumaContentRelations.clear(),G2.cleanup()}updateCanvasForSize(){this.internalEvents.emit(Fe.ViewportSizeChanged,{width:this.size.width,height:this.size.height,backgroundColor:this.backgroundColor}),this.internalEvents.emit(Fe.ViewportNeedsZoomToFit)}play(){this.isPlaying=!0,this.playWallAnchorMs=performance.now(),this.playTimeAnchorSeconds=this.playbackTime,this.internalEvents.emit(Ft.PlaybackPlay)}pause(){this.isPlaying=!1,this.internalEvents.emit(Ft.PlaybackPause)}seek(e){this.playbackTime=Math.max(0,Math.min(e,this.totalDuration)),this.pause(),this.update(0,aa.SEEK_ELAPSED_MARKER)}stop(){this.seek(0)}async loadEdit(e){if(po.parse(e),this.pause(),this.tracks.length>0&&!this.hasStructuralChanges(e)){this.lastResolved=null;const s=structuredClone(e);this.preserveClipIdsForGranularUpdate(s);const o=this.document.getTracks(),u=this.document.getOutput();this.document=new Ya(s),this.isBatchingEvents=!0,await this.applyGranularChanges(s,o,u),this.updateTotalDuration(),this.isBatchingEvents=!1,this.emitEditChanged("loadEdit:granular");return}const r=this.document,n=this.lastResolved,i=this.size,a=this.backgroundColor;try{this.lastResolved=null,this.document=new Ya(e);const s=this.document.getResolution(),o=this.document.getAspectRatio();this.size=s?ic(s,o):this.document.getSize(),this.backgroundColor=this.document.getBackground()??"#000000",this.internalEvents.emit(Fe.ViewportSizeChanged,{width:this.size.width,height:this.size.height,backgroundColor:this.backgroundColor}),this.internalEvents.emit(Fe.ViewportNeedsZoomToFit),this.clearClips(),await this.initializeFromDocument("loadEdit")}catch(s){throw this.document=r,this.lastResolved=n,this.size=i,this.backgroundColor=a,s}}async loadSoundtrack(e){const r={id:crypto.randomUUID(),asset:{type:"audio",src:e.src,effect:e.effect,volume:e.volume??1},fit:"crop",start:0,length:this.totalDuration},n=this.createPlayerFromAssetType(r);n.layer=this.tracks.length+1,await this.addPlayer(this.tracks.length,n)}getEdit(e){const r=this.document.toJSON(e),n=this.mergeFieldService.toSerializedArray();return n.length>0&&(r.merge=n),r}getClipById(e){const r=this.document.getClipById(e)?.clip;return r?structuredClone(r):null}getClipPositionById(e){const r=this.document.getClipById(e);return r?{trackIndex:r.trackIndex,clipIndex:r.clipIndex}:null}updateClipById(e,r){const n=this.document.getClipById(e);return n?this.updateClip(n.trackIndex,n.clipIndex,r):(console.warn(`updateClipById: no clip with id ${e}`),Promise.resolve(re(`No clip with id ${e}`)))}deleteClipById(e){const r=this.document.getClipById(e);return r?this.deleteClip(r.trackIndex,r.clipIndex):(console.warn(`deleteClipById: no clip with id ${e}`),Promise.resolve(re(`No clip with id ${e}`)))}moveClipById(e,r,n){const i=this.document.getClipById(e);if(!i)return console.warn(`moveClipById: no clip with id ${e}`),Promise.resolve(re(`No clip with id ${e}`));const a=i.clip.start,s=n??(typeof a=="number"?a:null);if(s===null)return Promise.reject(new Error(`moveClipById: clip ${e} has a smart-clip start ("${a}"). Pass newStart explicitly or resolve start to a number first.`));const o=new RR(i.trackIndex,i.clipIndex,r,s);return this.executeCommand(o)}validateEdit(e){const r=po.safeParse(e);return r.success?{valid:!0,errors:[]}:{valid:!1,errors:r.error.issues.map(n=>({path:n.path.join("."),message:n.message}))}}getResolvedEdit(){return this.lastResolved||(this.lastResolved=i6(this.document,{mergeFields:this.mergeFieldService})),this.lastResolved}getResolvedClip(e,r){return this.getResolvedEdit()?.timeline?.tracks?.[e]?.clips?.[r]??null}getResolvedClipById(e){const r=this.getResolvedEdit();for(const n of r.timeline.tracks)for(const i of n.clips)if(i.id===e)return i;return null}getClipId(e,r){return this.document?.getClipId(e,r)??null}getDocumentClip(e,r){return this.document?.getClip(e,r)??null}getDocument(){return this.document}resolve(){return this.lastResolved=i6(this.document,{mergeFields:this.mergeFieldService}),this.internalEvents.emit(Fe.Resolved,{edit:this.lastResolved}),this.lastResolved}resolveClip(e){const r=this.getPlayerByClipId(e);if(!r)return!1;const n=this.document.getClipById(e);if(n?.clip.alias)return this.resolve(),!0;const i=n?.clip;if(i&&(br(i.start)||br(i.length)))return this.resolve(),!0;const a=r.layer-1,s=this.tracks[a],o=s?s.indexOf(r):-1;if(o<0)return!1;const u=o>0?s[o-1]:null,l=u?u.getEnd():0,c={mergeFields:this.mergeFieldService,previousClipEnd:l,cachedTimelineEnd:this.timingManager.getTimelineEnd()},h=F$(this.document,e,c);if(!h)return!1;if(this.lastResolved){const g=this.lastResolved.timeline.tracks[h.trackIndex];g&&g.clips[h.clipIndex]&&(g.clips[h.clipIndex]=h.resolved)}return this.playerReconciler.updateSinglePlayer(r,h.resolved,h.trackIndex,h.clipIndex)!==!1}async addClip(e,r){Wa.parse(r),await this.preflightAssetUrls(N$(r));const n=new VR(e,r);return this.executeCommand(n)}addSvgClip(e,r={}){const n=cd(e),{width:i,height:a}=PR(n),s=r.trackIndex??this.selectionManager.getSelectedClipInfo()?.trackIndex??0,o={asset:{type:"svg",src:n},start:r.start??this.playbackTime,length:r.length??5,fit:"contain",...i!==void 0?{width:i}:{},...a!==void 0?{height:a}:{}};return ld(this,s,o)}addClipFromJson(e,r={}){const n=typeof e=="string"?SR(e):structuredClone(e);if(!n)return Promise.reject(new Error("addClipFromJson: invalid clip JSON or schema validation failed"));delete n.id;const i=n.asset;i?.type==="svg"&&typeof i.src=="string"&&(i.src=cd(i.src)),r.start!==void 0&&(n.start=r.start),r.length!==void 0&&(n.length=r.length);const a=r.trackIndex??this.selectionManager.getSelectedClipInfo()?.trackIndex??0;return ld(this,a,n)}async addTracksFromJson(e,r={}){let n;if(typeof e=="string"){const u=DR(e);if(!u)throw new Error("addTracksFromJson: invalid tracks JSON or schema validation failed");n=u}else Array.isArray(e)?n=e:n=[e];if(n.length===0)throw new Error("addTracksFromJson: no tracks to paste");let i=1/0;for(const u of n)for(const l of u.clips){const c=typeof l.start=="number"?l.start:0;c<i&&(i=c)}Number.isFinite(i)||(i=0);const s=(r.start??this.playbackTime)-i,o=n.map(u=>({...u,clips:u.clips.map(l=>{const c=structuredClone(l);delete c.id;const h=c.asset;h?.type==="svg"&&typeof h.src=="string"&&(h.src=cd(h.src));const p=typeof c.start=="number"?c.start:0;return c.start=p+s,c})}));await this.executeCommand(new OR(0,o))}getClip(e,r){const n=this.tracks[e];return!n||r<0||r>=n.length?null:structuredClone(n[r].clipConfiguration)}getClipError(e,r){return this.clipErrors.get(`${e}-${r}`)??null}clearClipErrorAndShift(e,r){this.clipErrors.delete(`${e}-${r}`);const n=[];for(const[i,a]of this.clipErrors){const[s,o]=i.split("-").map(Number);s===e&&o>r&&n.push({oldKey:i,newKey:`${s}-${o-1}`,value:a})}for(const{oldKey:i,newKey:a,value:s}of n)this.clipErrors.delete(i),this.clipErrors.set(a,s)}getPlayerClip(e,r){const n=this.tracks[e];return!n||r<0||r>=n.length?null:n[r]}getPlayerByClipId(e){return this.playerByClipId.get(e)??null}getDocumentClipById(e){return this.document?.getClipById(e)?.clip??null}registerPlayerByClipId(e,r){this.playerByClipId.set(e,r)}unregisterPlayerByClipId(e){this.playerByClipId.delete(e)}getPlayerMap(){return this.playerByClipId}addPlayerToTracksArray(e,r){for(;this.tracks.length<=e;)this.tracks.push([]);this.tracks[e].push(r)}movePlayerBetweenTracks(e,r,n){const i=this.tracks[r];if(i){const a=i.indexOf(e);a!==-1&&i.splice(a,1)}for(;this.tracks.length<=n;)this.tracks.push([]);this.tracks[n].push(e),this.movePlayerToTrackContainer(e,r,n)}queuePlayerForDisposal(e){this.queueDisposeClip(e),this.disposeClips()}ensureTrackExists(e){for(;this.tracks.length<=e;)this.tracks.push([])}removeEmptyTrack(e){if(e<0||e>=this.tracks.length)return;const r=this.tracks[e];if(r&&r.length>0){console.warn(`Cannot remove non-empty track ${e}`);return}this.tracks.splice(e,1),this.internalEvents.emit(Fe.TrackContainerRemoved,{trackIndex:e});for(let n=e;n<this.tracks.length;n+=1)for(const i of this.tracks[n])i.layer=n+1}getOriginalAsset(e,r){const n=this.getPlayerClip(e,r);if(!n)return;const i=n.getExportableClip();if(!i)return;const{clipId:a}=n;if(a&&this.document){const s=this.document.getClipBindings(a);if(s){for(const[o,{placeholder:u}]of s)if(o.startsWith("asset.")){const l=o.slice(6);Yi(i.asset,l,u)}}}return i.asset}canDeleteClip(e,r){return this.document.getClipCount()<=1?!1:this.document.getClip(e,r)!==null}async deleteClip(e,r){const n=this.tracks[e];if(!n)return re(`No track at index ${e}`);const i=n[r];if(!i)return re(`No clip at track ${e}, index ${r}`);if(i.playerType!==Ee.Luma){const o=n.findIndex(u=>u.playerType===Ee.Luma);if(o!==-1){if(this.document.getClipCount()<=2)return re("Cannot delete the last clip");const u=o<r?r-1:r,l=new pd(e,o);await this.executeCommand(l);const c=new pd(e,u);return this.executeCommand(c)}}const s=new pd(e,r);return this.executeCommand(s)}async addTrack(e,r){ad.parse(r),await this.preflightAssetUrls(B$(r));const n=await this.executeCommand(new ud(e,r));return await this.autoLinkCaptionSources(e,r.clips),n}async addFont(e){await this.preflightAssetUrls([e]),await this.commandQueue.enqueue(()=>{this.document.addFont(e),this.emitEditChanged("addFont")})}async setFonts(e){await this.preflightAssetUrls(e.map(r=>r.src)),await this.commandQueue.enqueue(()=>{this.document.setFonts(e),this.emitEditChanged("setFonts")})}async autoLinkCaptionSources(e,r){for(let n=0;n<r.length;n+=1){const a=r[n].asset;if(a.type==="rich-caption"&&br(a.src)){const s=m$(this);if(s.length>0){const o=s[0],u=await y$(this,o.trackIndex,o.clipIndex);await this.updateClip(e,n,{asset:{src:`alias://${u}`}})}}}}getTrack(e){const r=this.clips.filter(n=>n.layer===e+1);return r.length===0?null:{clips:r.map(n=>structuredClone(n.clipConfiguration))}}deleteTrack(e){const r=new dd(e);return this.executeCommand(r)}undo(){return this.commandQueue.enqueue(async()=>{if(this.commandIndex<0)return re("Nothing to undo");const e=this.commandHistory[this.commandIndex];if(!e.undo)return re("Command cannot be undone");const r=this.createCommandContext(),n=await Promise.resolve(e.undo(r));return this.commandIndex-=1,this.internalEvents.emit(Ft.EditUndo,{command:e.name}),this.emitEditChanged(`undo:${e.name}`),n})}redo(){return this.commandQueue.enqueue(async()=>{if(this.commandIndex>=this.commandHistory.length-1)return re("Nothing to redo");const e=this.commandIndex+1,r=this.commandHistory[e],n=this.createCommandContext(),i=await Promise.resolve(r.execute(n));return this.commandIndex=e,this.internalEvents.emit(Ft.EditRedo,{command:r.name}),this.emitEditChanged(`redo:${r.name}`),i})}get canUndo(){return this.commandIndex>=0}get canRedo(){return this.commandIndex<this.commandHistory.length-1}setUpdatedClip(e,r=null,n=null){const i=e.layer-1,a=this.tracks[i],s=a?a.indexOf(e):-1,o=new md(r,n,{trackIndex:i,clipIndex:s});this.executeCommand(o)}updateClipInDocument(e,r){const n=this.document.getClipById(e);n&&this.document.updateClip(n.trackIndex,n.clipIndex,r)}commitClipUpdate(e,r,n){const i=this.document.getClipById(e);if(!i){console.warn(`commitClipUpdate: clip ${e} not found in document`);return}sd.parse(n);const a=new md(r,structuredClone(n),{trackIndex:i.trackIndex,clipIndex:i.clipIndex});this.addCommandToHistory(a)}pushCommandToHistory(e){const r=this.commandHistory.slice(this.commandIndex+1);for(const n of r)n.dispose?.();for(this.commandHistory=this.commandHistory.slice(0,this.commandIndex+1),this.commandHistory.push(e),this.commandIndex+=1;this.commandHistory.length>aa.MAX_HISTORY_SIZE;)this.commandHistory.shift()?.dispose?.(),this.commandIndex-=1}addCommandToHistory(e){this.pushCommandToHistory(e),this.emitEditChanged(`commit:${e.name}`)}updateClip(e,r,n){const i=this.getPlayerClip(e,r);if(!i)return console.warn(`Clip not found at track ${e}, index ${r}`),Promise.resolve(re(`No clip at track ${e}, index ${r}`));const a=this.document?.getClip(e,r),s=structuredClone(a??i.clipConfiguration),o=structuredClone(a??i.clipConfiguration),u=td(o,n);sd.parse(u);const l=new md(s,u,{trackIndex:e,clipIndex:r});return this.executeCommand(l)}updateClipTiming(e,r,n){if(!this.getPlayerClip(e,r)){console.warn(`Clip not found at track ${e}, index ${r}`);return}const a=new HR(e,r,n);this.executeCommand(a)}updateTextContent(e,r,n){const i=e.layer-1,a=this.tracks[i]?.indexOf(e)??-1;if(a<0){console.warn("UpdateTextContent: clip not found in track");return}const s=new YR(i,a,r);this.executeCommand(s)}executeEditCommand(e){return this.executeCommand(e)}async preflightAssetUrls(e){if(typeof document>"u"||e.length===0)return;const r=await Promise.all(e.map(async n=>{try{const i=await fetch(n,{method:"HEAD",signal:AbortSignal.timeout(4e3),redirect:"follow"});return{url:n,status:i.status}}catch{return{url:n,status:0}}}));for(const{url:n,status:i}of r)if(i>=400&&i<500)throw new n6(n,i,`HTTP ${i}`)}executeCommand(e){return this.commandQueue.enqueue(async()=>{const r=this.createCommandContext(),n=await Promise.resolve(e.execute(r));return this.handleCommandResult(e,n),n})}handleCommandResult(e,r){r.status==="success"&&(this.pushCommandToHistory(e),this.emitEditChanged(e.name))}emitEditChanged(e){this.isBatchingEvents||this.internalEvents.emit(Ft.EditChanged,{source:e,timestamp:Date.now()})}detectMergeFieldBindings(e){const r=new Map;if(!e.length)return r;const n=new Map;for(const{find:i,replace:a}of e){const s=typeof a=="string"?a:JSON.stringify(a);n.set(i.toUpperCase(),s)}for(let i=0;i<this.document.getTrackCount();i+=1){const a=this.document.getClipsInTrack(i);for(let s=0;s<a.length;s+=1){const o=this.document.getClipId(i,s);if(o){const u=this.detectBindingsInObject(a[s],"",n);u.size>0&&r.set(o,u)}}}return r}detectBindingsInObject(e,r,n){const i=new Map;if(typeof e=="string"){if(/\{\{\s*([A-Z_0-9]+)\s*\}\}/gi.test(e)){const o=e.replace(/\{\{\s*([A-Z_0-9]+)\s*\}\}/gi,(u,l)=>n.get(l.toUpperCase())??u);i.set(r,{placeholder:e,resolvedValue:o})}return i}if(Array.isArray(e)){for(let a=0;a<e.length;a+=1){const s=r?`${r}[${a}]`:`[${a}]`,o=this.detectBindingsInObject(e[a],s,n);for(const[u,l]of o)i.set(u,l)}return i}if(e!==null&&typeof e=="object")for(const[a,s]of Object.entries(e)){const o=r?`${r}.${a}`:a,u=this.detectBindingsInObject(s,o,n);for(const[l,c]of u)i.set(l,c)}return i}hasStructuralChanges(e){if(!this.document)return!0;const r=this.document.getTracks(),n=e.timeline.tracks;if(r.length!==n.length)return!0;for(let i=0;i<r.length;i+=1){if(r[i].clips.length!==n[i].clips.length)return!0;for(let a=0;a<r[i].clips.length;a+=1){const s=r[i].clips[a]?.asset?.type,o=n[i].clips[a]?.asset?.type;if(s!==o)return!0}}return JSON.stringify(this.document.getMergeFields()??[])!==JSON.stringify(e.merge??[])||JSON.stringify(this.document.getFonts())!==JSON.stringify(e.timeline.fonts??[])||JSON.stringify(this.document.getSoundtrack())!==JSON.stringify(e.timeline.soundtrack)}preserveClipIdsForGranularUpdate(e){if(!this.document)return;const r=this.document.getTracks();for(let n=0;n<e.timeline.tracks.length;n+=1){const i=r[n],a=e.timeline.tracks[n];if(i&&a)for(let s=0;s<a.clips.length;s+=1){const o=this.document.getClipId(n,s);o&&(a.clips[s].id=o)}}}async applyGranularChanges(e,r,n){const i=e.output;if(i?.size&&(n?.size?.width!==i.size.width||n?.size?.height!==i.size.height)){const o=i.size.width??this.size.width,u=i.size.height??this.size.height;await this.setOutputSize(o,u)}i?.fps!==void 0&&n?.fps!==i.fps&&await this.setOutputFps(i.fps),i?.format!==void 0&&n?.format!==i.format&&await this.setOutputFormat(i.format),i?.destinations&&JSON.stringify(n?.destinations)!==JSON.stringify(i.destinations)&&await this.setOutputDestinations(i.destinations),i?.resolution!==void 0&&n?.resolution!==i.resolution&&await this.setOutputResolution(i.resolution),i?.aspectRatio!==void 0&&n?.aspectRatio!==i.aspectRatio&&await this.setOutputAspectRatio(i.aspectRatio);const a=e.timeline?.background;a&&this.backgroundColor!==a&&await this.setTimelineBackground(a);const s=e.timeline.tracks;for(let o=0;o<s.length;o+=1){const u=r[o].clips,l=s[o].clips;for(let c=0;c<l.length;c+=1){const h=u[c],p=l[c];JSON.stringify(h)!==JSON.stringify(p)&&await this.updateClip(o,c,p)}}}createCommandContext(){return{getClips:()=>this.clips,getTracks:()=>this.tracks,getTrack:e=>e>=0&&e<this.tracks.length?this.tracks[e]:null,getContainer:()=>this.getViewportContainer(),addPlayer:(e,r)=>this.addPlayer(e,r),addPlayerToContainer:(e,r)=>{this.addPlayerToContainer(e,r)},createPlayerFromAssetType:e=>this.createPlayerFromAssetType(e),queueDisposeClip:e=>this.queueDisposeClip(e),disposeClips:()=>this.disposeClips(),clearClipError:(e,r)=>this.clearClipErrorAndShift(e,r),undeleteClip:(e,r)=>{let n=0;if(e>=0&&e<this.tracks.length){const i=this.tracks[e];n=i.length;for(let a=0;a<i.length;a+=1)if(i[a].getStart()>r.getStart()){n=a;break}i.splice(n,0,r)}if(this.document){const i=r.getExportableClip();this.document.addClip(e,i,n);const a=this.document.getClipId(e,n);a&&(r.clipId=a,this.playerByClipId.set(a,r))}this.addPlayerToContainer(e,r),r.load().catch(i=>{const a=r.clipConfiguration?.asset?.type??"unknown",s=i instanceof Error?i.message:String(i);this.clipErrors.set(`${e}-${n}`,{error:s,assetType:a}),this.internalEvents.emit(Ft.ClipLoadFailed,{trackIndex:e,clipIndex:n,error:s,assetType:a})}),this.updateTotalDuration()},setUpdatedClip:()=>{},restoreClipConfiguration:(e,r)=>{const n=structuredClone(r),i=e.clipConfiguration;for(const a of Object.keys(i))delete i[a];if(Object.assign(i,n),e.reconfigureAfterRestore(),this.document){const a=this.findClipIndices(e);if(a){const s=e.getExportableClip();this.document.replaceClip(a.trackIndex,a.clipIndex,s)}}},updateDuration:()=>this.updateTotalDuration(),emitEvent:(e,...r)=>this.internalEvents.emit(e,...r),findClipIndices:e=>this.selectionManager.findClipIndices(e),getClipAt:(e,r)=>this.getClipAt(e,r),getSelectedClip:()=>this.selectionManager.getSelectedClip(),setSelectedClip:e=>{this.selectionManager.setSelectedClip(e)},movePlayerToTrackContainer:(e,r,n)=>this.movePlayerToTrackContainer(e,r,n),getEditState:()=>this.getResolvedEdit(),propagateTimingChanges:(e,r)=>this.propagateTimingChanges(e,r),resolveClipAutoLength:e=>this.resolveClipAutoLength(e),getMergeFields:()=>this.mergeFieldService,getOutputSize:()=>this.outputSettings.getSize(),setOutputSize:(e,r)=>this.outputSettings.setSize(e,r),getOutputFps:()=>this.outputSettings.getFps(),setOutputFps:e=>this.outputSettings.setFps(e),getOutputFormat:()=>this.outputSettings.getFormat(),setOutputFormat:e=>this.outputSettings.setFormat(e),getOutputResolution:()=>this.outputSettings.getResolution(),setOutputResolution:e=>this.outputSettings.setResolution(e),getOutputAspectRatio:()=>this.outputSettings.getAspectRatio(),setOutputAspectRatio:e=>this.outputSettings.setAspectRatio(e),getOutputDestinations:()=>this.outputSettings.getDestinations(),setOutputDestinations:e=>this.outputSettings.setDestinations(e),getTimelineBackground:()=>this.getTimelineBackground(),setTimelineBackground:e=>this.setTimelineBackgroundInternal(e),getDocument:()=>this.document,getDocumentTrack:e=>this.document?.getTrack(e)??null,getDocumentClip:(e,r)=>this.document?.getClip(e,r)??null,documentUpdateClip:(e,r,n)=>{if(!this.document)throw new Error("Document not initialized - cannot update clip");this.document.updateClip(e,r,n)},documentAddClip:(e,r,n)=>{if(!this.document)throw new Error("Document not initialized - cannot add clip");for(;this.document.getTrackCount()<=e;)this.document.addTrack(this.document.getTrackCount());return this.document.addClip(e,r,n)},documentRemoveClip:(e,r)=>{if(!this.document)throw new Error("Document not initialized - cannot remove clip");return this.document.removeClip(e,r)},derivePlayerFromDocument:(e,r)=>{const n=this.document?.getClip(e,r);if(!n)throw new Error(`derivePlayerFromDocument: No document clip at ${e}/${r} - state desync`);const i=this.getClipAt(e,r);if(!i)throw new Error(`derivePlayerFromDocument: No player at ${e}/${r} - state desync`);const{asset:a,...s}=n;Object.assign(i.clipConfiguration,s),i.reconfigureAfterRestore()},buildResolutionContext:(e,r)=>{let n=0;if(r>0){const o=this.tracks[e];o&&o[r-1]&&(n=o[r-1].getEnd())}const i=yd(this.tracks);let a=null;const s=this.getClipAt(e,r);return s&&s.getTimingIntent().length==="auto"&&(a=s.getLength()),{previousClipEnd:n,timelineEnd:i,intrinsicDuration:a}},resolve:()=>this.resolve(),resolveClip:e=>this.resolveClip(e),getPlayerByClipId:e=>this.playerByClipId.get(e)??null,registerPlayerByClipId:(e,r)=>{this.playerByClipId.set(e,r)},unregisterPlayerByClipId:e=>{this.playerByClipId.delete(e)},setClipBinding:(e,r,n)=>{this.document?.setClipBinding(e,r,n)},getClipBinding:(e,r)=>this.document?.getClipBinding(e,r),removeClipBinding:(e,r)=>{this.document?.removeClipBinding(e,r)},getClipBindings:e=>this.document?.getClipBindings(e),getEditSession:()=>this}}queueDisposeClip(e){this.clipsToDispose.add(e)}disposeClips(){if(this.clipsToDispose.size!==0){for(const e of this.clipsToDispose)e.playerType===Ee.Luma&&(this.lumaMaskController.cleanupForPlayer(e),e.clipId&&this.lumaContentRelations.delete(e.clipId));for(const e of this.clipsToDispose)e.clipId&&this.playerByClipId.delete(e.clipId);for(const e of this.clipsToDispose)this.disposeClip(e);for(const e of this.clipsToDispose){const r=e.layer-1;if(r>=0&&r<this.tracks.length){const n=this.tracks[r].indexOf(e);n!==-1&&this.tracks[r].splice(n,1)}}this.clipsToDispose.clear(),this.updateTotalDuration(),this.cleanupUnusedFonts()}}cleanupUnusedFonts(){if(!this.document)return;const e=this.document.getFonts();if(e.length===0)return;const r=new Set;for(const n of this.clips){const{asset:i}=n.clipConfiguration;i&&(i.type==="rich-text"||i.type==="rich-caption")&&i.font?.family&&r.add(i.font.family)}for(const n of e)if(n.src.includes("fonts.gstatic.com")){const a=this.extractFilenameFromUrl(n.src);a&&!r.has(a)&&this.document.removeFont(n.src)}}extractFilenameFromUrl(e){try{const{pathname:r}=new URL(e),n=r.split("/").pop();return n?n.replace(/\.[^.]+$/,""):null}catch{return null}}disposeClip(e){try{const r=this.canvas?.getViewportContainer();if(r){for(const n of r.children)if(n instanceof st.Container&&n.label?.toString().startsWith("shotstack-track-")&&n.children.includes(e.getContainer())){n.removeChild(e.getContainer());break}}}catch(r){console.warn(`Attempting to unmount an unmounted clip: ${r}`)}this.unloadClipAssets(e),this.timingManager.invalidateTimelineEndCache(),e.dispose()}unloadClipAssets(e){const{asset:r}=e.clipConfiguration;r&&"src"in r&&typeof r.src=="string"&&this.assetLoader.decrementRef(r.src)&&st.Assets.cache.has(r.src)&&st.Assets.unload(r.src)}clearClips(){for(const e of this.clips)this.disposeClip(e);this.tracks=[],this.playerByClipId.clear(),this.clipsToDispose.clear(),this.clipErrors.clear(),this.lumaContentRelations.clear(),this.updateTotalDuration()}updateTotalDuration(){let e=0;for(const n of this.tracks)for(const i of n)e=Math.max(e,i.getEnd());const r=this.totalDuration;this.totalDuration=e,r!==this.totalDuration&&this.internalEvents.emit(Ft.DurationChanged,{duration:this.totalDuration})}propagateTimingChanges(e,r){this.timingManager.propagateTimingChanges(e,r)}async resolveClipAutoLength(e){const r=e.getTimingIntent();if(r.length!=="auto")return;const n=this.findClipIndices(e);let i=e.getStart();r.start==="auto"&&n&&(i=K2(n.trackIndex,n.clipIndex,this.tracks));const a=await X2(e.clipConfiguration.asset);e.setResolvedTiming({start:i,length:a}),e.reconfigureAfterRestore(),n&&this.propagateTimingChanges(n.trackIndex,n.clipIndex)}addPlayerToContainer(e,r){this.internalEvents.emit(Fe.PlayerAddedToTrack,{player:r,trackIndex:e})}movePlayerToTrackContainer(e,r,n){this.internalEvents.emit(Fe.PlayerMovedBetweenTracks,{player:e,fromTrackIndex:r,toTrackIndex:n})}createPlayerFromAssetType(e){return G2.create(this,e)}async addPlayer(e,r){for(;this.tracks.length<=e;)this.tracks.push([]);this.tracks[e].push(r),this.internalEvents.emit(Fe.PlayerAddedToTrack,{player:r,trackIndex:e}),await r.load(),this.updateTotalDuration()}selectClip(e,r){this.selectionManager.selectClip(e,r)}focusClip(e,r){this.internalEvents.emit(Fe.ClipFocused,{trackIndex:e,clipIndex:r})}blurClip(){this.internalEvents.emit(Fe.ClipBlurred)}clearSelection(){this.selectionManager.clearSelection()}isClipSelected(e,r){return this.selectionManager.isClipSelected(e,r)}getSelectedClipInfo(){return this.selectionManager.getSelectedClipInfo()}copyClip(e,r){this.selectionManager.copyClip(e,r)}pasteClip(){return this.selectionManager.pasteClip()}hasCopiedClip(){return this.selectionManager.hasCopiedClip()}findClipIndices(e){return this.selectionManager.findClipIndices(e)}getClipAt(e,r){return e>=0&&e<this.tracks.length&&r>=0&&r<this.tracks[e].length?this.tracks[e][r]:null}selectPlayer(e){this.selectionManager.selectPlayer(e)}isPlayerSelected(e){return this.selectionManager.isPlayerSelected(e)}getActivePlayersExcept(e){const r=[];for(const n of this.tracks)for(const i of n)i!==e&&i.isActive()&&r.push(i);return r}showAlignmentGuide(e,r,n,i){this.canvas?.showAlignmentGuide(e,r,n,i)}clearAlignmentGuides(){this.canvas?.clearAlignmentGuides()}moveSelectedClip(e,r){const n=this.getSelectedClipInfo();if(!n)return;const{player:i,trackIndex:a,clipIndex:s}=n,o=this.getResolvedClip(a,s);if(!o)return;const u=structuredClone(o),l=i.calculateMoveOffset(e,r),c=structuredClone(u);c.offset=l,this.setUpdatedClip(i,u,c)}setExportMode(e){this.isExporting=e}isInExportMode(){return this.isExporting}setCanvas(e){this.canvas=e}getCanvas(){return this.canvas}getCanvasZoom(){return this.canvas?.getZoom()??1}getClipViewportRect(e,r){const n=this.getPlayerClip(e,r);if(!n||!n.isActive()||!this.canvas)return null;const i=n.getContainer().getBounds(),a=this.canvas.application.renderer?.resolution??1;return{left:i.x/a,top:i.y/a,width:i.width/a,height:i.height/a}}getCanvasElement(){return this.canvas?.application.canvas??null}getViewportContainer(){if(!this.canvas)throw new Error("Canvas not attached. Viewport container requires Canvas.");return this.canvas.getViewportContainer()}setOutputSize(e,r){const n=new GR(e,r);return this.executeCommand(n)}setOutputFps(e){const r=new UR(e);return this.executeCommand(r)}getOutputFps(){return this.outputSettings.getFps()}setOutputFormat(e){const r=new ZR(e);return this.executeCommand(r)}getOutputFormat(){return this.outputSettings.getFormat()}setOutputDestinations(e){const r=new LR(e);return this.executeCommand(r)}getOutputDestinations(){return this.outputSettings.getDestinations()}setOutputResolution(e){const r=new jR(e);return this.executeCommand(r)}getOutputResolution(){return this.outputSettings.getResolution()}setOutputAspectRatio(e){const r=new $R(e);return this.executeCommand(r)}whenSettled(){return this.playerReconciler.whenSettled()}async captureFrame(e={}){return this.captureStatic(e,r=>this.canvas.captureFrame(r))}async captureViewport(e={}){return this.captureStatic(e,r=>this.canvas.captureViewport(r))}async captureStatic(e,r){if(!this.canvas)throw new Error("captureFrame: no Canvas is attached — Edit must be mounted to a viewport.");e.time!==void 0&&(this.seek(e.time),await ed()),await this.playerReconciler.whenSettled();const n=[];for(const i of this.tracks)for(const a of i)a.isActive()&&n.push(a);try{await Promise.all(n.map(i=>i.prepareStaticRender()));for(const i of n)i.applyPlayheadState();return await r({format:e.format,quality:e.quality})}finally{for(const i of n)i.endStaticRender()}}async setOutput(e){if(e.size&&e.resolution!==void 0)throw new Error("setOutput: `size` and `resolution` are mutually exclusive — pick one. Use `size` for custom dimensions or `resolution` for a preset (preview, mobile, sd, hd, 1080, 4k).");e.size&&await this.setOutputSize(e.size.width,e.size.height),e.resolution!==void 0&&await this.setOutputResolution(e.resolution),e.format!==void 0&&await this.setOutputFormat(e.format),e.fps!==void 0&&await this.setOutputFps(e.fps),e.aspectRatio!==void 0&&await this.setOutputAspectRatio(e.aspectRatio)}getOutputAspectRatio(){return this.outputSettings.getAspectRatio()}getTimelineFonts(){return this.document.getFonts()}getFontMetadata(){return this.fontMetadata}getFontUrlByFamilyAndWeight(e,r){const{baseFontFamily:n}=Dr(e),i=n.toLowerCase();for(const[a,s]of this.fontMetadata)if(s.baseFamilyName.toLowerCase()===i&&s.weight===r)return a;for(const[a,s]of this.fontMetadata)if(s.baseFamilyName.toLowerCase()===i)return a;return null}pruneUnusedFonts(){this.cleanupUnusedFonts()}setTimelineBackground(e){const r=new WR(e);return this.executeCommand(r)}setTimelineBackgroundInternal(e){_R.parse(e),this.backgroundColor=e,this.document.setBackground(e),this.internalEvents.emit(Fe.ViewportSizeChanged,{width:this.size.width,height:this.size.height,backgroundColor:this.backgroundColor}),this.internalEvents.emit(Ft.TimelineBackgroundChanged,{color:e})}getTimelineBackground(){return this.backgroundColor}resolveMergeFields(e){return this.mergeFieldService.resolve(e)}refreshMergeFields(){const e=this.detectMergeFieldBindings(this.mergeFieldService.toSerializedArray());for(const[r,n]of e)n.size>0&&this.document.setClipBindingsForClip(r,n);this.resolve()}getTemplateClip(e,r){const n=this.getPlayerClip(e,r);if(!n)return null;const i=n.getExportableClip();if(!i)return null;const{clipId:a}=n;if(a&&this.document){const s=this.document.getClipBindings(a);if(s)for(const[o,{placeholder:u}]of s)Yi(i,o,u)}return i}getTemplateClipById(e){const r=this.getPlayerByClipId(e);if(!r)return null;const n=r.getExportableClip();if(!n||!this.document)return null;const i=this.document.getClipBindings(e);if(i)for(const[a,{placeholder:s}]of i)Yi(n,a,s);return n}getTemplateClipText(e,r){const n=this.getTemplateClip(e,r);return n?n.asset?.text??null:null}getLumaClipIdForContent(e){for(const[r,n]of this.lumaContentRelations)if(n===e)return r;return null}getContentClipIdForLuma(e){return this.lumaContentRelations.get(e)??null}setLumaContentRelationship(e,r){this.lumaContentRelations.set(e,r)}clearLumaContentRelationship(e){this.lumaContentRelations.delete(e)}getLumaContentRelationship(e){return this.lumaContentRelations.get(e)}normalizeLumaAttachments(){let e=!1;for(let r=0;r<this.tracks.length;r+=1){const n=this.tracks[r];for(const i of n)if(i.playerType===Ee.Luma){const a=this.findBestContentMatch(r,i);if(a){i.clipId&&a.clipId&&this.lumaContentRelations.set(i.clipId,a.clipId);const s=n.indexOf(i);this.document.updateClip(r,s,{start:a.getStart(),length:a.getLength()}),e=!0}}}e&&this.resolve()}findBestContentMatch(e,r){const n=this.tracks[e],i=r.getStart(),a=i+r.getLength();let s=null,o=0;for(const u of n)if(u.playerType!==Ee.Luma){const l=u.getStart(),c=l+u.getLength(),h=H2(i,a,l,c);h>o&&(o=h,s=u)}return s}lastClipClick=null;static DoubleClickThresholdMs=500;setupIntentListeners(){this.internalEvents.on(Fe.CanvasClipClicked,e=>{if(!(this.getSelectedClipInfo()?.player===e.player)){this.selectPlayer(e.player),this.lastClipClick=null;return}const n=performance.now(),i=this.lastClipClick&&n-this.lastClipClick.at<=aa.DoubleClickThresholdMs;this.lastClipClick?.player===e.player&&i?(this.internalEvents.emit(Fe.CanvasClipDoubleClicked,{player:e.player}),this.lastClipClick=null):this.lastClipClick={player:e.player,at:n}}),this.internalEvents.on(Fe.CanvasBackgroundClicked,()=>{this.clearSelection(),this.lastClipClick=null})}getTracks(){return this.tracks}}class s6{constructor(e,r,n,i,a,s){this.clipId=e,this.propertyPath=r,this.fieldName=n,this.previousFieldName=i,this.storedPreviousValue=a,this.storedNewValue=s}name="setMergeField";storedPreviousValue;storedNewValue;storedPreviousBinding;updateDocumentClip(e,r,n){const i=e.getDocument();if(!i)return;const a=i.getClipById(this.clipId);if(!a)return;const s=a.clip;if(n)Yi(s,this.propertyPath,r);else{const u=(typeof r=="string"?r.trim():"").length>0?Number(r):NaN;Yi(s,this.propertyPath,Number.isFinite(u)?u:r)}}async execute(e){if(!e)throw new Error("SetMergeFieldCommand.execute: context is required");const r=e.getMergeFields();if(this.storedPreviousBinding=e.getClipBinding(this.clipId,this.propertyPath),this.fieldName){const n={placeholder:r.createTemplate(this.fieldName),resolvedValue:this.storedNewValue};e.setClipBinding(this.clipId,this.propertyPath,n)}else e.removeClipBinding(this.clipId,this.propertyPath);if(this.fieldName?r.register({name:this.fieldName,defaultValue:this.storedNewValue},{silent:!0}):this.previousFieldName&&r.remove(this.previousFieldName,{silent:!0}),this.fieldName){const n=r.createTemplate(this.fieldName);this.updateDocumentClip(e,n,!0)}else this.updateDocumentClip(e,this.storedNewValue,!1);return e.resolve(),e.emitEvent(Ft.MergeFieldChanged,{fields:r.getAll()}),ue()}async undo(e){if(!e)throw new Error("SetMergeFieldCommand.undo: context is required");const r=e.getMergeFields();return this.storedPreviousBinding?e.setClipBinding(this.clipId,this.propertyPath,this.storedPreviousBinding):e.removeClipBinding(this.clipId,this.propertyPath),this.previousFieldName&&r.register({name:this.previousFieldName,defaultValue:this.storedPreviousValue},{silent:!0}),this.storedPreviousBinding?this.updateDocumentClip(e,this.storedPreviousBinding.placeholder,!0):this.updateDocumentClip(e,this.storedPreviousValue,!1),e.resolve(),e.emitEvent(Ft.MergeFieldChanged,{fields:r.getAll()}),ue()}dispose(){this.storedPreviousBinding=void 0}}function T$(t){if(typeof t!="object"||t===null)return!1;const e=t;return e.type==="text"&&(!e.text||e.text.trim()==="")}function o6(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}function P$(t){const e=t.width??100,r=t.height??100,n=o6(t.background?.color??"#000000"),i=t.background?.opacity??1,a=t.background?.borderRadius??0,s=[`width="${e}"`,`height="${r}"`,`fill="${n}"`];if(i!==1&&s.push(`fill-opacity="${i}"`),a>0&&s.push(`rx="${a}"`,`ry="${a}"`),t.stroke?.width&&t.stroke.width>0){const o=o6(t.stroke.color??"#000000");s.push(`stroke="${o}"`),s.push(`stroke-width="${t.stroke.width}"`)}return`<svg viewBox="0 0 ${e} ${r}" xmlns="http://www.w3.org/2000/svg"><rect ${s.join(" ")}/></svg>`}function M$(t){const e=t.asset,r=P$(e),n={...t,asset:{type:"svg",src:r}};return e.width!==void 0&&n.width===void 0&&(n.width=e.width),e.height!==void 0&&n.height===void 0&&(n.height=e.height),n}class z$ extends aa{isUpdatingMergeFields=!1;get mergeFields(){return this.mergeFieldService}applyMergeField(e,r,n,i,a){const s=this.getResolvedClipById(e),o=s?Hl(s,r):null,u=a??(o!=null?String(o):""),l=this.getTemplateClipById(e),c=l?Hl(l,r):null,h=typeof c=="string"?this.mergeFieldService.extractFieldName(c):null,p=new s6(e,r,n,h,u,i);return this.executeCommand(p)}removeMergeField(e,r,n){const i=this.getMergeFieldForProperty(e,r);if(!i)return Promise.resolve(re("No merge field on this property"));const a=new s6(e,r,null,i,n,n);return this.executeCommand(a)}getMergeFieldForProperty(e,r){const n=this.getTemplateClipById(e);if(!n)return null;const i=Hl(n,r);return typeof i=="string"?this.mergeFieldService.extractFieldName(i):null}updateMergeFieldValueLive(e,r){if(!this.isUpdatingMergeFields){this.isUpdatingMergeFields=!0;try{const n=this.mergeFieldService.get(e);if(!n)return;this.mergeFieldService.register({...n,defaultValue:r},{silent:!0});for(const[,i]of this.getPlayerMap())this.updateMergeFieldBindings(i,e,r);this.resolve(),this.getInternalEvents().emit(Ft.TimelineUpdated,{current:this.getEdit()})}finally{this.isUpdatingMergeFields=!1}}}isSrcMergeField(e){for(const[r,n]of this.getPlayerMap())if(n.clipId){const i=this.getTemplateClipById(r);if(i){const a=i.asset?.type;if(a==="image"||a==="video"||a==="audio"){const o=this.getMergeFieldUsage(i,e);if(o.used&&o.isSrcField)return!0}}}return!1}validateMergeFieldValue(e,r){const n=this.getDocument();if(!n)return null;const i=this.mergeFieldService.get(e);if(!i)return null;const a=i.defaultValue;this.mergeFieldService.register({...i,defaultValue:r},{silent:!0});try{for(const s of n.getClipIdsWithBindings()){const o=n.getClipBindings(s);if(o&&this.clipUsesField(o,e)){const u=n.getClipById(s);if(u){const l=structuredClone(u.clip);for(const[h,p]of o){const g=this.mergeFieldService.resolve(p.placeholder);Yi(l,h,g)}delete l.id;const c=Wa.safeParse(l);if(!c.success)return c.error.issues[0]?.message??"Invalid value"}}}return null}finally{this.mergeFieldService.register({...i,defaultValue:a},{silent:!0})}}isValueCompatibleWithClipProperty(e,r,n){const i=this.getResolvedClipById(e);if(!i)return!0;const a=structuredClone(i);return Yi(a,r,n),delete a.id,Wa.safeParse(a).success}clipUsesField(e,r){for(const[,n]of e)if(this.mergeFieldService.extractFieldName(n.placeholder)===r)return!0;return!1}getMergeFieldClipLocation(e){const r=this.getDocument();if(!r)return null;for(const n of r.getClipIdsWithBindings()){const i=r.getClipBindings(n);if(i&&this.clipUsesField(i,e))return this.getClipPositionById(n)}return null}async deleteMergeFieldGlobally(e){const r=this.mergeFieldService.get(e);if(!r)return;const n=this.mergeFieldService.createTemplate(e),i=r.defaultValue;for(const[s]of this.getPlayerMap()){const o=this.getTemplateClipById(s);o&&await this.restoreMergeFieldInClip(s,o,n,i)}this.mergeFieldService.remove(e)||this.getInternalEvents().emit(Ft.MergeFieldChanged,{fields:this.mergeFieldService.getAll()})}async convertAllTextAssets(){const e=this.getDocument();if(!e)return console.error("No document available for conversion"),{richText:0,svg:0};const r=JSON.parse(JSON.stringify(e.toJSON()));let n=0,i=0;const a=r.timeline?.tracks;if(a){for(const s of a)if(s.clips)for(let o=0;o<s.clips.length;o+=1){const u=s.clips[o],l=u.asset;l?.type==="text"&&(T$(l)?(s.clips[o]=M$(u),i+=1):(s.clips[o]=this.convertTextClipToRichText(u),n+=1))}}return console.log("CONVERTED TEMPLATE - Copy the JSON below:"),console.log(JSON.stringify(r,null," ")),{richText:n,svg:i}}mapVerticalAlign(e){return e==="center"?"middle":e==="top"||e==="bottom"?e:"middle"}convertTextClipToRichText(e){const r=e.asset,n=r.font?.family??"Open Sans",{fontWeight:i}=Dr(n),a={family:n,size:typeof r.font?.size=="string"?Number(r.font.size):r.font?.size??32,weight:r.font?.weight??i,color:r.font?.color??"#ffffff",opacity:r.font?.opacity??1};r.stroke?.width&&r.stroke.width>0&&(a.stroke={width:r.stroke.width,color:r.stroke.color??"#000000",opacity:1});const s={letterSpacing:0,wordSpacing:0,lineHeight:r.font?.lineHeight??1.2,textTransform:"none",textDecoration:"none"},o={type:"rich-text",text:r.text??"",font:a,style:s,align:{horizontal:r.alignment?.horizontal??"center",vertical:this.mapVerticalAlign(r.alignment?.vertical)}};r.background&&(o.background={color:r.background.color,opacity:r.background.opacity??1,borderRadius:r.background.borderRadius??0},r.background.padding&&(o.padding=r.background.padding)),r.animation&&(o.animation={preset:r.animation.preset,duration:r.animation.duration}),r.ellipsis!==void 0&&console.warn("TextAsset ellipsis property not supported in RichTextAsset, value dropped");const u={...e,asset:o};return r.width!==void 0&&u.width===void 0&&(u.width=r.width),r.height!==void 0&&u.height===void 0&&(u.height=r.height),u}updateMergeFieldBindings(e,r,n){if(!e)return;const{clipId:i}=e;if(!i)return;const a=this.getDocument();if(!a)return;const s=a.getClipBindings(i);if(!s)return;const o=a.getClipById(i);for(const[u,l]of s)if(this.mergeFieldService.extractFieldName(l.placeholder)===r){const h=this.mergeFieldService.resolve(l.placeholder),p={placeholder:l.placeholder,resolvedValue:h};if(a.setClipBinding(i,u,p),o){const g=u.split(".").pop()??"",y=g==="text"||g==="html",v=(typeof h=="string"?h.trim():"").length>0?Number(h):NaN,C=!y&&Number.isFinite(v)?v:h;Yi(o.clip,u,C)}}}getMergeFieldUsage(e,r,n=""){if(!e||typeof e!="object")return{used:!1,isSrcField:!1};for(const[i,a]of Object.entries(e)){const s=n?`${n}.${i}`:i;if(typeof a=="string"){if(this.mergeFieldService.extractFieldName(a)===r)return{used:!0,isSrcField:s==="asset.src"||s.endsWith(".src")}}else if(typeof a=="object"&&a!==null){const o=this.getMergeFieldUsage(a,r,s);if(o.used)return o}}return{used:!1,isSrcField:!1}}async restoreMergeFieldInClip(e,r,n,i,a=""){if(!(!r||typeof r!="object"))for(const s of Object.keys(r)){const o=r[s],u=a?`${a}.${s}`:s;if(typeof o=="string"){const l=this.mergeFieldService.extractFieldName(o),c=this.mergeFieldService.extractFieldName(n);if(l&&c&&l===c){const h=o.replace(new RegExp(`\\{\\{\\s*${l}\\s*\\}\\}`,"gi"),i);await this.removeMergeField(e,u,h)}}else typeof o=="object"&&o!==null&&await this.restoreMergeFieldInClip(e,o,n,i,u)}}}var Tt,Xi=new Array(128).fill(void 0);Xi.push(void 0,null,!0,!1);var yo=Xi.length;function Ir(t){yo===Xi.length&&Xi.push(Xi.length+1);const e=yo;return yo=Xi[e],Xi[e]=t,e}function gr(t){return Xi[t]}function V$(t){t<132||(Xi[t]=yo,yo=t)}function Ki(t){const e=gr(t);return V$(t),e}var vo=0,bo=null;function sc(){return(bo===null||bo.byteLength===0)&&(bo=new Uint8Array(Tt.memory.buffer)),bo}var oc=typeof TextEncoder<"u"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},O$=typeof oc.encodeInto=="function"?function(t,e){return oc.encodeInto(t,e)}:function(t,e){const r=oc.encode(t);return e.set(r),{read:t.length,written:r.length}};function bd(t,e,r){if(r===void 0){const o=oc.encode(t),u=e(o.length,1)>>>0;return sc().subarray(u,u+o.length).set(o),vo=o.length,u}let n=t.length,i=e(n,1)>>>0;const a=sc();let s=0;for(;s<n;s++){const o=t.charCodeAt(s);if(o>127)break;a[i+s]=o}if(s!==n){s!==0&&(t=t.slice(s)),i=r(i,n,n=s+t.length*3,1)>>>0;const o=sc().subarray(i+s,i+n),u=O$(t,o);s+=u.written,i=r(i,n,s,1)>>>0}return vo=s,i}function wd(t){return t==null}var wo=null;function Xe(){return(wo===null||wo.byteLength===0)&&(wo=new Int32Array(Tt.memory.buffer)),wo}var u6=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&u6.decode();function uc(t,e){return t=t>>>0,u6.decode(sc().subarray(t,t+e))}function R$(t,e){if(!(t instanceof e))throw new Error(`expected instance of ${e.name}`);return t.ptr}function $$(t,e){try{return t.apply(this,e)}catch(r){Tt.__wbindgen_exn_store(Ir(r))}}var l6=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(t=>Tt.__wbg_bbox_free(t>>>0)),_d=class z6{static __wrap(e){e=e>>>0;const r=Object.create(z6.prototype);return r.__wbg_ptr=e,l6.register(r,r.__wbg_ptr,r),r}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,l6.unregister(this),e}free(){const e=this.__destroy_into_raw();Tt.__wbg_bbox_free(e)}get x(){return Tt.__wbg_get_bbox_x(this.__wbg_ptr)}set x(e){Tt.__wbg_set_bbox_x(this.__wbg_ptr,e)}get y(){return Tt.__wbg_get_bbox_y(this.__wbg_ptr)}set y(e){Tt.__wbg_set_bbox_y(this.__wbg_ptr,e)}get width(){return Tt.__wbg_get_bbox_width(this.__wbg_ptr)}set width(e){Tt.__wbg_set_bbox_width(this.__wbg_ptr,e)}get height(){return Tt.__wbg_get_bbox_height(this.__wbg_ptr)}set height(e){Tt.__wbg_set_bbox_height(this.__wbg_ptr,e)}},c6=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(t=>Tt.__wbg_renderedimage_free(t>>>0)),L$=class V6{static __wrap(e){e=e>>>0;const r=Object.create(V6.prototype);return r.__wbg_ptr=e,c6.register(r,r.__wbg_ptr,r),r}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,c6.unregister(this),e}free(){const e=this.__destroy_into_raw();Tt.__wbg_renderedimage_free(e)}get width(){return Tt.renderedimage_width(this.__wbg_ptr)>>>0}get height(){return Tt.renderedimage_height(this.__wbg_ptr)>>>0}asPng(){try{const i=Tt.__wbindgen_add_to_stack_pointer(-16);Tt.renderedimage_asPng(i,this.__wbg_ptr);var e=Xe()[i/4+0],r=Xe()[i/4+1],n=Xe()[i/4+2];if(n)throw Ki(r);return Ki(e)}finally{Tt.__wbindgen_add_to_stack_pointer(16)}}get pixels(){const e=Tt.renderedimage_pixels(this.__wbg_ptr);return Ki(e)}},Z$=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(t=>Tt.__wbg_resvg_free(t>>>0)),U$=class{__destroy_into_raw(){const t=this.__wbg_ptr;return this.__wbg_ptr=0,Z$.unregister(this),t}free(){const t=this.__destroy_into_raw();Tt.__wbg_resvg_free(t)}constructor(t,e,r){try{const u=Tt.__wbindgen_add_to_stack_pointer(-16);var n=wd(e)?0:bd(e,Tt.__wbindgen_malloc,Tt.__wbindgen_realloc),i=vo;Tt.resvg_new(u,Ir(t),n,i,wd(r)?0:Ir(r));var a=Xe()[u/4+0],s=Xe()[u/4+1],o=Xe()[u/4+2];if(o)throw Ki(s);return this.__wbg_ptr=a>>>0,this}finally{Tt.__wbindgen_add_to_stack_pointer(16)}}get width(){return Tt.resvg_width(this.__wbg_ptr)}get height(){return Tt.resvg_height(this.__wbg_ptr)}render(){try{const n=Tt.__wbindgen_add_to_stack_pointer(-16);Tt.resvg_render(n,this.__wbg_ptr);var t=Xe()[n/4+0],e=Xe()[n/4+1],r=Xe()[n/4+2];if(r)throw Ki(e);return L$.__wrap(t)}finally{Tt.__wbindgen_add_to_stack_pointer(16)}}toString(){let t,e;try{const i=Tt.__wbindgen_add_to_stack_pointer(-16);Tt.resvg_toString(i,this.__wbg_ptr);var r=Xe()[i/4+0],n=Xe()[i/4+1];return t=r,e=n,uc(r,n)}finally{Tt.__wbindgen_add_to_stack_pointer(16),Tt.__wbindgen_free(t,e,1)}}innerBBox(){const t=Tt.resvg_innerBBox(this.__wbg_ptr);return t===0?void 0:_d.__wrap(t)}getBBox(){const t=Tt.resvg_getBBox(this.__wbg_ptr);return t===0?void 0:_d.__wrap(t)}cropByBBox(t){R$(t,_d),Tt.resvg_cropByBBox(this.__wbg_ptr,t.__wbg_ptr)}imagesToResolve(){try{const n=Tt.__wbindgen_add_to_stack_pointer(-16);Tt.resvg_imagesToResolve(n,this.__wbg_ptr);var t=Xe()[n/4+0],e=Xe()[n/4+1],r=Xe()[n/4+2];if(r)throw Ki(e);return Ki(t)}finally{Tt.__wbindgen_add_to_stack_pointer(16)}}resolveImage(t,e){try{const i=Tt.__wbindgen_add_to_stack_pointer(-16),a=bd(t,Tt.__wbindgen_malloc,Tt.__wbindgen_realloc),s=vo;Tt.resvg_resolveImage(i,this.__wbg_ptr,a,s,Ir(e));var r=Xe()[i/4+0],n=Xe()[i/4+1];if(n)throw Ki(r)}finally{Tt.__wbindgen_add_to_stack_pointer(16)}}};async function j$(t,e){if(typeof Response=="function"&&t instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(t,e)}catch(n){if(t.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",n);else throw n}const r=await t.arrayBuffer();return await WebAssembly.instantiate(r,e)}else{const r=await WebAssembly.instantiate(t,e);return r instanceof WebAssembly.Instance?{instance:r,module:t}:r}}function G$(){const t={};return t.wbg={},t.wbg.__wbg_new_28c511d9baebfa89=function(e,r){const n=new Error(uc(e,r));return Ir(n)},t.wbg.__wbindgen_memory=function(){const e=Tt.memory;return Ir(e)},t.wbg.__wbg_buffer_12d079cc21e14bdb=function(e){const r=gr(e).buffer;return Ir(r)},t.wbg.__wbg_newwithbyteoffsetandlength_aa4a17c33a06e5cb=function(e,r,n){const i=new Uint8Array(gr(e),r>>>0,n>>>0);return Ir(i)},t.wbg.__wbindgen_object_drop_ref=function(e){Ki(e)},t.wbg.__wbg_new_63b92bc8671ed464=function(e){const r=new Uint8Array(gr(e));return Ir(r)},t.wbg.__wbg_values_839f3396d5aac002=function(e){const r=gr(e).values();return Ir(r)},t.wbg.__wbg_next_196c84450b364254=function(){return $$(function(e){const r=gr(e).next();return Ir(r)},arguments)},t.wbg.__wbg_done_298b57d23c0fc80c=function(e){return gr(e).done},t.wbg.__wbg_value_d93c65011f51a456=function(e){const r=gr(e).value;return Ir(r)},t.wbg.__wbg_instanceof_Uint8Array_2b3bbecd033d19f6=function(e){let r;try{r=gr(e)instanceof Uint8Array}catch{r=!1}return r},t.wbg.__wbindgen_string_get=function(e,r){const n=gr(r),i=typeof n=="string"?n:void 0;var a=wd(i)?0:bd(i,Tt.__wbindgen_malloc,Tt.__wbindgen_realloc),s=vo;Xe()[e/4+1]=s,Xe()[e/4+0]=a},t.wbg.__wbg_new_16b304a2cfa7ff4a=function(){const e=new Array;return Ir(e)},t.wbg.__wbindgen_string_new=function(e,r){const n=uc(e,r);return Ir(n)},t.wbg.__wbg_push_a5b05aedc7234f9f=function(e,r){return gr(e).push(gr(r))},t.wbg.__wbg_length_c20a40f15020d68a=function(e){return gr(e).length},t.wbg.__wbg_set_a47bac70306a19a7=function(e,r,n){gr(e).set(gr(r),n>>>0)},t.wbg.__wbindgen_throw=function(e,r){throw new Error(uc(e,r))},t}function W$(t,e){return Tt=t.exports,f6.__wbindgen_wasm_module=e,wo=null,bo=null,Tt}async function f6(t){if(Tt!==void 0)return Tt;typeof t>"u"&&(t=new URL("index_bg.wasm",void 0));const e=G$();(typeof t=="string"||typeof Request=="function"&&t instanceof Request||typeof URL=="function"&&t instanceof URL)&&(t=fetch(t));const{instance:r,module:n}=await j$(await t,e);return W$(r,n)}var H$=f6,xd=!1,Y$=async t=>{if(xd)throw new Error("Already initialized. The `initWasm()` function can be used only once.");await H$(await t),xd=!0},q$=class extends U${constructor(t,e){if(!xd)throw new Error("Wasm has not been initialized. Call `initWasm()` function.");const r=e?.font;if(r&&X$(r)){const n={...e,font:{...r,fontBuffers:void 0}};super(t,JSON.stringify(n),r.fontBuffers)}else super(t,JSON.stringify(e))}};function X$(t){return Object.prototype.hasOwnProperty.call(t,"fontBuffers")}const K$=Object.freeze(Object.defineProperty({__proto__:null,Resvg:q$,initWasm:Y$},Symbol.toStringTag,{value:"Module"})),lc=Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"}));var J$=Ze({"node_modules/.pnpm/harfbuzzjs@0.4.12/node_modules/harfbuzzjs/hb.js"(t,e){var r=(()=>{var n=typeof document<"u"?document.currentScript?.src:void 0;return async function(i={}){var a,s=i,o=typeof window=="object",u=typeof WorkerGlobalScope<"u",l=typeof process=="object"&&process.versions?.node&&process.type!="renderer",c=(B,mt)=>{throw mt};typeof __filename<"u"?n=__filename:u&&(n=self.location.href);var h="";function p(B){return s.locateFile?s.locateFile(B,h):h+B}var g,y;if(l){var E=m_("fs");h=__dirname+"/",y=B=>{B=A(B)?new URL(B):B;var mt=E.readFileSync(B);return mt},g=async(B,mt=!0)=>{B=A(B)?new URL(B):B;var Xt=E.readFileSync(B,mt?void 0:"utf8");return Xt},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),c=(B,mt)=>{throw process.exitCode=B,mt}}else if(o||u){try{h=new URL(".",n).href}catch{}u&&(y=B=>{var mt=new XMLHttpRequest;return mt.open("GET",B,!1),mt.responseType="arraybuffer",mt.send(null),new Uint8Array(mt.response)}),g=async B=>{if(A(B))return new Promise((Xt,de)=>{var ae=new XMLHttpRequest;ae.open("GET",B,!0),ae.responseType="arraybuffer",ae.onload=()=>{if(ae.status==200||ae.status==0&&ae.response){Xt(ae.response);return}de(ae.status)},ae.onerror=de,ae.send(null)});var mt=await fetch(B,{credentials:"same-origin"});if(mt.ok)return mt.arrayBuffer();throw new Error(mt.status+" : "+mt.url)}}console.log.bind(console);var v=console.error.bind(console),C,I=!1,x,A=B=>B.startsWith("file://"),S,w,Z,T,L=!1;function N(){var B=Z.buffer;s.HEAP8=new Int8Array(B),s.HEAPU8=T=new Uint8Array(B),s.HEAP32=new Int32Array(B),s.HEAPU32=new Uint32Array(B),s.HEAPF32=new Float32Array(B),new BigInt64Array(B),new BigUint64Array(B)}function G(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)W(s.preRun.shift());ce(tt)}function z(){L=!0,lr.__wasm_call_ctors()}function rt(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)U(s.postRun.shift());ce(H)}var X=0,ot=null;function pt(B){X++,s.monitorRunDependencies?.(X)}function dt(B){if(X--,s.monitorRunDependencies?.(X),X==0&&ot){var mt=ot;ot=null,mt()}}function j(B){s.onAbort?.(B),B="Aborted("+B+")",v(B),I=!0,B+=". Build with -sASSERTIONS for more info.";var mt=new WebAssembly.RuntimeError(B);throw w?.(mt),mt}var J;function it(){return p("hb.wasm")}function kt(B){if(B==J&&C)return new Uint8Array(C);if(y)return y(B);throw"both async and sync fetching of the wasm failed"}async function Lt(B){if(!C)try{var mt=await g(B);return new Uint8Array(mt)}catch{}return kt(B)}async function Gt(B,mt){try{var Xt=await Lt(B),de=await WebAssembly.instantiate(Xt,mt);return de}catch(ae){v(`failed to asynchronously prepare wasm: ${ae}`),j(ae)}}async function le(B,mt,Xt){if(!B&&!A(mt)&&!l)try{var de=fetch(mt,{credentials:"same-origin"}),ae=await WebAssembly.instantiateStreaming(de,Xt);return ae}catch(Le){v(`wasm streaming compile failed: ${Le}`),v("falling back to ArrayBuffer instantiation")}return Gt(mt,Xt)}function fe(){return{env:$r,wasi_snapshot_preview1:$r}}async function ie(){function B(Le,Lr){return lr=Le.exports,s.wasmExports=lr,Z=lr.memory,s.wasmMemory=Z,N(),Yt=lr.__indirect_function_table,vr(lr),dt(),lr}pt();function mt(Le){return B(Le.instance)}var Xt=fe();if(s.instantiateWasm)return new Promise((Le,Lr)=>{s.instantiateWasm(Xt,(li,ua)=>{Le(B(li))})});J??(J=it());var de=await le(C,J,Xt),ae=mt(de);return ae}class je{constructor(mt){zt(this,"name","ExitStatus"),this.message=`Program terminated with exit(${mt})`,this.status=mt}}var ce=B=>{for(;B.length>0;)B.shift()(s)},H=[],U=B=>H.push(B),tt=[],W=B=>tt.push(B),yt=!0,At=()=>j(""),vt=0,Et=()=>{yt=!1,vt=0},Pt={},K=B=>{if(B instanceof je||B=="unwind")return x;c(1,B)},at=()=>yt||vt>0,wt=B=>{x=B,at()||(s.onExit?.(B),I=!0),c(B,new je(B))},nt=(B,mt)=>{x=B,wt(B)},Ht=nt,Dt=()=>{if(!at())try{Ht(x)}catch(B){K(B)}},Nt=B=>{if(!I)try{B(),Dt()}catch(mt){K(mt)}},Ct=()=>performance.now(),oe=(B,mt)=>{if(Pt[B]&&(clearTimeout(Pt[B].id),delete Pt[B]),!mt)return 0;var Xt=setTimeout(()=>{delete Pt[B],Nt(()=>ri(B,Ct()))},mt);return Pt[B]={id:Xt,timeout_ms:mt},0},he=()=>2147483648,gt=(B,mt)=>Math.ceil(B/mt)*mt,Ve=B=>{var mt=Z.buffer.byteLength,Xt=(B-mt+65535)/65536|0;try{return Z.grow(Xt),N(),1}catch{}},ar=B=>{var mt=T.length;B>>>=0;var Xt=he();if(B>Xt)return!1;for(var de=1;de<=4;de*=2){var ae=mt*(1+.2/de);ae=Math.min(ae,B+100663296);var Le=Math.min(Xt,gt(Math.max(B,ae),65536)),Lr=Ve(Le);if(Lr)return!0}return!1},we=B=>{const mt=B.length;return[mt%128|128,mt>>7,...B]},Rr={i:127,p:127,j:126,f:125,d:124,e:111},Re=B=>we(Array.from(B,mt=>{var Xt=Rr[mt];return Xt})),te=(B,mt)=>{var Xt=Uint8Array.of(0,97,115,109,1,0,0,0,1,...we([1,96,...Re(mt.slice(1)),...Re(mt[0]==="v"?"":mt[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),de=new WebAssembly.Module(Xt),ae=new WebAssembly.Instance(de,{e:{f:B}}),Le=ae.exports.f;return Le},Yt,ur=B=>Yt.get(B),yr=(B,mt)=>{if(Ke)for(var Xt=B;Xt<B+mt;Xt++){var de=ur(Xt);de&&Ke.set(de,Xt)}},Ke,De=B=>(Ke||(Ke=new WeakMap,yr(0,Yt.length)),Ke.get(B)||0),Me=[],sa=()=>Me.length?Me.pop():Yt.grow(1),Ji=(B,mt)=>Yt.set(B,mt),Qi=(B,mt)=>{var Xt=De(B);if(Xt)return Xt;var de=sa();try{Ji(de,B)}catch(Le){if(!(Le instanceof TypeError))throw Le;var ae=te(B,mt);Ji(de,ae)}return Ke.set(B,de),de},Fn=B=>{Ke.delete(ur(B)),Ji(B,null),Me.push(B)};s.noExitRuntime&&(yt=s.noExitRuntime),s.print&&s.print,s.printErr&&(v=s.printErr),s.wasmBinary&&(C=s.wasmBinary),s.arguments&&s.arguments,s.thisProgram&&s.thisProgram,s.wasmMemory=Z,s.wasmExports=lr,s.addFunction=Qi,s.removeFunction=Fn;var ri;function vr(B){s._hb_blob_create=B.hb_blob_create,s._hb_blob_destroy=B.hb_blob_destroy,s._hb_blob_get_length=B.hb_blob_get_length,s._hb_blob_get_data=B.hb_blob_get_data,s._hb_buffer_serialize_glyphs=B.hb_buffer_serialize_glyphs,s._hb_buffer_create=B.hb_buffer_create,s._hb_buffer_destroy=B.hb_buffer_destroy,s._hb_buffer_get_content_type=B.hb_buffer_get_content_type,s._hb_buffer_set_direction=B.hb_buffer_set_direction,s._hb_buffer_set_script=B.hb_buffer_set_script,s._hb_buffer_set_language=B.hb_buffer_set_language,s._hb_buffer_set_flags=B.hb_buffer_set_flags,s._hb_buffer_set_cluster_level=B.hb_buffer_set_cluster_level,s._hb_buffer_get_length=B.hb_buffer_get_length,s._hb_buffer_get_glyph_infos=B.hb_buffer_get_glyph_infos,s._hb_buffer_get_glyph_positions=B.hb_buffer_get_glyph_positions,s._hb_glyph_info_get_glyph_flags=B.hb_glyph_info_get_glyph_flags,s._hb_buffer_guess_segment_properties=B.hb_buffer_guess_segment_properties,s._hb_buffer_add_utf8=B.hb_buffer_add_utf8,s._hb_buffer_add_utf16=B.hb_buffer_add_utf16,s._hb_buffer_set_message_func=B.hb_buffer_set_message_func,s._hb_language_from_string=B.hb_language_from_string,s._hb_script_from_string=B.hb_script_from_string,s._hb_version=B.hb_version,s._hb_version_string=B.hb_version_string,s._hb_feature_from_string=B.hb_feature_from_string,s._malloc=B.malloc,s._free=B.free,s._hb_draw_funcs_set_move_to_func=B.hb_draw_funcs_set_move_to_func,s._hb_draw_funcs_set_line_to_func=B.hb_draw_funcs_set_line_to_func,s._hb_draw_funcs_set_quadratic_to_func=B.hb_draw_funcs_set_quadratic_to_func,s._hb_draw_funcs_set_cubic_to_func=B.hb_draw_funcs_set_cubic_to_func,s._hb_draw_funcs_set_close_path_func=B.hb_draw_funcs_set_close_path_func,s._hb_draw_funcs_create=B.hb_draw_funcs_create,s._hb_draw_funcs_destroy=B.hb_draw_funcs_destroy,s._hb_face_create=B.hb_face_create,s._hb_face_destroy=B.hb_face_destroy,s._hb_face_reference_table=B.hb_face_reference_table,s._hb_face_get_upem=B.hb_face_get_upem,s._hb_face_collect_unicodes=B.hb_face_collect_unicodes,s._hb_font_draw_glyph=B.hb_font_draw_glyph,s._hb_font_glyph_to_string=B.hb_font_glyph_to_string,s._hb_font_create=B.hb_font_create,s._hb_font_set_variations=B.hb_font_set_variations,s._hb_font_destroy=B.hb_font_destroy,s._hb_font_set_scale=B.hb_font_set_scale,s._hb_set_create=B.hb_set_create,s._hb_set_destroy=B.hb_set_destroy,s._hb_ot_var_get_axis_infos=B.hb_ot_var_get_axis_infos,s._hb_set_get_population=B.hb_set_get_population,s._hb_set_next_many=B.hb_set_next_many,s._hb_shape=B.hb_shape,ri=B._emscripten_timeout}var $r={_abort_js:At,_emscripten_runtime_keepalive_clear:Et,_setitimer_js:oe,emscripten_resize_heap:ar,proc_exit:wt},lr=await ie();function tn(){if(X>0){ot=tn;return}if(G(),X>0){ot=tn;return}function B(){s.calledRun=!0,!I&&(z(),S?.(s),s.onRuntimeInitialized?.(),rt())}s.setStatus?(s.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>s.setStatus(""),1),B()},1)):B()}function oa(){if(s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.shift()()}return oa(),tn(),L?a=s:a=new Promise((B,mt)=>{S=B,w=mt}),a}})();typeof t=="object"&&typeof e=="object"?(e.exports=r,e.exports.default=r):typeof define=="function"&&define.amd&&define([],()=>r)}});const Q$=J$(),tL=Object.freeze(Object.defineProperty({__proto__:null,default:Q$},Symbol.toStringTag,{value:"Module"}));var eL=Ze({"node_modules/.pnpm/harfbuzzjs@0.4.12/node_modules/harfbuzzjs/hbjs.js"(t,e){function r(n){var i=n.wasmExports,a=new TextDecoder("utf8");let s=n.addFunction,o=n.removeFunction;var u=s(function(j){i.free(j)},"vi"),l=2,c=-1,h=2,p=0,g=1,y=2;function E(j){return(j.charCodeAt(0)&255)<<24|(j.charCodeAt(1)&255)<<16|(j.charCodeAt(2)&255)<<8|(j.charCodeAt(3)&255)<<0}var v=E("JSON"),C=4;function I(j){return[String.fromCharCode(j>>24&255),String.fromCharCode(j>>16&255),String.fromCharCode(j>>8&255),String.fromCharCode(j>>0&255)].join("")}function x(j){return j=="BOT"?1:j=="EOT"?2:j=="PRESERVE_DEFAULT_IGNORABLES"?4:j=="REMOVE_DEFAULT_IGNORABLES"?8:j=="DO_NOT_INSERT_DOTTED_CIRCLE"?16:j=="PRODUCE_UNSAFE_TO_CONCAT"?64:0}function A(j){var J=i.malloc(j.byteLength);n.HEAPU8.set(new Uint8Array(j),J);var it=i.hb_blob_create(J,j.byteLength,l,J,u);return{ptr:it,destroy:function(){i.hb_blob_destroy(it)}}}function S(j){const J=i.hb_set_get_population(j),it=i.malloc(J<<2),kt=it>>2,Lt=n.HEAPU32.subarray(kt,kt+J);return n.HEAPU32.set(Lt,kt),i.hb_set_next_many(j,c,it,J),Lt}function w(j,J){var it=i.hb_face_create(j.ptr,J);const kt=i.hb_face_get_upem(it);return{ptr:it,upem:kt,reference_table:function(Lt){var Gt=i.hb_face_reference_table(it,E(Lt)),le=i.hb_blob_get_length(Gt);if(le){var fe=i.hb_blob_get_data(Gt,null),ie=n.HEAPU8.subarray(fe,fe+le);return ie}},getAxisInfos:function(){var Lt=i.malloc(2048),Gt=i.malloc(4);n.HEAPU32[Gt/4]=64,i.hb_ot_var_get_axis_infos(it,0,Gt,Lt);var le={};return Array.from({length:n.HEAPU32[Gt/4]}).forEach(function(fe,ie){le[I(n.HEAPU32[Lt/4+ie*8+1])]={min:n.HEAPF32[Lt/4+ie*8+4],default:n.HEAPF32[Lt/4+ie*8+5],max:n.HEAPF32[Lt/4+ie*8+6]}}),i.free(Gt),i.free(Lt),le},collectUnicodes:function(){var Lt=i.hb_set_create();i.hb_face_collect_unicodes(it,Lt);var Gt=S(Lt);return i.hb_set_destroy(Lt),Gt},destroy:function(){i.hb_face_destroy(it)}}}var Z="",T=256,L=i.malloc(T);function N(j){var J=i.hb_font_create(j.ptr),it=null,kt=null,Lt=null,Gt=null,le=null,fe=null;function ie(ce){if(!it){var H=function(At,vt,Et,Pt,K,at){Z+=`M${Pt},${K}`},U=function(At,vt,Et,Pt,K,at){Z+=`L${Pt},${K}`},tt=function(At,vt,Et,Pt,K,at,wt,nt,Ht,Dt){Z+=`C${Pt},${K} ${at},${wt} ${nt},${Ht}`},W=function(At,vt,Et,Pt,K,at,wt,nt){Z+=`Q${Pt},${K} ${at},${wt}`},yt=function(At,vt,Et,Pt){Z+="Z"};kt=s(H,"viiiffi"),Lt=s(U,"viiiffi"),Gt=s(tt,"viiiffffffi"),le=s(W,"viiiffffi"),fe=s(yt,"viiii"),it=i.hb_draw_funcs_create(),i.hb_draw_funcs_set_move_to_func(it,kt,0,0),i.hb_draw_funcs_set_line_to_func(it,Lt,0,0),i.hb_draw_funcs_set_cubic_to_func(it,Gt,0,0),i.hb_draw_funcs_set_quadratic_to_func(it,le,0,0),i.hb_draw_funcs_set_close_path_func(it,fe,0,0)}return Z="",i.hb_font_draw_glyph(J,ce,it,0),Z}function je(ce){i.hb_font_glyph_to_string(J,ce,L,T);var H=n.HEAPU8.subarray(L,L+T);return a.decode(H.slice(0,H.indexOf(0)))}return{ptr:J,glyphName:je,glyphToPath:ie,glyphToJson:function(ce){var H=ie(ce);return H.replace(/([MLQCZ])/g,"|$1 ").split("|").filter(function(U){return U.length}).map(function(U){var tt=U.split(/[ ,]/g);return{type:tt[0],values:tt.slice(1).filter(function(W){return W.length}).map(function(W){return+W})}})},setScale:function(ce,H){i.hb_font_set_scale(J,ce,H)},setVariations:function(ce){var H=Object.entries(ce),U=i.malloc(8*H.length);H.forEach(function(tt,W){n.HEAPU32[U/4+W*2+0]=E(tt[0]),n.HEAPF32[U/4+W*2+1]=tt[1]}),i.hb_font_set_variations(J,U,H.length),i.free(U)},destroy:function(){i.hb_font_destroy(J),it&&(i.hb_draw_funcs_destroy(it),it=null,o(kt),o(Lt),o(Gt),o(le),o(fe))}}}function G(j){var J=i.malloc(j.length+1);for(let it=0;it<j.length;++it){const kt=j.charCodeAt(it);if(kt>127)throw new Error("Expected ASCII text");n.HEAPU8[J+it]=kt}return n.HEAPU8[J+j.length]=0,{ptr:J,length:j.length,free:function(){i.free(J)}}}function z(j){const J=i.malloc(j.length*2),it=new Uint16Array(n.wasmMemory.buffer,J,j.length);for(let kt=0;kt<it.length;++kt)it[kt]=j.charCodeAt(kt);return{ptr:J,length:it.length,free:function(){i.free(J)}}}function rt(){var j=i.hb_buffer_create();return{ptr:j,addText:function(J){const it=z(J);i.hb_buffer_add_utf16(j,it.ptr,it.length,0,it.length),it.free()},guessSegmentProperties:function(){return i.hb_buffer_guess_segment_properties(j)},setDirection:function(J){i.hb_buffer_set_direction(j,{ltr:4,rtl:5,ttb:6,btt:7}[J]||0)},setFlags:function(J){var it=0;J.forEach(function(kt){it|=x(kt)}),i.hb_buffer_set_flags(j,it)},setLanguage:function(J){var it=G(J);i.hb_buffer_set_language(j,i.hb_language_from_string(it.ptr,-1)),it.free()},setScript:function(J){var it=G(J);i.hb_buffer_set_script(j,i.hb_script_from_string(it.ptr,-1)),it.free()},setClusterLevel:function(J){i.hb_buffer_set_cluster_level(j,J)},json:function(){for(var J=i.hb_buffer_get_length(j),it=[],kt=i.hb_buffer_get_glyph_infos(j,0),Lt=kt/4,Gt=i.hb_buffer_get_glyph_positions(j,0)/4,le=n.HEAPU32.subarray(Lt,Lt+5*J),fe=n.HEAP32.subarray(Gt,Gt+5*J),ie=0;ie<J;++ie)it.push({g:le[ie*5+0],cl:le[ie*5+2],ax:fe[ie*5+0],ay:fe[ie*5+1],dx:fe[ie*5+2],dy:fe[ie*5+3],flags:i.hb_glyph_info_get_glyph_flags(kt+ie*20)});return it},destroy:function(){i.hb_buffer_destroy(j)}}}function X(j,J,it){var kt=0,Lt=0;it&&(it=it.split(","),kt=i.malloc(16*it.length),it.forEach(function(Gt,le){var fe=G(Gt);i.hb_feature_from_string(fe.ptr,-1,kt+Lt*16)&&Lt++,fe.free()})),i.hb_shape(j.ptr,J.ptr,kt,Lt),kt&&i.free(kt)}function ot(j,J,it,kt,Lt){var Gt=[],le=p,fe=!1,ie=1024*1024,je=i.malloc(ie),ce=function(U,tt,W,yt){var At=a.decode(n.HEAPU8.subarray(W,n.HEAPU8.indexOf(0,W)));return At.startsWith("start table GSUB")?le=g:At.startsWith("start table GPOS")&&(le=y),le!=Lt&&(fe=!1),Lt!=p&&le==Lt&&At.startsWith("end lookup "+kt)&&(fe=!0),fe?0:(i.hb_buffer_serialize_glyphs(U,0,i.hb_buffer_get_length(U),je,ie,0,tt,v,C),Gt.push({m:At,t:JSON.parse(a.decode(n.HEAPU8.subarray(je,n.HEAPU8.indexOf(0,je)))),glyphs:i.hb_buffer_get_content_type(U)==h}),1)},H=s(ce,"iiiii");return i.hb_buffer_set_message_func(J.ptr,H,0,0),X(j,J,it),i.free(je),o(H),Gt}function pt(){var j=i.malloc(12);i.hb_version(j,j+4,j+8);var J={major:n.HEAPU32[j/4],minor:n.HEAPU32[(j+4)/4],micro:n.HEAPU32[(j+8)/4]};return i.free(j),J}function dt(){var j=i.hb_version_string(),J=a.decode(n.HEAPU8.subarray(j,n.HEAPU8.indexOf(0,j)));return J}return{createBlob:A,createFace:w,createFont:N,createBuffer:rt,shape:X,shapeWithTrace:ot,version:pt,version_string:dt}}try{e.exports=r}catch{}}});const rL=eL(),iL=Object.freeze(Object.defineProperty({__proto__:null,default:rL},Symbol.toStringTag,{value:"Module"}));Ur.Edit=aa,Ur.InvalidAssetUrlError=n6,Ur.ShotstackEdit=z$,Object.defineProperty(Ur,Symbol.toStringTag,{value:"Module"})});