@spiffcommerce/core 15.1.0 → 15.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -1,4 +1,4 @@
1
- var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/jsx-runtime"),n=require("react"),A=require("opentype.js"),a=require("buffer"),r=require("axios"),s=require("https"),o=require("file-type"),c=require("util"),l=require("css"),g=require("canvas"),h=require("exif"),d=require("process"),u=require("raf"),w=require("rgbcolor"),B=require("svg-pathdata"),p=require("stackblur-canvas"),m=require("@apollo/client/link/context"),E=require("@apollo/client/link/error"),f=require("cross-fetch"),C=require("lodash.isequal"),Q=require("react-dom/server"),y=require("qrcode"),I=require("svg-path-bbox"),D=require("lodash.debounce"),x=require("unicode-default-word-boundary"),v=require("@apollo/client/core");function M(t,e,i,n){Object.defineProperty(t,e,{get:i,set:n,enumerable:!0,configurable:!0})}var S="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{};function b(t){return t&&t.__esModule?t.default:t}M(module.exports,"SpiffCommerceClient",(()=>cl)),M(module.exports,"CommandContext",(()=>Ln)),M(module.exports,"spiffCoreConfiguration",(()=>wa)),M(module.exports,"PromiseQueue",(()=>Xr)),M(module.exports,"QueueablePromise",(()=>Wr)),M(module.exports,"MockWorkflowManager",(()=>gl)),M(module.exports,"InformationMessageType",(()=>Do)),M(module.exports,"StepHandle",(()=>Po)),M(module.exports,"TextStepHandle",(()=>Lo)),M(module.exports,"FrameStepHandle",(()=>wl)),M(module.exports,"BulkStepHandle",(()=>Ro)),M(module.exports,"ShapeStepHandle",(()=>Jo)),M(module.exports,"IllustrationStepHandle",(()=>Ho)),M(module.exports,"MaterialStepHandle",(()=>Uo)),M(module.exports,"ModelStepHandle",(()=>Go)),M(module.exports,"PictureStepHandle",(()=>To)),M(module.exports,"QuestionStepHandle",(()=>Oo)),M(module.exports,"GlobalPropertyHandle",(()=>yc)),M(module.exports,"BulkPriceCalculationStrategy",(()=>ar)),M(module.exports,"Variant",(()=>bo)),M(module.exports,"WorkflowExperienceImpl",(()=>rc)),M(module.exports,"OptionNotFoundError",(()=>ta)),M(module.exports,"LayoutNotFoundError",(()=>ea)),M(module.exports,"AssetNotFoundError",(()=>ia)),M(module.exports,"ResourceNotFoundError",(()=>na)),M(module.exports,"MisconfigurationError",(()=>Aa)),M(module.exports,"ParseError",(()=>sa)),M(module.exports,"UnhandledBehaviorError",(()=>ra)),M(module.exports,"assetService",(()=>ka)),M(module.exports,"designService",(()=>Ac)),M(module.exports,"createDesign",(()=>tc)),M(module.exports,"optionService",(()=>Ja)),M(module.exports,"persistenceService",(()=>da)),M(module.exports,"graphQlManager",(()=>Ia)),M(module.exports,"toast",(()=>wr)),M(module.exports,"FrameService",(()=>eo)),M(module.exports,"getBoundedOffsets",(()=>_s)),M(module.exports,"frameStepService",(()=>co)),M(module.exports,"modelStepService",(()=>ho)),M(module.exports,"materialStepService",(()=>go)),M(module.exports,"shapeStepService",(()=>mo)),M(module.exports,"questionStepService",(()=>Bo)),M(module.exports,"digitalContentStepService",(()=>so)),M(module.exports,"moduleStepService",(()=>uo)),M(module.exports,"pictureStepService",(()=>wo)),M(module.exports,"textStepService",(()=>yo)),M(module.exports,"illustrationStepService",(()=>lo)),M(module.exports,"ProductCameraRig",(()=>nr)),M(module.exports,"FrameStep",(()=>dl)),M(module.exports,"ConversionLocation",(()=>sr)),M(module.exports,"ConversionDataType",(()=>cr)),M(module.exports,"getWorkflow",(()=>sl)),M(module.exports,"getWorkflows",(()=>rl)),M(module.exports,"shortenUrl",(()=>Ao)),M(module.exports,"ObjectInput",(()=>Vc)),M(module.exports,"TextInput",(()=>Kc)),M(module.exports,"ObjectInputType",(()=>zc)),M(module.exports,"ProductCollection",(()=>Rc)),M(module.exports,"CollectionProduct",(()=>Hc)),M(module.exports,"AssetType",(()=>ai)),M(module.exports,"BringForwardCommand",(()=>CA)),M(module.exports,"BringToFrontCommand",(()=>EA)),M(module.exports,"BringToBackCommand",(()=>fA)),M(module.exports,"CanvasCommand",(()=>$n)),M(module.exports,"CreateElementCommand",(()=>rA)),M(module.exports,"CreateLayoutCommand",(()=>AA)),M(module.exports,"DeleteElementCommand",(()=>sA)),M(module.exports,"FontAlignmentCommand",(()=>uA)),M(module.exports,"FontColorCommand",(()=>cA)),M(module.exports,"FontSizeCommand",(()=>gA)),M(module.exports,"FontSourceCommand",(()=>dA)),M(module.exports,"GroupCommand",(()=>nA)),M(module.exports,"LayoutElementFactory",(()=>qA)),M(module.exports,"LayoutElementType",(()=>ze)),M(module.exports,"MoveCommand",(()=>tA)),M(module.exports,"ResizeCommand",(()=>iA)),M(module.exports,"RotateCommand",(()=>eA)),M(module.exports,"SendBackwardsCommand",(()=>QA)),M(module.exports,"StakeholderType",(()=>gr)),M(module.exports,"StepAspectType",(()=>ci)),M(module.exports,"StepType",(()=>si)),M(module.exports,"TextChangeCommand",(()=>BA)),M(module.exports,"UnitOfMeasurement",(()=>qe)),M(module.exports,"dataUrlFromExternalUrl",(()=>_i)),M(module.exports,"findElement",(()=>Wn)),M(module.exports,"frameDataCache",(()=>PA)),M(module.exports,"generate",(()=>Te)),M(module.exports,"getAxisAlignedBoundingBox",(()=>di)),M(module.exports,"generateSVGWithUnknownColors",(()=>On)),M(module.exports,"getAttributesFromArrayBuffer",(()=>SA)),M(module.exports,"rehydrateSerializedLayout",(()=>Zn)),M(module.exports,"getFrameData",(()=>RA)),M(module.exports,"getSvgElement",(()=>jn)),M(module.exports,"loadFontFromDataUrl",(()=>cn)),M(module.exports,"loadFontFromExternalUrl",(()=>on)),M(module.exports,"determineCorrectFontSizeAndLines",(()=>LA)),M(module.exports,"patternImageDataCache",(()=>FA)),M(module.exports,"generateCommands",(()=>xs)),M(module.exports,"registerJSDOM",(()=>Oi)),M(module.exports,"minZoom",(()=>Jr)),M(module.exports,"AdvancedEditor",(()=>Rs)),M(module.exports,"TransformWrapper",(()=>Bl)),M(module.exports,"EditorCore",(()=>ks)),M(module.exports,"useLayouts",(()=>ja)),M(module.exports,"useEditorState",(()=>tr)),M(module.exports,"useEditorInteraction",(()=>zr)),M(module.exports,"useShortcutCombination",(()=>jr)),M(module.exports,"commandReducer",(()=>qa)),M(module.exports,"getDefaultState",(()=>Xa)),M(module.exports,"CommandContextContext",(()=>La)),M(module.exports,"AdvancedEditorStateProvider",(()=>$a)),M(module.exports,"AdvancedEditorContext",(()=>Za)),M(module.exports,"UICommand",(()=>_a)),M(module.exports,"EditorSubMenu",(()=>Ka)),M(module.exports,"ElementEventType",(()=>Br)),M(module.exports,"KeyEvent",(()=>mr)),M(module.exports,"gatherVaryingStepAspects",(()=>js));function F(t){return t.replace(/(?!\u3000)\s+/gm," ")}function P(t){const e=t.match(/-?(\d+(?:\.\d*(?:[eE][+-]?\d+)?)?|\.\d+)(?=\D|$)/gm);return e?e.map(parseFloat):[]}const Y=/^[A-Z-]+$/;function N(t){const e=/url\(('([^']+)'|"([^"]+)"|([^'")]+))\)/.exec(t);return e&&(e[2]||e[3]||e[4])||""}const k=/(\[[^\]]+\])/g,R=/(#[^\s+>~.[:]+)/g,H=/(\.[^\s+>~.[:]+)/g,U=/(::[^\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi,G=/(:[\w-]+\([^)]*\))/gi,T=/(:[^\s+>~.[:]+)/g,O=/([^\s+>~.[:]+)/g;function J(t,e){const i=e.exec(t);return i?[t.replace(e," "),i.length]:[t,0]}const L=1e-8;function z(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2))}function j(t,e){return(t[0]*e[0]+t[1]*e[1])/(z(t)*z(e))}function V(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(j(t,e))}function K(t){return t*t*t}function W(t){return 3*t*t*(1-t)}function X(t){return 3*t*(1-t)*(1-t)}function q(t){return(1-t)*(1-t)*(1-t)}function Z(t){return t*t}function $(t){return 2*t*(1-t)}function _(t){return(1-t)*(1-t)}function tt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class et{static empty(t){return new et(t,"EMPTY","")}split(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:" ";const{document:e,name:i}=this;return F(this.getString()).trim().split(t).map((t=>new et(e,i,t)))}hasValue(t){const e=this.value;return null!==e&&""!==e&&(t||0!==e)&&void 0!==e}isString(t){const{value:e}=this,i="string"==typeof e;return i&&t?t.test(e):i}isUrlDefinition(){return this.isString(/^url\(/)}isPixels(){if(!this.hasValue())return!1;const t=this.getString();switch(!0){case t.endsWith("px"):case/^[0-9]+$/.test(t):return!0;default:return!1}}setValue(t){return this.value=t,this}getValue(t){return void 0===t||this.hasValue()?this.value:t}getNumber(t){if(!this.hasValue())return void 0===t?0:parseFloat(t);const{value:e}=this;let i=parseFloat(e);return this.isString(/%$/)&&(i/=100),i}getString(t){return void 0===t||this.hasValue()?void 0===this.value?"":String(this.value):String(t)}getColor(t){let e=this.getString(t);return this.isNormalizedColor||(this.isNormalizedColor=!0,e=function(t){if(!t.startsWith("rgb"))return t;let e=3;return t.replace(/\d+(\.\d+)?/g,((t,i)=>e--&&i?String(Math.round(parseFloat(t))):t))}(e),this.value=e),e}getDpi(){return 96}getRem(){return this.document.rootEmSize}getEm(){return this.document.emSize}getUnits(){return this.getString().replace(/[0-9.-]/g,"")}getPixels(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.hasValue())return 0;const[i,n]="boolean"==typeof t?[void 0,t]:[t],{viewPort:A}=this.document.screen;switch(!0){case this.isString(/vmin$/):return this.getNumber()/100*Math.min(A.computeSize("x"),A.computeSize("y"));case this.isString(/vmax$/):return this.getNumber()/100*Math.max(A.computeSize("x"),A.computeSize("y"));case this.isString(/vw$/):return this.getNumber()/100*A.computeSize("x");case this.isString(/vh$/):return this.getNumber()/100*A.computeSize("y");case this.isString(/rem$/):return this.getNumber()*this.getRem();case this.isString(/em$/):return this.getNumber()*this.getEm();case this.isString(/ex$/):return this.getNumber()*this.getEm()/2;case this.isString(/px$/):return this.getNumber();case this.isString(/pt$/):return this.getNumber()*this.getDpi()*(1/72);case this.isString(/pc$/):return 15*this.getNumber();case this.isString(/cm$/):return this.getNumber()*this.getDpi()/2.54;case this.isString(/mm$/):return this.getNumber()*this.getDpi()/25.4;case this.isString(/in$/):return this.getNumber()*this.getDpi();case this.isString(/%$/)&&n:return this.getNumber()*this.getEm();case this.isString(/%$/):return this.getNumber()*A.computeSize(i);default:{const t=this.getNumber();return e&&t<1?t*A.computeSize(i):t}}}getMilliseconds(){return this.hasValue()?this.isString(/ms$/)?this.getNumber():1e3*this.getNumber():0}getRadians(){if(!this.hasValue())return 0;switch(!0){case this.isString(/deg$/):return this.getNumber()*(Math.PI/180);case this.isString(/grad$/):return this.getNumber()*(Math.PI/200);case this.isString(/rad$/):return this.getNumber();default:return this.getNumber()*(Math.PI/180)}}getDefinition(){const t=this.getString(),e=/#([^)'"]+)/.exec(t),i=(null==e?void 0:e[1])||t;return this.document.definitions[i]}getFillStyleDefinition(t,e){let i=this.getDefinition();if(!i)return null;if("function"==typeof i.createGradient&&"getBoundingBox"in t)return i.createGradient(this.document.ctx,t,e);if("function"==typeof i.createPattern){if(i.getHrefAttribute().hasValue()){const t=i.getAttribute("patternTransform");i=i.getHrefAttribute().getDefinition(),i&&t.hasValue()&&i.getAttribute("patternTransform",!0).setValue(t.value)}if(i)return i.createPattern(this.document.ctx,t,e)}return null}getTextBaseline(){if(!this.hasValue())return null;const t=this.getString();return et.textBaselineMapping[t]||null}addOpacity(t){let e=this.getColor();const i=e.length;let n=0;for(let t=0;t<i&&(","===e[t]&&n++,3!==n);t++);if(t.hasValue()&&this.isString()&&3!==n){const i=new(b(w))(e);i.ok&&(i.alpha=t.getNumber(),e=i.toRGBA())}return new et(this.document,this.name,e)}constructor(t,e,i){tt(this,"document",void 0),tt(this,"name",void 0),tt(this,"value",void 0),tt(this,"isNormalizedColor",void 0),this.document=t,this.name=e,this.value=i,this.isNormalizedColor=!1}}function it(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}tt(et,"textBaselineMapping",{baseline:"alphabetic","before-edge":"top","text-before-edge":"top",middle:"middle",central:"middle","after-edge":"bottom","text-after-edge":"bottom",ideographic:"ideographic",alphabetic:"alphabetic",hanging:"hanging",mathematical:"alphabetic"});class nt{clear(){this.viewPorts=[]}setCurrent(t,e){this.viewPorts.push({width:t,height:e})}removeCurrent(){this.viewPorts.pop()}getRoot(){const[t]=this.viewPorts;return t||At()}getCurrent(){const{viewPorts:t}=this,e=t[t.length-1];return e||At()}get width(){return this.getCurrent().width}get height(){return this.getCurrent().height}computeSize(t){return"number"==typeof t?t:"x"===t?this.width:"y"===t?this.height:Math.sqrt(Math.pow(this.width,2)+Math.pow(this.height,2))/Math.sqrt(2)}constructor(){it(this,"viewPorts",[])}}function At(){return{width:nt.DEFAULT_VIEWPORT_WIDTH,height:nt.DEFAULT_VIEWPORT_HEIGHT}}function at(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}it(nt,"DEFAULT_VIEWPORT_WIDTH",800),it(nt,"DEFAULT_VIEWPORT_HEIGHT",600);class rt{static parse(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const[i=e,n=e]=P(t);return new rt(i,n)}static parseScale(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const[i=e,n=i]=P(t);return new rt(i,n)}static parsePath(t){const e=P(t),i=e.length,n=[];for(let t=0;t<i;t+=2)n.push(new rt(e[t],e[t+1]));return n}angleTo(t){return Math.atan2(t.y-this.y,t.x-this.x)}applyTransform(t){const{x:e,y:i}=this,n=e*t[0]+i*t[2]+t[4],A=e*t[1]+i*t[3]+t[5];this.x=n,this.y=A}constructor(t,e){at(this,"x",void 0),at(this,"y",void 0),this.x=t,this.y=e}}function st(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class ot{isWorking(){return this.working}start(){if(this.working)return;const{screen:t,onClick:e,onMouseMove:i}=this,n=t.ctx.canvas;n.onclick=e,n.onmousemove=i,this.working=!0}stop(){if(!this.working)return;const t=this.screen.ctx.canvas;this.working=!1,t.onclick=null,t.onmousemove=null}hasEvents(){return this.working&&this.events.length>0}runEvents(){if(!this.working)return;const{screen:t,events:e,eventElements:i}=this,{style:n}=t.ctx.canvas;let A;n&&(n.cursor=""),e.forEach(((t,e)=>{let{run:n}=t;for(A=i[e];A;)n(A),A=A.parent})),this.events=[],this.eventElements=[]}checkPath(t,e){if(!this.working||!e)return;const{events:i,eventElements:n}=this;i.forEach(((i,A)=>{let{x:a,y:r}=i;!n[A]&&e.isPointInPath&&e.isPointInPath(a,r)&&(n[A]=t)}))}checkBoundingBox(t,e){if(!this.working||!e)return;const{events:i,eventElements:n}=this;i.forEach(((i,A)=>{let{x:a,y:r}=i;!n[A]&&e.isPointInBox(a,r)&&(n[A]=t)}))}mapXY(t,e){const{window:i,ctx:n}=this.screen,A=new rt(t,e);let a=n.canvas;for(;a;)A.x-=a.offsetLeft,A.y-=a.offsetTop,a=a.offsetParent;return(null==i?void 0:i.scrollX)&&(A.x+=i.scrollX),(null==i?void 0:i.scrollY)&&(A.y+=i.scrollY),A}onClick(t){const{x:e,y:i}=this.mapXY(t.clientX,t.clientY);this.events.push({type:"onclick",x:e,y:i,run(t){t.onClick&&t.onClick()}})}onMouseMove(t){const{x:e,y:i}=this.mapXY(t.clientX,t.clientY);this.events.push({type:"onmousemove",x:e,y:i,run(t){t.onMouseMove&&t.onMouseMove()}})}constructor(t){st(this,"screen",void 0),st(this,"working",void 0),st(this,"events",void 0),st(this,"eventElements",void 0),this.screen=t,this.working=!1,this.events=[],this.eventElements=[],this.onClick=this.onClick.bind(this),this.onMouseMove=this.onMouseMove.bind(this)}}function ct(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const lt="undefined"!=typeof window?window:null,gt="undefined"!=typeof fetch?fetch.bind(void 0):void 0;class ht{wait(t){this.waits.push(t)}ready(){return this.readyPromise?this.readyPromise:Promise.resolve()}isReady(){if(this.isReadyLock)return!0;const t=this.waits.every((t=>t()));return t&&(this.waits=[],this.resolveReady&&this.resolveReady()),this.isReadyLock=t,t}setDefaults(t){t.strokeStyle="rgba(0,0,0,0)",t.lineCap="butt",t.lineJoin="miter",t.miterLimit=4}setViewBox(t){let{document:e,ctx:i,aspectRatio:n,width:A,desiredWidth:a,height:r,desiredHeight:s,minX:o=0,minY:c=0,refX:l,refY:g,clip:h=!1,clipX:d=0,clipY:u=0}=t;const w=F(n).replace(/^defer\s/,""),[B,p]=w.split(" "),m=B||"xMidYMid",E=p||"meet",f=A/a,C=r/s,Q=Math.min(f,C),y=Math.max(f,C);let I=a,D=s;"meet"===E&&(I*=Q,D*=Q),"slice"===E&&(I*=y,D*=y);const x=new et(e,"refX",l),v=new et(e,"refY",g),M=x.hasValue()&&v.hasValue();if(M&&i.translate(-Q*x.getPixels("x"),-Q*v.getPixels("y")),h){const t=Q*d,e=Q*u;i.beginPath(),i.moveTo(t,e),i.lineTo(A,e),i.lineTo(A,r),i.lineTo(t,r),i.closePath(),i.clip()}if(!M){const t="meet"===E&&Q===C,e="slice"===E&&y===C,n="meet"===E&&Q===f,a="slice"===E&&y===f;m.startsWith("xMid")&&(t||e)&&i.translate(A/2-I/2,0),m.endsWith("YMid")&&(n||a)&&i.translate(0,r/2-D/2),m.startsWith("xMax")&&(t||e)&&i.translate(A-I,0),m.endsWith("YMax")&&(n||a)&&i.translate(0,r-D)}switch(!0){case"none"===m:i.scale(f,C);break;case"meet"===E:i.scale(Q,Q);break;case"slice"===E:i.scale(y,y)}i.translate(-o,-c)}start(t){let{enableRedraw:e=!1,ignoreMouse:i=!1,ignoreAnimation:n=!1,ignoreDimensions:A=!1,ignoreClear:a=!1,forceRedraw:r,scaleWidth:s,scaleHeight:o,offsetX:c,offsetY:l}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{mouse:g}=this,h=1e3/ht.FRAMERATE;if(this.isReadyLock=!1,this.frameDuration=h,this.readyPromise=new Promise((t=>{this.resolveReady=t})),this.isReady()&&this.render(t,A,a,s,o,c,l),!e)return;let d=Date.now(),w=d,B=0;const p=()=>{d=Date.now(),B=d-w,B>=h&&(w=d-B%h,this.shouldUpdate(n,r)&&(this.render(t,A,a,s,o,c,l),g.runEvents())),this.intervalId=b(u)(p)};i||g.start(),this.intervalId=b(u)(p)}stop(){this.intervalId&&(b(u).cancel(this.intervalId),this.intervalId=null),this.mouse.stop()}shouldUpdate(t,e){if(!t){const{frameDuration:t}=this;if(this.animations.reduce(((e,i)=>i.update(t)||e),!1))return!0}return!("function"!=typeof e||!e())||(!(this.isReadyLock||!this.isReady())||!!this.mouse.hasEvents())}render(t,e,i,n,A,a,r){const{viewPort:s,ctx:o,isFirstRender:c}=this,l=o.canvas;s.clear(),l.width&&l.height&&s.setCurrent(l.width,l.height);const g=t.getStyle("width"),h=t.getStyle("height");!e&&(c||"number"!=typeof n&&"number"!=typeof A)&&(g.hasValue()&&(l.width=g.getPixels("x"),l.style&&(l.style.width=`${l.width}px`)),h.hasValue()&&(l.height=h.getPixels("y"),l.style&&(l.style.height=`${l.height}px`)));let d=l.clientWidth||l.width,u=l.clientHeight||l.height;if(e&&g.hasValue()&&h.hasValue()&&(d=g.getPixels("x"),u=h.getPixels("y")),s.setCurrent(d,u),"number"==typeof a&&t.getAttribute("x",!0).setValue(a),"number"==typeof r&&t.getAttribute("y",!0).setValue(r),"number"==typeof n||"number"==typeof A){const e=P(t.getAttribute("viewBox").getString());let i=0,a=0;if("number"==typeof n){const A=t.getStyle("width");A.hasValue()?i=A.getPixels("x")/n:e[2]&&!isNaN(e[2])&&(i=e[2]/n)}if("number"==typeof A){const i=t.getStyle("height");i.hasValue()?a=i.getPixels("y")/A:e[3]&&!isNaN(e[3])&&(a=e[3]/A)}i||(i=a),a||(a=i),t.getAttribute("width",!0).setValue(n),t.getAttribute("height",!0).setValue(A);const r=t.getStyle("transform",!0,!0);r.setValue(`${r.getString()} scale(${1/i}, ${1/a})`)}i||o.clearRect(0,0,d,u),t.render(o),c&&(this.isFirstRender=!1)}constructor(t,{fetch:e=gt,window:i=lt}={}){if(ct(this,"ctx",void 0),ct(this,"window",void 0),ct(this,"fetch",void 0),ct(this,"viewPort",void 0),ct(this,"mouse",void 0),ct(this,"animations",void 0),ct(this,"readyPromise",void 0),ct(this,"resolveReady",void 0),ct(this,"waits",void 0),ct(this,"frameDuration",void 0),ct(this,"isReadyLock",void 0),ct(this,"isFirstRender",void 0),ct(this,"intervalId",void 0),this.ctx=t,this.viewPort=new nt,this.mouse=new ot(this),this.animations=[],this.waits=[],this.frameDuration=0,this.isReadyLock=!1,this.isFirstRender=!0,this.intervalId=null,this.window=i,!e)throw new Error("Can't find 'fetch' in 'globalThis', please provide it via options");this.fetch=e}}function dt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}ct(ht,"defaultWindow",lt),ct(ht,"defaultFetch",gt),ct(ht,"FRAMERATE",30),ct(ht,"MAX_VIRTUAL_PIXELS",3e4);const{defaultFetch:ut}=ht,wt="undefined"!=typeof DOMParser?DOMParser:void 0;class Bt{async parse(t){return t.startsWith("<")?this.parseFromString(t):this.load(t)}parseFromString(t){const e=new this.DOMParser;try{return this.checkDocument(e.parseFromString(t,"image/svg+xml"))}catch(i){return this.checkDocument(e.parseFromString(t,"text/xml"))}}checkDocument(t){const e=t.getElementsByTagName("parsererror")[0];if(e)throw new Error(e.textContent||"Unknown parse error");return t}async load(t){const e=await this.fetch(t),i=await e.text();return this.parseFromString(i)}constructor({fetch:t=ut,DOMParser:e=wt}={}){if(dt(this,"fetch",void 0),dt(this,"DOMParser",void 0),!t)throw new Error("Can't find 'fetch' in 'globalThis', please provide it via options");if(!e)throw new Error("Can't find 'DOMParser' in 'globalThis', please provide it via options");this.fetch=t,this.DOMParser=e}}function pt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function mt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function Et(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function ft(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Ct{apply(t){const{originX:e,originY:i,matrix:n}=this,A=e.getPixels("x"),a=i.getPixels("y");t.translate(A,a),t.transform(n[0],n[1],n[2],n[3],n[4],n[5]),t.translate(-A,-a)}unapply(t){const{originX:e,originY:i,matrix:n}=this,A=n[0],a=n[2],r=n[4],s=n[1],o=n[3],c=n[5],l=1/(A*(1*o-0*c)-a*(1*s-0*c)+r*(0*s-0*o)),g=e.getPixels("x"),h=i.getPixels("y");t.translate(g,h),t.transform(l*(1*o-0*c),l*(0*c-1*s),l*(0*r-1*a),l*(1*A-0*r),l*(a*c-r*o),l*(r*s-A*c)),t.translate(-g,-h)}applyToPoint(t){t.applyTransform(this.matrix)}constructor(t,e,i){ft(this,"type","matrix"),ft(this,"matrix",void 0),ft(this,"originX",void 0),ft(this,"originY",void 0),this.matrix=function(t){const e=P(t);return[e[0]||0,e[1]||0,e[2]||0,e[3]||0,e[4]||0,e[5]||0]}(e),this.originX=i[0],this.originY=i[1]}}function Qt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class yt extends Ct{constructor(t,e,i){super(t,e,i),Qt(this,"type","skew"),Qt(this,"angle",void 0),this.angle=new et(t,"angle",e)}}function It(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Dt{static fromElement(t,e){const i=e.getStyle("transform",!1,!0);if(i.hasValue()){const[n,A=n]=e.getStyle("transform-origin",!1,!0).split();if(n&&A){const e=[n,A];return new Dt(t,i.getString(),e)}}return null}apply(t){this.transforms.forEach((e=>e.apply(t)))}unapply(t){this.transforms.forEach((e=>e.unapply(t)))}applyToPoint(t){this.transforms.forEach((e=>e.applyToPoint(t)))}constructor(t,e,i){It(this,"document",void 0),It(this,"transforms",void 0),this.document=t,this.transforms=[];const n=function(t){return F(t).trim().replace(/\)([a-zA-Z])/g,") $1").replace(/\)(\s?,\s?)/g,") ").split(/\s(?=[a-z])/)}(e);n.forEach((t=>{if("none"===t)return;const[e,n]=function(t){const[e="",i=""]=t.split("(");return[e.trim(),i.trim().replace(")","")]}(t),A=Dt.transformTypes[e];A&&this.transforms.push(new A(this.document,n,i))}))}}function xt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}It(Dt,"transformTypes",{translate:class{apply(t){const{x:e,y:i}=this.point;t.translate(e||0,i||0)}unapply(t){const{x:e,y:i}=this.point;t.translate(-1*e||0,-1*i||0)}applyToPoint(t){const{x:e,y:i}=this.point;t.applyTransform([1,0,0,1,e||0,i||0])}constructor(t,e){pt(this,"type","translate"),pt(this,"point",void 0),this.point=rt.parse(e)}},rotate:class{apply(t){const{cx:e,cy:i,originX:n,originY:A,angle:a}=this,r=e+n.getPixels("x"),s=i+A.getPixels("y");t.translate(r,s),t.rotate(a.getRadians()),t.translate(-r,-s)}unapply(t){const{cx:e,cy:i,originX:n,originY:A,angle:a}=this,r=e+n.getPixels("x"),s=i+A.getPixels("y");t.translate(r,s),t.rotate(-1*a.getRadians()),t.translate(-r,-s)}applyToPoint(t){const{cx:e,cy:i,angle:n}=this,A=n.getRadians();t.applyTransform([1,0,0,1,e||0,i||0]),t.applyTransform([Math.cos(A),Math.sin(A),-Math.sin(A),Math.cos(A),0,0]),t.applyTransform([1,0,0,1,-e||0,-i||0])}constructor(t,e,i){mt(this,"type","rotate"),mt(this,"angle",void 0),mt(this,"originX",void 0),mt(this,"originY",void 0),mt(this,"cx",void 0),mt(this,"cy",void 0);const n=P(e);this.angle=new et(t,"angle",n[0]),this.originX=i[0],this.originY=i[1],this.cx=n[1]||0,this.cy=n[2]||0}},scale:class{apply(t){const{scale:{x:e,y:i},originX:n,originY:A}=this,a=n.getPixels("x"),r=A.getPixels("y");t.translate(a,r),t.scale(e,i||e),t.translate(-a,-r)}unapply(t){const{scale:{x:e,y:i},originX:n,originY:A}=this,a=n.getPixels("x"),r=A.getPixels("y");t.translate(a,r),t.scale(1/e,1/i||e),t.translate(-a,-r)}applyToPoint(t){const{x:e,y:i}=this.scale;t.applyTransform([e||0,0,0,i||0,0,0])}constructor(t,e,i){Et(this,"type","scale"),Et(this,"scale",void 0),Et(this,"originX",void 0),Et(this,"originY",void 0);const n=rt.parseScale(e);0!==n.x&&0!==n.y||(n.x=L,n.y=L),this.scale=n,this.originX=i[0],this.originY=i[1]}},matrix:Ct,skewX:class extends yt{constructor(t,e,i){var n,A,a;super(t,e,i),a="skewX",(A="type")in(n=this)?Object.defineProperty(n,A,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[A]=a,this.matrix=[1,0,Math.tan(this.angle.getRadians()),1,0,0]}},skewY:class extends yt{constructor(t,e,i){var n,A,a;super(t,e,i),a="skewY",(A="type")in(n=this)?Object.defineProperty(n,A,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[A]=a,this.matrix=[1,Math.tan(this.angle.getRadians()),0,1,0,0]}}});class vt{getAttribute(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.attributes[t];if(!i&&e){const e=new et(this.document,t,"");return this.attributes[t]=e,e}return i||et.empty(this.document)}getHrefAttribute(){let t;for(const e in this.attributes)if("href"===e||e.endsWith(":href")){t=this.attributes[e];break}return t||et.empty(this.document)}getStyle(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=this.styles[t];if(n)return n;const A=this.getAttribute(t);if(A.hasValue())return this.styles[t]=A,A;if(!i){const{parent:e}=this;if(e){const i=e.getStyle(t);if(i.hasValue())return i}}if(e){const e=new et(this.document,t,"");return this.styles[t]=e,e}return et.empty(this.document)}render(t){if("none"!==this.getStyle("display").getString()&&"hidden"!==this.getStyle("visibility").getString()){if(t.save(),this.getStyle("mask").hasValue()){const e=this.getStyle("mask").getDefinition();e&&(this.applyEffects(t),e.apply(t,this))}else if("none"!==this.getStyle("filter").getValue("none")){const e=this.getStyle("filter").getDefinition();e&&(this.applyEffects(t),e.apply(t,this))}else this.setContext(t),this.renderChildren(t),this.clearContext(t);t.restore()}}setContext(t){}applyEffects(t){const e=Dt.fromElement(this.document,this);e&&e.apply(t);const i=this.getStyle("clip-path",!1,!0);if(i.hasValue()){const e=i.getDefinition();e&&e.apply(t)}}clearContext(t){}renderChildren(t){this.children.forEach((e=>{e.render(t)}))}addChild(t){const e=t instanceof vt?t:this.document.createElement(t);e.parent=this,vt.ignoreChildTypes.includes(e.type)||this.children.push(e)}matchesSelector(t){var e;const{node:i}=this;if(!i)return!1;if("function"==typeof i.matches)return i.matches(t);const n=null===(e=i.getAttribute)||void 0===e?void 0:e.call(i,"class");return!(!n||""===n)&&n.split(" ").some((e=>`.${e}`===t))}addStylesFromStyleDefinition(){const{styles:t,stylesSpecificity:e}=this.document;let i;for(const n in t)if(!n.startsWith("@")&&this.matchesSelector(n)){const A=t[n],a=e[n];if(A)for(const t in A){let e=this.stylesSpecificity[t];void 0===e&&(e="000"),a&&a>=e&&(i=A[t],i&&(this.styles[t]=i),this.stylesSpecificity[t]=a)}}}removeStyles(t,e){return e.reduce(((e,i)=>{const n=t.getStyle(i);if(!n.hasValue())return e;const A=n.getString();return n.setValue(""),[...e,[i,A]]}),[])}restoreStyles(t,e){e.forEach((e=>{let[i,n]=e;t.getStyle(i,!0).setValue(n)}))}isFirstChild(){var t;return 0===(null===(t=this.parent)||void 0===t?void 0:t.children.indexOf(this))}constructor(t,e,i=!1){if(xt(this,"document",void 0),xt(this,"node",void 0),xt(this,"captureTextNodes",void 0),xt(this,"type",void 0),xt(this,"attributes",void 0),xt(this,"styles",void 0),xt(this,"stylesSpecificity",void 0),xt(this,"animationFrozen",void 0),xt(this,"animationFrozenValue",void 0),xt(this,"parent",void 0),xt(this,"children",void 0),this.document=t,this.node=e,this.captureTextNodes=i,this.type="",this.attributes={},this.styles={},this.stylesSpecificity={},this.animationFrozen=!1,this.animationFrozenValue="",this.parent=null,this.children=[],!e||1!==e.nodeType)return;if(Array.from(e.attributes).forEach((e=>{const i=(n=e.nodeName,Y.test(n)?n.toLowerCase():n);var n;this.attributes[i]=new et(t,i,e.value)})),this.addStylesFromStyleDefinition(),this.getAttribute("style").hasValue()){this.getAttribute("style").getString().split(";").map((t=>t.trim())).forEach((e=>{if(!e)return;const[i,n]=e.split(":").map((t=>t.trim()));i&&(this.styles[i]=new et(t,i,n))}))}const{definitions:n}=t,A=this.getAttribute("id");A.hasValue()&&(n[A.getString()]||(n[A.getString()]=this)),Array.from(e.childNodes).forEach((e=>{if(1===e.nodeType)this.addChild(e);else if(i&&(3===e.nodeType||4===e.nodeType)){const i=t.createTextNode(e);i.getText().length>0&&this.addChild(i)}}))}}xt(vt,"ignoreChildTypes",["title"]);class Mt extends vt{constructor(t,e,i){super(t,e,i)}}function St(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function bt(t){const e=t.trim();return/^('|")/.test(e)?e:`"${e}"`}function Ft(t){if(!t)return"";const e=t.trim().toLowerCase();switch(e){case"normal":case"italic":case"oblique":case"inherit":case"initial":case"unset":return e;default:return/^oblique\s+(-|)\d+deg$/.test(e)?e:""}}function Pt(t){if(!t)return"";const e=t.trim().toLowerCase();switch(e){case"normal":case"bold":case"lighter":case"bolder":case"inherit":case"initial":case"unset":return e;default:return/^[\d.]+$/.test(e)?e:""}}class Yt{static parse(){let t=arguments.length>1?arguments[1]:void 0,e="",i="",n="",A="",a="";const r=F(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").trim().split(" "),s={fontSize:!1,fontStyle:!1,fontWeight:!1,fontVariant:!1};return r.forEach((t=>{switch(!0){case!s.fontStyle&&Yt.styles.includes(t):"inherit"!==t&&(e=t),s.fontStyle=!0;break;case!s.fontVariant&&Yt.variants.includes(t):"inherit"!==t&&(i=t),s.fontStyle=!0,s.fontVariant=!0;break;case!s.fontWeight&&Yt.weights.includes(t):"inherit"!==t&&(n=t),s.fontStyle=!0,s.fontVariant=!0,s.fontWeight=!0;break;case!s.fontSize:"inherit"!==t&&(A=t.split("/")[0]||""),s.fontStyle=!0,s.fontVariant=!0,s.fontWeight=!0,s.fontSize=!0;break;default:"inherit"!==t&&(a+=t)}})),new Yt(e,i,n,A,a,t)}toString(){return[Ft(this.fontStyle),this.fontVariant,Pt(this.fontWeight),this.fontSize,(t=this.fontFamily,void 0===d?t:t.trim().split(",").map(bt).join(","))].join(" ").trim();var t}constructor(t,e,i,n,A,a){St(this,"fontFamily",void 0),St(this,"fontSize",void 0),St(this,"fontStyle",void 0),St(this,"fontWeight",void 0),St(this,"fontVariant",void 0);const r=a?"string"==typeof a?Yt.parse(a):a:{};this.fontFamily=A||r.fontFamily,this.fontSize=n||r.fontSize,this.fontStyle=t||r.fontStyle,this.fontWeight=i||r.fontWeight,this.fontVariant=e||r.fontVariant}}function Nt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}St(Yt,"styles","normal|italic|oblique|inherit"),St(Yt,"variants","normal|small-caps|inherit"),St(Yt,"weights","normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit");class kt{get x(){return this.x1}get y(){return this.y1}get width(){return this.x2-this.x1}get height(){return this.y2-this.y1}addPoint(t,e){void 0!==t&&((isNaN(this.x1)||isNaN(this.x2))&&(this.x1=t,this.x2=t),t<this.x1&&(this.x1=t),t>this.x2&&(this.x2=t)),void 0!==e&&((isNaN(this.y1)||isNaN(this.y2))&&(this.y1=e,this.y2=e),e<this.y1&&(this.y1=e),e>this.y2&&(this.y2=e))}addX(t){this.addPoint(t,0)}addY(t){this.addPoint(0,t)}addBoundingBox(t){if(!t)return;const{x1:e,y1:i,x2:n,y2:A}=t;this.addPoint(e,i),this.addPoint(n,A)}sumCubic(t,e,i,n,A){return Math.pow(1-t,3)*e+3*Math.pow(1-t,2)*t*i+3*(1-t)*Math.pow(t,2)*n+Math.pow(t,3)*A}bezierCurveAdd(t,e,i,n,A){const a=6*e-12*i+6*n,r=-3*e+9*i-9*n+3*A,s=3*i-3*e;if(0===r){if(0===a)return;const r=-s/a;return void(0<r&&r<1&&(t?this.addX(this.sumCubic(r,e,i,n,A)):this.addY(this.sumCubic(r,e,i,n,A))))}const o=Math.pow(a,2)-4*s*r;if(o<0)return;const c=(-a+Math.sqrt(o))/(2*r);0<c&&c<1&&(t?this.addX(this.sumCubic(c,e,i,n,A)):this.addY(this.sumCubic(c,e,i,n,A)));const l=(-a-Math.sqrt(o))/(2*r);0<l&&l<1&&(t?this.addX(this.sumCubic(l,e,i,n,A)):this.addY(this.sumCubic(l,e,i,n,A)))}addBezierCurve(t,e,i,n,A,a,r,s){this.addPoint(t,e),this.addPoint(r,s),this.bezierCurveAdd(!0,t,i,A,r),this.bezierCurveAdd(!1,e,n,a,s)}addQuadraticCurve(t,e,i,n,A,a){const r=t+2/3*(i-t),s=e+2/3*(n-e),o=r+1/3*(A-t),c=s+1/3*(a-e);this.addBezierCurve(t,e,r,o,s,c,A,a)}isPointInBox(t,e){const{x1:i,y1:n,x2:A,y2:a}=this;return i<=t&&t<=A&&n<=e&&e<=a}constructor(t=Number.NaN,e=Number.NaN,i=Number.NaN,n=Number.NaN){Nt(this,"x1",void 0),Nt(this,"y1",void 0),Nt(this,"x2",void 0),Nt(this,"y2",void 0),this.x1=t,this.y1=e,this.x2=i,this.y2=n,this.addPoint(t,e),this.addPoint(i,n)}}class Rt extends vt{calculateOpacity(){let t=1,e=this;for(;e;){const i=e.getStyle("opacity",!1,!0);i.hasValue(!0)&&(t*=i.getNumber()),e=e.parent}return t}setContext(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e){const e=this.getStyle("fill"),i=this.getStyle("fill-opacity"),n=this.getStyle("stroke"),A=this.getStyle("stroke-opacity");if(e.isUrlDefinition()){const n=e.getFillStyleDefinition(this,i);n&&(t.fillStyle=n)}else if(e.hasValue()){"currentColor"===e.getString()&&e.setValue(this.getStyle("color").getColor());const i=e.getColor();"inherit"!==i&&(t.fillStyle="none"===i?"rgba(0,0,0,0)":i)}if(i.hasValue()){const e=new et(this.document,"fill",t.fillStyle).addOpacity(i).getColor();t.fillStyle=e}if(n.isUrlDefinition()){const e=n.getFillStyleDefinition(this,A);e&&(t.strokeStyle=e)}else if(n.hasValue()){"currentColor"===n.getString()&&n.setValue(this.getStyle("color").getColor());const e=n.getString();"inherit"!==e&&(t.strokeStyle="none"===e?"rgba(0,0,0,0)":e)}if(A.hasValue()){const e=new et(this.document,"stroke",t.strokeStyle).addOpacity(A).getString();t.strokeStyle=e}const a=this.getStyle("stroke-width");if(a.hasValue()){const e=a.getPixels();t.lineWidth=e||L}const r=this.getStyle("stroke-linecap"),s=this.getStyle("stroke-linejoin"),o=this.getStyle("stroke-miterlimit"),c=this.getStyle("stroke-dasharray"),l=this.getStyle("stroke-dashoffset");if(r.hasValue()&&(t.lineCap=r.getString()),s.hasValue()&&(t.lineJoin=s.getString()),o.hasValue()&&(t.miterLimit=o.getNumber()),c.hasValue()&&"none"!==c.getString()){const e=P(c.getString());void 0!==t.setLineDash?t.setLineDash(e):void 0!==t.webkitLineDash?t.webkitLineDash=e:void 0===t.mozDash||1===e.length&&0===e[0]||(t.mozDash=e);const i=l.getPixels();void 0!==t.lineDashOffset?t.lineDashOffset=i:void 0!==t.webkitLineDashOffset?t.webkitLineDashOffset=i:void 0!==t.mozDashOffset&&(t.mozDashOffset=i)}}if(this.modifiedEmSizeStack=!1,void 0!==t.font){const e=this.getStyle("font"),i=this.getStyle("font-style"),n=this.getStyle("font-variant"),A=this.getStyle("font-weight"),a=this.getStyle("font-size"),r=this.getStyle("font-family"),s=new Yt(i.getString(),n.getString(),A.getString(),a.hasValue()?`${a.getPixels(!0)}px`:"",r.getString(),Yt.parse(e.getString(),t.font));i.setValue(s.fontStyle),n.setValue(s.fontVariant),A.setValue(s.fontWeight),a.setValue(s.fontSize),r.setValue(s.fontFamily),t.font=s.toString(),a.isPixels()&&(this.document.emSize=a.getPixels(),this.modifiedEmSizeStack=!0)}e||(this.applyEffects(t),t.globalAlpha=this.calculateOpacity())}clearContext(t){super.clearContext(t),this.modifiedEmSizeStack&&this.document.popEmSize()}constructor(...t){var e,i,n;super(...t),n=!1,(i="modifiedEmSizeStack")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}}function Ht(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Ut extends Rt{setContext(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];super.setContext(t,e);const i=this.getStyle("dominant-baseline").getTextBaseline()||this.getStyle("alignment-baseline").getTextBaseline();i&&(t.textBaseline=i)}initializeCoordinates(){this.x=0,this.y=0,this.leafTexts=[],this.textChunkStart=0,this.minX=Number.POSITIVE_INFINITY,this.maxX=Number.NEGATIVE_INFINITY}getBoundingBox(t){if("text"!==this.type)return this.getTElementBoundingBox(t);this.initializeCoordinates(),this.adjustChildCoordinatesRecursive(t);let e=null;return this.children.forEach(((i,n)=>{const A=this.getChildBoundingBox(t,this,this,n);e?e.addBoundingBox(A):e=A})),e}getFontSize(){const{document:t,parent:e}=this,i=Yt.parse(t.ctx.font).fontSize;return e.getStyle("font-size").getNumber(i)}getTElementBoundingBox(t){const e=this.getFontSize();return new kt(this.x,this.y-e,this.x+this.measureText(t),this.y)}getGlyph(t,e,i){const n=e[i];let A;if(t.isArabic){var a;const r=e.length,s=e[i-1],o=e[i+1];let c="isolated";(0===i||" "===s)&&i<r-1&&" "!==o&&(c="terminal"),i>0&&" "!==s&&i<r-1&&" "!==o&&(c="medial"),i>0&&" "!==s&&(i===r-1||" "===o)&&(c="initial"),A=(null===(a=t.arabicGlyphs[n])||void 0===a?void 0:a[c])||t.glyphs[n]}else A=t.glyphs[n];return A||(A=t.missingGlyph),A}getText(){return""}getTextFromNode(t){const e=t||this.node,i=Array.from(e.parentNode.childNodes),n=i.indexOf(e),A=i.length-1;let a=F(e.textContent||"");return 0===n&&(a=a.replace(/^[\n \t]+/,"")),n===A&&(a=function(t){return t.replace(/[\n \t]+$/,"")}(a)),a}renderChildren(t){if("text"!==this.type)return void this.renderTElementChildren(t);this.initializeCoordinates(),this.adjustChildCoordinatesRecursive(t),this.children.forEach(((e,i)=>{this.renderChild(t,this,this,i)}));const{mouse:e}=this.document.screen;e.isWorking()&&e.checkBoundingBox(this,this.getBoundingBox(t))}renderTElementChildren(t){const{document:e,parent:i}=this,n=this.getText(),A=i.getStyle("font-family").getDefinition();if(null==A?void 0:A.fontFace){const{unitsPerEm:a}=A.fontFace,r=Yt.parse(e.ctx.font),s=i.getStyle("font-size").getNumber(r.fontSize),o=i.getStyle("font-style").getString(r.fontStyle),c=s/a,l=A.isRTL?n.split("").reverse().join(""):n,g=P(i.getAttribute("dx").getString()),h=l.length;for(let e=0;e<h;e++){const i=this.getGlyph(A,l,e);t.translate(this.x,this.y),t.scale(c,-c);const n=t.lineWidth;t.lineWidth=t.lineWidth*a/s,"italic"===o&&t.transform(1,0,.4,1,0,0),i.render(t),"italic"===o&&t.transform(1,0,-.4,1,0,0),t.lineWidth=n,t.scale(1/c,-1/c),t.translate(-this.x,-this.y),this.x+=s*(i.horizAdvX||A.horizAdvX)/a,void 0===g[e]||isNaN(g[e])||(this.x+=g[e])}return}const{x:a,y:r}=this;t.fillStyle&&t.fillText(n,a,r),t.strokeStyle&&t.strokeText(n,a,r)}applyAnchoring(){if(this.textChunkStart>=this.leafTexts.length)return;const t=this.leafTexts[this.textChunkStart],e=t.getStyle("text-anchor").getString("start");let i=0;i="start"===e?t.x-this.minX:"end"===e?t.x-this.maxX:t.x-(this.minX+this.maxX)/2;for(let t=this.textChunkStart;t<this.leafTexts.length;t++)this.leafTexts[t].x+=i;this.minX=Number.POSITIVE_INFINITY,this.maxX=Number.NEGATIVE_INFINITY,this.textChunkStart=this.leafTexts.length}adjustChildCoordinatesRecursive(t){this.children.forEach(((e,i)=>{this.adjustChildCoordinatesRecursiveCore(t,this,this,i)})),this.applyAnchoring()}adjustChildCoordinatesRecursiveCore(t,e,i,n){const A=i.children[n];A.children.length>0?A.children.forEach(((i,n)=>{e.adjustChildCoordinatesRecursiveCore(t,e,A,n)})):this.adjustChildCoordinates(t,e,i,n)}adjustChildCoordinates(t,e,i,n){const A=i.children[n];if("function"!=typeof A.measureText)return A;t.save(),A.setContext(t,!0);const a=A.getAttribute("x"),r=A.getAttribute("y"),s=A.getAttribute("dx"),o=A.getAttribute("dy"),c=A.getStyle("font-family").getDefinition(),l=Boolean(null==c?void 0:c.isRTL);0===n&&(a.hasValue()||a.setValue(A.getInheritedAttribute("x")),r.hasValue()||r.setValue(A.getInheritedAttribute("y")),s.hasValue()||s.setValue(A.getInheritedAttribute("dx")),o.hasValue()||o.setValue(A.getInheritedAttribute("dy")));const g=A.measureText(t);return l&&(e.x-=g),a.hasValue()?(e.applyAnchoring(),A.x=a.getPixels("x"),s.hasValue()&&(A.x+=s.getPixels("x"))):(s.hasValue()&&(e.x+=s.getPixels("x")),A.x=e.x),e.x=A.x,l||(e.x+=g),r.hasValue()?(A.y=r.getPixels("y"),o.hasValue()&&(A.y+=o.getPixels("y"))):(o.hasValue()&&(e.y+=o.getPixels("y")),A.y=e.y),e.y=A.y,e.leafTexts.push(A),e.minX=Math.min(e.minX,A.x,A.x+g),e.maxX=Math.max(e.maxX,A.x,A.x+g),A.clearContext(t),t.restore(),A}getChildBoundingBox(t,e,i,n){const A=i.children[n];if("function"!=typeof A.getBoundingBox)return null;const a=A.getBoundingBox(t);return a&&A.children.forEach(((i,n)=>{const r=e.getChildBoundingBox(t,e,A,n);a.addBoundingBox(r)})),a}renderChild(t,e,i,n){const A=i.children[n];A.render(t),A.children.forEach(((i,n)=>{e.renderChild(t,e,A,n)}))}measureText(t){const{measureCache:e}=this;if(~e)return e;const i=this.getText(),n=this.measureTargetText(t,i);return this.measureCache=n,n}measureTargetText(t,e){if(!e.length)return 0;const{parent:i}=this,n=i.getStyle("font-family").getDefinition();if(n){const t=this.getFontSize(),A=n.isRTL?e.split("").reverse().join(""):e,a=P(i.getAttribute("dx").getString()),r=A.length;let s=0;for(let e=0;e<r;e++){s+=(this.getGlyph(n,A,e).horizAdvX||n.horizAdvX)*t/n.fontFace.unitsPerEm,void 0===a[e]||isNaN(a[e])||(s+=a[e])}return s}if(!t.measureText)return 10*e.length;t.save(),this.setContext(t,!0);const{width:A}=t.measureText(e);return this.clearContext(t),t.restore(),A}getInheritedAttribute(t){let e=this;for(;e instanceof Ut&&e.isFirstChild()&&e.parent;){const i=e.parent.getAttribute(t);if(i.hasValue(!0))return i.getString("0");e=e.parent}return null}constructor(t,e,i){super(t,e,new.target===Ut||i),Ht(this,"type","text"),Ht(this,"x",0),Ht(this,"y",0),Ht(this,"leafTexts",[]),Ht(this,"textChunkStart",0),Ht(this,"minX",Number.POSITIVE_INFINITY),Ht(this,"maxX",Number.NEGATIVE_INFINITY),Ht(this,"measureCache",-1)}}function Gt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Tt extends Ut{getText(){return this.text}constructor(t,e,i){super(t,e,new.target===Tt||i),Gt(this,"type","tspan"),Gt(this,"text",void 0),this.text=this.children.length>0?"":this.getTextFromNode()}}class Ot extends Tt{constructor(...t){var e,i,n;super(...t),n="textNode",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}}function Jt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Lt extends B.SVGPathData{reset(){this.i=-1,this.command=null,this.previousCommand=null,this.start=new rt(0,0),this.control=new rt(0,0),this.current=new rt(0,0),this.points=[],this.angles=[]}isEnd(){const{i:t,commands:e}=this;return t>=e.length-1}next(){const t=this.commands[++this.i];return this.previousCommand=this.command,this.command=t,t}getPoint(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"x",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"y";const i=new rt(this.command[t],this.command[e]);return this.makeAbsolute(i)}getAsControlPoint(t,e){const i=this.getPoint(t,e);return this.control=i,i}getAsCurrentPoint(t,e){const i=this.getPoint(t,e);return this.current=i,i}getReflectedControlPoint(){const t=this.previousCommand.type;if(t!==B.SVGPathData.CURVE_TO&&t!==B.SVGPathData.SMOOTH_CURVE_TO&&t!==B.SVGPathData.QUAD_TO&&t!==B.SVGPathData.SMOOTH_QUAD_TO)return this.current;const{current:{x:e,y:i},control:{x:n,y:A}}=this;return new rt(2*e-n,2*i-A)}makeAbsolute(t){if(this.command.relative){const{x:e,y:i}=this.current;t.x+=e,t.y+=i}return t}addMarker(t,e,i){const{points:n,angles:A}=this;i&&A.length>0&&!A[A.length-1]&&(A[A.length-1]=n[n.length-1].angleTo(i)),this.addMarkerAngle(t,e?e.angleTo(t):null)}addMarkerAngle(t,e){this.points.push(t),this.angles.push(e)}getMarkerPoints(){return this.points}getMarkerAngles(){const{angles:t}=this,e=t.length;for(let i=0;i<e;i++)if(!t[i])for(let n=i+1;n<e;n++)if(t[n]){t[i]=t[n];break}return t}constructor(t){super(t.replace(/([+\-.])\s+/gm,"$1").replace(/[^MmZzLlHhVvCcSsQqTtAae\d\s.,+-].*/g,"")),Jt(this,"control",new rt(0,0)),Jt(this,"start",new rt(0,0)),Jt(this,"current",new rt(0,0)),Jt(this,"command",null),Jt(this,"commands",this.commands),Jt(this,"i",-1),Jt(this,"previousCommand",null),Jt(this,"points",[]),Jt(this,"angles",[])}}function zt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class jt extends Rt{path(t){const{pathParser:e}=this,i=new kt;for(e.reset(),t&&t.beginPath();!e.isEnd();)switch(e.next().type){case Lt.MOVE_TO:this.pathM(t,i);break;case Lt.LINE_TO:this.pathL(t,i);break;case Lt.HORIZ_LINE_TO:this.pathH(t,i);break;case Lt.VERT_LINE_TO:this.pathV(t,i);break;case Lt.CURVE_TO:this.pathC(t,i);break;case Lt.SMOOTH_CURVE_TO:this.pathS(t,i);break;case Lt.QUAD_TO:this.pathQ(t,i);break;case Lt.SMOOTH_QUAD_TO:this.pathT(t,i);break;case Lt.ARC:this.pathA(t,i);break;case Lt.CLOSE_PATH:this.pathZ(t,i)}return i}getBoundingBox(t){return this.path()}getMarkers(){const{pathParser:t}=this,e=t.getMarkerPoints(),i=t.getMarkerAngles();if(!e||!i)return null;return e.map(((t,e)=>[t,i[e]]))}renderChildren(t){this.path(t),this.document.screen.mouse.checkPath(this,t);const e=this.getStyle("fill-rule");""!==t.fillStyle&&("inherit"!==e.getString("inherit")?t.fill(e.getString()):t.fill()),""!==t.strokeStyle&&("non-scaling-stroke"===this.getAttribute("vector-effect").getString()?(t.save(),t.setTransform(1,0,0,1,0,0),t.stroke(),t.restore()):t.stroke());const i=this.getMarkers();if(i){const e=i.length-1,n=this.getStyle("marker-start"),A=this.getStyle("marker-mid"),a=this.getStyle("marker-end");if(n.isUrlDefinition()){const e=n.getDefinition(),[A,a]=i[0];e&&e.render(t,A,null===a?void 0:a)}if(A.isUrlDefinition()){const n=A.getDefinition();for(let A=1;A<e;A++){const[e,a]=i[A];n&&n.render(t,e,null===a?void 0:a)}}if(a.isUrlDefinition()){const n=a.getDefinition(),[A,r]=i[e];n&&n.render(t,A,null===r?void 0:r)}}}static pathM(t){const e=t.getAsCurrentPoint();return t.start=t.current,{point:e}}pathM(t,e){const{pathParser:i}=this,{point:n}=jt.pathM(i),{x:A,y:a}=n;i.addMarker(n),e.addPoint(A,a),t&&t.moveTo(A,a)}static pathL(t){const{current:e}=t;return{current:e,point:t.getAsCurrentPoint()}}pathL(t,e){const{pathParser:i}=this,{current:n,point:A}=jt.pathL(i),{x:a,y:r}=A;i.addMarker(A,n),e.addPoint(a,r),t&&t.lineTo(a,r)}static pathH(t){const{current:e,command:i}=t,n=new rt(((null==i?void 0:i.relative)?e.x:0)+i.x,e.y);return t.current=n,{current:e,point:n}}pathH(t,e){const{pathParser:i}=this,{current:n,point:A}=jt.pathH(i),{x:a,y:r}=A;i.addMarker(A,n),e.addPoint(a,r),t&&t.lineTo(a,r)}static pathV(t){const{current:e,command:i}=t,n=new rt(e.x,(i.relative?e.y:0)+i.y);return t.current=n,{current:e,point:n}}pathV(t,e){const{pathParser:i}=this,{current:n,point:A}=jt.pathV(i),{x:a,y:r}=A;i.addMarker(A,n),e.addPoint(a,r),t&&t.lineTo(a,r)}static pathC(t){const{current:e}=t;return{current:e,point:t.getPoint("x1","y1"),controlPoint:t.getAsControlPoint("x2","y2"),currentPoint:t.getAsCurrentPoint()}}pathC(t,e){const{pathParser:i}=this,{current:n,point:A,controlPoint:a,currentPoint:r}=jt.pathC(i);i.addMarker(r,a,A),e.addBezierCurve(n.x,n.y,A.x,A.y,a.x,a.y,r.x,r.y),t&&t.bezierCurveTo(A.x,A.y,a.x,a.y,r.x,r.y)}static pathS(t){const{current:e}=t;return{current:e,point:t.getReflectedControlPoint(),controlPoint:t.getAsControlPoint("x2","y2"),currentPoint:t.getAsCurrentPoint()}}pathS(t,e){const{pathParser:i}=this,{current:n,point:A,controlPoint:a,currentPoint:r}=jt.pathS(i);i.addMarker(r,a,A),e.addBezierCurve(n.x,n.y,A.x,A.y,a.x,a.y,r.x,r.y),t&&t.bezierCurveTo(A.x,A.y,a.x,a.y,r.x,r.y)}static pathQ(t){const{current:e}=t;return{current:e,controlPoint:t.getAsControlPoint("x1","y1"),currentPoint:t.getAsCurrentPoint()}}pathQ(t,e){const{pathParser:i}=this,{current:n,controlPoint:A,currentPoint:a}=jt.pathQ(i);i.addMarker(a,A,A),e.addQuadraticCurve(n.x,n.y,A.x,A.y,a.x,a.y),t&&t.quadraticCurveTo(A.x,A.y,a.x,a.y)}static pathT(t){const{current:e}=t,i=t.getReflectedControlPoint();t.control=i;return{current:e,controlPoint:i,currentPoint:t.getAsCurrentPoint()}}pathT(t,e){const{pathParser:i}=this,{current:n,controlPoint:A,currentPoint:a}=jt.pathT(i);i.addMarker(a,A,A),e.addQuadraticCurve(n.x,n.y,A.x,A.y,a.x,a.y),t&&t.quadraticCurveTo(A.x,A.y,a.x,a.y)}static pathA(t){const{current:e,command:i}=t;let{rX:n,rY:A,xRot:a,lArcFlag:r,sweepFlag:s}=i;const o=a*(Math.PI/180),c=t.getAsCurrentPoint(),l=new rt(Math.cos(o)*(e.x-c.x)/2+Math.sin(o)*(e.y-c.y)/2,-Math.sin(o)*(e.x-c.x)/2+Math.cos(o)*(e.y-c.y)/2),g=Math.pow(l.x,2)/Math.pow(n,2)+Math.pow(l.y,2)/Math.pow(A,2);g>1&&(n*=Math.sqrt(g),A*=Math.sqrt(g));let h=(r===s?-1:1)*Math.sqrt((Math.pow(n,2)*Math.pow(A,2)-Math.pow(n,2)*Math.pow(l.y,2)-Math.pow(A,2)*Math.pow(l.x,2))/(Math.pow(n,2)*Math.pow(l.y,2)+Math.pow(A,2)*Math.pow(l.x,2)));isNaN(h)&&(h=0);const d=new rt(h*n*l.y/A,h*-A*l.x/n),u=new rt((e.x+c.x)/2+Math.cos(o)*d.x-Math.sin(o)*d.y,(e.y+c.y)/2+Math.sin(o)*d.x+Math.cos(o)*d.y),w=V([1,0],[(l.x-d.x)/n,(l.y-d.y)/A]),B=[(l.x-d.x)/n,(l.y-d.y)/A],p=[(-l.x-d.x)/n,(-l.y-d.y)/A];let m=V(B,p);return j(B,p)<=-1&&(m=Math.PI),j(B,p)>=1&&(m=0),{currentPoint:c,rX:n,rY:A,sweepFlag:s,xAxisRotation:o,centp:u,a1:w,ad:m}}pathA(t,e){const{pathParser:i}=this,{currentPoint:n,rX:A,rY:a,sweepFlag:r,xAxisRotation:s,centp:o,a1:c,ad:l}=jt.pathA(i),g=1-r?1:-1,h=c+g*(l/2),d=new rt(o.x+A*Math.cos(h),o.y+a*Math.sin(h));if(i.addMarkerAngle(d,h-g*Math.PI/2),i.addMarkerAngle(n,h-g*Math.PI),e.addPoint(n.x,n.y),t&&!isNaN(c)&&!isNaN(l)){const e=A>a?A:a,i=A>a?1:A/a,n=A>a?a/A:1;t.translate(o.x,o.y),t.rotate(s),t.scale(i,n),t.arc(0,0,e,c,c+l,Boolean(1-r)),t.scale(1/i,1/n),t.rotate(-s),t.translate(-o.x,-o.y)}}static pathZ(t){t.current=t.start}pathZ(t,e){jt.pathZ(this.pathParser),t&&e.x1!==e.x2&&e.y1!==e.y2&&t.closePath()}constructor(t,e,i){super(t,e,i),zt(this,"type","path"),zt(this,"pathParser",void 0),this.pathParser=new Lt(this.getAttribute("d").getString())}}function Vt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Kt extends Rt{setContext(t){var e;const{document:i}=this,{screen:n,window:A}=i,a=t.canvas;if(n.setDefaults(t),"style"in a&&void 0!==t.font&&A&&void 0!==A.getComputedStyle){t.font=A.getComputedStyle(a).getPropertyValue("font");const e=new et(i,"fontSize",Yt.parse(t.font).fontSize);e.hasValue()&&(i.rootEmSize=e.getPixels("y"),i.emSize=i.rootEmSize)}this.getAttribute("x").hasValue()||this.getAttribute("x",!0).setValue(0),this.getAttribute("y").hasValue()||this.getAttribute("y",!0).setValue(0);let{width:r,height:s}=n.viewPort;this.getStyle("width").hasValue()||this.getStyle("width",!0).setValue("100%"),this.getStyle("height").hasValue()||this.getStyle("height",!0).setValue("100%"),this.getStyle("color").hasValue()||this.getStyle("color",!0).setValue("black");const o=this.getAttribute("refX"),c=this.getAttribute("refY"),l=this.getAttribute("viewBox"),g=l.hasValue()?P(l.getString()):null,h=!this.root&&"visible"!==this.getStyle("overflow").getValue("hidden");let d=0,u=0,w=0,B=0;g&&(d=g[0],u=g[1]),this.root||(r=this.getStyle("width").getPixels("x"),s=this.getStyle("height").getPixels("y"),"marker"===this.type&&(w=d,B=u,d=0,u=0)),n.viewPort.setCurrent(r,s),!this.node||this.parent&&"foreignObject"!==(null===(e=this.node.parentNode)||void 0===e?void 0:e.nodeName)||!this.getStyle("transform",!1,!0).hasValue()||this.getStyle("transform-origin",!1,!0).hasValue()||this.getStyle("transform-origin",!0,!0).setValue("50% 50%"),super.setContext(t),t.translate(this.getAttribute("x").getPixels("x"),this.getAttribute("y").getPixels("y")),g&&(r=g[2],s=g[3]),i.setViewBox({ctx:t,aspectRatio:this.getAttribute("preserveAspectRatio").getString(),width:n.viewPort.width,desiredWidth:r,height:n.viewPort.height,desiredHeight:s,minX:d,minY:u,refX:o.getValue(),refY:c.getValue(),clip:h,clipX:w,clipY:B}),g&&(n.viewPort.removeCurrent(),n.viewPort.setCurrent(r,s))}clearContext(t){super.clearContext(t),this.document.screen.viewPort.removeCurrent()}resize(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=this.getAttribute("width",!0),A=this.getAttribute("height",!0),a=this.getAttribute("viewBox"),r=this.getAttribute("style"),s=n.getNumber(0),o=A.getNumber(0);if(i)if("string"==typeof i)this.getAttribute("preserveAspectRatio",!0).setValue(i);else{const t=this.getAttribute("preserveAspectRatio");t.hasValue()&&t.setValue(t.getString().replace(/^\s*(\S.*\S)\s*$/,"$1"))}if(n.setValue(t),A.setValue(e),a.hasValue()||a.setValue(`0 0 ${s||t} ${o||e}`),r.hasValue()){const i=this.getStyle("width"),n=this.getStyle("height");i.hasValue()&&i.setValue(`${t}px`),n.hasValue()&&n.setValue(`${e}px`)}}constructor(...t){super(...t),Vt(this,"type","svg"),Vt(this,"root",!1)}}class Wt extends jt{path(t){const e=this.getAttribute("x").getPixels("x"),i=this.getAttribute("y").getPixels("y"),n=this.getStyle("width",!1,!0).getPixels("x"),A=this.getStyle("height",!1,!0).getPixels("y"),a=this.getAttribute("rx"),r=this.getAttribute("ry");let s=a.getPixels("x"),o=r.getPixels("y");if(a.hasValue()&&!r.hasValue()&&(o=s),r.hasValue()&&!a.hasValue()&&(s=o),s=Math.min(s,n/2),o=Math.min(o,A/2),t){const a=(Math.sqrt(2)-1)/3*4;t.beginPath(),A>0&&n>0&&(t.moveTo(e+s,i),t.lineTo(e+n-s,i),t.bezierCurveTo(e+n-s+a*s,i,e+n,i+o-a*o,e+n,i+o),t.lineTo(e+n,i+A-o),t.bezierCurveTo(e+n,i+A-o+a*o,e+n-s+a*s,i+A,e+n-s,i+A),t.lineTo(e+s,i+A),t.bezierCurveTo(e+s-a*s,i+A,e,i+A-o+a*o,e,i+A-o),t.lineTo(e,i+o),t.bezierCurveTo(e,i+o-a*o,e+s-a*s,i,e+s,i),t.closePath())}return new kt(e,i,e+n,i+A)}getMarkers(){return null}constructor(...t){var e,i,n;super(...t),n="rect",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}}function Xt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class qt extends jt{path(t){const{points:e}=this,[{x:i,y:n}]=e,A=new kt(i,n);return t&&(t.beginPath(),t.moveTo(i,n)),e.forEach((e=>{let{x:i,y:n}=e;A.addPoint(i,n),t&&t.lineTo(i,n)})),A}getMarkers(){const{points:t}=this,e=t.length-1,i=[];return t.forEach(((n,A)=>{A!==e&&i.push([n,n.angleTo(t[A+1])])})),i.length>0&&i.push([t[t.length-1],i[i.length-1][1]]),i}constructor(t,e,i){super(t,e,i),Xt(this,"type","polyline"),Xt(this,"points",[]),this.points=rt.parsePath(this.getAttribute("points").getString())}}class Zt extends Rt{getBoundingBox(t){const e=new kt;return this.children.forEach((i=>{i instanceof jt&&e.addBoundingBox(i.getBoundingBox(t))})),e}constructor(...t){var e,i,n;super(...t),n="g",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}}function $t(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class _t extends vt{getGradientUnits(){return this.getAttribute("gradientUnits").getString("objectBoundingBox")}createGradient(t,e,i){let n=this;this.getHrefAttribute().hasValue()&&(n=this.getHrefAttribute().getDefinition(),this.inheritStopContainer(n));const{stops:A}=n,a=this.getGradient(t,e);if(!a)return this.addParentOpacity(i,A[A.length-1].color);if(A.forEach((t=>{a.addColorStop(t.offset,this.addParentOpacity(i,t.color))})),this.getAttribute("gradientTransform").hasValue()){const{document:t}=this,{MAX_VIRTUAL_PIXELS:e}=ht,{viewPort:i}=t.screen,n=i.getRoot(),A=new Wt(t);A.attributes.x=new et(t,"x",-e/3),A.attributes.y=new et(t,"y",-e/3),A.attributes.width=new et(t,"width",e),A.attributes.height=new et(t,"height",e);const r=new Zt(t);r.attributes.transform=new et(t,"transform",this.getAttribute("gradientTransform").getValue()),r.children=[A];const s=new Kt(t);s.attributes.x=new et(t,"x",0),s.attributes.y=new et(t,"y",0),s.attributes.width=new et(t,"width",n.width),s.attributes.height=new et(t,"height",n.height),s.children=[r];const o=t.createCanvas(n.width,n.height),c=o.getContext("2d");return c.fillStyle=a,s.render(c),c.createPattern(o,"no-repeat")}return a}inheritStopContainer(t){this.attributesToInherit.forEach((e=>{!this.getAttribute(e).hasValue()&&t.getAttribute(e).hasValue()&&this.getAttribute(e,!0).setValue(t.getAttribute(e).getValue())}))}addParentOpacity(t,e){if(t.hasValue()){return new et(this.document,"color",e).addOpacity(t).getColor()}return e}constructor(t,e,i){super(t,e,i),$t(this,"attributesToInherit",["gradientUnits"]),$t(this,"stops",[]);const{stops:n,children:A}=this;A.forEach((t=>{"stop"===t.type&&n.push(t)}))}}function te(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function ee(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class ie extends vt{getProperty(){var t;const e=this.getAttribute("attributeType").getString(),i=this.getAttribute("attributeName").getString();var n;return"CSS"===e?null===(n=this.parent)||void 0===n?void 0:n.getStyle(i,!0):null===(t=this.parent)||void 0===t?void 0:t.getAttribute(i,!0)}calcValue(){const{initialUnits:t}=this,{progress:e,from:i,to:n}=this.getProgress();let A=i.getNumber()+(n.getNumber()-i.getNumber())*e;return"%"===t&&(A*=100),`${A}${t}`}update(t){const{parent:e}=this,i=this.getProperty();if(!i)return!1;if(this.initialValue||(this.initialValue=i.getString(),this.initialUnits=i.getUnits()),this.duration>this.maxDuration){const t=this.getAttribute("fill").getString("remove");if("indefinite"===this.getAttribute("repeatCount").getString()||"indefinite"===this.getAttribute("repeatDur").getString())this.duration=0;else if("freeze"!==t||this.frozen){if("remove"===t&&!this.removed)return this.removed=!0,e&&i&&i.setValue(e.animationFrozen?e.animationFrozenValue:this.initialValue),!0}else this.frozen=!0,e&&i&&(e.animationFrozen=!0,e.animationFrozenValue=i.getString());return!1}this.duration+=t;let n=!1;if(this.begin<this.duration){let t=this.calcValue();const e=this.getAttribute("type");if(e.hasValue()){t=`${e.getString()}(${t})`}i.setValue(t),n=!0}return n}getProgress(){const{document:t,values:e}=this;let i,n,A=(this.duration-this.begin)/(this.maxDuration-this.begin);if(e.hasValue()){const a=A*(e.getValue().length-1),r=Math.floor(a),s=Math.ceil(a);let o;o=e.getValue()[r],i=new et(t,"from",o?parseFloat(o):0),o=e.getValue()[s],n=new et(t,"to",o?parseFloat(o):0),A=(a-r)/(s-r)}else i=this.from,n=this.to;return{progress:A,from:i,to:n}}constructor(t,e,i){super(t,e,i),ee(this,"type","animate"),ee(this,"begin",void 0),ee(this,"maxDuration",void 0),ee(this,"from",void 0),ee(this,"to",void 0),ee(this,"values",void 0),ee(this,"duration",0),ee(this,"initialValue",void 0),ee(this,"initialUnits",""),ee(this,"removed",!1),ee(this,"frozen",!1),t.screen.animations.push(this),this.begin=this.getAttribute("begin").getMilliseconds(),this.maxDuration=this.begin+this.getAttribute("dur").getMilliseconds(),this.from=this.getAttribute("from"),this.to=this.getAttribute("to"),this.values=new et(t,"values",null);const n=this.getAttribute("values");n.hasValue()&&this.values.setValue(n.getString().split(";"))}}function ne(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Ae extends vt{constructor(t,e,i){super(t,e,i),ne(this,"type","font-face"),ne(this,"ascent",void 0),ne(this,"descent",void 0),ne(this,"unitsPerEm",void 0),this.ascent=this.getAttribute("ascent").getNumber(),this.descent=this.getAttribute("descent").getNumber(),this.unitsPerEm=this.getAttribute("units-per-em").getNumber()}}function ae(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class re extends jt{constructor(t,e,i){super(t,e,i),ae(this,"type","glyph"),ae(this,"horizAdvX",void 0),ae(this,"unicode",void 0),ae(this,"arabicForm",void 0),this.horizAdvX=this.getAttribute("horiz-adv-x").getNumber(),this.unicode=this.getAttribute("unicode").getString(),this.arabicForm=this.getAttribute("arabic-form").getString()}}function se(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class oe extends re{constructor(...t){super(...t),se(this,"type","missing-glyph"),se(this,"horizAdvX",0)}}function ce(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function le(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function ge(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function he(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const de=/^\s*data:(([^/,;]+\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;function ue(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class we{async load(t,e){try{const{document:i}=this,n=(await i.pith.parser.load(e)).getElementsByTagName("font");Array.from(n).forEach((e=>{const n=i.createElement(e);i.definitions[t]=n}))}catch(t){console.error(`Error while loading font "${e}":`,t)}this.loaded=!0}constructor(t){ue(this,"document",void 0),ue(this,"loaded",void 0),this.document=t,this.loaded=!1,t.fonts.push(this)}}function Be(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class pe extends vt{constructor(t,e,i){super(t,e,i),Be(this,"type","style");F(Array.from(e.childNodes).map((t=>t.textContent)).join("").replace(/(\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm,"").replace(/@import.*;/g,"")).split("}").forEach((e=>{const i=e.trim();if(!i)return;const n=i.split("{"),A=n[0].split(","),a=n[1].split(";");A.forEach((e=>{const i=e.trim();if(!i)return;const n=t.styles[i]||{};if(a.forEach((e=>{const i=e.indexOf(":"),A=e.substr(0,i).trim(),a=e.substr(i+1,e.length-i).trim();A&&a&&(n[A]=new et(t,A,a))})),t.styles[i]=n,t.stylesSpecificity[i]=function(t){const e=[0,0,0];let i=t.replace(/:not\(([^)]*)\)/g," $1 ").replace(/{[\s\S]*/gm," "),n=0;return[i,n]=J(i,k),e[1]+=n,[i,n]=J(i,R),e[0]+=n,[i,n]=J(i,H),e[1]+=n,[i,n]=J(i,U),e[2]+=n,[i,n]=J(i,G),e[1]+=n,[i,n]=J(i,T),e[1]+=n,i=i.replace(/[*\s+>~]/g," ").replace(/[#.]/g," "),[i,n]=J(i,O),e[2]+=n,e.join("")}(i),"@font-face"===i){const e=n["font-family"].getString().replace(/"|'/g,"");n.src.getString().split(",").forEach((i=>{if(i.indexOf('format("svg")')>0){const n=N(i);n&&new we(t).load(e,n)}}))}}))}))}}function me(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}Be(pe,"parseExternalUrl",N);function Ee(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function fe(t,e,i,n,A,a){return t[i*n*4+4*e+a]}function Ce(t,e,i,n,A,a,r){t[i*n*4+4*e+a]=r}function Qe(t,e,i){return t[e]*i}function ye(t,e,i,n){return e+Math.cos(t)*i+Math.sin(t)*n}class Ie extends vt{apply(t,e,i,n,A){const{includeOpacity:a,matrix:r}=this,s=t.getImageData(0,0,n,A);for(let t=0;t<A;t++)for(let e=0;e<n;e++){const i=fe(s.data,e,t,n,0,0),A=fe(s.data,e,t,n,0,1),o=fe(s.data,e,t,n,0,2),c=fe(s.data,e,t,n,0,3);let l=Qe(r,0,i)+Qe(r,1,A)+Qe(r,2,o)+Qe(r,3,c)+Qe(r,4,1),g=Qe(r,5,i)+Qe(r,6,A)+Qe(r,7,o)+Qe(r,8,c)+Qe(r,9,1),h=Qe(r,10,i)+Qe(r,11,A)+Qe(r,12,o)+Qe(r,13,c)+Qe(r,14,1),d=Qe(r,15,i)+Qe(r,16,A)+Qe(r,17,o)+Qe(r,18,c)+Qe(r,19,1);a&&(l=0,g=0,h=0,d*=c/255),Ce(s.data,e,t,n,0,0,l),Ce(s.data,e,t,n,0,1,g),Ce(s.data,e,t,n,0,2,h),Ce(s.data,e,t,n,0,3,d)}t.clearRect(0,0,n,A),t.putImageData(s,0,0)}constructor(t,e,i){super(t,e,i),Ee(this,"type","feColorMatrix"),Ee(this,"matrix",void 0),Ee(this,"includeOpacity",void 0);let n=P(this.getAttribute("values").getString());switch(this.getAttribute("type").getString("matrix")){case"saturate":{const t=n[0];n=[.213+.787*t,.715-.715*t,.072-.072*t,0,0,.213-.213*t,.715+.285*t,.072-.072*t,0,0,.213-.213*t,.715-.715*t,.072+.928*t,0,0,0,0,0,1,0,0,0,0,0,1];break}case"hueRotate":{const t=n[0]*Math.PI/180;n=[ye(t,.213,.787,-.213),ye(t,.715,-.715,-.715),ye(t,.072,-.072,.928),0,0,ye(t,.213,-.213,.143),ye(t,.715,.285,.14),ye(t,.072,-.072,-.283),0,0,ye(t,.213,-.213,-.787),ye(t,.715,-.715,.715),ye(t,.072,.928,.072),0,0,0,0,0,1,0,0,0,0,0,1];break}case"luminanceToAlpha":n=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,.2125,.7154,.0721,0,0,0,0,0,0,1]}this.matrix=n,this.includeOpacity=this.getAttribute("includeOpacity").hasValue()}}function De(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class xe extends vt{apply(t,e){const{document:i}=this;let n=this.getAttribute("x").getPixels("x"),A=this.getAttribute("y").getPixels("y"),a=this.getStyle("width").getPixels("x"),r=this.getStyle("height").getPixels("y");if(!a&&!r){const e=new kt;this.children.forEach((i=>{i instanceof jt&&e.addBoundingBox(i.getBoundingBox(t))})),n=Math.floor(e.x1),A=Math.floor(e.y1),a=Math.floor(e.width),r=Math.floor(e.height)}const s=this.removeStyles(e,xe.ignoreStyles),o=i.createCanvas(n+a,A+r),c=o.getContext("2d");i.screen.setDefaults(c),this.renderChildren(c),new Ie(i,{nodeType:1,childNodes:[],attributes:[{nodeName:"type",value:"luminanceToAlpha"},{nodeName:"includeOpacity",value:"true"}]}).apply(c,0,0,n+a,A+r);const l=i.createCanvas(n+a,A+r),g=l.getContext("2d");i.screen.setDefaults(g),e.render(g),g.globalCompositeOperation="destination-in",g.fillStyle=c.createPattern(o,"no-repeat"),g.fillRect(0,0,n+a,A+r),t.fillStyle=g.createPattern(l,"no-repeat"),t.fillRect(0,0,n+a,A+r),this.restoreStyles(e,s)}render(t){}constructor(...t){super(...t),De(this,"type","mask")}}De(xe,"ignoreStyles",["mask","transform","clip-path"]);const ve=()=>{};function Me(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Se extends vt{apply(t,e,i,n,A){const{document:a,blurRadius:r}=this,s=a.window?a.window.document.body:null,o=t.canvas;o.id=a.getUniqueId(),s&&(o.style.display="none",s.appendChild(o)),(0,p.canvasRGBA)(o,e,i,n,A,r),s&&s.removeChild(o)}constructor(t,e,i){super(t,e,i),Me(this,"type","feGaussianBlur"),Me(this,"extraFilterDistance",void 0),Me(this,"blurRadius",void 0),this.blurRadius=Math.floor(this.getAttribute("stdDeviation").getNumber()),this.extraFilterDistance=this.blurRadius}}function be(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Fe extends vt{apply(t,e){const{document:i,children:n}=this,A="getBoundingBox"in e?e.getBoundingBox(t):null;if(!A)return;let a=0,r=0;n.forEach((t=>{if(!(t instanceof Se))return;const e=t.extraFilterDistance||0;a=Math.max(a,e),r=Math.max(r,e)}));const s=Math.floor(A.width),o=Math.floor(A.height),c=s+2*a,l=o+2*r;if(Number.isNaN(c)||Number.isNaN(l)||c<1||l<1)return;const g=Math.floor(A.x),h=Math.floor(A.y),d=this.removeStyles(e,Fe.ignoreStyles),u=i.createCanvas(c,l),w=u.getContext("2d");i.screen.setDefaults(w),w.translate(-g+a,-h+r),e.render(w),n.forEach((t=>{t instanceof Se&&"function"==typeof t.apply&&t.apply(w,0,0,c,l)})),t.drawImage(u,0,0,c,l,g-a,h-r,c,l),this.restoreStyles(e,d)}render(t){}constructor(...t){super(...t),be(this,"type","filter")}}be(Fe,"ignoreStyles",["filter","transform","clip-path"]);const Pe={svg:Kt,rect:Wt,circle:class extends jt{path(t){const e=this.getAttribute("cx").getPixels("x"),i=this.getAttribute("cy").getPixels("y"),n=this.getAttribute("r").getPixels();return t&&n>0&&(t.beginPath(),t.arc(e,i,n,0,2*Math.PI,!1),t.closePath()),new kt(e-n,i-n,e+n,i+n)}getMarkers(){return null}constructor(...t){var e,i,n;super(...t),n="circle",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},ellipse:class extends jt{path(t){const e=(Math.sqrt(2)-1)/3*4,i=this.getAttribute("rx").getPixels("x"),n=this.getAttribute("ry").getPixels("y"),A=this.getAttribute("cx").getPixels("x"),a=this.getAttribute("cy").getPixels("y");return t&&i>0&&n>0&&(t.beginPath(),t.moveTo(A+i,a),t.bezierCurveTo(A+i,a+e*n,A+e*i,a+n,A,a+n),t.bezierCurveTo(A-e*i,a+n,A-i,a+e*n,A-i,a),t.bezierCurveTo(A-i,a-e*n,A-e*i,a-n,A,a-n),t.bezierCurveTo(A+e*i,a-n,A+i,a-e*n,A+i,a),t.closePath()),new kt(A-i,a-n,A+i,a+n)}getMarkers(){return null}constructor(...t){var e,i,n;super(...t),n="ellipse",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},line:class extends jt{getPoints(){return[new rt(this.getAttribute("x1").getPixels("x"),this.getAttribute("y1").getPixels("y")),new rt(this.getAttribute("x2").getPixels("x"),this.getAttribute("y2").getPixels("y"))]}path(t){const[{x:e,y:i},{x:n,y:A}]=this.getPoints();return t&&(t.beginPath(),t.moveTo(e,i),t.lineTo(n,A)),new kt(e,i,n,A)}getMarkers(){const[t,e]=this.getPoints(),i=t.angleTo(e);return[[t,i],[e,i]]}constructor(...t){var e,i,n;super(...t),n="line",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},polyline:qt,polygon:class extends qt{path(t){const e=super.path(t),[{x:i,y:n}]=this.points;return t&&(t.lineTo(i,n),t.closePath()),e}constructor(...t){var e,i,n;super(...t),n="polygon",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},path:jt,pattern:class extends vt{createPattern(t,e,i){const n=this.getStyle("width").getPixels("x",!0),A=this.getStyle("height").getPixels("y",!0),a=this.getAttribute("data-frame-width"),r=this.getAttribute("data-frame-height"),s=a.hasValue()?a.getPixels("x",!0):n,o=r.hasValue()?r.getPixels("y",!0):A,c=a.hasValue()&&r.hasValue(),l=new Kt(this.document,void 0);l.attributes.viewBox=new et(this.document,"viewBox",this.getAttribute("viewBox").getValue()),l.attributes.width=new et(this.document,"width",`${s}px`),l.attributes.height=new et(this.document,"height",`${o}px`),l.attributes.transform=new et(this.document,"transform",this.getAttribute("patternTransform").getValue()),l.children=this.children;const g=this.document.createCanvas(s,o),h=g.getContext("2d");h.imageSmoothingEnabled=!0,h.imageSmoothingQuality="high";const d=this.getAttribute("x"),u=this.getAttribute("y");d.hasValue()&&u.hasValue()&&h.translate(d.getPixels("x",!0),u.getPixels("y",!0)),i.hasValue()?this.styles["fill-opacity"]=i:Reflect.deleteProperty(this.styles,"fill-opacity");for(let t=-1;t<=1;t++)for(let e=-1;e<=1;e++)h.save(),l.attributes.x=new et(this.document,"x",t*g.width),l.attributes.y=new et(this.document,"y",e*g.height),l.render(h),h.restore();return t.createPattern(g,c?"no-repeat":"repeat")}constructor(...t){var e,i,n;super(...t),n="pattern",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},marker:class extends vt{render(t,e,i){if(!e)return;const{x:n,y:A}=e,a=this.getAttribute("orient").getString("auto"),r=this.getAttribute("markerUnits").getString("strokeWidth");t.translate(n,A),"auto"===a&&i&&t.rotate(i),"strokeWidth"===r&&t.scale(t.lineWidth,t.lineWidth),t.save();const s=new Kt(this.document);s.type=this.type,s.attributes.viewBox=new et(this.document,"viewBox",this.getAttribute("viewBox").getValue()),s.attributes.refX=new et(this.document,"refX",this.getAttribute("refX").getValue()),s.attributes.refY=new et(this.document,"refY",this.getAttribute("refY").getValue()),s.attributes.width=new et(this.document,"width",this.getAttribute("markerWidth").getValue()),s.attributes.height=new et(this.document,"height",this.getAttribute("markerHeight").getValue()),s.attributes.overflow=new et(this.document,"overflow",this.getAttribute("overflow").getValue()),s.attributes.fill=new et(this.document,"fill",this.getAttribute("fill").getColor("black")),s.attributes.stroke=new et(this.document,"stroke",this.getAttribute("stroke").getValue("none")),s.children=this.children,s.render(t),t.restore(),"strokeWidth"===r&&t.scale(1/t.lineWidth,1/t.lineWidth),"auto"===a&&i&&t.rotate(-i),t.translate(-n,-A)}constructor(...t){var e,i,n;super(...t),n="marker",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},defs:class extends vt{render(){}constructor(...t){var e,i,n;super(...t),n="defs",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},linearGradient:class extends _t{getGradient(t,e){const i="objectBoundingBox"===this.getGradientUnits(),n=i?e.getBoundingBox(t):null;if(i||!n)return null;this.getAttribute("x1").hasValue()||this.getAttribute("y1").hasValue()||this.getAttribute("x2").hasValue()||this.getAttribute("y2").hasValue()||(this.getAttribute("x1",!0).setValue(0),this.getAttribute("y1",!0).setValue(0),this.getAttribute("x2",!0).setValue(1),this.getAttribute("y2",!0).setValue(0));const A=i?n.x+n.width*this.getAttribute("x1").getNumber():this.getAttribute("x1").getPixels("x"),a=i?n.y+n.height*this.getAttribute("y1").getNumber():this.getAttribute("y1").getPixels("y"),r=i?n.x+n.width*this.getAttribute("x2").getNumber():this.getAttribute("x2").getPixels("x"),s=i?n.y+n.height*this.getAttribute("y2").getNumber():this.getAttribute("y2").getPixels("y");return A===r&&a===s?null:t.createLinearGradient(A,a,r,s)}constructor(t,e,i){var n,A,a;super(t,e,i),a="linearGradient",(A="type")in(n=this)?Object.defineProperty(n,A,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[A]=a,this.attributesToInherit.push("x1","y1","x2","y2")}},radialGradient:class extends _t{getGradient(t,e){const i="objectBoundingBox"===this.getGradientUnits(),n=e.getBoundingBox(t);if(i&&!n)return null;this.getAttribute("cx").hasValue()||this.getAttribute("cx",!0).setValue("50%"),this.getAttribute("cy").hasValue()||this.getAttribute("cy",!0).setValue("50%"),this.getAttribute("r").hasValue()||this.getAttribute("r",!0).setValue("50%");const A=i?n.x+n.width*this.getAttribute("cx").getNumber():this.getAttribute("cx").getPixels("x"),a=i?n.y+n.height*this.getAttribute("cy").getNumber():this.getAttribute("cy").getPixels("y");let r=A,s=a;this.getAttribute("fx").hasValue()&&(r=i?n.x+n.width*this.getAttribute("fx").getNumber():this.getAttribute("fx").getPixels("x")),this.getAttribute("fy").hasValue()&&(s=i?n.y+n.height*this.getAttribute("fy").getNumber():this.getAttribute("fy").getPixels("y"));const o=i?(n.width+n.height)/2*this.getAttribute("r").getNumber():this.getAttribute("r").getPixels(),c=this.getAttribute("fr").getPixels();return t.createRadialGradient(r,s,c,A,a,o)}constructor(t,e,i){var n,A,a;super(t,e,i),a="radialGradient",(A="type")in(n=this)?Object.defineProperty(n,A,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[A]=a,this.attributesToInherit.push("cx","cy","r","fx","fy","fr")}},stop:class extends vt{constructor(t,e,i){super(t,e,i),te(this,"type","stop"),te(this,"offset",void 0),te(this,"color",void 0);const n=Math.max(0,Math.min(1,this.getAttribute("offset").getNumber())),A=this.getStyle("stop-opacity");let a=this.getStyle("stop-color",!0);""===a.getString()&&a.setValue("#000"),A.hasValue()&&(a=a.addOpacity(A)),this.offset=n,this.color=a.getColor()}},animate:ie,animateColor:class extends ie{calcValue(){const{progress:t,from:e,to:i}=this.getProgress(),n=new(b(w))(e.getColor()),A=new(b(w))(i.getColor());if(n.ok&&A.ok){const e=n.r+(A.r-n.r)*t,i=n.g+(A.g-n.g)*t,a=n.b+(A.b-n.b)*t;return`rgb(${Math.floor(e)}, ${Math.floor(i)}, ${Math.floor(a)})`}return this.getAttribute("from").getColor()}constructor(...t){var e,i,n;super(...t),n="animateColor",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},animateTransform:class extends ie{calcValue(){const{progress:t,from:e,to:i}=this.getProgress(),n=P(e.getString()),A=P(i.getString()),a=n.map(((e,i)=>e+(A[i]-e)*t)).join(" ");return a}constructor(...t){var e,i,n;super(...t),n="animateTransform",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},font:class extends vt{render(){}constructor(t,e,i){super(t,e,i),ce(this,"type","font"),ce(this,"isArabic",!1),ce(this,"missingGlyph",void 0),ce(this,"glyphs",{}),ce(this,"arabicGlyphs",{}),ce(this,"horizAdvX",void 0),ce(this,"isRTL",!1),ce(this,"fontFace",void 0),this.horizAdvX=this.getAttribute("horiz-adv-x").getNumber();const{definitions:n}=t,{children:A}=this;for(const t of A)if(t instanceof Ae){this.fontFace=t;const e=t.getStyle("font-family");e.hasValue()&&(n[e.getString()]=this)}else if(t instanceof oe)this.missingGlyph=t;else if(t instanceof re)if(t.arabicForm){this.isRTL=!0,this.isArabic=!0;const e=this.arabicGlyphs[t.unicode];void 0===e?this.arabicGlyphs[t.unicode]={[t.arabicForm]:t}:e[t.arabicForm]=t}else this.glyphs[t.unicode]=t}},"font-face":Ae,"missing-glyph":oe,glyph:re,text:Ut,tspan:Tt,tref:class extends Ut{getText(){const t=this.getHrefAttribute().getDefinition();if(t){const e=t.children[0];if(e)return e.getText()}return""}constructor(...t){var e,i,n;super(...t),n="tref",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},a:class extends Ut{getText(){return this.text}renderChildren(t){if(this.hasText){super.renderChildren(t);const{document:e,x:i,y:n}=this,{mouse:A}=e.screen,a=new et(e,"fontSize",Yt.parse(e.ctx.font).fontSize);A.isWorking()&&A.checkBoundingBox(this,new kt(i,n-a.getPixels("y"),i+this.measureText(t),n))}else if(this.children.length>0){const e=new Zt(this.document);e.children=this.children,e.parent=this,e.render(t)}}onClick(){const{window:t}=this.document;t&&t.open(this.getHrefAttribute().getString())}onMouseMove(){this.document.ctx.canvas.style.cursor="pointer"}constructor(t,e,i){super(t,e,i),le(this,"type","a"),le(this,"hasText",void 0),le(this,"text",void 0);const{childNodes:n}=e,A=n[0],a=n.length>0&&Array.from(n).every((t=>3===t.nodeType));this.hasText=a,this.text=a?this.getTextFromNode(A):""}},textPath:class extends Ut{getText(){return this.text}path(t){const{dataArray:e}=this;t&&t.beginPath(),e.forEach((e=>{let{type:i,points:n}=e;switch(i){case Lt.LINE_TO:t&&t.lineTo(n[0],n[1]);break;case Lt.MOVE_TO:t&&t.moveTo(n[0],n[1]);break;case Lt.CURVE_TO:t&&t.bezierCurveTo(n[0],n[1],n[2],n[3],n[4],n[5]);break;case Lt.QUAD_TO:t&&t.quadraticCurveTo(n[0],n[1],n[2],n[3]);break;case Lt.ARC:{const[e,i,A,a,r,s,o,c]=n,l=A>a?A:a,g=A>a?1:A/a,h=A>a?a/A:1;t&&(t.translate(e,i),t.rotate(o),t.scale(g,h),t.arc(0,0,l,r,r+s,Boolean(1-c)),t.scale(1/g,1/h),t.rotate(-o),t.translate(-e,-i));break}case Lt.CLOSE_PATH:t&&t.closePath()}}))}renderChildren(t){var e;this.setTextData(t),t.save();const i=null===(e=this.parent)||void 0===e?void 0:e.getStyle("text-decoration").getString(),n=this.getFontSize(),{glyphInfo:A}=this,a=t.fillStyle;"underline"===i&&t.beginPath(),A.forEach(((e,A)=>{const{p0:a,p1:r,rotation:s,text:o}=e;t.save(),t.translate(a.x,a.y),t.rotate(s),t.fillStyle&&t.fillText(o,0,0),t.strokeStyle&&t.strokeText(o,0,0),t.restore(),"underline"===i&&(0===A&&t.moveTo(a.x,a.y+n/8),t.lineTo(r.x,r.y+n/5))})),"underline"===i&&(t.lineWidth=n/20,t.strokeStyle=a,t.stroke(),t.closePath()),t.restore()}getLetterSpacingAt(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.letterSpacingCache[t]||0}findSegmentToFitChar(t,e,i,n,A,a,r,s,o){let c=a,l=this.measureText(t,s);" "===s&&"justify"===e&&i<n&&(l+=(n-i)/A),o>-1&&(c+=this.getLetterSpacingAt(o));const g=this.textHeight/20,h=this.getEquidistantPointOnPath(c,g,0),d=this.getEquidistantPointOnPath(c+l,g,0),u={p0:h,p1:d},w=h&&d?Math.atan2(d.y-h.y,d.x-h.x):0;if(r){const t=Math.cos(Math.PI/2+w)*r,e=Math.cos(-w)*r;u.p0={...h,distance:h.distance||0,x:h.x+t,y:h.y+e},u.p1={...d,distance:d.distance||0,x:d.x+t,y:d.y+e}}return c+=l,{offset:c,segment:u,rotation:w}}measureText(t,e){const{measuresCache:i}=this,n=e||this.getText();if(i.has(n))return i.get(n);const A=this.measureTargetText(t,n);return i.set(n,A),A}setTextData(t){var e,i,n;if(this.glyphInfo)return;const A=this.getText(),a=A.split(""),r=A.split(" ").length-1,s=null===(e=this.parent)||void 0===e?void 0:e.getAttribute("dx").split().map((t=>t.getPixels("x"))),o=null===(i=this.parent)||void 0===i?void 0:i.getAttribute("dy").getPixels("y"),c=this.getAttribute("text-anchor").getString("start"),l=this.getStyle("letter-spacing"),g=null===(n=this.parent)||void 0===n?void 0:n.getStyle("letter-spacing");let h=0;l.hasValue()&&"inherit"!==l.getValue()?l.hasValue()&&"initial"!==l.getValue()&&"unset"!==l.getValue()&&(h=l.getPixels()):h=g.getPixels();const d=[],u=A.length;this.letterSpacingCache=d;for(let t=0;t<u;t++)d.push(void 0!==s[t]?s[t]:h);const w=d.reduce(((t,e,i)=>0===i?0:t+e||0),0),B=this.measureText(t),p=Math.max(B+w,0);this.textWidth=B,this.textHeight=this.getFontSize(),this.glyphInfo=[];const m=this.getPathLength(),E=this.getAttribute("startOffset").getNumber(0)*m;let f=0;"middle"!==c&&"center"!==c||(f=-p/2),"end"!==c&&"right"!==c||(f=-p),f+=E,a.forEach(((e,i)=>{const{offset:n,segment:A,rotation:s}=this.findSegmentToFitChar(t,c,p,m,r,f,o,e,i);f=n,A.p0&&A.p1&&this.glyphInfo.push({text:a[i],p0:A.p0,p1:A.p1,rotation:s})}))}parsePathData(t){if(this.pathLength=-1,!t)return[];const e=[],{pathParser:i}=t;for(i.reset();!i.isEnd();){const{current:t}=i,n=t?t.x:0,A=t?t.y:0,a=i.next();let r=a.type,s=[];switch(a.type){case Lt.MOVE_TO:this.pathM(i,s);break;case Lt.LINE_TO:r=this.pathL(i,s);break;case Lt.HORIZ_LINE_TO:r=this.pathH(i,s);break;case Lt.VERT_LINE_TO:r=this.pathV(i,s);break;case Lt.CURVE_TO:this.pathC(i,s);break;case Lt.SMOOTH_CURVE_TO:r=this.pathS(i,s);break;case Lt.QUAD_TO:this.pathQ(i,s);break;case Lt.SMOOTH_QUAD_TO:r=this.pathT(i,s);break;case Lt.ARC:s=this.pathA(i);break;case Lt.CLOSE_PATH:jt.pathZ(i)}a.type!==Lt.CLOSE_PATH?e.push({type:r,points:s,start:{x:n,y:A},pathLength:this.calcLength(n,A,r,s)}):e.push({type:Lt.CLOSE_PATH,points:[],pathLength:0})}return e}pathM(t,e){const{x:i,y:n}=jt.pathM(t).point;e.push(i,n)}pathL(t,e){const{x:i,y:n}=jt.pathL(t).point;return e.push(i,n),Lt.LINE_TO}pathH(t,e){const{x:i,y:n}=jt.pathH(t).point;return e.push(i,n),Lt.LINE_TO}pathV(t,e){const{x:i,y:n}=jt.pathV(t).point;return e.push(i,n),Lt.LINE_TO}pathC(t,e){const{point:i,controlPoint:n,currentPoint:A}=jt.pathC(t);e.push(i.x,i.y,n.x,n.y,A.x,A.y)}pathS(t,e){const{point:i,controlPoint:n,currentPoint:A}=jt.pathS(t);return e.push(i.x,i.y,n.x,n.y,A.x,A.y),Lt.CURVE_TO}pathQ(t,e){const{controlPoint:i,currentPoint:n}=jt.pathQ(t);e.push(i.x,i.y,n.x,n.y)}pathT(t,e){const{controlPoint:i,currentPoint:n}=jt.pathT(t);return e.push(i.x,i.y,n.x,n.y),Lt.QUAD_TO}pathA(t){let{rX:e,rY:i,sweepFlag:n,xAxisRotation:A,centp:a,a1:r,ad:s}=jt.pathA(t);return 0===n&&s>0&&(s-=2*Math.PI),1===n&&s<0&&(s+=2*Math.PI),[a.x,a.y,e,i,r,s,A,n]}calcLength(t,e,i,n){let A=0,a=null,r=null,s=0;switch(i){case Lt.LINE_TO:return this.getLineLength(t,e,n[0],n[1]);case Lt.CURVE_TO:for(A=0,a=this.getPointOnCubicBezier(0,t,e,n[0],n[1],n[2],n[3],n[4],n[5]),s=.01;s<=1;s+=.01)r=this.getPointOnCubicBezier(s,t,e,n[0],n[1],n[2],n[3],n[4],n[5]),A+=this.getLineLength(a.x,a.y,r.x,r.y),a=r;return A;case Lt.QUAD_TO:for(A=0,a=this.getPointOnQuadraticBezier(0,t,e,n[0],n[1],n[2],n[3]),s=.01;s<=1;s+=.01)r=this.getPointOnQuadraticBezier(s,t,e,n[0],n[1],n[2],n[3]),A+=this.getLineLength(a.x,a.y,r.x,r.y),a=r;return A;case Lt.ARC:{A=0;const t=n[4],e=n[5],i=n[4]+e;let o=Math.PI/180;if(Math.abs(t-i)<o&&(o=Math.abs(t-i)),a=this.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],t,0),e<0)for(s=t-o;s>i;s-=o)r=this.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],s,0),A+=this.getLineLength(a.x,a.y,r.x,r.y),a=r;else for(s=t+o;s<i;s+=o)r=this.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],s,0),A+=this.getLineLength(a.x,a.y,r.x,r.y),a=r;return r=this.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],i,0),A+=this.getLineLength(a.x,a.y,r.x,r.y),A}}return 0}getPointOnLine(t,e,i,n,A){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:e,r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:i;const s=(A-i)/(n-e+L);let o=Math.sqrt(t*t/(1+s*s));n<e&&(o*=-1);let c=s*o,l=null;if(n===e)l={x:a,y:r+c};else if((r-i)/(a-e+L)===s)l={x:a+o,y:r+c};else{let g=0,h=0;const d=this.getLineLength(e,i,n,A);if(d<L)return null;let u=(a-e)*(n-e)+(r-i)*(A-i);u/=d*d,g=e+u*(n-e),h=i+u*(A-i);const w=this.getLineLength(a,r,g,h),B=Math.sqrt(t*t-w*w);o=Math.sqrt(B*B/(1+s*s)),n<e&&(o*=-1),c=s*o,l={x:g+o,y:h+c}}return l}getPointOnPath(t){const e=this.getPathLength();let i=0,n=null;if(t<-5e-5||t-5e-5>e)return null;const{dataArray:A}=this;for(const e of A){if(e&&(e.pathLength<5e-5||i+e.pathLength+5e-5<t)){i+=e.pathLength;continue}const A=t-i;let a=0;switch(e.type){case Lt.LINE_TO:n=this.getPointOnLine(A,e.start.x,e.start.y,e.points[0],e.points[1],e.start.x,e.start.y);break;case Lt.ARC:{const t=e.points[4],i=e.points[5],r=e.points[4]+i;if(a=t+A/e.pathLength*i,i<0&&a<r||i>=0&&a>r)break;n=this.getPointOnEllipticalArc(e.points[0],e.points[1],e.points[2],e.points[3],a,e.points[6]);break}case Lt.CURVE_TO:a=A/e.pathLength,a>1&&(a=1),n=this.getPointOnCubicBezier(a,e.start.x,e.start.y,e.points[0],e.points[1],e.points[2],e.points[3],e.points[4],e.points[5]);break;case Lt.QUAD_TO:a=A/e.pathLength,a>1&&(a=1),n=this.getPointOnQuadraticBezier(a,e.start.x,e.start.y,e.points[0],e.points[1],e.points[2],e.points[3])}if(n)return n;break}return null}getLineLength(t,e,i,n){return Math.sqrt((i-t)*(i-t)+(n-e)*(n-e))}getPathLength(){return-1===this.pathLength&&(this.pathLength=this.dataArray.reduce(((t,e)=>e.pathLength>0?t+e.pathLength:t),0)),this.pathLength}getPointOnCubicBezier(t,e,i,n,A,a,r,s,o){return{x:s*K(t)+a*W(t)+n*X(t)+e*q(t),y:o*K(t)+r*W(t)+A*X(t)+i*q(t)}}getPointOnQuadraticBezier(t,e,i,n,A,a,r){return{x:a*Z(t)+n*$(t)+e*_(t),y:r*Z(t)+A*$(t)+i*_(t)}}getPointOnEllipticalArc(t,e,i,n,A,a){const r=Math.cos(a),s=Math.sin(a),o=i*Math.cos(A),c=n*Math.sin(A);return{x:t+(o*r-c*s),y:e+(o*s+c*r)}}buildEquidistantCache(t,e){const i=this.getPathLength(),n=e||.25,A=t||i/100;if(!this.equidistantCache||this.equidistantCache.step!==A||this.equidistantCache.precision!==n){this.equidistantCache={step:A,precision:n,points:[]};let t=0;for(let e=0;e<=i;e+=n){const i=this.getPointOnPath(e),a=this.getPointOnPath(e+n);i&&a&&(t+=this.getLineLength(i.x,i.y,a.x,a.y),t>=A&&(this.equidistantCache.points.push({x:i.x,y:i.y,distance:e}),t-=A))}}}getEquidistantPointOnPath(t,e,i){if(this.buildEquidistantCache(e,i),t<0||t-this.getPathLength()>5e-5)return null;const n=Math.round(t/this.getPathLength()*(this.equidistantCache.points.length-1));return this.equidistantCache.points[n]||null}constructor(t,e,i){super(t,e,i),ge(this,"type","textPath"),ge(this,"textWidth",0),ge(this,"textHeight",0),ge(this,"pathLength",-1),ge(this,"glyphInfo",null),ge(this,"text",void 0),ge(this,"dataArray",void 0),ge(this,"letterSpacingCache",[]),ge(this,"equidistantCache",null),ge(this,"measuresCache",new Map([["",0]]));const n=this.getHrefAttribute().getDefinition();this.text=this.getTextFromNode(),this.dataArray=this.parsePathData(n)}},image:class extends Rt{async loadImage(t){try{const e=await this.document.createImage(t);this.image=e}catch(e){console.error(`Error while loading image "${t}":`,e)}this.loaded=!0}async loadSvg(t){const e=de.exec(t);if(e){const t=e[5];t&&("base64"===e[4]?this.image=atob(t):this.image=decodeURIComponent(t))}else try{const e=await this.document.fetch(t),i=await e.text();this.image=i}catch(e){console.error(`Error while loading image "${t}":`,e)}this.loaded=!0}renderChildren(t){const{document:e,image:i,loaded:n}=this,A=this.getAttribute("x").getPixels("x"),a=this.getAttribute("y").getPixels("y"),r=this.getStyle("width").getPixels("x"),s=this.getStyle("height").getPixels("y");if(n&&i&&r&&s){if(t.save(),t.translate(A,a),"string"==typeof i){const n=e.pith.forkString(t,i,{ignoreMouse:!0,ignoreAnimation:!0,ignoreDimensions:!0,ignoreClear:!0,offsetX:0,offsetY:0,scaleWidth:r,scaleHeight:s}),{documentElement:A}=n.document;A&&(A.parent=this),n.resize(r,s,this.getAttribute("preserveAspectRatio").getString()),n.render()}else e.setViewBox({ctx:t,aspectRatio:this.getAttribute("preserveAspectRatio").getString(),width:r,desiredWidth:i.width,height:s,desiredHeight:i.height}),this.loaded&&("complete"in i&&!i.complete||t.drawImage(i,0,0));t.restore()}}getBoundingBox(){const t=this.getAttribute("x").getPixels("x"),e=this.getAttribute("y").getPixels("y"),i=this.getStyle("width").getPixels("x"),n=this.getStyle("height").getPixels("y");return new kt(t,e,t+i,e+n)}constructor(t,e,i){super(t,e,i),he(this,"type","image"),he(this,"loaded",!1),he(this,"image",void 0);const n=this.getHrefAttribute().getString();if(!n)return;const A=n.endsWith(".svg")||/^\s*data:image\/svg\+xml/i.test(n);t.images.push(this),A?this.loadSvg(n):this.loadImage(n)}},g:Zt,symbol:class extends Rt{render(t){}constructor(...t){var e,i,n;super(...t),n="symbol",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},style:pe,use:class extends Rt{setContext(t){super.setContext(t);const e=this.getAttribute("x"),i=this.getAttribute("y");e.hasValue()&&t.translate(e.getPixels("x"),0),i.hasValue()&&t.translate(0,i.getPixels("y"))}path(t){const{element:e}=this;e&&e.path(t)}renderChildren(t){const{document:e,element:i}=this;if(i){let n=i;if("symbol"===i.type&&(n=new Kt(e),n.attributes.viewBox=new et(e,"viewBox",i.getAttribute("viewBox").getString()),n.attributes.preserveAspectRatio=new et(e,"preserveAspectRatio",i.getAttribute("preserveAspectRatio").getString()),n.attributes.overflow=new et(e,"overflow",i.getAttribute("overflow").getString()),n.children=i.children,i.styles.opacity=new et(e,"opacity",this.calculateOpacity())),"svg"===n.type){const t=this.getStyle("width",!1,!0),i=this.getStyle("height",!1,!0);t.hasValue()&&(n.attributes.width=new et(e,"width",t.getString())),i.hasValue()&&(n.attributes.height=new et(e,"height",i.getString()))}const A=n.parent;n.parent=this,n.render(t),n.parent=A}}getBoundingBox(t){const{element:e}=this;return e?e.getBoundingBox(t):null}elementTransform(){const{document:t,element:e}=this;return e?Dt.fromElement(t,e):null}get element(){return this.cachedElement||(this.cachedElement=this.getHrefAttribute().getDefinition()),this.cachedElement}constructor(...t){super(...t),me(this,"type","use"),me(this,"cachedElement",void 0)}},mask:xe,clipPath:class extends vt{apply(t){const{document:e}=this,i=Reflect.getPrototypeOf(t),{beginPath:n,closePath:A}=t;i&&(i.beginPath=ve,i.closePath=ve),Reflect.apply(n,t,[]),this.children.forEach((n=>{if(!("path"in n))return;let a="elementTransform"in n?n.elementTransform():null;a||(a=Dt.fromElement(e,n)),a&&a.apply(t),n.path(t),i&&(i.closePath=A),a&&a.unapply(t)})),Reflect.apply(A,t,[]),t.clip(),i&&(i.beginPath=n,i.closePath=A)}render(t){}constructor(...t){var e,i,n;super(...t),n="clipPath",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},filter:Fe,feDropShadow:class extends vt{apply(t,e,i,n,A){}constructor(t,e,i){var n,A,a;super(t,e,i),a="feDropShadow",(A="type")in(n=this)?Object.defineProperty(n,A,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[A]=a,this.addStylesFromStyleDefinition()}},feMorphology:class extends vt{apply(t,e,i,n,A){}constructor(...t){var e,i,n;super(...t),n="feMorphology",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},feComposite:class extends vt{apply(t,e,i,n,A){}constructor(...t){var e,i,n;super(...t),n="feComposite",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},feColorMatrix:Ie,feGaussianBlur:Se,title:class extends vt{constructor(...t){var e,i,n;super(...t),n="title",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},desc:class extends vt{constructor(...t){var e,i,n;super(...t),n="desc",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}}};function Ye(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Ne{bindCreateImage(t,e){return"boolean"==typeof e?(i,n)=>t(i,"boolean"==typeof n?n:e):t}get window(){return this.screen.window}get fetch(){return this.screen.fetch}get ctx(){return this.screen.ctx}get emSize(){const{emSizeStack:t}=this;return t[t.length-1]||12}set emSize(t){const{emSizeStack:e}=this;e.push(t)}popEmSize(){const{emSizeStack:t}=this;t.pop()}getUniqueId(){return"pith"+ ++this.uniqueId}isImagesLoaded(){return this.images.every((t=>t.loaded))}isFontsLoaded(){return this.fonts.every((t=>t.loaded))}createDocumentElement(t){const e=this.createElement(t.documentElement);return e.root=!0,e.addStylesFromStyleDefinition(),this.documentElement=e,e}createElement(t){const e=t.nodeName.replace(/^[^:]+:/,""),i=Ne.elementTypes[e];return i?new i(this,t):new Mt(this,t)}createTextNode(t){return new Ot(this,t)}setViewBox(t){this.screen.setViewBox({document:this,...t})}constructor(t,{rootEmSize:e=12,emSize:i=12,createCanvas:n=Ne.createCanvas,createImage:A=Ne.createImage,anonymousCrossOrigin:a}={}){Ye(this,"pith",void 0),Ye(this,"rootEmSize",void 0),Ye(this,"documentElement",void 0),Ye(this,"screen",void 0),Ye(this,"createCanvas",void 0),Ye(this,"createImage",void 0),Ye(this,"definitions",void 0),Ye(this,"styles",void 0),Ye(this,"stylesSpecificity",void 0),Ye(this,"images",void 0),Ye(this,"fonts",void 0),Ye(this,"emSizeStack",void 0),Ye(this,"uniqueId",void 0),this.pith=t,this.definitions={},this.styles={},this.stylesSpecificity={},this.images=[],this.fonts=[],this.emSizeStack=[],this.uniqueId=0,this.screen=t.screen,this.rootEmSize=e,this.emSize=i,this.createCanvas=n,this.createImage=this.bindCreateImage(A,a),this.screen.wait((()=>this.isImagesLoaded())),this.screen.wait((()=>this.isFontsLoaded()))}}function ke(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}Ye(Ne,"createCanvas",(function(t,e){const i=document.createElement("canvas");return i.width=t,i.height=e,i})),Ye(Ne,"createImage",(async function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=document.createElement("img");return e&&(i.crossOrigin="Anonymous"),new Promise(((e,n)=>{i.onload=()=>{e(i)},i.onerror=(t,e,i,A,a)=>{n(a)},i.src=t}))})),Ye(Ne,"elementTypes",Pe);class Re{static async from(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const n=new Bt(i),A=await n.parse(e);return new Re(t,A,i)}static fromString(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const n=new Bt(i).parseFromString(e);return new Re(t,n,i)}fork(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return Re.from(t,e,{...this.options,...i})}forkString(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return Re.fromString(t,e,{...this.options,...i})}ready(){return this.screen.ready()}isReady(){return this.screen.isReady()}async render(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.start({enableRedraw:!0,ignoreAnimation:!0,ignoreMouse:!0,...t}),await this.ready(),this.stop()}start(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{documentElement:e,screen:i,options:n}=this;i.start(e,{enableRedraw:!0,...n,...t})}stop(){this.screen.stop()}resize(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.documentElement.resize(t,e,i)}constructor(t,e,i={}){ke(this,"parser",void 0),ke(this,"screen",void 0),ke(this,"document",void 0),ke(this,"documentElement",void 0),ke(this,"options",void 0),this.parser=new Bt(i),this.screen=new ht(t,i),this.options=i;const n=new Ne(this,i),A=n.createDocumentElement(e);this.document=n,this.documentElement=A}}function He(t,e,i,n){Object.defineProperty(t,e,{get:i,set:n,enumerable:!0,configurable:!0})}var Ue="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==S?S:{},Ge={};He(Ge,"CanvasCommand",(()=>$n)),He(Ge,"UpdateWorkflowStateCommand",(()=>_n)),He(Ge,"MoveCommand",(()=>tA)),He(Ge,"RotateCommand",(()=>eA)),He(Ge,"ResizeCommand",(()=>iA)),He(Ge,"GroupCommand",(()=>nA)),He(Ge,"CreateLayoutCommand",(()=>AA)),He(Ge,"ClearLayoutCommand",(()=>aA)),He(Ge,"CreateElementCommand",(()=>rA)),He(Ge,"DeleteElementCommand",(()=>sA)),He(Ge,"CloneElementCommand",(()=>oA)),He(Ge,"FontColorCommand",(()=>cA)),He(Ge,"FontImageFillCommand",(()=>lA)),He(Ge,"FontSizeCommand",(()=>gA)),He(Ge,"FontAlgorithmCommand",(()=>hA)),He(Ge,"FontSourceCommand",(()=>dA)),He(Ge,"FontAlignmentCommand",(()=>uA)),He(Ge,"UpdateFramePattern",(()=>wA)),He(Ge,"TextChangeCommand",(()=>BA)),He(Ge,"IllustrationColorCommand",(()=>pA)),He(Ge,"IllustrationCacheCommand",(()=>mA)),He(Ge,"BringToFrontCommand",(()=>EA)),He(Ge,"BringToBackCommand",(()=>fA)),He(Ge,"BringForwardCommand",(()=>CA)),He(Ge,"SendBackwardsCommand",(()=>QA)),He(Ge,"LayerCommand",(()=>yA)),He({},"generate",(()=>Te));const Te=()=>{const t=()=>Math.floor(65536*(1+Math.random())).toString(16).substring(1);return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()};var Oe={};He(Oe,"ElementNotFoundError",(()=>Kn)),He(Oe,"findElement",(()=>Wn)),He(Oe,"findLayoutForElement",(()=>Xn)),He(Oe,"updatedLayoutForElement",(()=>qn)),He(Oe,"rehydrateSerializedLayout",(()=>Zn));var Je={};He(Je,"CommandContext",(()=>Ln)),He(Je,"getSvgElement",(()=>jn)),He(Je,"elementFactory",(()=>zn)),He(Je,"sortElementsByLayersWithIndex",(()=>Vn)),He({},"SVGLayout",(()=>gi));var Le={};let ze;var je;let Ve;var Ke;let We;var Xe;let qe;var Ze;let $e;var _e;let ti,ei;var ii;let ni;var Ai;let ai;var ri;let si;var oi;let ci;var li;He(Le,"LayoutElementType",(()=>ze)),He(Le,"LayoutRenderingPurpose",(()=>Ve)),He(Le,"TextAlgorithm",(()=>We)),He(Le,"UnitOfMeasurement",(()=>qe)),He(Le,"ScaleAxis",(()=>$e)),He(Le,"AspectConditionAction",(()=>ti)),He(Le,"AspectType",(()=>ei)),He(Le,"MaterialEffectMode",(()=>ni)),He(Le,"AssetType",(()=>ai)),He(Le,"StepType",(()=>si)),He(Le,"StepAspectType",(()=>ci)),(je=ze||(ze={})).Frame="frame",je.Image="image",je.Illustration="illustration",je.Textbox="textbox",(Ke=Ve||(Ve={})).ThreeD="ThreeD",Ke.FreeDesign="FreeDesign",Ke.Print="Print",(Xe=We||(We={})).Autosize="Autosize",Xe.Traditional="Traditional",(Ze=qe||(qe={})).Pixel="px",Ze.Millimeter="mm",Ze.Centimeter="cm",(_e=$e||($e={}))[_e.North=0]="North",_e[_e.Northeast=1]="Northeast",_e[_e.East=2]="East",_e[_e.Southeast=3]="Southeast",_e[_e.South=4]="South",_e[_e.Southwest=5]="Southwest",_e[_e.West=6]="West",_e[_e.Northwest=7]="Northwest",(ti||(ti={})).Show="Show",(ii=ei||(ei={})).FileUpload="FileUpload",ii.Option="Option",ii.Text="Text",(Ai=ni||(ni={})).None="None",Ai.RemoveWhenSelected="RemoveWhenSelected",Ai.ApplyWhenSelected="ApplyWhenSelected",(ri=ai||(ai={})).Font="Font",ri.Frame="Frame",ri.Illustration="Illustration",ri.Image="Image",ri.Model="Model",ri.Material="Material",ri.Color="Color",ri.QuestionnaireCollateral="QuestionnaireCollateral",ri.RequestCollateral="RequestCollateral",ri.SignupCollateral="SignupCollateral",ri.Video="Video",ri.ColorProfile="ColorProfile",(oi=si||(si={})).Information="Information",oi.Bulk="Bulk",oi.DigitalContent="DigitalContent",oi.Finish="Finish",oi.Frame="Frame",oi.Illustration="Illustration",oi.Introduction="Introduction",oi.Material="Material",oi.Model="Model",oi.Module="Module",oi.Picture="Picture",oi.Photo="Photo",oi.ProductOverlay="ProductOverlay",oi.Question="Question",oi.Shape="Shape",oi.SilentIllustration="SilentIllustration",oi.Text="Text",(li=ci||(ci={})).Color="Color",li.Colors="Colors",li.Selection="Selection",li.Selections="Selections",li.Text="Text",li.Upload="Upload";const gi=({backgroundColor:t,outlineColor:e,borderRadius:n,configuration:A,elements:a,height:r,maxHeight:s,maxWidth:o,outlineArea:c,position:l,preserveAspectRatio:g,viewBox:h,width:d})=>{const u=n||0,w=2*(c?.scale||1),B=h||{x:0,y:0,width:d,height:r},p=`${B.x} ${B.y} ${B.width} ${B.height}`,m=Te(),E=A.purpose===Ve.FreeDesign&&(0,i.jsx)("defs",{children:(0,i.jsx)("clipPath",{id:"viewboxClip",children:(0,i.jsx)("rect",{width:B.width,height:B.height,rx:u})})}),f=A.colorProfiles?.map(((t,e)=>(0,i.jsx)("color-profile",{name:t.name,xlinkHref:t.key,children:" "},e))),C=Vn(a.map((t=>({...t,_renderingConfiguration:A,mask:c?`url(#viewmask-${m})`:void 0}))));return(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",xmlSpace:"preserve",version:"1.1",preserveAspectRatio:g,width:d,height:r,style:{gridColumn:1,gridRow:1,maxWidth:o,maxHeight:s,position:l},viewBox:p,children:[f,E,!!t&&(0,i.jsx)("rect",{id:"layout-background",width:B.width,height:B.height,fill:t,rx:u}),(0,i.jsx)("g",{id:"element-group",clipPath:A.purpose===Ve.FreeDesign?"url(#viewboxClip)":void 0,children:C.map((t=>zn(t))).filter((t=>!!t))}),c&&(0,i.jsx)("rect",{x:c.x,y:c.y,width:c.width,height:c.height,fill:"none",stroke:c.hidden?"none":e||"#aaaaaa",strokeWidth:w/2,strokeDasharray:`${2*w} ${w}`}),c&&(0,i.jsxs)("mask",{id:`viewmask-${m}`,children:[(0,i.jsx)("rect",{x:B.x,y:B.y,width:B.width,height:B.height,fill:"black"}),(0,i.jsx)("rect",{x:c.x,y:c.y,width:c.width,height:c.height,fill:"white"})]})]})};He({},"Image",(()=>bi));var hi={};He(hi,"getAxisAlignedBoundingBox",(()=>di)),He(hi,"degreesToRadians",(()=>wi)),He(hi,"findAngle",(()=>ui)),He(hi,"radiansToDegrees",(()=>Bi)),He(hi,"isCloseToValue",(()=>pi)),He(hi,"getTrueCoordinates",(()=>mi)),He(hi,"getPointOfRotation",(()=>Ei)),He(hi,"getNWPoint",(()=>fi)),He(hi,"getNEPoint",(()=>Ci)),He(hi,"getSWPoint",(()=>Qi)),He(hi,"getSEPoint",(()=>yi)),He(hi,"turnRightClockwise",(()=>Ii)),He(hi,"currentDirection",(()=>Di)),He(hi,"getElementVertices",(()=>xi)),He(hi,"rotateAroundPoint",(()=>vi)),He(hi,"mmPerPixel",(()=>Mi)),He(hi,"cmPerPixel",(()=>Si));const di=(t,e,i,n,A)=>{const a=wi(A),r=i/2,s=n/2,o=t+r,c=e+s,l=Math.sin(a),g=Math.cos(a),h=-s,d=r*g-h*l,u=r*g-s*l,w=r*l+h*g,B=r*l+s*g,p=Math.max(Math.abs(d),Math.abs(u)),m=Math.max(Math.abs(w),Math.abs(B));return{minX:o-p,maxX:o+p,minY:c-m,maxY:c+m}},ui=(t,e,i)=>{const n=Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)),A=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2)),a=Math.sqrt(Math.pow(i.x-t.x,2)+Math.pow(i.y-t.y,2));return Math.acos((A*A+n*n-a*a)/(2*A*n))*(180/Math.PI)},wi=t=>t*(Math.PI/180),Bi=t=>t*(180/Math.PI),pi=(t,e,i)=>Math.abs(t-e)<i,mi=(t,e,i)=>{const n=Math.sin(wi(i)),A=Math.cos(wi(i));return{x:(t.x-e.x)*A-(t.y-e.y)*n+e.x,y:(t.x-e.x)*n+(t.y-e.y)*A+e.y}},Ei=(t,e)=>({x:(t.x+e.x)/2,y:(t.y+e.y)/2}),fi=(t,e,i,n)=>({x:t.x+e?.x*i,y:t.y+e?.y*n}),Ci=(t,e,i,n)=>({x:t.x+(e?.x+e?.width)*i,y:t.y+e?.y*n}),Qi=(t,e,i,n)=>({x:t.x+e?.x*i,y:t.y+(e?.y+e?.height)*n}),yi=(t,e,i,n)=>({x:t.x+(e?.x+e?.width)*i,y:t.y+(e?.y+e?.height)*n}),Ii=t=>{switch(t){case $e.North:return $e.East;case $e.East:return $e.South;case $e.South:return $e.West;case $e.West:return $e.North;case $e.Northwest:return $e.Northeast;case $e.Northeast:return $e.Southeast;case $e.Southeast:return $e.Southwest;case $e.Southwest:return $e.Northwest}},Di=(t,e)=>e>45&&e<=135?Ii(t):e>135&&e<=225?Ii(Ii(t)):e>225&&e<=315?Ii(Ii(Ii(t))):t,xi=(t,e={x:0,y:0},i={x:1,y:1})=>{const n=wi(t.rotation),A={x:e.x+t.x*i.x,y:e.x+t.y*i.y},a={x:t.x+t.width,y:t.y},r={x:e.x+(t.x+t.width)*i.x,y:e.y+(t.height+t.y)*i.y},s={x:e.x+t.x*i.x,y:e.y+(t.height+t.y)*i.y},o={x:(s.x+r.x)/2,y:s.y-t.height*i.y/2};return{a:vi(A,o,n),b:vi(a,o,n),c:vi(r,o,n),d:vi(s,o,n),center:o}},vi=(t,e,i)=>{const n=Math.sin(i),A=Math.cos(i);return{x:(t.x-e.x)*A-(t.y-e.y)*n+e.x,y:(t.x-e.x)*n+(t.y-e.y)*A+e.y}},Mi=.352778,Si=.035277,bi=t=>{const e=t.rotation||0,n=wi(e),A=Math.cos(n),a=-Math.sin(n);return(0,i.jsx)("g",{mask:t.stepName||t.productOverlay?void 0:t.mask,children:(0,i.jsx)("g",{transform:`\n matrix(1, 0, 0, 1, ${t.x}, ${t.y})\n matrix(1, 0, 0, 1, ${t.width/2}, ${t.height/2})\n matrix(${A}, ${-a}, ${a}, ${A}, 0, 0)\n matrix(1, 0, 0, 1, ${-t.width/2}, ${-t.height/2})\n `,children:(0,i.jsx)("image",{xlinkHref:t.src,preserveAspectRatio:t.preserveAspectRatio,width:t.width,height:t.height})})})};He({},"Frame",(()=>Pi));const Fi=256,Pi=t=>{const e=`spiff-frame-${t.id}`,A=`spiff-frame-blur-${t.id}`,a=`spiff-frame-blur-edge-${t.id}`,r=`spiff-frame-focal-mask-${t.id}`,s=()=>t.disablePlaceholder&&!t.pattern?"":t.pattern?t.pattern.src:"data:image/png;base64,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";if(!s())return(0,i.jsx)(b(n).Fragment,{});const o=!!t.focalBlur&&!!t.pattern,c=t.rotation||0,l=wi(c),g=Math.cos(l),h=-Math.sin(l);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("defs",{children:(n=>{const o=t.pattern?.x||0,c=t.pattern?.y||0,l=t.pattern?t.pattern.width*t.pattern.scaleX+Math.abs(o):0,g=t.pattern?t.pattern.height*t.pattern.scaleY+Math.abs(c):0,h=t.dataWidth||l||Fi,d=t.dataHeight||g||256,u=t.pattern?t.pattern.width*t.pattern.scaleX:Fi,w=t.pattern?t.pattern.height*t.pattern.scaleY:256;return(0,i.jsxs)("g",{mask:t.stepName?void 0:t.mask,children:[(0,i.jsx)("pattern",{patternUnits:t.pattern?void 0:"userSpaceOnUse",x:0,y:0,width:t.pattern?1:Fi,height:t.pattern?1:Fi,"data-frame-width":t.pattern?h:void 0,"data-frame-height":t.pattern?d:void 0,id:e,children:(0,i.jsx)("image",{preserveAspectRatio:"none",x:o,y:c,width:u,height:w,xlinkHref:s()})}),n?(0,i.jsx)(Yi,{path:t.path,width:t.width,height:t.height,focalBlurStrength:t.focalBlurStrength||1,focalBlurRadius:t.focalBlurRadius||10,blurFilterId:A,focalMaskId:r,blurEdgeClipId:a}):null]})})(o)}),(0,i.jsx)("g",{mask:t.stepName?void 0:t.mask,children:(0,i.jsxs)("g",{transform:`\n matrix(1, 0, 0, 1, ${t.x}, ${t.y})\n matrix(1, 0, 0, 1, ${t.width/2}, ${t.height/2})\n matrix(${g}, ${-h}, ${h}, ${g}, 0, 0)\n matrix(1, 0, 0, 1, ${-t.width/2}, ${-t.height/2})\n matrix(${t.scaleX}, 0, 0, ${t.scaleY}, 0, 0)\n `,children:[(0,i.jsx)("path",{filter:o?`url(#${A})`:void 0,mask:o?`url(#${a})`:void 0,d:t.path,style:{fill:`url(#${e})`,opacity:t.opacity}}),o?(0,i.jsx)("path",{mask:`url(#${r})`,d:t.path,style:{fill:`url(#${e})`,opacity:t.opacity}}):void 0]})})]})},Yi=t=>{const{path:e,width:n,height:A,focalBlurStrength:a,focalBlurRadius:r,blurFilterId:s,focalMaskId:o,blurEdgeClipId:c}=t;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("filter",{id:s,children:(0,i.jsx)("feGaussianBlur",{stdDeviation:a||0})}),(0,i.jsx)("mask",{id:o,children:(0,i.jsx)("circle",{cx:n/2,cy:A/2,r:r||0,fill:"white",filter:`url(#${s})`})}),(0,i.jsx)("mask",{id:c,children:(0,i.jsx)("path",{d:e,style:{fill:"white",opacity:1}})})]})};He({},"Textbox",(()=>Yn));var Ni={};He(Ni,"fontSizeStep",(()=>mn)),He(Ni,"textWidth",(()=>En)),He(Ni,"charWidth",(()=>fn)),He(Ni,"lineWidth",(()=>Cn)),He(Ni,"applyTextTransformations",(()=>yn)),He(Ni,"zip",(()=>In)),He(Ni,"getTextAlignment",(()=>Dn)),He(Ni,"getAnchor",(()=>xn)),He(Ni,"recomputeTextOnElement",(()=>vn)),He(Ni,"defaultLineHeightFactor",(()=>Mn));var ki={};He(ki,"refitTextbox",(()=>Bn)),He(ki,"recalculateTextboxRegion",(()=>pn));var Ri={};He(Ri,"FontMetrics",(()=>sn)),He(Ri,"loadFontFromExternalUrl",(()=>on)),He(Ri,"getFontMetrics",(()=>ln)),He(Ri,"loadFontFromDataUrl",(()=>cn));var Hi={};He(Hi,"registerJSDOM",(()=>Oi)),He(Hi,"createElement",(()=>ji)),He(Hi,"createElementNS",(()=>Vi)),He(Hi,"domParser",(()=>Ki)),He(Hi,"fetchAsArrayBuffer",(()=>Wi)),He(Hi,"fetchAsString",(()=>Xi)),He(Hi,"loadFontFaceSet",(()=>qi)),He(Hi,"xmlSerializer",(()=>Zi)),He(Hi,"toBase64",(()=>$i)),He(Hi,"dataUrlFromExternalUrl",(()=>_i)),He(Hi,"arrayBufferToDataUrl",(()=>tn)),He(Hi,"arrayBufferToBuffer",(()=>nn)),He(Hi,"dataUrlToArrayBuffer",(()=>en));var Ui=a.Buffer;let Gi;const Ti=new Map;function Oi(t){Gi=t}function Ji(){if(!Gi)throw new Error("JSDOM is not registered. Please register it before calling this function.");return new Gi}if(void 0===Ue.TextEncoder){const{TextEncoder:t}=c;Ue.TextEncoder=t}if(void 0===Ue.TextDecoder){const{TextDecoder:t}=c;Ue.TextDecoder=t}const Li=new(b(s).Agent)({rejectUnauthorized:!("local"===Ue.process?.env?.ENVIRONMENT)}),zi=t=>t.every((t=>"undefined"!==t)),ji=t=>zi([typeof document])?document.createElement(t):Ji().window.document.createElement(t),Vi=(t,e)=>{if(zi([typeof document]))return document.createElementNS(t,e);const i=Ji().window.document.createElement(e);return i.setAttribute("xmlns",t),i},Ki=()=>zi([typeof DOMParser])?new DOMParser:new(Ji().window.DOMParser),Wi=t=>{if(zi([typeof fetch]))return new Promise(((e,i)=>{fetch(t).then((t=>{e(t.arrayBuffer())})).catch((t=>{i(t)}))}));{const e=t.replace("localhost","localstack");return new Promise(((t,i)=>{b(r).get(e,{responseType:"arraybuffer",httpsAgent:Li}).then((e=>{t(e.data)})).catch((t=>{i(t)}))}))}},Xi=t=>{if(zi([typeof fetch]))return new Promise(((e,i)=>{fetch(t).then((t=>{e(t.text())})).catch(i)}));{const e=t.replace("localhost","localstack");return new Promise(((t,i)=>{b(r).get(e,{responseType:"text",httpsAgent:Li}).then((e=>{t(e.data)})).catch(i)}))}},qi=async(t,e)=>{if(zi([typeof FontFace])){const i=t.names.fullName.en,n=new FontFace(i,`url(${e})`);return document.fonts.add(n),n.load()}},Zi=()=>zi([typeof XMLSerializer])?new XMLSerializer:new(Ji().window.XMLSerializer),$i=t=>zi([typeof btoa])?btoa(t):Ui.from(t).toString("base64"),_i=async t=>{if(zi([typeof fetch,typeof Blob,typeof FileReader])){const e=await(async t=>{const e=Ti.get(t);if(e)return e;const i=(await fetch(t)).blob();return Ti.set(t,i),i})(t);return await an(e)}const e=(await b(r).get(t,{responseType:"arraybuffer"})).data;return tn(e)},tn=async t=>{const e=await(async t=>{const e=await(0,o.fromBuffer)(t);return e?e.mime:"image/svg+xml"})(t);return`data:${e};base64,${nn(t).toString("base64")}`},en=t=>{const e=t.replace(/\r?\n/g,""),i=e.indexOf(",");if(-1===i||i<=4)throw new TypeError("malformed data: URI");const n=e.substring(5,i).split(";");let A=!1;for(let t=1;t<n.length;t++)"base64"===n[t]&&(A=!0);const a=A?"base64":"ascii",r=unescape(e.substring(i+1)),s=Ui.from(r,a);return An(s)},nn=t=>Ui.from(t),An=t=>{const e=new ArrayBuffer(t.byteLength),i=new Uint8Array(e);for(let e=0;e<t.length;++e)i[e]=t[e];return e},an=t=>new Promise(((e,i)=>{const n=new FileReader;n.onload=function(t){const n=t.target;n&&n.result?e(n.result.toString()):i()},n.readAsDataURL(t)})),rn=new Map;class sn{constructor(t){this.font=t,this.glyphsFromText=new Map,this.kerningValues=new Map,this.height=this.calculateApproximateHeight()}getFont(){return this.font}getGlyphs(t){const e=this.glyphsFromText.get(t);if(e)return e;const i=this.font.stringToGlyphs(t);return this.glyphsFromText.set(t,i),i}getApproximateHeight(){return this.height}getExactHeight(t){const e=this.font.stringToGlyphs(t);let i=0,n=0;return e.forEach((t=>{const e=t.getMetrics();i=Math.max(i,e.yMax),n=Math.min(n,e.yMin)})),i-n}getKerningValue(t,e){let i=this.kerningValues.get(t.name);i||(i=new Map,this.kerningValues.set(t.name,i));let n=i.get(e.name);return n||(n=this.font.getKerningValue(t,e),i.set(e.name,n)),n}calculateApproximateHeight(){const t=this.font.stringToGlyphs("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");let e=0,i=0;return t.forEach((t=>{const n=t.getMetrics();e=Math.max(e,n.yMax),i=Math.min(i,n.yMin)})),e-i}}const on=async t=>{try{return ln(t).getFont()}catch{const e="data:"===t.substring(0,5).toLowerCase().trim()?cn(t):cn(await _i(t));return gn(t,e),await qi(e,t),e}},cn=t=>{try{return ln(t).getFont()}catch{const e=en(t),i=b(A).parse(e);return gn(t,i),i}},ln=t=>{const e=rn.get(t);if(e)return e;throw new Error("Font metrics unavailable for font")},gn=(t,e)=>{const i=new sn(e);return rn.set(t,i),i},hn=(t,e,i,n)=>Math.max(fn(t.join("\n"),i,n),e),dn=(t,e,i,n,A,a)=>{const r=(a||Mn)*A.getApproximateHeight(),s=e.split("\n");try{const e=s.flatMap((e=>un(e,t.width,n,A))),a=e.flatMap((t=>t.lines));return{lines:a,requiredHeight:e.flatMap((t=>t.lines)).length*(n*r),fontSize:i,requiredWidth:hn(a,t.width,n,A)}}catch(a){const s=e.split("");return{lines:s,requiredHeight:s.length*(n*r),fontSize:i,requiredWidth:hn(s,t.width,n,A)}}},un=(t,e,i,n)=>{const A=En(t,i,n);if(A<=e)return{lines:[t],width:A};if(!(t.indexOf(" ")>-1)){if(t.length<=1)throw new Error(`Character ${t} is wider than region`);const A=Math.floor(t.length/2),a=un(t.slice(0,A),e,i,n),r=un(t.slice(A),e,i,n);return{lines:[...a.lines,...r.lines],width:Math.max(a.width,r.width)}}const a=t.split(" "),r=[];let s=-1/0,o=0;for(;o<a.length;){const t=a[o];if(En(t,i,n)>e){const A=un(t,e,i,n);r.push(...A.lines),s=Math.max(s,A.width),o++}else{const A=[t];s=Math.max(s,En(t,i,n));let c=o+1,l=!0;for(;c<a.length&&l;){const t=a[c],r=En(`${A.join(" ")} ${t}`,i,n);r<=e?(A.push(t),s=Math.max(s,r),c++):l=!1}r.push(A.join(" ")),o=c}}if(s<0)throw new Error(`No max width calculated for text: ${r}.`);return{lines:r,width:s}},wn=(t,e,i,n,A,a)=>{const r=(a??Mn)*e.getApproximateHeight(),s=1/i.unitsPerEm,o=n/Cn(t,s,e),c=A/(t.length*r*s);return Math.min(c,o)},Bn=(t,e,i,n)=>{const A=ln(e.fontData.assetUrl),a=A.getFont(),r=e.fontSize/a.unitsPerEm;if(!i)return dn(e,t,e.fontSize,r,A,n);let s;if(s=e.text?e.text.split("\n"):e.input?.split("\n")??[""],i.input===t&&e.width===i.width&&e.height===i.height&&e.lineHeight===i.lineHeight)return{lines:s,requiredHeight:e.height,requiredWidth:hn(s,e.width,r,A),fontSize:e.fontSize};const o=e.width!==i.width!=(e.height!==i.height);return e.lineHeight!==i.lineHeight||o||i.input!==t?dn(e,t,e.fontSize,r,A,n):{lines:s,requiredHeight:e.height,requiredWidth:hn(s,e.width,r,A),fontSize:wn(s,A,a,e.width,e.height,n)}},pn=(t,e,i,n,A)=>{const a=ln(e.assetUrl).getFont();let r={...t},s={...t},o=Cn(n,i/a.unitsPerEm,ln(e.assetUrl));return o&&o<r.width&&(s.width=o,"left"===A?(s.left+=Math.sin(r.rotation*Math.PI/360)*(r.width-o),s.top+=Math.sin(r.rotation*Math.PI/180)*(o-r.width)/2):s.left+="right"===A?r.width-o:(r.width-o)/2,n&&In(n,n).every((([t,e])=>t===e))&&(r=s)),r},mn=1,En=(t,e,i)=>{let n=0;const A=i.getGlyphs(t);return A.forEach(((t,e)=>{if(t.advanceWidth&&(n+=t.advanceWidth),e<A.length-1){const a=i.getKerningValue(t,A[e+1]);n+=a}})),n*=e,n},fn=(t,e,i)=>{let n=0;const A=i.getGlyphs(t);return A.forEach(((t,e)=>{if(t.advanceWidth&&(n=Math.max(n,t.advanceWidth)),e<A.length-1){const a=i.getKerningValue(t,A[e+1]);n=Math.max(n,a)}})),n*=e,n},Cn=(t,e,i)=>{let n=0;return t.forEach((t=>{n=Math.max(n,En(t,e,i))})),n},Qn={stripControlCharacters:!0,vertical:!1,uppercase:!1},yn=(t,e=Qn)=>{const i={...Qn,...e};let n=t||"";return i.stripControlCharacters&&(n=n.replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,"")),i.uppercase&&(n=n.toUpperCase()),i.vertical&&(n=n.split("").join("\n")),n},In=(t,e)=>t.map(((t,i)=>[t,e[i]])),Dn=(t="center",e=!1)=>e?"center":t,xn=t=>"left"===t?"start":"right"===t?"end":"middle",vn=(t,e,i)=>t.fontData?{...t,...(()=>{if(t.algorithm===We.Traditional){const n=Bn(e,t,i,t.lineHeight);return{text:n.lines.join("\n"),height:n.requiredHeight,width:n.requiredWidth,fontSize:n.fontSize,input:e}}return{text:e}})()}:t,Mn=1.1;var Sn={};He(Sn,"colorDefinitionPrintValue",(()=>bn)),He(Sn,"spotColorDefinitionString",(()=>Fn)),He(Sn,"svgColorValueToDefinition",(()=>Pn));const bn=t=>{const e=Fn(t.spotColor);return e?`${t.browserValue} ${e}`:t.browserValue},Fn=t=>{if(!t)return"";if(t.profileName.includes("/")&&t.profileName.includes(".icc")){const e=t.profileName.replace(/\s/g,"-"),i=e.lastIndexOf("/");return`icc-named-color(${e.slice(i+1).slice(0,-4)}, ${t.namedColor})`}return`icc-named-color(${t.profileName}, ${t.namedColor})`},Pn=t=>{const e=t.split(/[ ](?=[^)]*?(?:\(|$))/);if(0===e.length)return{browserValue:"#000000"};if(1===e.length)return{browserValue:e[0]};const i=e[1].match(/\(([^)]+)\)/gm);if(!i)throw new Error("Unhandled state of color value in SVG");const n=i[0].replace(/[() ]/g,"").split(",");return{browserValue:e[0],spotColor:{profileName:n[0],namedColor:n[1]}}},Yn=t=>{const e=(t.rotation||0)*Math.PI/180,n=Math.cos(e),A=-Math.sin(e),a=`text-path-${t.id}`,r=`text-fill-${t.id}`,s=t.x+(t.curved?0:t.width/2),o=t.y+(t.curved?0:t.height/2),c=(t.text||"").split("\n");return t.curved&&!t.paths?null:t.fontData?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)("defs",{children:[t.textFillImage&&(0,i.jsx)("pattern",{id:r,patternUnits:"userSpaceOnUse",width:t.textFillImage.scale*t.textFillImage.width,height:t.textFillImage.scale*t.textFillImage.height,x:0,y:0,children:(0,i.jsx)("image",{href:t.textFillImage.src,xlinkHref:t.textFillImage.src,width:t.textFillImage.scale*t.textFillImage.width,height:t.textFillImage.scale*t.textFillImage.height})}),(0,i.jsx)("style",{type:"text/css",dangerouslySetInnerHTML:{__html:`\n @font-face {\n font-family: '${t.fontData.name}';\n src: url('${t.fontData.assetUrl}') format('truetype');\n }\n `}}),t.curved&&t.paths?(0,i.jsx)("path",{id:a,d:t.paths[0]}):void 0]}),t._renderingConfiguration?.debug?(0,i.jsx)("rect",{stroke:"blue",fill:"none",x:t.x,y:t.y,width:t.width,height:t.height}):void 0,(0,i.jsx)("g",{mask:t.stepName?void 0:t.mask,children:(0,i.jsx)("g",{transform:`matrix(${n}, ${-A}, ${A}, ${n}, ${s}, ${o})`,children:(0,i.jsx)("text",{xmlSpace:"preserve",fontFamily:`'${t.fontData.name}'`,fontSize:t.fontSize,fontStyle:"normal",fontWeight:"normal",fill:t.textFillImage?`url("#${r}")`:t._renderingConfiguration?.spotColors&&t.fillSpotColorDefinition?`${t.fill} ${Fn(t.fillSpotColorDefinition)}`:t.fill,style:{whiteSpace:"pre",userSelect:"none"},children:t.curved?(0,i.jsx)(kn,{text:t.text||"",curvedPathId:a,align:t.align}):c.map(((e,n)=>(0,i.jsx)(Nn,{align:t.vertical?"center":t.align,fontSize:t.fontSize,thisLineIdx:n,amountLines:c.length,text:e,textboxHeight:t.height,textboxWidth:t.width,lineHeight:t.lineHeight,vertical:t.vertical,verticalAlign:t.verticalAlign},n)))})})})]}):null},Nn=t=>(0,i.jsx)("tspan",{textAnchor:xn(t.align),x:"left"===t.align?-t.textboxWidth/2:"right"===t.align?t.textboxWidth/2:0,y:`${(()=>{const e=t.fontSize*(void 0!==t.lineHeight?t.lineHeight:Mn),i=t.textboxHeight/2;if("top"===t.verticalAlign)return-i+3*t.fontSize/4+t.thisLineIdx*e;if("bottom"===t.verticalAlign){const n=t.amountLines-1-t.thisLineIdx;return i-t.fontSize/4-n*e}const n=(t.amountLines-1)/2;return(t.thisLineIdx-n)*e+t.fontSize/4})()}px`,children:t.text}),kn=t=>{const e=`#${t.curvedPathId}`;return(0,i.jsx)("textPath",{startOffset:"left"===t.align?"0%":"right"===t.align?"100%":"50%",textAnchor:xn(t.align),href:e,xlinkHref:e,children:t.text})};He({},"Illustration",(()=>Jn));var Rn={};He(Rn,"traverse",(()=>Un)),He(Rn,"sanitizeSvgTree",(()=>Gn)),He(Rn,"modifySVGWithElementProperties",(()=>Tn)),He(Rn,"generateSVGWithUnknownColors",(()=>On));const Hn=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],Un=(t,e)=>{e(t),t.children.length>0&&Array.from(t.children).forEach((t=>Un(t,e)))},Gn=(t,e=!1)=>{!e&&t.setAttribute("preserveAspectRatio","none");const i=[];Un(t,(t=>{if("script"!==t.tagName)if("style"!==t.tagName);else try{(0,l.parse)(t.innerHTML).stylesheet?.rules.forEach((t=>{i.push(t)})),t.remove()}catch(t){console.error(t)}else t.remove()})),Un(t,(t=>{i.forEach((e=>{e.selectors?.forEach((i=>{((t,e)=>{try{return t.matches(e)}catch(i){return t.classList.contains(e.substring(1))}})(t,i)&&e.declarations?.forEach((e=>{e.property&&e.value&&t.setAttribute(e.property,e.value)}))}))}))}))},Tn=(t,e,i,n,A)=>{const a=(t=>Ki().parseFromString(t,"image/svg+xml").firstElementChild)(t);if(!a)throw new Error("Failed to read SVG.");return((t,e,i)=>{t.setAttribute("height",`${i}px`),t.setAttribute("width",`${e}px`)})(a,e,i),((t,e,i)=>{Un(t,(t=>{const n=t.attributes.getNamedItem("fill");n&&"none"!==n.value&&t.classList.forEach((n=>{if(n.startsWith("spiff-fill")){const A=e[n];A&&t.setAttribute("fill",i?bn(A):A.browserValue)}}));const A=t.attributes.getNamedItem("stroke");A&&"none"!==A.value&&t.classList.forEach((n=>{if(n.startsWith("spiff-stroke")){const A=e[n];A&&t.setAttribute("stroke",i?bn(A):A.browserValue)}}))}))})(a,n,A),(t=>Zi().serializeToString(t))(a)},On=async t=>{const e=t.match(/<svg.*?<\/svg>/s)||[],i=e?.length>0?e[0]:"",n=Ki().parseFromString(i,"image/svg+xml").firstElementChild;if(!n)throw new Error("Failed to read SVG.");Gn(n);const A={};Un(n,(t=>{Hn.includes(t.tagName)&&!t.attributes.getNamedItem("fill")&&t.setAttribute("fill","black");const e=t.attributes.getNamedItem("fill");if(e&&"none"!==e.value){const i=Pn(e.value),n=`spiff-fill-${i.browserValue.replace(/\W/g,"")}`;t.setAttribute("fill",i.browserValue),t.classList.add(n),A[n]=i}const i=t.attributes.getNamedItem("stroke");if(i&&"none"!==i.value){const e=Pn(i.value),n=`spiff-stroke-${e.browserValue.replace(/\W/g,"")}`;t.classList.add(n),t.setAttribute("stroke",e.browserValue),A[n]=e}}));const a=Zi().serializeToString(n);return{colors:A,svg:a}},Jn=t=>{if(t.cachedObjectURL&&!t._renderingConfiguration?.omitCachedFields)return(0,i.jsx)(bi,{id:t.id,src:t.cachedObjectURL,x:t.x,y:t.y,width:t.width,height:t.height,rotation:t.rotation,preserveAspectRatio:"none",immutable:t.immutable,mask:t.stepName?void 0:t.mask});const e=t.rotation||0,n=wi(e),A=Math.cos(n),a=-Math.sin(n),r=`\n matrix(1, 0, 0, 1, ${t.x}, ${t.y})\n matrix(1, 0, 0, 1, ${t.width/2}, ${t.height/2})\n matrix(${A}, ${-a}, ${a}, ${A}, 0, 0)\n matrix(1, 0, 0, 1, ${-t.width/2}, ${-t.height/2})\n `;if(!t.svg)throw new Error(`Illustration element ${t.id} (stepName ${t.stepName}) lacked svg from src ${t.src} at render time.`);return(0,i.jsx)("g",{mask:t.stepName?void 0:t.mask,children:(0,i.jsx)("g",{transform:r,dangerouslySetInnerHTML:{__html:Tn(t.svg,t.width,t.height,t.colors,t._renderingConfiguration?.spotColors)}})})};class Ln{constructor(){this.id=Te(),this.stateCallbacks=[],this.prevCommands=[],this.nextCommands=[]}registerStateCallback(t){this.stateCallbacks.push(t)}unregisterStateCallback(t){this.stateCallbacks.filter((e=>e!==t))}getState(){return this.state}runStateCallbacks(){this.stateCallbacks.forEach((t=>t()))}apply(t,e){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);this.state=this.commandReducer(this.state,t),this.runStateCallbacks(),this.nextCommands=[],e||this.prevCommands.push(t)}undo(){if(!this.state)return;const t=this.prevCommands.pop();if(!t)return;const e=t.undo();t.varying?this.state={...this.state,variation:e}:this.state={...this.state,transaction:e},this.nextCommands.push(t),this.runStateCallbacks()}redo(){if(!this.state)return;const t=this.nextCommands.pop();t&&(this.state=this.commandReducer(this.state,t),this.runStateCallbacks(),this.prevCommands.push(t))}flattenSequence(t,e){const i=this.prevCommands.filter((e=>e.sequenceId===t)).pop();i&&(this.prevCommands=this.prevCommands.filter((e=>e.sequenceId!==t)),i?.overrideOldState(e),this.prevCommands.push(i))}getLayoutById(t){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const e=this.state.transaction?.layouts?.[t],i=this.state.variation?.layouts?.[t],n=e?.layout||i?.layout;if(!n)throw new Error(`No layout: ${t}`);const A=[...e?.elements||[],...i?.elements||[]];return this.getLayoutDataWithState(n,A)}getAllLayouts(){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const t=[...Object.keys(this.state.transaction?.layouts),...Object.keys(this.state.variation?.layouts||{})];return[...new Set(t)].map((t=>this.getLayoutById(t)))}getLayoutDataWithState(t,e){return{layoutState:{layout:t,elements:e},getComponentWithProps:i=>jn(t,e,i)}}initialize(t,e){if(e)return void(this.state={transaction:e});let i={serializableWorkflow:{steps:[]},layouts:{}};t.forEach((t=>{i=new AA(t).apply(i)})),this.runStateCallbacks(),this.state={transaction:i}}commandReducer(t,e){if(e.varying){const i={layouts:{},serializableWorkflow:{steps:[]},...t.variation};return{...t,variation:e.apply(i)}}{const i=t.transaction||{layouts:{},serializableWorkflow:{steps:[]}};return{...t,transaction:e.apply(i)}}}}const zn=t=>"image"===t.type?(0,i.jsx)(bi,{...t},t.id):"frame"===t.type?(0,i.jsx)(Pi,{...t},t.id):"illustration"===t.type?(0,i.jsx)(Jn,{...t},t.id):"textbox"===t.type?(0,i.jsx)(Yn,{...t},t.id):null,jn=(t,e,n)=>{const A=n.renderingConfiguration,a=A?.removeExcludedElements?e.filter((t=>!t.excludeFromExport)):e;return(0,i.jsx)(gi,{preserveAspectRatio:void 0,elements:a,backgroundColor:t.transparentBackground?void 0:"white",width:n.width||t.width,height:n.height||t.height,viewBox:A?.region?{x:A.region.left,y:A.region.top,width:A.region.width,height:A.region.height}:{x:0,y:0,width:t.width,height:t.height},configuration:A,outlineArea:n.outlineArea,maxHeight:n.maxHeight,maxWidth:n.maxWidth,position:n.position,borderRadius:n.borderRadius,outlineColor:n.outlineColor})};function Vn(t){return t.sort(((t,e)=>{const i=t.layer||0,n=e.layer||0;if(i<n)return-1;if(i>n)return 1;const A=t.layerIndex||0,a=e.layerIndex||0;return A<a?-1:A>a?1:0}))}class Kn extends Error{constructor(){super("Element not found!"),Object.setPrototypeOf(this,Kn.prototype)}}const Wn=(t,e)=>Xn(t,e).elements.find((e=>e.id===t)),Xn=(t,e)=>{const i=Object.values(e).find((e=>e.elements.some((e=>e.id===t))));if(!i)throw new Kn;return i},qn=(t,e)=>{const i=Vn([...e.elements.filter((e=>e.id!==t.id)),t]);return{layout:e.layout,elements:i,modificationID:Te()}},Zn=async(t,e)=>{const i=[...Object.keys(t.layouts),...Object.keys(e?.layouts||{})],n=[...new Set(i)];for(let i=0;i<n.length;i++){const A=n[i],a=t.layouts[A],r=e?.layouts[A],s=a||r;await Promise.all(s.elements.map((async t=>{if("illustration"===t.type){const e=t;if(e.src&&!e.svg){const t=await Xi(e.src),i=await On(t);e.svg=Tn(i.svg,e.width,e.height,e.colors)}}isNaN(t.x)&&(t.x=0),isNaN(t.y)&&(t.y=0),isNaN(t.width)&&(t.width=0),isNaN(t.height)&&(t.height=0),isNaN(t.rotation)&&(t.rotation=0)})))}};class $n{undo(){if(!this.oldState)throw new Error("Cannot undo.");return this.oldState}overrideOldState(t){this.oldState=t}}class _n extends $n{constructor(t){super(),this.serializableWorkflow=t}apply(t){return this.oldState=t,{...t,serializableWorkflow:this.serializableWorkflow}}}class tA extends $n{constructor(t,e,i){super(),this.id=t,this.x=e,this.y=i}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,x:this.x,y:this.y},n=Xn(e.id,Object.values(t.layouts)),A=qn(i,n);return{...t,layouts:{...t.layouts,[n.layout.id]:A}}}}class eA extends $n{constructor(t,e){super(),this.id=t,this.angle=e}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,rotation:this.angle},n=Xn(e.id,Object.values(t.layouts)),A=qn(i,n);return{...t,layouts:{...t.layouts,[n.layout.id]:A}}}}class iA extends $n{constructor(t,e,i){super(),this.id=t,this.width=Math.abs(e),this.height=Math.abs(i)}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;let i={...e,width:this.width,height:this.height};if("frame"===e.type){const t=i;t.scaleX=t.scaleX*this.width/e.width,t.scaleY=t.scaleY*this.height/e.height}else if("textbox"===e.type){const t=i,n=(t.algorithm&&t.algorithm!==We.Autosize?t.input:t.text)??"";i=vn(t,n,e)}const n=Xn(e.id,Object.values(t.layouts)),A=qn(i,n);return{...t,layouts:{...t.layouts,[n.layout.id]:A}}}}class nA extends $n{constructor(t){super(),this.commands=t}apply(t){return this.oldState=t,this.commands.reduce(((t,e)=>e.apply(t)),t)}}class AA extends $n{constructor(t){super(),this.layout=t}apply(t){return this.oldState=t,{...t,layouts:{...t.layouts,[this.layout.id]:{elements:[],layout:{...this.layout},modificationID:Te()}}}}}class aA extends $n{constructor(t){super(),this.panelName=t}apply(t){this.oldState=t;const e=Object.values(t.layouts).map((t=>{const e=t.layout.panelId===this.panelName;return{...t,elements:e?[]:[...t.elements],modificationID:Te()}})),i={};return e.forEach((t=>{i[t.layout.id]=t})),{...t,layouts:i}}}class rA extends $n{constructor(t,e){super(),this.element=t,this.layout=e}apply(t){this.oldState=t,t.layouts[this.layout.id]||(t.layouts[this.layout.id]={layout:this.layout,elements:[],modificationID:""});const e=t.layouts[this.layout.id].elements;if(e.find((t=>t.id===this.element.id)))throw new Error(`Failed to apply new ${this.element.type} element because ID ${this.element.id} already taken`);if(this.element.productOverlay||0===e.length){const i=[...e,this.element];return void 0===this.element.layerIndex&&(this.element.layerIndex=this.assignIndex(this.element,i)),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:i,modificationID:Te()}}}}const i=e[e.length-1],n=i.productOverlay?i:null;let A;if(n&&e.pop(),null!==this.element.layerIndex&&void 0!==this.element.layerIndex)A=[...e,this.element].sort(((t,e)=>void 0!==t.layerIndex&&void 0!==e.layerIndex?t.layerIndex-e.layerIndex:0));else{const t=this.assignIndex(this.element,e);this.element.layerIndex=void 0!==t?t:0,A=[...e,this.element]}return n&&A.push(n),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:A,modificationID:Te()}}}}assignIndex(t,e){if(0===e.length)return 0;const i=e.filter((e=>(e.layer||0)===(t.layer||0))).sort(((t,e)=>(t.layerIndex||0)-(e.layerIndex||0)))[e.length-1]?.layerIndex;return void 0!==i?i+1:0}}class sA extends $n{constructor(t){super(),this.id=t}apply(t){this.oldState=t;let e=!1;const i=Object.values(t.layouts).map((t=>(t.elements.filter((t=>t.id!==this.id)).length!==t.elements.length&&(e=!0),{...t,elements:t.elements.filter((t=>t.id!==this.id)),modificationID:Te()})));e||console.log(`Failed to delete element ${this.id}`);const n={};return i.forEach((t=>{n[t.layout.id]=t})),{...t,layouts:n}}}class oA extends $n{constructor(t,i){super(),this.el=b(e)(t),this.layout=i,this.el.id=Te(),this.el.x+=5,this.el.y+=5}apply(t){return this.oldState=t,new rA(this.el,this.layout).apply(t)}}class cA extends $n{constructor(t,e,i){super(),this.id=t,this.color=e,this.textFillSpotColor=i}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,fill:this.color,fillSpotColorDefinition:this.textFillSpotColor,textFillImage:void 0},n=Xn(e.id,Object.values(t.layouts)),A=qn(i,n);return{...t,layouts:{...t.layouts,[n.layout.id]:A}}}}class lA extends $n{constructor(t,e){super(),this.id=t,this.imageFill=e}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,textFillImage:this.imageFill},n=Xn(e.id,Object.values(t.layouts)),A=qn(i,n);return{...t,layouts:{...t.layouts,[n.layout.id]:A}}}}class gA extends $n{constructor(t,e){super(),this.id=t,this.size=e}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,fontSize:this.size},n=Xn(e.id,Object.values(t.layouts)),A=(e.algorithm&&e.algorithm!==We.Autosize?e.input:e.text)??"",a=qn(vn(i,A),n);return{...t,layouts:{...t.layouts,[n.layout.id]:a}}}}class hA extends $n{constructor(t,e){super(),this.id=t,this.algorithm=e}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,algorithm:this.algorithm},n=Xn(e.id,Object.values(t.layouts)),A=qn(i,n);return{...t,layouts:{...t.layouts,[n.layout.id]:A}}}}class dA extends $n{constructor(t,e){super(),this.id=t,this.fontData=e}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,fontData:this.fontData},n=Xn(e.id,Object.values(t.layouts)),A=(e.algorithm&&e.algorithm!==We.Autosize?e.input:e.text)??"",a=qn(vn(i,A),n);return{...t,layouts:{...t.layouts,[n.layout.id]:a}}}}class uA extends $n{constructor(t,e){super(),this.id=t,this.align=e}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,align:this.align},n=Xn(e.id,Object.values(t.layouts)),A=qn(i,n);return{...t,layouts:{...t.layouts,[n.layout.id]:A}}}}class wA extends $n{constructor(t,e,i){super(),this.id=t,this.imageData=e,this.offsets=i}apply(t){this.oldState=t;const e=Xn(this.id,Object.values(t.layouts)),i=e.elements.findIndex((t=>t.id===this.id)),n=e.elements[i].pattern,A=[...e.elements];A.splice(i,1,{...e.elements[i],pattern:{...n,src:this.imageData.src,x:this.offsets.x,y:this.offsets.y,width:this.imageData.width,height:this.imageData.height,scaleX:this.offsets.zoom,scaleY:this.offsets.zoom}});const a={...e,elements:A,modificationID:Te()};return{...t,layouts:{...t.layouts,[e.layout.id]:a}}}}class BA extends $n{constructor(t,e){super(),this.id=t,this.text=e}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i=Xn(e.id,Object.values(t.layouts)),n=qn(vn(e,this.text,e),i);return{...t,layouts:{...t.layouts,[i.layout.id]:n}}}}class pA extends $n{constructor(t,e,i){super(),this.id=t,this.className=e,this.fill=i}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i=e.colors||{},n=i[this.className];i[this.className]={browserValue:this.fill,spotColor:n?.spotColor};const A={...e,colors:i},a=Xn(e.id,Object.values(t.layouts)),r=qn(A,a);return{...t,layouts:{...t.layouts,[a.layout.id]:r}}}}class mA extends $n{constructor(t,e,i){super(),this.id=t,this.svgBody=e,this.objectURL=i}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,svg:this.svgBody,cachedObjectURL:this.objectURL},n=Xn(e.id,Object.values(t.layouts)),A=qn(i,n);return{...t,layouts:{...t.layouts,[n.layout.id]:A}}}}class EA extends $n{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!Wn(this.id,Object.values(t.layouts)).id)throw new Kn;const e=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!e)throw new Error("Layout missing from state!");const i=e.elements.findIndex((t=>t.id===this.id));e.elements.push(e.elements.splice(i,1)[0]);const n=[...e.elements];return n.forEach(((t,e)=>t.layerIndex=e)),{...t,layouts:{...t.layouts,[e.layout.id]:{...t.layouts[e.layout.id],elements:n,modificationID:Te()}}}}}class fA extends $n{constructor(t){super(),this.id=t}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!i)throw new Error("Layout missing from state!");const n=i.elements.findIndex((t=>t.id===this.id));i.elements.splice(n,1),i.elements.unshift(e);const A=[...i.elements],a=A.splice(n,1)[0];return A.splice(n,0,a),A.forEach(((t,e)=>t.layerIndex=e)),{...t,layouts:{...t.layouts,[i.layout.id]:{...t.layouts[i.layout.id],elements:A,modificationID:Te()}}}}}class CA extends $n{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!Wn(this.id,Object.values(t.layouts)).id)throw new Kn;const e=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!e)throw new Error("Layout missing from state!");const i=e.elements.findIndex((t=>t.id===this.id)),n=i+1,A=[...e.elements],a=A.splice(i,1)[0];return A.splice(n,0,a),A.forEach(((t,e)=>t.layerIndex=e)),{...t,layouts:{...t.layouts,[e.layout.id]:{...t.layouts[e.layout.id],elements:A,modificationID:Te()}}}}}class QA extends $n{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!Wn(this.id,Object.values(t.layouts)).id)throw new Kn;const e=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!e)throw new Error("Layout missing from state!");const i=e.elements.findIndex((t=>t.id===this.id)),n=i-1,A=[...e.elements],a=A.splice(i,1)[0];return A.splice(n,0,a),A.forEach(((t,e)=>t.layerIndex=e)),{...t,layouts:{...t.layouts,[e.layout.id]:{...t.layouts[e.layout.id],elements:A,modificationID:Te()}}}}}class yA extends $n{constructor(t,e){super(),this.id=t,this.value=e}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!i)throw new Error("Layout missing from state!");return{...t,layouts:{...t.layouts,[i.layout.id]:qn({...e,layer:this.value},i)}}}}var IA={};He(IA,"patternImageDataCache",(()=>FA)),He(IA,"frameDataCache",(()=>PA)),He(IA,"generateFrameSVG",(()=>YA)),He(IA,"generateDefaultRectangleFrameSvg",(()=>NA)),He(IA,"getVariant",(()=>kA)),He(IA,"getFrameData",(()=>RA)),He(IA,"calculateOffsets",(()=>HA)),He(IA,"getPatternImageData",(()=>UA)),He(IA,"GetSVGDimensions",(()=>GA)),He(IA,"svgStringDimensions",(()=>TA));var DA={};He(DA,"getExifOrientation",(()=>vA)),He(DA,"canvasDims",(()=>MA)),He(DA,"getAttributesFromArrayBuffer",(()=>SA));let xA=null;const vA=t=>new Promise((e=>{const i=nn(t);(0,o.fromBuffer)(t).then((t=>{const n=t?.mime;if("image/jpeg"!==n)return e(1);(new(0,h.ExifImage)).loadImage(i,((t,i)=>e(t?1:i.image.Orientation||1)))}))})),MA=t=>{const e=8192,i=t.naturalWidth/t.naturalHeight;return t.naturalHeight<=e&&t.naturalWidth<=e?[t.naturalWidth,t.naturalHeight]:t.naturalHeight>t.naturalWidth?[i*e,e]:[e,e/i]},SA=async t=>{const e=await(async t=>{const e=await tn(t),i=await(0,g.loadImage)(e),[n,A]=MA(i),a=await(async()=>{if(null!==xA)return!xA;const t=await(0,g.loadImage)("data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAIAAwMBEQACEQEDEQH/xABRAAEAAAAAAAAAAAAAAAAAAAAKEAEBAQADAQEAAAAAAAAAAAAGBQQDCAkCBwEBAAAAAAAAAAAAAAAAAAAAABEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AG8T9NfSMEVMhQvoP3fFiRZ+MTHDifa/95OFSZU5OzRzxkyejv8ciEfhSceSXGjS8eSdLnZc2HDm4M3BxcXwH/9k=");return xA=2===t.width&&3===t.height,!xA})();if(!a){const t=(0,g.createCanvas)(n,A);return t.getContext("2d").drawImage(i,0,0,n,A),t}const r=await vA(t),[s,o]=r>4?[A,n]:[n,A],c=(0,g.createCanvas)(s,o),l=c.getContext("2d");switch(r){case 2:l.translate(s,0),l.scale(-1,1);break;case 3:l.translate(s,o),l.rotate(Math.PI);break;case 4:l.translate(0,o),l.scale(1,-1);break;case 5:l.rotate(-.5*Math.PI),l.scale(-1,1);break;case 6:l.rotate(-.5*Math.PI),l.translate(-s,0);break;case 7:l.rotate(-.5*Math.PI),l.translate(-s,o),l.scale(1,-1);break;case 8:l.rotate(.5*Math.PI),l.translate(0,-o)}return l.drawImage(i,0,0,s,o),c})(t);return"image/jpeg"===(await(0,o.fromBuffer)(t))?.mime?{dataUrl:e.toDataURL("image/jpeg",1),height:e.height,width:e.width}:{dataUrl:e.toDataURL(),height:e.height,width:e.width}};He({},"getDefaultVariant",(()=>bA));const bA=t=>{const e=t.variants;if(e){if(1===e.length)return e[0];if(void 0!==t.defaultVariant)return e.find((e=>e.id===t.defaultVariant))}},FA=new Map,PA=new Map,YA=async(t,e)=>{if(!e){if(!t)throw new Error("No region or src supplied. Cannot construct frame!");return NA(t)}return Xi(e)},NA=t=>{const e=t.width,i=e/t.height,n=Math.max(e,512),A=n/i;return`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 ${n} ${A}'>\n <path id="target-path" d='M0 0 h ${n} v ${A} h ${-n} Z' />\n </svg>\n `},kA=(t,e)=>{if(!e)return;const i=e.variants?.find((e=>e.id===t.frameVariantId))||bA(e);if(!i)throw new Error(`No variant with ID: ${t.frameVariantId}`);if(!i.asset)throw new Error(`No asset for variant with ID: ${t.frameVariantId}`);return i},RA=async t=>{const e=Ki().parseFromString(t,"image/svg+xml"),i=e.querySelector("svg");if(!i)throw new Error("Malformed frame SVG: <svg> tag not found");const n=i.getAttribute("viewBox");if(!n)throw new Error("SVG missing viewBox.");const A=n.split(" "),a=parseFloat(A[3])||1,r=parseFloat(A[2])||1,s=e.getElementById("target-path"),o=e.getElementsByClassName("st0").item(0);if(s){const t=s.getAttribute("d");if(!t)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const e={path:t,width:r,height:a};return PA.set(t,e),e}if(o){const t=o.getAttribute("d");if(!t)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const e={path:t,width:r,height:a};return PA.set(t,e),e}throw new Error("Malformed frame SVG")},HA=(t,e,i)=>{const n=e.width>=e.height,A=t.width>=t.height,a=e.width/2,r=e.height/2,s=(n?e.height:e.width)/(A?t.width:t.height),o=i?.scale||s,c=a-t.width/2*o,l=i?.left||c,g=r-t.height/2*o;return{x:l,y:i?.top||g,zoom:o}},UA=async t=>{if(FA.has(t))return FA.get(t);if(t.endsWith("svg")){const e=await GA(t),i=e.width,n=e.height,A={src:t,width:i,height:n,aspect:i/n};return FA.set(t,A),A}{const e=await Wi(t),i=await SA(e),n={src:t,width:i.width,height:i.height,aspect:i.width/i.height};return FA.set(t,n),n}},GA=async t=>{const e=await Xi(t);return TA(e)},TA=t=>{const e=Ki().parseFromString(t,"image/svg+xml").querySelector("svg");if(!e)throw new Error("No svg tag found, this svg must be malformed!");const i=e.getAttribute("viewBox"),n=e.getAttribute("width"),A=e.getAttribute("height"),a=i?i?.split(" ").map((t=>Number(t))):[0,0,Number(n),Number(A)];if(!a)throw new Error("No viewbox or width/height values detected on SVG file!");return{width:a[2],height:a[3]}};var OA={};He(OA,"determineCorrectFontSizeAndLines",(()=>LA)),He(OA,"determineCorrectTextboxRegion",(()=>zA));const JA=(t,e,i,n,A)=>{if(e.some((t=>null==t)))throw new Error(`Failed to autosize lines: ${e.join(", ")}`);let a=e.map((t=>t.split("\n"))).flat(),r=a.length,s=a.map((t=>En(t,n,A)));const o=A.getApproximateHeight()*n;let c=!0;for(;c;){if(o+(r-1)*i>t.height)return[null,null];const e=Math.max(...s);if(e<=t.width)return[a,e];const l=s.reduce(((t,e,i,n)=>e>n[t]?i:t),0),g=a[l];let h=!1,d=g.length;for(;!h&&d>-1;){d=g.lastIndexOf(" ",d-1);const e=[g.slice(0,d),g.slice(d+1)],i=e.map((t=>En(t,n,A)));i[0]<=t.width&&(a=[...a.slice(0,l),...e,...a.slice(l+1)],s=[...s.slice(0,l),...i,...s.slice(l+1)],r+=1,h=!0)}h||(c=!1)}return[null,null]},LA=(t,e,i,n,A)=>{let a,r;const s=ln(e.assetUrl),o=s.getFont();if(A.size){const e=t/o.unitsPerEm;return[a,r]=JA(i,n,t,e,s),[A.size,a,r]}let c=6-mn;if(n.length>0){let t=n,e=0;for(;(!A.maxSize||c<=A.maxSize)&&t;)c+=mn,e=c/o.unitsPerEm,[t,r]=JA(i,n,c,e,s)}c>6&&(c-=mn),A.minSize&&c<A.minSize&&(c=A.minSize);const l=c/o.unitsPerEm;return[a,r]=JA(i,n,c,l,s),[c,a,r]},zA=(t,e,i,n,A)=>{let a={...t},r={...t},[s,o,c]=LA(i,e,r,n,{size:0,minSize:i,maxSize:i});var l,g;return c&&c<a.width&&(r.width=c,"left"===A?(r.left+=Math.sin(a.rotation*Math.PI/360)*(a.width-c),r.top+=Math.sin(a.rotation*Math.PI/180)*(c-a.width)/2):r.left+="right"===A?a.width-c:(a.width-c)/2,[s,o]=LA(i,e,r,n,{size:i}),s===i&&o&&(l=n,g=o,l.map(((t,e)=>[t,g[e]]))).every((([t,e])=>t===e))&&(a=r)),a};var jA={};He(jA,"svgObjectURL",(()=>WA)),He(jA,"LayoutElementFactory",(()=>qA));const VA=(t,e)=>{const i=t.layoutState.elements.filter((t=>t.layer===e)),n=Math.max(...i.map((t=>t.layerIndex)).filter((t=>void 0!==t)));return Math.max(n,0)+1},KA=async t=>new Promise((e=>{Xi(t).then((t=>{e(t)})).catch((t=>console.error(t)))})),WA=async t=>{const e=Ki().parseFromString(t,"image/svg+xml").firstElementChild;if(!e)throw new Error("Failed to read SVG");const i=(new XMLSerializer).serializeToString(e),n=document.createElement("canvas"),A=n.getContext("2d"),a=await Re.from(A,i,{anonymousCrossOrigin:!0,ignoreDimensions:!1}),r=e.getAttribute("width"),s=e.getAttribute("height"),o=2048;if(s&&r){const t=parseFloat(s),e=parseFloat(r)/t;e>1?a.resize(o,o/e):a.resize(o*e,o)}else a.resize(o,o);return await a.render(),await(async t=>new Promise(((e,i)=>{try{if(!URL||!URL.createObjectURL)throw new Error("Environment incapable of generating ObjectURL");t.toBlob((i=>{if(!i){if(0===t.width||0===t.height)throw new Error(`Canvas dimensions are invalid (${t.width},${t.height})`);if(t.width*t.height>=268435456)throw new Error(`Canvas dimensions exceed device limit (${t.width},${t.height})`);throw new Error("Couldn't generate object URL for Illustration, the blob was undefined!")}e(URL.createObjectURL(i))}))}catch(t){i(t)}})))(n)},XA=async(t,e,i,n)=>{const A=t.layoutState.layout.useEditableArea&&t.layoutState.layout.editableArea||{width:t.layoutState.layout.width,height:t.layoutState.layout.height,x:0,y:0},a=A.width<A.height?A.width:A.height,r=t.layoutState.layout.useEditableArea?a/1.3:a/2,s={top:A.y+A.height/2-r/2,left:A.x+A.width/2-r/2,width:r,height:r,rotation:0,panelId:t.layoutState.layout.panelId};if(i&&e===ze.Illustration){const t=await On(await KA(i)),e=Ki().parseFromString(t.svg,"image/svg+xml").firstElementChild.getAttribute("viewBox");if(!e)throw new Error("SVG missing viewBox.");const n=s.height,A=e.split(" "),a=(parseFloat(A[2])||1)/(parseFloat(A[3])||1);s.height=s.width/a,s.top+=(n-s.height)/2}if(i&&e===ze.Image){const t=s.height,e=await Wi(i),n=await SA(e),A=n.width/n.height;s.height=s.width/A,s.top+=(t-s.height)/2}if(i&&e===ze.Textbox&&n?.text&&n?.fontScale){await on(i);const t=ln(i),e=En(n.text,n?.fontScale,t);s.width=Math.min(e,.85*A.width),s.left=A.x+A.width/2-s.width/2}return s};class qA{static async getFrame(t,e){const i=await YA(e.region,e.src),n=await RA(i),A=e.region||await XA(t,ze.Frame);return{id:Te(),x:A.left,y:A.top,width:A.width,height:A.height,layer:A.layer||0,layerIndex:A.layerIndex||VA(t,A.layer||0),rotation:A.rotation,scaleX:A.width/n.width,scaleY:A.height/n.height,path:n.path,dataWidth:n.width,dataHeight:n.height,type:ze.Frame,disablePlaceholder:e.configuration.disablePlaceholder,focalBlur:e.configuration.focalBlur,focalBlurStrength:e.configuration.focalBlurStrength,focalBlurRadius:e.configuration.focalBlurRadius,forceImageCover:e.configuration.forceImageCover,pattern:void 0,immutable:A.immutable}}static async getImage(t,e){const i=e.region||await XA(t,ze.Image,e.src);return{id:Te(),src:e.src,type:ze.Image,y:i.top,x:i.left,rotation:i.rotation,width:i.width,height:i.height,layer:i.layer||0,layerIndex:i.layerIndex||VA(t,i.layer||0),immutable:i.immutable,preserveAspectRatio:"none"}}static async getTextbox(t,e){const{configuration:i,fontSrc:n,designInputStep:A}=e,a=await on(n),r={assetUrl:n,name:a.names.fullName.en},s=A?.text||i.defaultText||"",o=i.replaceableText?i.replaceableText.replace("{{}}",s):s,c=yn(o,{vertical:i.vertical,uppercase:i.uppercase}),l=e.region||await XA(t,ze.Textbox,n,{text:c,fontScale:i.size?i.size/a.unitsPerEm:void 0}),g=vn({id:Te(),type:ze.Textbox,x:l.left,y:l.top,width:l.width,height:l.height,align:Dn(i.textAlign,i.vertical),curved:i.curved,fill:A?.color||i.colour||"#000000",fontData:r,layer:l.layer||0,layerIndex:l.layerIndex||VA(t,l.layer||0),paths:i.paths,rotation:l.rotation,vertical:i.vertical,verticalAlign:i.verticalAlign||"middle",algorithm:We.Traditional,fontSize:i.size||Math.max(Math.round(.025*l.height),1),text:c,input:s},c),h=pn({...l,height:g.height},r,g.fontSize,g?.text?.split("\n")||[],g.align);return{...g,x:h.left,y:h.top+(l.height-h.height)/2,width:h.width,height:h.height}}static async getShape(t,e){const i=`\n <svg\n xmlns="http://www.w3.org/2000/svg"\n xmlnsXlink="http://www.w3.org/1999/xlink"\n xmlSpace="preserve"\n preserveAspectRatio="none"\n version="1.1"\n width="1"\n height="1"\n viewBox="0 0 1 1"\n >\n <rect\n x="0"\n y="0"\n width="1"\n height="1"\n class="spiff-fill-shape"\n fill="${e.color}"\n />\n </svg>\n `,n={};n["spiff-fill-shape"]={browserValue:e.color};const A=e.region||await XA(t,ze.Illustration),a=Te();return{stepRegion:e.region,colors:n,id:a,svg:i,type:ze.Illustration,y:A.top,x:A.left,rotation:A.rotation,width:A.width,height:A.height,layer:A.layer||0,layerIndex:A.layerIndex||VA(t,A.layer||0),immutable:A.immutable}}static async getIllustration(t,e){const i=e.region||await XA(t,ze.Illustration,e.src),n=await On(await KA(e.src)),A=await WA(n.svg),a=Te();return{cachedObjectURL:A,stepRegion:e.region,colors:n.colors,id:a,src:e.src,svg:n.svg,type:ze.Illustration,y:i.top,x:i.left,rotation:i.rotation,width:i.width,height:i.height,layer:i.layer||0,layerIndex:i.layerIndex||VA(t,i.layer||0),immutable:i.immutable}}}function ZA(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class $A extends Error{constructor(t){super(t),this.name=this.constructor.name}}class _A extends $A{constructor(t){super(`ConfigurationError - ${t}`)}}class ta extends _A{constructor(t){super(`Option not Configured: ${t.stepTitle}`),ZA(this,"optionId",void 0),this.optionId=t?.optionId||"N/A"}}class ea extends _A{constructor(t){super(`Panel not Found: ${t.panelId}`),ZA(this,"panelId",void 0),this.panelId=t?.panelId||"N/A"}}class ia extends _A{constructor(t){super(`Asset not found for variant: ${t.name}`),ZA(this,"variant",void 0),this.variant=t}}class na extends _A{constructor(t){super(`Resource not found for asset: ${t.name}`),ZA(this,"asset",void 0),this.asset=t}}class Aa extends _A{constructor(t,e){super(`Workflow Misconfiguration: ${t.stepName} - ${e}`),ZA(this,"step",void 0),this.step=t}}class aa extends $A{constructor(t){super(`ImplementationError - ${t}`)}}class ra extends aa{constructor(t){super(`Unhandled Behavior Encountered: ${t}`)}}class sa extends aa{constructor(t){super(`Parsing Error: ${t}`)}}class oa extends aa{constructor(t){super(`Client Error: ${t}`)}}class ca extends aa{constructor(t){super(`Resource Generation Failed: ${t}`)}}function la(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class ga{get(t){return localStorage.getItem(t)||void 0}set(t,e){localStorage.setItem(t,e)}remove(t){localStorage.removeItem(t)}getMap(t){const e=this.get(t);if(e)return new Map(JSON.parse(e))}setMap(t,e){const i=JSON.stringify([...e.entries()]);this.set(t,i)}}class ha{constructor(){la(this,"storage",new Map)}get(t){return this.storage.get(t)||void 0}set(t,e){this.storage.set(t,e)}remove(t){this.storage.delete(t)}getMap(t){const e=this.get(t);if(e)return new Map(JSON.parse(e))}setMap(t,e){const i=JSON.stringify([...e.entries()]);this.set(t,i)}}const da=(()=>{try{return localStorage?new ga:new ha}catch{return console.warn("Local storage was unavilable due to browser security settings. Using in-memory storage instead."),new ha}})();function ua(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const wa=new class{constructor(){ua(this,"defaultServerUrl","https://api.spiff.com.au"),ua(this,"defaultServicesApiUrl","https://services.spiff.com.au"),ua(this,"defaultHubUrl","https://hub.spiff.com.au"),ua(this,"serverUrl",void 0),ua(this,"servicesApiUrl",void 0),ua(this,"hubUrl",void 0),ua(this,"serverUrlCallbacks",void 0),this.serverUrl=this.defaultServerUrl,this.servicesApiUrl=this.defaultServicesApiUrl,this.hubUrl=this.defaultHubUrl,this.serverUrlCallbacks=[]}getServerUrl(){return this.serverUrl}getServicesApiUrl(){return this.servicesApiUrl}getHubUrl(){return this.hubUrl}setServerUrl(t){this.serverUrl=t,this.serverUrlCallbacks.forEach((t=>t()))}setServicesApiUrl(t){this.servicesApiUrl=t}setHubUrl(t){this.hubUrl=t}addServerUrlCallback(t){this.serverUrlCallbacks.push(t)}};function Ba(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}let pa;const ma=t=>{pa=t};let Ea;const fa=t=>{Ea=t};let Ca;const Qa=t=>{Ca=t};let ya;const Ia=new class{constructor(){Ba(this,"shadowGraphqlClient",void 0),this.shadowGraphqlClient=this.constructShadowGraphqlClient(),wa.addServerUrlCallback((()=>{this.shadowGraphqlClient=this.constructShadowGraphqlClient()}))}getShadowGraphqlClient(){return this.shadowGraphqlClient}constructShadowGraphqlClient(){const e=(0,t.createHttpLink)({uri:`${wa.getServerUrl()}/graphql`,fetch:f.fetch}),i=(0,m.setContext)((async(t,e)=>{const{headers:i}=e,n=i||{},A=await(async()=>{const t={applicationKey:ya,bundleOwnerId:Ea,customerToken:Ca,transactionOwnerId:pa};return"undefined"!=typeof window&&(window.location.href.includes("/workflows/product/")||window.location.href.includes("hub=true"))?{...await new Promise((t=>{const e=wa.getHubUrl(),i=n=>{n.origin===e&&(window.removeEventListener("message",i),t(n.data))};window.parent!==window&&(window.addEventListener("message",i,!1),window.parent.postMessage("ready",e))})),...t}:t})(),a=e.bearer??A.bearer,r=e.partnerId??A.partnerId,s=e.activeIntegration??A.activeIntegration,o=e.transactionOwnerId??A.transactionOwnerId,c=e.customerToken??A.customerToken,l=e.applicationKey??A.applicationKey,g=e.bundleOwnerId??A.bundleOwnerId;return a&&(n.Authorization=`Bearer ${a}`),r&&(n.partnerId=r),s&&(n.activeIntegration=s),o&&(n.transactionOwnerId=o),c&&(n.customerToken=c),l&&(n["X-Application-Key"]=l),g&&(n.bundleOwnerId=g),{headers:n}})),n=(0,E.onError)((({operation:t,graphQLErrors:e,networkError:i})=>{(e||[]).forEach((({message:e,locations:i,path:n})=>{console.log("[GraphQL Operation Error]"),console.log("Name:"+t.operationName),console.log("Query:"+JSON.stringify(t.query)),console.log(`Message: ${e}, Location: ${JSON.stringify(i,null,2)}, Path: ${n}`),console.log("Variables:"+JSON.stringify(t.variables))})),i&&console.log("GraphQL Network error")}));const A=new(0,t.InMemoryCache)({addTypename:!1,typePolicies:{Transaction:{fields:{bulkEmailAddress:{read:(t=null)=>t,merge:(t,e)=>e||t||null},transactionOwnerId:{read:(t=null)=>t,merge:(t,e)=>e||t||null},customLogoLink:{read:(t=null)=>t,merge:(t,e)=>e||t||null},workflowFooterLogoLink:{read:(t=null)=>t,merge:(t,e)=>e||t||null},workflowState:{read:(t=null)=>t,merge:(t,e)=>e||t||null},bulkSourceUrl:{read:(t=null)=>t,merge:(t,e)=>e||t||null},externalDesignProductId:{read:(t=null)=>t,merge:(t,e)=>e||t||null},externalDesignProductVariantId:{read:(t=null)=>t,merge:(t,e)=>e||t||null},externalCartProductId:{read:(t=null)=>t,merge:(t,e)=>e||t||null},externalCartProductVariantId:{read:(t=null)=>t,merge:(t,e)=>e||t||null},lastSyncedAt:{read:(t=null)=>t,merge:(t,e)=>e||t||null},lineItem:{read:(t=null)=>t,merge:(t,e)=>e||t||null}}},WorkflowProduct:{fields:{isPresent:{read:(t=null)=>t,merge:(t,e)=>e||t||null}}},Product:{fields:{imageUrl:{read:(t=null)=>t,merge:(t,e)=>e||t||null},overlayImageUrl:{read:(t=null)=>t,merge:(t,e)=>e||t||null},preloadImageUrl:{read:(t=null)=>t,merge:(t,e)=>e||t||null},weight:{read:(t=null)=>t,merge:(t,e)=>e||t||null},conversionConfiguration:{read:(t=null)=>t,merge:(t,e)=>e||t||null},bulkConfiguration:{read:(t=null)=>t,merge:(t,e)=>e||t||null}}}}});return new(0,t.ApolloClient)({link:(0,t.from)([n,i,e]),cache:A,name:"Core"})}};function Da(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const xa=t.gql`
1
+ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/jsx-runtime"),n=require("react"),A=require("opentype.js"),a=require("buffer"),r=require("axios"),o=require("https"),s=require("file-type"),c=require("util"),l=require("css"),g=require("canvas"),h=require("exif"),d=require("process"),u=require("raf"),w=require("rgbcolor"),B=require("svg-pathdata"),p=require("stackblur-canvas"),m=require("@apollo/client/link/context"),E=require("@apollo/client/link/error"),f=require("cross-fetch"),C=require("lodash.isequal"),Q=require("react-dom/server"),y=require("qrcode"),I=require("svg-path-bbox"),D=require("lodash.debounce"),x=require("unicode-default-word-boundary"),v=require("@apollo/client/core");function M(t,e,i,n){Object.defineProperty(t,e,{get:i,set:n,enumerable:!0,configurable:!0})}var S="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{};function b(t){return t&&t.__esModule?t.default:t}M(module.exports,"SpiffCommerceClient",(()=>cl)),M(module.exports,"CommandContext",(()=>Ln)),M(module.exports,"spiffCoreConfiguration",(()=>wa)),M(module.exports,"PromiseQueue",(()=>Xr)),M(module.exports,"QueueablePromise",(()=>Wr)),M(module.exports,"MockWorkflowManager",(()=>gl)),M(module.exports,"InformationMessageType",(()=>Ds)),M(module.exports,"StepHandle",(()=>Ps)),M(module.exports,"TextStepHandle",(()=>Ls)),M(module.exports,"FrameStepHandle",(()=>wl)),M(module.exports,"BulkStepHandle",(()=>Rs)),M(module.exports,"ShapeStepHandle",(()=>Js)),M(module.exports,"InformationStepHandle",(()=>zs)),M(module.exports,"IllustrationStepHandle",(()=>Hs)),M(module.exports,"MaterialStepHandle",(()=>Us)),M(module.exports,"ModelStepHandle",(()=>Gs)),M(module.exports,"PictureStepHandle",(()=>Ts)),M(module.exports,"QuestionStepHandle",(()=>Os)),M(module.exports,"GlobalPropertyHandle",(()=>yc)),M(module.exports,"BulkPriceCalculationStrategy",(()=>ar)),M(module.exports,"Variant",(()=>bs)),M(module.exports,"WorkflowExperienceImpl",(()=>rc)),M(module.exports,"OptionNotFoundError",(()=>ta)),M(module.exports,"LayoutNotFoundError",(()=>ea)),M(module.exports,"AssetNotFoundError",(()=>ia)),M(module.exports,"ResourceNotFoundError",(()=>na)),M(module.exports,"MisconfigurationError",(()=>Aa)),M(module.exports,"ParseError",(()=>oa)),M(module.exports,"UnhandledBehaviorError",(()=>ra)),M(module.exports,"assetService",(()=>ka)),M(module.exports,"designService",(()=>Ac)),M(module.exports,"createDesign",(()=>tc)),M(module.exports,"optionService",(()=>Ja)),M(module.exports,"persistenceService",(()=>da)),M(module.exports,"graphQlManager",(()=>Ia)),M(module.exports,"toast",(()=>wr)),M(module.exports,"FrameService",(()=>is)),M(module.exports,"getBoundedOffsets",(()=>ts)),M(module.exports,"frameStepService",(()=>ls)),M(module.exports,"modelStepService",(()=>ds)),M(module.exports,"materialStepService",(()=>hs)),M(module.exports,"shapeStepService",(()=>ms)),M(module.exports,"questionStepService",(()=>Bs)),M(module.exports,"digitalContentStepService",(()=>ss)),M(module.exports,"moduleStepService",(()=>us)),M(module.exports,"pictureStepService",(()=>ws)),M(module.exports,"textStepService",(()=>ys)),M(module.exports,"illustrationStepService",(()=>gs)),M(module.exports,"ProductCameraRig",(()=>nr)),M(module.exports,"FrameStep",(()=>dl)),M(module.exports,"ConversionLocation",(()=>or)),M(module.exports,"ConversionDataType",(()=>cr)),M(module.exports,"getWorkflow",(()=>ol)),M(module.exports,"getWorkflows",(()=>rl)),M(module.exports,"shortenUrl",(()=>as)),M(module.exports,"ObjectInput",(()=>Vc)),M(module.exports,"TextInput",(()=>Kc)),M(module.exports,"ObjectInputType",(()=>zc)),M(module.exports,"ProductCollection",(()=>Rc)),M(module.exports,"CollectionProduct",(()=>Hc)),M(module.exports,"AssetType",(()=>ai)),M(module.exports,"BringForwardCommand",(()=>CA)),M(module.exports,"BringToFrontCommand",(()=>EA)),M(module.exports,"BringToBackCommand",(()=>fA)),M(module.exports,"CanvasCommand",(()=>$n)),M(module.exports,"CreateElementCommand",(()=>rA)),M(module.exports,"CreateLayoutCommand",(()=>AA)),M(module.exports,"DeleteElementCommand",(()=>oA)),M(module.exports,"FontAlignmentCommand",(()=>uA)),M(module.exports,"FontColorCommand",(()=>cA)),M(module.exports,"FontSizeCommand",(()=>gA)),M(module.exports,"FontSourceCommand",(()=>dA)),M(module.exports,"GroupCommand",(()=>nA)),M(module.exports,"LayoutElementFactory",(()=>qA)),M(module.exports,"LayoutElementType",(()=>ze)),M(module.exports,"MoveCommand",(()=>tA)),M(module.exports,"ResizeCommand",(()=>iA)),M(module.exports,"RotateCommand",(()=>eA)),M(module.exports,"SendBackwardsCommand",(()=>QA)),M(module.exports,"StakeholderType",(()=>gr)),M(module.exports,"StepAspectType",(()=>ci)),M(module.exports,"StepType",(()=>oi)),M(module.exports,"TextChangeCommand",(()=>BA)),M(module.exports,"UnitOfMeasurement",(()=>qe)),M(module.exports,"dataUrlFromExternalUrl",(()=>_i)),M(module.exports,"findElement",(()=>Wn)),M(module.exports,"frameDataCache",(()=>PA)),M(module.exports,"generate",(()=>Te)),M(module.exports,"getAxisAlignedBoundingBox",(()=>di)),M(module.exports,"generateSVGWithUnknownColors",(()=>On)),M(module.exports,"getAttributesFromArrayBuffer",(()=>SA)),M(module.exports,"rehydrateSerializedLayout",(()=>Zn)),M(module.exports,"getFrameData",(()=>RA)),M(module.exports,"getSvgElement",(()=>jn)),M(module.exports,"loadFontFromDataUrl",(()=>cn)),M(module.exports,"loadFontFromExternalUrl",(()=>sn)),M(module.exports,"determineCorrectFontSizeAndLines",(()=>LA)),M(module.exports,"patternImageDataCache",(()=>FA)),M(module.exports,"generateCommands",(()=>vo)),M(module.exports,"registerJSDOM",(()=>Oi)),M(module.exports,"minZoom",(()=>Jr)),M(module.exports,"AdvancedEditor",(()=>Ho)),M(module.exports,"TransformWrapper",(()=>Bl)),M(module.exports,"EditorCore",(()=>Ro)),M(module.exports,"useLayouts",(()=>ja)),M(module.exports,"useEditorState",(()=>tr)),M(module.exports,"useEditorInteraction",(()=>zr)),M(module.exports,"useShortcutCombination",(()=>jr)),M(module.exports,"commandReducer",(()=>qa)),M(module.exports,"getDefaultState",(()=>Xa)),M(module.exports,"CommandContextContext",(()=>La)),M(module.exports,"AdvancedEditorStateProvider",(()=>$a)),M(module.exports,"AdvancedEditorContext",(()=>Za)),M(module.exports,"UICommand",(()=>_a)),M(module.exports,"EditorSubMenu",(()=>Ka)),M(module.exports,"ElementEventType",(()=>Br)),M(module.exports,"KeyEvent",(()=>mr)),M(module.exports,"gatherVaryingStepAspects",(()=>Vo));function F(t){return t.replace(/(?!\u3000)\s+/gm," ")}function P(t){const e=t.match(/-?(\d+(?:\.\d*(?:[eE][+-]?\d+)?)?|\.\d+)(?=\D|$)/gm);return e?e.map(parseFloat):[]}const Y=/^[A-Z-]+$/;function N(t){const e=/url\(('([^']+)'|"([^"]+)"|([^'")]+))\)/.exec(t);return e&&(e[2]||e[3]||e[4])||""}const k=/(\[[^\]]+\])/g,R=/(#[^\s+>~.[:]+)/g,H=/(\.[^\s+>~.[:]+)/g,U=/(::[^\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi,G=/(:[\w-]+\([^)]*\))/gi,T=/(:[^\s+>~.[:]+)/g,O=/([^\s+>~.[:]+)/g;function J(t,e){const i=e.exec(t);return i?[t.replace(e," "),i.length]:[t,0]}const L=1e-8;function z(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2))}function j(t,e){return(t[0]*e[0]+t[1]*e[1])/(z(t)*z(e))}function V(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(j(t,e))}function K(t){return t*t*t}function W(t){return 3*t*t*(1-t)}function X(t){return 3*t*(1-t)*(1-t)}function q(t){return(1-t)*(1-t)*(1-t)}function Z(t){return t*t}function $(t){return 2*t*(1-t)}function _(t){return(1-t)*(1-t)}function tt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class et{static empty(t){return new et(t,"EMPTY","")}split(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:" ";const{document:e,name:i}=this;return F(this.getString()).trim().split(t).map((t=>new et(e,i,t)))}hasValue(t){const e=this.value;return null!==e&&""!==e&&(t||0!==e)&&void 0!==e}isString(t){const{value:e}=this,i="string"==typeof e;return i&&t?t.test(e):i}isUrlDefinition(){return this.isString(/^url\(/)}isPixels(){if(!this.hasValue())return!1;const t=this.getString();switch(!0){case t.endsWith("px"):case/^[0-9]+$/.test(t):return!0;default:return!1}}setValue(t){return this.value=t,this}getValue(t){return void 0===t||this.hasValue()?this.value:t}getNumber(t){if(!this.hasValue())return void 0===t?0:parseFloat(t);const{value:e}=this;let i=parseFloat(e);return this.isString(/%$/)&&(i/=100),i}getString(t){return void 0===t||this.hasValue()?void 0===this.value?"":String(this.value):String(t)}getColor(t){let e=this.getString(t);return this.isNormalizedColor||(this.isNormalizedColor=!0,e=function(t){if(!t.startsWith("rgb"))return t;let e=3;return t.replace(/\d+(\.\d+)?/g,((t,i)=>e--&&i?String(Math.round(parseFloat(t))):t))}(e),this.value=e),e}getDpi(){return 96}getRem(){return this.document.rootEmSize}getEm(){return this.document.emSize}getUnits(){return this.getString().replace(/[0-9.-]/g,"")}getPixels(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.hasValue())return 0;const[i,n]="boolean"==typeof t?[void 0,t]:[t],{viewPort:A}=this.document.screen;switch(!0){case this.isString(/vmin$/):return this.getNumber()/100*Math.min(A.computeSize("x"),A.computeSize("y"));case this.isString(/vmax$/):return this.getNumber()/100*Math.max(A.computeSize("x"),A.computeSize("y"));case this.isString(/vw$/):return this.getNumber()/100*A.computeSize("x");case this.isString(/vh$/):return this.getNumber()/100*A.computeSize("y");case this.isString(/rem$/):return this.getNumber()*this.getRem();case this.isString(/em$/):return this.getNumber()*this.getEm();case this.isString(/ex$/):return this.getNumber()*this.getEm()/2;case this.isString(/px$/):return this.getNumber();case this.isString(/pt$/):return this.getNumber()*this.getDpi()*(1/72);case this.isString(/pc$/):return 15*this.getNumber();case this.isString(/cm$/):return this.getNumber()*this.getDpi()/2.54;case this.isString(/mm$/):return this.getNumber()*this.getDpi()/25.4;case this.isString(/in$/):return this.getNumber()*this.getDpi();case this.isString(/%$/)&&n:return this.getNumber()*this.getEm();case this.isString(/%$/):return this.getNumber()*A.computeSize(i);default:{const t=this.getNumber();return e&&t<1?t*A.computeSize(i):t}}}getMilliseconds(){return this.hasValue()?this.isString(/ms$/)?this.getNumber():1e3*this.getNumber():0}getRadians(){if(!this.hasValue())return 0;switch(!0){case this.isString(/deg$/):return this.getNumber()*(Math.PI/180);case this.isString(/grad$/):return this.getNumber()*(Math.PI/200);case this.isString(/rad$/):return this.getNumber();default:return this.getNumber()*(Math.PI/180)}}getDefinition(){const t=this.getString(),e=/#([^)'"]+)/.exec(t),i=(null==e?void 0:e[1])||t;return this.document.definitions[i]}getFillStyleDefinition(t,e){let i=this.getDefinition();if(!i)return null;if("function"==typeof i.createGradient&&"getBoundingBox"in t)return i.createGradient(this.document.ctx,t,e);if("function"==typeof i.createPattern){if(i.getHrefAttribute().hasValue()){const t=i.getAttribute("patternTransform");i=i.getHrefAttribute().getDefinition(),i&&t.hasValue()&&i.getAttribute("patternTransform",!0).setValue(t.value)}if(i)return i.createPattern(this.document.ctx,t,e)}return null}getTextBaseline(){if(!this.hasValue())return null;const t=this.getString();return et.textBaselineMapping[t]||null}addOpacity(t){let e=this.getColor();const i=e.length;let n=0;for(let t=0;t<i&&(","===e[t]&&n++,3!==n);t++);if(t.hasValue()&&this.isString()&&3!==n){const i=new(b(w))(e);i.ok&&(i.alpha=t.getNumber(),e=i.toRGBA())}return new et(this.document,this.name,e)}constructor(t,e,i){tt(this,"document",void 0),tt(this,"name",void 0),tt(this,"value",void 0),tt(this,"isNormalizedColor",void 0),this.document=t,this.name=e,this.value=i,this.isNormalizedColor=!1}}function it(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}tt(et,"textBaselineMapping",{baseline:"alphabetic","before-edge":"top","text-before-edge":"top",middle:"middle",central:"middle","after-edge":"bottom","text-after-edge":"bottom",ideographic:"ideographic",alphabetic:"alphabetic",hanging:"hanging",mathematical:"alphabetic"});class nt{clear(){this.viewPorts=[]}setCurrent(t,e){this.viewPorts.push({width:t,height:e})}removeCurrent(){this.viewPorts.pop()}getRoot(){const[t]=this.viewPorts;return t||At()}getCurrent(){const{viewPorts:t}=this,e=t[t.length-1];return e||At()}get width(){return this.getCurrent().width}get height(){return this.getCurrent().height}computeSize(t){return"number"==typeof t?t:"x"===t?this.width:"y"===t?this.height:Math.sqrt(Math.pow(this.width,2)+Math.pow(this.height,2))/Math.sqrt(2)}constructor(){it(this,"viewPorts",[])}}function At(){return{width:nt.DEFAULT_VIEWPORT_WIDTH,height:nt.DEFAULT_VIEWPORT_HEIGHT}}function at(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}it(nt,"DEFAULT_VIEWPORT_WIDTH",800),it(nt,"DEFAULT_VIEWPORT_HEIGHT",600);class rt{static parse(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const[i=e,n=e]=P(t);return new rt(i,n)}static parseScale(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const[i=e,n=i]=P(t);return new rt(i,n)}static parsePath(t){const e=P(t),i=e.length,n=[];for(let t=0;t<i;t+=2)n.push(new rt(e[t],e[t+1]));return n}angleTo(t){return Math.atan2(t.y-this.y,t.x-this.x)}applyTransform(t){const{x:e,y:i}=this,n=e*t[0]+i*t[2]+t[4],A=e*t[1]+i*t[3]+t[5];this.x=n,this.y=A}constructor(t,e){at(this,"x",void 0),at(this,"y",void 0),this.x=t,this.y=e}}function ot(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class st{isWorking(){return this.working}start(){if(this.working)return;const{screen:t,onClick:e,onMouseMove:i}=this,n=t.ctx.canvas;n.onclick=e,n.onmousemove=i,this.working=!0}stop(){if(!this.working)return;const t=this.screen.ctx.canvas;this.working=!1,t.onclick=null,t.onmousemove=null}hasEvents(){return this.working&&this.events.length>0}runEvents(){if(!this.working)return;const{screen:t,events:e,eventElements:i}=this,{style:n}=t.ctx.canvas;let A;n&&(n.cursor=""),e.forEach(((t,e)=>{let{run:n}=t;for(A=i[e];A;)n(A),A=A.parent})),this.events=[],this.eventElements=[]}checkPath(t,e){if(!this.working||!e)return;const{events:i,eventElements:n}=this;i.forEach(((i,A)=>{let{x:a,y:r}=i;!n[A]&&e.isPointInPath&&e.isPointInPath(a,r)&&(n[A]=t)}))}checkBoundingBox(t,e){if(!this.working||!e)return;const{events:i,eventElements:n}=this;i.forEach(((i,A)=>{let{x:a,y:r}=i;!n[A]&&e.isPointInBox(a,r)&&(n[A]=t)}))}mapXY(t,e){const{window:i,ctx:n}=this.screen,A=new rt(t,e);let a=n.canvas;for(;a;)A.x-=a.offsetLeft,A.y-=a.offsetTop,a=a.offsetParent;return(null==i?void 0:i.scrollX)&&(A.x+=i.scrollX),(null==i?void 0:i.scrollY)&&(A.y+=i.scrollY),A}onClick(t){const{x:e,y:i}=this.mapXY(t.clientX,t.clientY);this.events.push({type:"onclick",x:e,y:i,run(t){t.onClick&&t.onClick()}})}onMouseMove(t){const{x:e,y:i}=this.mapXY(t.clientX,t.clientY);this.events.push({type:"onmousemove",x:e,y:i,run(t){t.onMouseMove&&t.onMouseMove()}})}constructor(t){ot(this,"screen",void 0),ot(this,"working",void 0),ot(this,"events",void 0),ot(this,"eventElements",void 0),this.screen=t,this.working=!1,this.events=[],this.eventElements=[],this.onClick=this.onClick.bind(this),this.onMouseMove=this.onMouseMove.bind(this)}}function ct(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const lt="undefined"!=typeof window?window:null,gt="undefined"!=typeof fetch?fetch.bind(void 0):void 0;class ht{wait(t){this.waits.push(t)}ready(){return this.readyPromise?this.readyPromise:Promise.resolve()}isReady(){if(this.isReadyLock)return!0;const t=this.waits.every((t=>t()));return t&&(this.waits=[],this.resolveReady&&this.resolveReady()),this.isReadyLock=t,t}setDefaults(t){t.strokeStyle="rgba(0,0,0,0)",t.lineCap="butt",t.lineJoin="miter",t.miterLimit=4}setViewBox(t){let{document:e,ctx:i,aspectRatio:n,width:A,desiredWidth:a,height:r,desiredHeight:o,minX:s=0,minY:c=0,refX:l,refY:g,clip:h=!1,clipX:d=0,clipY:u=0}=t;const w=F(n).replace(/^defer\s/,""),[B,p]=w.split(" "),m=B||"xMidYMid",E=p||"meet",f=A/a,C=r/o,Q=Math.min(f,C),y=Math.max(f,C);let I=a,D=o;"meet"===E&&(I*=Q,D*=Q),"slice"===E&&(I*=y,D*=y);const x=new et(e,"refX",l),v=new et(e,"refY",g),M=x.hasValue()&&v.hasValue();if(M&&i.translate(-Q*x.getPixels("x"),-Q*v.getPixels("y")),h){const t=Q*d,e=Q*u;i.beginPath(),i.moveTo(t,e),i.lineTo(A,e),i.lineTo(A,r),i.lineTo(t,r),i.closePath(),i.clip()}if(!M){const t="meet"===E&&Q===C,e="slice"===E&&y===C,n="meet"===E&&Q===f,a="slice"===E&&y===f;m.startsWith("xMid")&&(t||e)&&i.translate(A/2-I/2,0),m.endsWith("YMid")&&(n||a)&&i.translate(0,r/2-D/2),m.startsWith("xMax")&&(t||e)&&i.translate(A-I,0),m.endsWith("YMax")&&(n||a)&&i.translate(0,r-D)}switch(!0){case"none"===m:i.scale(f,C);break;case"meet"===E:i.scale(Q,Q);break;case"slice"===E:i.scale(y,y)}i.translate(-s,-c)}start(t){let{enableRedraw:e=!1,ignoreMouse:i=!1,ignoreAnimation:n=!1,ignoreDimensions:A=!1,ignoreClear:a=!1,forceRedraw:r,scaleWidth:o,scaleHeight:s,offsetX:c,offsetY:l}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{mouse:g}=this,h=1e3/ht.FRAMERATE;if(this.isReadyLock=!1,this.frameDuration=h,this.readyPromise=new Promise((t=>{this.resolveReady=t})),this.isReady()&&this.render(t,A,a,o,s,c,l),!e)return;let d=Date.now(),w=d,B=0;const p=()=>{d=Date.now(),B=d-w,B>=h&&(w=d-B%h,this.shouldUpdate(n,r)&&(this.render(t,A,a,o,s,c,l),g.runEvents())),this.intervalId=b(u)(p)};i||g.start(),this.intervalId=b(u)(p)}stop(){this.intervalId&&(b(u).cancel(this.intervalId),this.intervalId=null),this.mouse.stop()}shouldUpdate(t,e){if(!t){const{frameDuration:t}=this;if(this.animations.reduce(((e,i)=>i.update(t)||e),!1))return!0}return!("function"!=typeof e||!e())||(!(this.isReadyLock||!this.isReady())||!!this.mouse.hasEvents())}render(t,e,i,n,A,a,r){const{viewPort:o,ctx:s,isFirstRender:c}=this,l=s.canvas;o.clear(),l.width&&l.height&&o.setCurrent(l.width,l.height);const g=t.getStyle("width"),h=t.getStyle("height");!e&&(c||"number"!=typeof n&&"number"!=typeof A)&&(g.hasValue()&&(l.width=g.getPixels("x"),l.style&&(l.style.width=`${l.width}px`)),h.hasValue()&&(l.height=h.getPixels("y"),l.style&&(l.style.height=`${l.height}px`)));let d=l.clientWidth||l.width,u=l.clientHeight||l.height;if(e&&g.hasValue()&&h.hasValue()&&(d=g.getPixels("x"),u=h.getPixels("y")),o.setCurrent(d,u),"number"==typeof a&&t.getAttribute("x",!0).setValue(a),"number"==typeof r&&t.getAttribute("y",!0).setValue(r),"number"==typeof n||"number"==typeof A){const e=P(t.getAttribute("viewBox").getString());let i=0,a=0;if("number"==typeof n){const A=t.getStyle("width");A.hasValue()?i=A.getPixels("x")/n:e[2]&&!isNaN(e[2])&&(i=e[2]/n)}if("number"==typeof A){const i=t.getStyle("height");i.hasValue()?a=i.getPixels("y")/A:e[3]&&!isNaN(e[3])&&(a=e[3]/A)}i||(i=a),a||(a=i),t.getAttribute("width",!0).setValue(n),t.getAttribute("height",!0).setValue(A);const r=t.getStyle("transform",!0,!0);r.setValue(`${r.getString()} scale(${1/i}, ${1/a})`)}i||s.clearRect(0,0,d,u),t.render(s),c&&(this.isFirstRender=!1)}constructor(t,{fetch:e=gt,window:i=lt}={}){if(ct(this,"ctx",void 0),ct(this,"window",void 0),ct(this,"fetch",void 0),ct(this,"viewPort",void 0),ct(this,"mouse",void 0),ct(this,"animations",void 0),ct(this,"readyPromise",void 0),ct(this,"resolveReady",void 0),ct(this,"waits",void 0),ct(this,"frameDuration",void 0),ct(this,"isReadyLock",void 0),ct(this,"isFirstRender",void 0),ct(this,"intervalId",void 0),this.ctx=t,this.viewPort=new nt,this.mouse=new st(this),this.animations=[],this.waits=[],this.frameDuration=0,this.isReadyLock=!1,this.isFirstRender=!0,this.intervalId=null,this.window=i,!e)throw new Error("Can't find 'fetch' in 'globalThis', please provide it via options");this.fetch=e}}function dt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}ct(ht,"defaultWindow",lt),ct(ht,"defaultFetch",gt),ct(ht,"FRAMERATE",30),ct(ht,"MAX_VIRTUAL_PIXELS",3e4);const{defaultFetch:ut}=ht,wt="undefined"!=typeof DOMParser?DOMParser:void 0;class Bt{async parse(t){return t.startsWith("<")?this.parseFromString(t):this.load(t)}parseFromString(t){const e=new this.DOMParser;try{return this.checkDocument(e.parseFromString(t,"image/svg+xml"))}catch(i){return this.checkDocument(e.parseFromString(t,"text/xml"))}}checkDocument(t){const e=t.getElementsByTagName("parsererror")[0];if(e)throw new Error(e.textContent||"Unknown parse error");return t}async load(t){const e=await this.fetch(t),i=await e.text();return this.parseFromString(i)}constructor({fetch:t=ut,DOMParser:e=wt}={}){if(dt(this,"fetch",void 0),dt(this,"DOMParser",void 0),!t)throw new Error("Can't find 'fetch' in 'globalThis', please provide it via options");if(!e)throw new Error("Can't find 'DOMParser' in 'globalThis', please provide it via options");this.fetch=t,this.DOMParser=e}}function pt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function mt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function Et(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function ft(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Ct{apply(t){const{originX:e,originY:i,matrix:n}=this,A=e.getPixels("x"),a=i.getPixels("y");t.translate(A,a),t.transform(n[0],n[1],n[2],n[3],n[4],n[5]),t.translate(-A,-a)}unapply(t){const{originX:e,originY:i,matrix:n}=this,A=n[0],a=n[2],r=n[4],o=n[1],s=n[3],c=n[5],l=1/(A*(1*s-0*c)-a*(1*o-0*c)+r*(0*o-0*s)),g=e.getPixels("x"),h=i.getPixels("y");t.translate(g,h),t.transform(l*(1*s-0*c),l*(0*c-1*o),l*(0*r-1*a),l*(1*A-0*r),l*(a*c-r*s),l*(r*o-A*c)),t.translate(-g,-h)}applyToPoint(t){t.applyTransform(this.matrix)}constructor(t,e,i){ft(this,"type","matrix"),ft(this,"matrix",void 0),ft(this,"originX",void 0),ft(this,"originY",void 0),this.matrix=function(t){const e=P(t);return[e[0]||0,e[1]||0,e[2]||0,e[3]||0,e[4]||0,e[5]||0]}(e),this.originX=i[0],this.originY=i[1]}}function Qt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class yt extends Ct{constructor(t,e,i){super(t,e,i),Qt(this,"type","skew"),Qt(this,"angle",void 0),this.angle=new et(t,"angle",e)}}function It(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Dt{static fromElement(t,e){const i=e.getStyle("transform",!1,!0);if(i.hasValue()){const[n,A=n]=e.getStyle("transform-origin",!1,!0).split();if(n&&A){const e=[n,A];return new Dt(t,i.getString(),e)}}return null}apply(t){this.transforms.forEach((e=>e.apply(t)))}unapply(t){this.transforms.forEach((e=>e.unapply(t)))}applyToPoint(t){this.transforms.forEach((e=>e.applyToPoint(t)))}constructor(t,e,i){It(this,"document",void 0),It(this,"transforms",void 0),this.document=t,this.transforms=[];const n=function(t){return F(t).trim().replace(/\)([a-zA-Z])/g,") $1").replace(/\)(\s?,\s?)/g,") ").split(/\s(?=[a-z])/)}(e);n.forEach((t=>{if("none"===t)return;const[e,n]=function(t){const[e="",i=""]=t.split("(");return[e.trim(),i.trim().replace(")","")]}(t),A=Dt.transformTypes[e];A&&this.transforms.push(new A(this.document,n,i))}))}}function xt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}It(Dt,"transformTypes",{translate:class{apply(t){const{x:e,y:i}=this.point;t.translate(e||0,i||0)}unapply(t){const{x:e,y:i}=this.point;t.translate(-1*e||0,-1*i||0)}applyToPoint(t){const{x:e,y:i}=this.point;t.applyTransform([1,0,0,1,e||0,i||0])}constructor(t,e){pt(this,"type","translate"),pt(this,"point",void 0),this.point=rt.parse(e)}},rotate:class{apply(t){const{cx:e,cy:i,originX:n,originY:A,angle:a}=this,r=e+n.getPixels("x"),o=i+A.getPixels("y");t.translate(r,o),t.rotate(a.getRadians()),t.translate(-r,-o)}unapply(t){const{cx:e,cy:i,originX:n,originY:A,angle:a}=this,r=e+n.getPixels("x"),o=i+A.getPixels("y");t.translate(r,o),t.rotate(-1*a.getRadians()),t.translate(-r,-o)}applyToPoint(t){const{cx:e,cy:i,angle:n}=this,A=n.getRadians();t.applyTransform([1,0,0,1,e||0,i||0]),t.applyTransform([Math.cos(A),Math.sin(A),-Math.sin(A),Math.cos(A),0,0]),t.applyTransform([1,0,0,1,-e||0,-i||0])}constructor(t,e,i){mt(this,"type","rotate"),mt(this,"angle",void 0),mt(this,"originX",void 0),mt(this,"originY",void 0),mt(this,"cx",void 0),mt(this,"cy",void 0);const n=P(e);this.angle=new et(t,"angle",n[0]),this.originX=i[0],this.originY=i[1],this.cx=n[1]||0,this.cy=n[2]||0}},scale:class{apply(t){const{scale:{x:e,y:i},originX:n,originY:A}=this,a=n.getPixels("x"),r=A.getPixels("y");t.translate(a,r),t.scale(e,i||e),t.translate(-a,-r)}unapply(t){const{scale:{x:e,y:i},originX:n,originY:A}=this,a=n.getPixels("x"),r=A.getPixels("y");t.translate(a,r),t.scale(1/e,1/i||e),t.translate(-a,-r)}applyToPoint(t){const{x:e,y:i}=this.scale;t.applyTransform([e||0,0,0,i||0,0,0])}constructor(t,e,i){Et(this,"type","scale"),Et(this,"scale",void 0),Et(this,"originX",void 0),Et(this,"originY",void 0);const n=rt.parseScale(e);0!==n.x&&0!==n.y||(n.x=L,n.y=L),this.scale=n,this.originX=i[0],this.originY=i[1]}},matrix:Ct,skewX:class extends yt{constructor(t,e,i){var n,A,a;super(t,e,i),a="skewX",(A="type")in(n=this)?Object.defineProperty(n,A,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[A]=a,this.matrix=[1,0,Math.tan(this.angle.getRadians()),1,0,0]}},skewY:class extends yt{constructor(t,e,i){var n,A,a;super(t,e,i),a="skewY",(A="type")in(n=this)?Object.defineProperty(n,A,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[A]=a,this.matrix=[1,Math.tan(this.angle.getRadians()),0,1,0,0]}}});class vt{getAttribute(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.attributes[t];if(!i&&e){const e=new et(this.document,t,"");return this.attributes[t]=e,e}return i||et.empty(this.document)}getHrefAttribute(){let t;for(const e in this.attributes)if("href"===e||e.endsWith(":href")){t=this.attributes[e];break}return t||et.empty(this.document)}getStyle(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=this.styles[t];if(n)return n;const A=this.getAttribute(t);if(A.hasValue())return this.styles[t]=A,A;if(!i){const{parent:e}=this;if(e){const i=e.getStyle(t);if(i.hasValue())return i}}if(e){const e=new et(this.document,t,"");return this.styles[t]=e,e}return et.empty(this.document)}render(t){if("none"!==this.getStyle("display").getString()&&"hidden"!==this.getStyle("visibility").getString()){if(t.save(),this.getStyle("mask").hasValue()){const e=this.getStyle("mask").getDefinition();e&&(this.applyEffects(t),e.apply(t,this))}else if("none"!==this.getStyle("filter").getValue("none")){const e=this.getStyle("filter").getDefinition();e&&(this.applyEffects(t),e.apply(t,this))}else this.setContext(t),this.renderChildren(t),this.clearContext(t);t.restore()}}setContext(t){}applyEffects(t){const e=Dt.fromElement(this.document,this);e&&e.apply(t);const i=this.getStyle("clip-path",!1,!0);if(i.hasValue()){const e=i.getDefinition();e&&e.apply(t)}}clearContext(t){}renderChildren(t){this.children.forEach((e=>{e.render(t)}))}addChild(t){const e=t instanceof vt?t:this.document.createElement(t);e.parent=this,vt.ignoreChildTypes.includes(e.type)||this.children.push(e)}matchesSelector(t){var e;const{node:i}=this;if(!i)return!1;if("function"==typeof i.matches)return i.matches(t);const n=null===(e=i.getAttribute)||void 0===e?void 0:e.call(i,"class");return!(!n||""===n)&&n.split(" ").some((e=>`.${e}`===t))}addStylesFromStyleDefinition(){const{styles:t,stylesSpecificity:e}=this.document;let i;for(const n in t)if(!n.startsWith("@")&&this.matchesSelector(n)){const A=t[n],a=e[n];if(A)for(const t in A){let e=this.stylesSpecificity[t];void 0===e&&(e="000"),a&&a>=e&&(i=A[t],i&&(this.styles[t]=i),this.stylesSpecificity[t]=a)}}}removeStyles(t,e){return e.reduce(((e,i)=>{const n=t.getStyle(i);if(!n.hasValue())return e;const A=n.getString();return n.setValue(""),[...e,[i,A]]}),[])}restoreStyles(t,e){e.forEach((e=>{let[i,n]=e;t.getStyle(i,!0).setValue(n)}))}isFirstChild(){var t;return 0===(null===(t=this.parent)||void 0===t?void 0:t.children.indexOf(this))}constructor(t,e,i=!1){if(xt(this,"document",void 0),xt(this,"node",void 0),xt(this,"captureTextNodes",void 0),xt(this,"type",void 0),xt(this,"attributes",void 0),xt(this,"styles",void 0),xt(this,"stylesSpecificity",void 0),xt(this,"animationFrozen",void 0),xt(this,"animationFrozenValue",void 0),xt(this,"parent",void 0),xt(this,"children",void 0),this.document=t,this.node=e,this.captureTextNodes=i,this.type="",this.attributes={},this.styles={},this.stylesSpecificity={},this.animationFrozen=!1,this.animationFrozenValue="",this.parent=null,this.children=[],!e||1!==e.nodeType)return;if(Array.from(e.attributes).forEach((e=>{const i=(n=e.nodeName,Y.test(n)?n.toLowerCase():n);var n;this.attributes[i]=new et(t,i,e.value)})),this.addStylesFromStyleDefinition(),this.getAttribute("style").hasValue()){this.getAttribute("style").getString().split(";").map((t=>t.trim())).forEach((e=>{if(!e)return;const[i,n]=e.split(":").map((t=>t.trim()));i&&(this.styles[i]=new et(t,i,n))}))}const{definitions:n}=t,A=this.getAttribute("id");A.hasValue()&&(n[A.getString()]||(n[A.getString()]=this)),Array.from(e.childNodes).forEach((e=>{if(1===e.nodeType)this.addChild(e);else if(i&&(3===e.nodeType||4===e.nodeType)){const i=t.createTextNode(e);i.getText().length>0&&this.addChild(i)}}))}}xt(vt,"ignoreChildTypes",["title"]);class Mt extends vt{constructor(t,e,i){super(t,e,i)}}function St(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function bt(t){const e=t.trim();return/^('|")/.test(e)?e:`"${e}"`}function Ft(t){if(!t)return"";const e=t.trim().toLowerCase();switch(e){case"normal":case"italic":case"oblique":case"inherit":case"initial":case"unset":return e;default:return/^oblique\s+(-|)\d+deg$/.test(e)?e:""}}function Pt(t){if(!t)return"";const e=t.trim().toLowerCase();switch(e){case"normal":case"bold":case"lighter":case"bolder":case"inherit":case"initial":case"unset":return e;default:return/^[\d.]+$/.test(e)?e:""}}class Yt{static parse(){let t=arguments.length>1?arguments[1]:void 0,e="",i="",n="",A="",a="";const r=F(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").trim().split(" "),o={fontSize:!1,fontStyle:!1,fontWeight:!1,fontVariant:!1};return r.forEach((t=>{switch(!0){case!o.fontStyle&&Yt.styles.includes(t):"inherit"!==t&&(e=t),o.fontStyle=!0;break;case!o.fontVariant&&Yt.variants.includes(t):"inherit"!==t&&(i=t),o.fontStyle=!0,o.fontVariant=!0;break;case!o.fontWeight&&Yt.weights.includes(t):"inherit"!==t&&(n=t),o.fontStyle=!0,o.fontVariant=!0,o.fontWeight=!0;break;case!o.fontSize:"inherit"!==t&&(A=t.split("/")[0]||""),o.fontStyle=!0,o.fontVariant=!0,o.fontWeight=!0,o.fontSize=!0;break;default:"inherit"!==t&&(a+=t)}})),new Yt(e,i,n,A,a,t)}toString(){return[Ft(this.fontStyle),this.fontVariant,Pt(this.fontWeight),this.fontSize,(t=this.fontFamily,void 0===d?t:t.trim().split(",").map(bt).join(","))].join(" ").trim();var t}constructor(t,e,i,n,A,a){St(this,"fontFamily",void 0),St(this,"fontSize",void 0),St(this,"fontStyle",void 0),St(this,"fontWeight",void 0),St(this,"fontVariant",void 0);const r=a?"string"==typeof a?Yt.parse(a):a:{};this.fontFamily=A||r.fontFamily,this.fontSize=n||r.fontSize,this.fontStyle=t||r.fontStyle,this.fontWeight=i||r.fontWeight,this.fontVariant=e||r.fontVariant}}function Nt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}St(Yt,"styles","normal|italic|oblique|inherit"),St(Yt,"variants","normal|small-caps|inherit"),St(Yt,"weights","normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit");class kt{get x(){return this.x1}get y(){return this.y1}get width(){return this.x2-this.x1}get height(){return this.y2-this.y1}addPoint(t,e){void 0!==t&&((isNaN(this.x1)||isNaN(this.x2))&&(this.x1=t,this.x2=t),t<this.x1&&(this.x1=t),t>this.x2&&(this.x2=t)),void 0!==e&&((isNaN(this.y1)||isNaN(this.y2))&&(this.y1=e,this.y2=e),e<this.y1&&(this.y1=e),e>this.y2&&(this.y2=e))}addX(t){this.addPoint(t,0)}addY(t){this.addPoint(0,t)}addBoundingBox(t){if(!t)return;const{x1:e,y1:i,x2:n,y2:A}=t;this.addPoint(e,i),this.addPoint(n,A)}sumCubic(t,e,i,n,A){return Math.pow(1-t,3)*e+3*Math.pow(1-t,2)*t*i+3*(1-t)*Math.pow(t,2)*n+Math.pow(t,3)*A}bezierCurveAdd(t,e,i,n,A){const a=6*e-12*i+6*n,r=-3*e+9*i-9*n+3*A,o=3*i-3*e;if(0===r){if(0===a)return;const r=-o/a;return void(0<r&&r<1&&(t?this.addX(this.sumCubic(r,e,i,n,A)):this.addY(this.sumCubic(r,e,i,n,A))))}const s=Math.pow(a,2)-4*o*r;if(s<0)return;const c=(-a+Math.sqrt(s))/(2*r);0<c&&c<1&&(t?this.addX(this.sumCubic(c,e,i,n,A)):this.addY(this.sumCubic(c,e,i,n,A)));const l=(-a-Math.sqrt(s))/(2*r);0<l&&l<1&&(t?this.addX(this.sumCubic(l,e,i,n,A)):this.addY(this.sumCubic(l,e,i,n,A)))}addBezierCurve(t,e,i,n,A,a,r,o){this.addPoint(t,e),this.addPoint(r,o),this.bezierCurveAdd(!0,t,i,A,r),this.bezierCurveAdd(!1,e,n,a,o)}addQuadraticCurve(t,e,i,n,A,a){const r=t+2/3*(i-t),o=e+2/3*(n-e),s=r+1/3*(A-t),c=o+1/3*(a-e);this.addBezierCurve(t,e,r,s,o,c,A,a)}isPointInBox(t,e){const{x1:i,y1:n,x2:A,y2:a}=this;return i<=t&&t<=A&&n<=e&&e<=a}constructor(t=Number.NaN,e=Number.NaN,i=Number.NaN,n=Number.NaN){Nt(this,"x1",void 0),Nt(this,"y1",void 0),Nt(this,"x2",void 0),Nt(this,"y2",void 0),this.x1=t,this.y1=e,this.x2=i,this.y2=n,this.addPoint(t,e),this.addPoint(i,n)}}class Rt extends vt{calculateOpacity(){let t=1,e=this;for(;e;){const i=e.getStyle("opacity",!1,!0);i.hasValue(!0)&&(t*=i.getNumber()),e=e.parent}return t}setContext(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e){const e=this.getStyle("fill"),i=this.getStyle("fill-opacity"),n=this.getStyle("stroke"),A=this.getStyle("stroke-opacity");if(e.isUrlDefinition()){const n=e.getFillStyleDefinition(this,i);n&&(t.fillStyle=n)}else if(e.hasValue()){"currentColor"===e.getString()&&e.setValue(this.getStyle("color").getColor());const i=e.getColor();"inherit"!==i&&(t.fillStyle="none"===i?"rgba(0,0,0,0)":i)}if(i.hasValue()){const e=new et(this.document,"fill",t.fillStyle).addOpacity(i).getColor();t.fillStyle=e}if(n.isUrlDefinition()){const e=n.getFillStyleDefinition(this,A);e&&(t.strokeStyle=e)}else if(n.hasValue()){"currentColor"===n.getString()&&n.setValue(this.getStyle("color").getColor());const e=n.getString();"inherit"!==e&&(t.strokeStyle="none"===e?"rgba(0,0,0,0)":e)}if(A.hasValue()){const e=new et(this.document,"stroke",t.strokeStyle).addOpacity(A).getString();t.strokeStyle=e}const a=this.getStyle("stroke-width");if(a.hasValue()){const e=a.getPixels();t.lineWidth=e||L}const r=this.getStyle("stroke-linecap"),o=this.getStyle("stroke-linejoin"),s=this.getStyle("stroke-miterlimit"),c=this.getStyle("stroke-dasharray"),l=this.getStyle("stroke-dashoffset");if(r.hasValue()&&(t.lineCap=r.getString()),o.hasValue()&&(t.lineJoin=o.getString()),s.hasValue()&&(t.miterLimit=s.getNumber()),c.hasValue()&&"none"!==c.getString()){const e=P(c.getString());void 0!==t.setLineDash?t.setLineDash(e):void 0!==t.webkitLineDash?t.webkitLineDash=e:void 0===t.mozDash||1===e.length&&0===e[0]||(t.mozDash=e);const i=l.getPixels();void 0!==t.lineDashOffset?t.lineDashOffset=i:void 0!==t.webkitLineDashOffset?t.webkitLineDashOffset=i:void 0!==t.mozDashOffset&&(t.mozDashOffset=i)}}if(this.modifiedEmSizeStack=!1,void 0!==t.font){const e=this.getStyle("font"),i=this.getStyle("font-style"),n=this.getStyle("font-variant"),A=this.getStyle("font-weight"),a=this.getStyle("font-size"),r=this.getStyle("font-family"),o=new Yt(i.getString(),n.getString(),A.getString(),a.hasValue()?`${a.getPixels(!0)}px`:"",r.getString(),Yt.parse(e.getString(),t.font));i.setValue(o.fontStyle),n.setValue(o.fontVariant),A.setValue(o.fontWeight),a.setValue(o.fontSize),r.setValue(o.fontFamily),t.font=o.toString(),a.isPixels()&&(this.document.emSize=a.getPixels(),this.modifiedEmSizeStack=!0)}e||(this.applyEffects(t),t.globalAlpha=this.calculateOpacity())}clearContext(t){super.clearContext(t),this.modifiedEmSizeStack&&this.document.popEmSize()}constructor(...t){var e,i,n;super(...t),n=!1,(i="modifiedEmSizeStack")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}}function Ht(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Ut extends Rt{setContext(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];super.setContext(t,e);const i=this.getStyle("dominant-baseline").getTextBaseline()||this.getStyle("alignment-baseline").getTextBaseline();i&&(t.textBaseline=i)}initializeCoordinates(){this.x=0,this.y=0,this.leafTexts=[],this.textChunkStart=0,this.minX=Number.POSITIVE_INFINITY,this.maxX=Number.NEGATIVE_INFINITY}getBoundingBox(t){if("text"!==this.type)return this.getTElementBoundingBox(t);this.initializeCoordinates(),this.adjustChildCoordinatesRecursive(t);let e=null;return this.children.forEach(((i,n)=>{const A=this.getChildBoundingBox(t,this,this,n);e?e.addBoundingBox(A):e=A})),e}getFontSize(){const{document:t,parent:e}=this,i=Yt.parse(t.ctx.font).fontSize;return e.getStyle("font-size").getNumber(i)}getTElementBoundingBox(t){const e=this.getFontSize();return new kt(this.x,this.y-e,this.x+this.measureText(t),this.y)}getGlyph(t,e,i){const n=e[i];let A;if(t.isArabic){var a;const r=e.length,o=e[i-1],s=e[i+1];let c="isolated";(0===i||" "===o)&&i<r-1&&" "!==s&&(c="terminal"),i>0&&" "!==o&&i<r-1&&" "!==s&&(c="medial"),i>0&&" "!==o&&(i===r-1||" "===s)&&(c="initial"),A=(null===(a=t.arabicGlyphs[n])||void 0===a?void 0:a[c])||t.glyphs[n]}else A=t.glyphs[n];return A||(A=t.missingGlyph),A}getText(){return""}getTextFromNode(t){const e=t||this.node,i=Array.from(e.parentNode.childNodes),n=i.indexOf(e),A=i.length-1;let a=F(e.textContent||"");return 0===n&&(a=a.replace(/^[\n \t]+/,"")),n===A&&(a=function(t){return t.replace(/[\n \t]+$/,"")}(a)),a}renderChildren(t){if("text"!==this.type)return void this.renderTElementChildren(t);this.initializeCoordinates(),this.adjustChildCoordinatesRecursive(t),this.children.forEach(((e,i)=>{this.renderChild(t,this,this,i)}));const{mouse:e}=this.document.screen;e.isWorking()&&e.checkBoundingBox(this,this.getBoundingBox(t))}renderTElementChildren(t){const{document:e,parent:i}=this,n=this.getText(),A=i.getStyle("font-family").getDefinition();if(null==A?void 0:A.fontFace){const{unitsPerEm:a}=A.fontFace,r=Yt.parse(e.ctx.font),o=i.getStyle("font-size").getNumber(r.fontSize),s=i.getStyle("font-style").getString(r.fontStyle),c=o/a,l=A.isRTL?n.split("").reverse().join(""):n,g=P(i.getAttribute("dx").getString()),h=l.length;for(let e=0;e<h;e++){const i=this.getGlyph(A,l,e);t.translate(this.x,this.y),t.scale(c,-c);const n=t.lineWidth;t.lineWidth=t.lineWidth*a/o,"italic"===s&&t.transform(1,0,.4,1,0,0),i.render(t),"italic"===s&&t.transform(1,0,-.4,1,0,0),t.lineWidth=n,t.scale(1/c,-1/c),t.translate(-this.x,-this.y),this.x+=o*(i.horizAdvX||A.horizAdvX)/a,void 0===g[e]||isNaN(g[e])||(this.x+=g[e])}return}const{x:a,y:r}=this;t.fillStyle&&t.fillText(n,a,r),t.strokeStyle&&t.strokeText(n,a,r)}applyAnchoring(){if(this.textChunkStart>=this.leafTexts.length)return;const t=this.leafTexts[this.textChunkStart],e=t.getStyle("text-anchor").getString("start");let i=0;i="start"===e?t.x-this.minX:"end"===e?t.x-this.maxX:t.x-(this.minX+this.maxX)/2;for(let t=this.textChunkStart;t<this.leafTexts.length;t++)this.leafTexts[t].x+=i;this.minX=Number.POSITIVE_INFINITY,this.maxX=Number.NEGATIVE_INFINITY,this.textChunkStart=this.leafTexts.length}adjustChildCoordinatesRecursive(t){this.children.forEach(((e,i)=>{this.adjustChildCoordinatesRecursiveCore(t,this,this,i)})),this.applyAnchoring()}adjustChildCoordinatesRecursiveCore(t,e,i,n){const A=i.children[n];A.children.length>0?A.children.forEach(((i,n)=>{e.adjustChildCoordinatesRecursiveCore(t,e,A,n)})):this.adjustChildCoordinates(t,e,i,n)}adjustChildCoordinates(t,e,i,n){const A=i.children[n];if("function"!=typeof A.measureText)return A;t.save(),A.setContext(t,!0);const a=A.getAttribute("x"),r=A.getAttribute("y"),o=A.getAttribute("dx"),s=A.getAttribute("dy"),c=A.getStyle("font-family").getDefinition(),l=Boolean(null==c?void 0:c.isRTL);0===n&&(a.hasValue()||a.setValue(A.getInheritedAttribute("x")),r.hasValue()||r.setValue(A.getInheritedAttribute("y")),o.hasValue()||o.setValue(A.getInheritedAttribute("dx")),s.hasValue()||s.setValue(A.getInheritedAttribute("dy")));const g=A.measureText(t);return l&&(e.x-=g),a.hasValue()?(e.applyAnchoring(),A.x=a.getPixels("x"),o.hasValue()&&(A.x+=o.getPixels("x"))):(o.hasValue()&&(e.x+=o.getPixels("x")),A.x=e.x),e.x=A.x,l||(e.x+=g),r.hasValue()?(A.y=r.getPixels("y"),s.hasValue()&&(A.y+=s.getPixels("y"))):(s.hasValue()&&(e.y+=s.getPixels("y")),A.y=e.y),e.y=A.y,e.leafTexts.push(A),e.minX=Math.min(e.minX,A.x,A.x+g),e.maxX=Math.max(e.maxX,A.x,A.x+g),A.clearContext(t),t.restore(),A}getChildBoundingBox(t,e,i,n){const A=i.children[n];if("function"!=typeof A.getBoundingBox)return null;const a=A.getBoundingBox(t);return a&&A.children.forEach(((i,n)=>{const r=e.getChildBoundingBox(t,e,A,n);a.addBoundingBox(r)})),a}renderChild(t,e,i,n){const A=i.children[n];A.render(t),A.children.forEach(((i,n)=>{e.renderChild(t,e,A,n)}))}measureText(t){const{measureCache:e}=this;if(~e)return e;const i=this.getText(),n=this.measureTargetText(t,i);return this.measureCache=n,n}measureTargetText(t,e){if(!e.length)return 0;const{parent:i}=this,n=i.getStyle("font-family").getDefinition();if(n){const t=this.getFontSize(),A=n.isRTL?e.split("").reverse().join(""):e,a=P(i.getAttribute("dx").getString()),r=A.length;let o=0;for(let e=0;e<r;e++){o+=(this.getGlyph(n,A,e).horizAdvX||n.horizAdvX)*t/n.fontFace.unitsPerEm,void 0===a[e]||isNaN(a[e])||(o+=a[e])}return o}if(!t.measureText)return 10*e.length;t.save(),this.setContext(t,!0);const{width:A}=t.measureText(e);return this.clearContext(t),t.restore(),A}getInheritedAttribute(t){let e=this;for(;e instanceof Ut&&e.isFirstChild()&&e.parent;){const i=e.parent.getAttribute(t);if(i.hasValue(!0))return i.getString("0");e=e.parent}return null}constructor(t,e,i){super(t,e,new.target===Ut||i),Ht(this,"type","text"),Ht(this,"x",0),Ht(this,"y",0),Ht(this,"leafTexts",[]),Ht(this,"textChunkStart",0),Ht(this,"minX",Number.POSITIVE_INFINITY),Ht(this,"maxX",Number.NEGATIVE_INFINITY),Ht(this,"measureCache",-1)}}function Gt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Tt extends Ut{getText(){return this.text}constructor(t,e,i){super(t,e,new.target===Tt||i),Gt(this,"type","tspan"),Gt(this,"text",void 0),this.text=this.children.length>0?"":this.getTextFromNode()}}class Ot extends Tt{constructor(...t){var e,i,n;super(...t),n="textNode",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}}function Jt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Lt extends B.SVGPathData{reset(){this.i=-1,this.command=null,this.previousCommand=null,this.start=new rt(0,0),this.control=new rt(0,0),this.current=new rt(0,0),this.points=[],this.angles=[]}isEnd(){const{i:t,commands:e}=this;return t>=e.length-1}next(){const t=this.commands[++this.i];return this.previousCommand=this.command,this.command=t,t}getPoint(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"x",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"y";const i=new rt(this.command[t],this.command[e]);return this.makeAbsolute(i)}getAsControlPoint(t,e){const i=this.getPoint(t,e);return this.control=i,i}getAsCurrentPoint(t,e){const i=this.getPoint(t,e);return this.current=i,i}getReflectedControlPoint(){const t=this.previousCommand.type;if(t!==B.SVGPathData.CURVE_TO&&t!==B.SVGPathData.SMOOTH_CURVE_TO&&t!==B.SVGPathData.QUAD_TO&&t!==B.SVGPathData.SMOOTH_QUAD_TO)return this.current;const{current:{x:e,y:i},control:{x:n,y:A}}=this;return new rt(2*e-n,2*i-A)}makeAbsolute(t){if(this.command.relative){const{x:e,y:i}=this.current;t.x+=e,t.y+=i}return t}addMarker(t,e,i){const{points:n,angles:A}=this;i&&A.length>0&&!A[A.length-1]&&(A[A.length-1]=n[n.length-1].angleTo(i)),this.addMarkerAngle(t,e?e.angleTo(t):null)}addMarkerAngle(t,e){this.points.push(t),this.angles.push(e)}getMarkerPoints(){return this.points}getMarkerAngles(){const{angles:t}=this,e=t.length;for(let i=0;i<e;i++)if(!t[i])for(let n=i+1;n<e;n++)if(t[n]){t[i]=t[n];break}return t}constructor(t){super(t.replace(/([+\-.])\s+/gm,"$1").replace(/[^MmZzLlHhVvCcSsQqTtAae\d\s.,+-].*/g,"")),Jt(this,"control",new rt(0,0)),Jt(this,"start",new rt(0,0)),Jt(this,"current",new rt(0,0)),Jt(this,"command",null),Jt(this,"commands",this.commands),Jt(this,"i",-1),Jt(this,"previousCommand",null),Jt(this,"points",[]),Jt(this,"angles",[])}}function zt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class jt extends Rt{path(t){const{pathParser:e}=this,i=new kt;for(e.reset(),t&&t.beginPath();!e.isEnd();)switch(e.next().type){case Lt.MOVE_TO:this.pathM(t,i);break;case Lt.LINE_TO:this.pathL(t,i);break;case Lt.HORIZ_LINE_TO:this.pathH(t,i);break;case Lt.VERT_LINE_TO:this.pathV(t,i);break;case Lt.CURVE_TO:this.pathC(t,i);break;case Lt.SMOOTH_CURVE_TO:this.pathS(t,i);break;case Lt.QUAD_TO:this.pathQ(t,i);break;case Lt.SMOOTH_QUAD_TO:this.pathT(t,i);break;case Lt.ARC:this.pathA(t,i);break;case Lt.CLOSE_PATH:this.pathZ(t,i)}return i}getBoundingBox(t){return this.path()}getMarkers(){const{pathParser:t}=this,e=t.getMarkerPoints(),i=t.getMarkerAngles();if(!e||!i)return null;return e.map(((t,e)=>[t,i[e]]))}renderChildren(t){this.path(t),this.document.screen.mouse.checkPath(this,t);const e=this.getStyle("fill-rule");""!==t.fillStyle&&("inherit"!==e.getString("inherit")?t.fill(e.getString()):t.fill()),""!==t.strokeStyle&&("non-scaling-stroke"===this.getAttribute("vector-effect").getString()?(t.save(),t.setTransform(1,0,0,1,0,0),t.stroke(),t.restore()):t.stroke());const i=this.getMarkers();if(i){const e=i.length-1,n=this.getStyle("marker-start"),A=this.getStyle("marker-mid"),a=this.getStyle("marker-end");if(n.isUrlDefinition()){const e=n.getDefinition(),[A,a]=i[0];e&&e.render(t,A,null===a?void 0:a)}if(A.isUrlDefinition()){const n=A.getDefinition();for(let A=1;A<e;A++){const[e,a]=i[A];n&&n.render(t,e,null===a?void 0:a)}}if(a.isUrlDefinition()){const n=a.getDefinition(),[A,r]=i[e];n&&n.render(t,A,null===r?void 0:r)}}}static pathM(t){const e=t.getAsCurrentPoint();return t.start=t.current,{point:e}}pathM(t,e){const{pathParser:i}=this,{point:n}=jt.pathM(i),{x:A,y:a}=n;i.addMarker(n),e.addPoint(A,a),t&&t.moveTo(A,a)}static pathL(t){const{current:e}=t;return{current:e,point:t.getAsCurrentPoint()}}pathL(t,e){const{pathParser:i}=this,{current:n,point:A}=jt.pathL(i),{x:a,y:r}=A;i.addMarker(A,n),e.addPoint(a,r),t&&t.lineTo(a,r)}static pathH(t){const{current:e,command:i}=t,n=new rt(((null==i?void 0:i.relative)?e.x:0)+i.x,e.y);return t.current=n,{current:e,point:n}}pathH(t,e){const{pathParser:i}=this,{current:n,point:A}=jt.pathH(i),{x:a,y:r}=A;i.addMarker(A,n),e.addPoint(a,r),t&&t.lineTo(a,r)}static pathV(t){const{current:e,command:i}=t,n=new rt(e.x,(i.relative?e.y:0)+i.y);return t.current=n,{current:e,point:n}}pathV(t,e){const{pathParser:i}=this,{current:n,point:A}=jt.pathV(i),{x:a,y:r}=A;i.addMarker(A,n),e.addPoint(a,r),t&&t.lineTo(a,r)}static pathC(t){const{current:e}=t;return{current:e,point:t.getPoint("x1","y1"),controlPoint:t.getAsControlPoint("x2","y2"),currentPoint:t.getAsCurrentPoint()}}pathC(t,e){const{pathParser:i}=this,{current:n,point:A,controlPoint:a,currentPoint:r}=jt.pathC(i);i.addMarker(r,a,A),e.addBezierCurve(n.x,n.y,A.x,A.y,a.x,a.y,r.x,r.y),t&&t.bezierCurveTo(A.x,A.y,a.x,a.y,r.x,r.y)}static pathS(t){const{current:e}=t;return{current:e,point:t.getReflectedControlPoint(),controlPoint:t.getAsControlPoint("x2","y2"),currentPoint:t.getAsCurrentPoint()}}pathS(t,e){const{pathParser:i}=this,{current:n,point:A,controlPoint:a,currentPoint:r}=jt.pathS(i);i.addMarker(r,a,A),e.addBezierCurve(n.x,n.y,A.x,A.y,a.x,a.y,r.x,r.y),t&&t.bezierCurveTo(A.x,A.y,a.x,a.y,r.x,r.y)}static pathQ(t){const{current:e}=t;return{current:e,controlPoint:t.getAsControlPoint("x1","y1"),currentPoint:t.getAsCurrentPoint()}}pathQ(t,e){const{pathParser:i}=this,{current:n,controlPoint:A,currentPoint:a}=jt.pathQ(i);i.addMarker(a,A,A),e.addQuadraticCurve(n.x,n.y,A.x,A.y,a.x,a.y),t&&t.quadraticCurveTo(A.x,A.y,a.x,a.y)}static pathT(t){const{current:e}=t,i=t.getReflectedControlPoint();t.control=i;return{current:e,controlPoint:i,currentPoint:t.getAsCurrentPoint()}}pathT(t,e){const{pathParser:i}=this,{current:n,controlPoint:A,currentPoint:a}=jt.pathT(i);i.addMarker(a,A,A),e.addQuadraticCurve(n.x,n.y,A.x,A.y,a.x,a.y),t&&t.quadraticCurveTo(A.x,A.y,a.x,a.y)}static pathA(t){const{current:e,command:i}=t;let{rX:n,rY:A,xRot:a,lArcFlag:r,sweepFlag:o}=i;const s=a*(Math.PI/180),c=t.getAsCurrentPoint(),l=new rt(Math.cos(s)*(e.x-c.x)/2+Math.sin(s)*(e.y-c.y)/2,-Math.sin(s)*(e.x-c.x)/2+Math.cos(s)*(e.y-c.y)/2),g=Math.pow(l.x,2)/Math.pow(n,2)+Math.pow(l.y,2)/Math.pow(A,2);g>1&&(n*=Math.sqrt(g),A*=Math.sqrt(g));let h=(r===o?-1:1)*Math.sqrt((Math.pow(n,2)*Math.pow(A,2)-Math.pow(n,2)*Math.pow(l.y,2)-Math.pow(A,2)*Math.pow(l.x,2))/(Math.pow(n,2)*Math.pow(l.y,2)+Math.pow(A,2)*Math.pow(l.x,2)));isNaN(h)&&(h=0);const d=new rt(h*n*l.y/A,h*-A*l.x/n),u=new rt((e.x+c.x)/2+Math.cos(s)*d.x-Math.sin(s)*d.y,(e.y+c.y)/2+Math.sin(s)*d.x+Math.cos(s)*d.y),w=V([1,0],[(l.x-d.x)/n,(l.y-d.y)/A]),B=[(l.x-d.x)/n,(l.y-d.y)/A],p=[(-l.x-d.x)/n,(-l.y-d.y)/A];let m=V(B,p);return j(B,p)<=-1&&(m=Math.PI),j(B,p)>=1&&(m=0),{currentPoint:c,rX:n,rY:A,sweepFlag:o,xAxisRotation:s,centp:u,a1:w,ad:m}}pathA(t,e){const{pathParser:i}=this,{currentPoint:n,rX:A,rY:a,sweepFlag:r,xAxisRotation:o,centp:s,a1:c,ad:l}=jt.pathA(i),g=1-r?1:-1,h=c+g*(l/2),d=new rt(s.x+A*Math.cos(h),s.y+a*Math.sin(h));if(i.addMarkerAngle(d,h-g*Math.PI/2),i.addMarkerAngle(n,h-g*Math.PI),e.addPoint(n.x,n.y),t&&!isNaN(c)&&!isNaN(l)){const e=A>a?A:a,i=A>a?1:A/a,n=A>a?a/A:1;t.translate(s.x,s.y),t.rotate(o),t.scale(i,n),t.arc(0,0,e,c,c+l,Boolean(1-r)),t.scale(1/i,1/n),t.rotate(-o),t.translate(-s.x,-s.y)}}static pathZ(t){t.current=t.start}pathZ(t,e){jt.pathZ(this.pathParser),t&&e.x1!==e.x2&&e.y1!==e.y2&&t.closePath()}constructor(t,e,i){super(t,e,i),zt(this,"type","path"),zt(this,"pathParser",void 0),this.pathParser=new Lt(this.getAttribute("d").getString())}}function Vt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Kt extends Rt{setContext(t){var e;const{document:i}=this,{screen:n,window:A}=i,a=t.canvas;if(n.setDefaults(t),"style"in a&&void 0!==t.font&&A&&void 0!==A.getComputedStyle){t.font=A.getComputedStyle(a).getPropertyValue("font");const e=new et(i,"fontSize",Yt.parse(t.font).fontSize);e.hasValue()&&(i.rootEmSize=e.getPixels("y"),i.emSize=i.rootEmSize)}this.getAttribute("x").hasValue()||this.getAttribute("x",!0).setValue(0),this.getAttribute("y").hasValue()||this.getAttribute("y",!0).setValue(0);let{width:r,height:o}=n.viewPort;this.getStyle("width").hasValue()||this.getStyle("width",!0).setValue("100%"),this.getStyle("height").hasValue()||this.getStyle("height",!0).setValue("100%"),this.getStyle("color").hasValue()||this.getStyle("color",!0).setValue("black");const s=this.getAttribute("refX"),c=this.getAttribute("refY"),l=this.getAttribute("viewBox"),g=l.hasValue()?P(l.getString()):null,h=!this.root&&"visible"!==this.getStyle("overflow").getValue("hidden");let d=0,u=0,w=0,B=0;g&&(d=g[0],u=g[1]),this.root||(r=this.getStyle("width").getPixels("x"),o=this.getStyle("height").getPixels("y"),"marker"===this.type&&(w=d,B=u,d=0,u=0)),n.viewPort.setCurrent(r,o),!this.node||this.parent&&"foreignObject"!==(null===(e=this.node.parentNode)||void 0===e?void 0:e.nodeName)||!this.getStyle("transform",!1,!0).hasValue()||this.getStyle("transform-origin",!1,!0).hasValue()||this.getStyle("transform-origin",!0,!0).setValue("50% 50%"),super.setContext(t),t.translate(this.getAttribute("x").getPixels("x"),this.getAttribute("y").getPixels("y")),g&&(r=g[2],o=g[3]),i.setViewBox({ctx:t,aspectRatio:this.getAttribute("preserveAspectRatio").getString(),width:n.viewPort.width,desiredWidth:r,height:n.viewPort.height,desiredHeight:o,minX:d,minY:u,refX:s.getValue(),refY:c.getValue(),clip:h,clipX:w,clipY:B}),g&&(n.viewPort.removeCurrent(),n.viewPort.setCurrent(r,o))}clearContext(t){super.clearContext(t),this.document.screen.viewPort.removeCurrent()}resize(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=this.getAttribute("width",!0),A=this.getAttribute("height",!0),a=this.getAttribute("viewBox"),r=this.getAttribute("style"),o=n.getNumber(0),s=A.getNumber(0);if(i)if("string"==typeof i)this.getAttribute("preserveAspectRatio",!0).setValue(i);else{const t=this.getAttribute("preserveAspectRatio");t.hasValue()&&t.setValue(t.getString().replace(/^\s*(\S.*\S)\s*$/,"$1"))}if(n.setValue(t),A.setValue(e),a.hasValue()||a.setValue(`0 0 ${o||t} ${s||e}`),r.hasValue()){const i=this.getStyle("width"),n=this.getStyle("height");i.hasValue()&&i.setValue(`${t}px`),n.hasValue()&&n.setValue(`${e}px`)}}constructor(...t){super(...t),Vt(this,"type","svg"),Vt(this,"root",!1)}}class Wt extends jt{path(t){const e=this.getAttribute("x").getPixels("x"),i=this.getAttribute("y").getPixels("y"),n=this.getStyle("width",!1,!0).getPixels("x"),A=this.getStyle("height",!1,!0).getPixels("y"),a=this.getAttribute("rx"),r=this.getAttribute("ry");let o=a.getPixels("x"),s=r.getPixels("y");if(a.hasValue()&&!r.hasValue()&&(s=o),r.hasValue()&&!a.hasValue()&&(o=s),o=Math.min(o,n/2),s=Math.min(s,A/2),t){const a=(Math.sqrt(2)-1)/3*4;t.beginPath(),A>0&&n>0&&(t.moveTo(e+o,i),t.lineTo(e+n-o,i),t.bezierCurveTo(e+n-o+a*o,i,e+n,i+s-a*s,e+n,i+s),t.lineTo(e+n,i+A-s),t.bezierCurveTo(e+n,i+A-s+a*s,e+n-o+a*o,i+A,e+n-o,i+A),t.lineTo(e+o,i+A),t.bezierCurveTo(e+o-a*o,i+A,e,i+A-s+a*s,e,i+A-s),t.lineTo(e,i+s),t.bezierCurveTo(e,i+s-a*s,e+o-a*o,i,e+o,i),t.closePath())}return new kt(e,i,e+n,i+A)}getMarkers(){return null}constructor(...t){var e,i,n;super(...t),n="rect",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}}function Xt(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class qt extends jt{path(t){const{points:e}=this,[{x:i,y:n}]=e,A=new kt(i,n);return t&&(t.beginPath(),t.moveTo(i,n)),e.forEach((e=>{let{x:i,y:n}=e;A.addPoint(i,n),t&&t.lineTo(i,n)})),A}getMarkers(){const{points:t}=this,e=t.length-1,i=[];return t.forEach(((n,A)=>{A!==e&&i.push([n,n.angleTo(t[A+1])])})),i.length>0&&i.push([t[t.length-1],i[i.length-1][1]]),i}constructor(t,e,i){super(t,e,i),Xt(this,"type","polyline"),Xt(this,"points",[]),this.points=rt.parsePath(this.getAttribute("points").getString())}}class Zt extends Rt{getBoundingBox(t){const e=new kt;return this.children.forEach((i=>{i instanceof jt&&e.addBoundingBox(i.getBoundingBox(t))})),e}constructor(...t){var e,i,n;super(...t),n="g",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}}function $t(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class _t extends vt{getGradientUnits(){return this.getAttribute("gradientUnits").getString("objectBoundingBox")}createGradient(t,e,i){let n=this;this.getHrefAttribute().hasValue()&&(n=this.getHrefAttribute().getDefinition(),this.inheritStopContainer(n));const{stops:A}=n,a=this.getGradient(t,e);if(!a)return this.addParentOpacity(i,A[A.length-1].color);if(A.forEach((t=>{a.addColorStop(t.offset,this.addParentOpacity(i,t.color))})),this.getAttribute("gradientTransform").hasValue()){const{document:t}=this,{MAX_VIRTUAL_PIXELS:e}=ht,{viewPort:i}=t.screen,n=i.getRoot(),A=new Wt(t);A.attributes.x=new et(t,"x",-e/3),A.attributes.y=new et(t,"y",-e/3),A.attributes.width=new et(t,"width",e),A.attributes.height=new et(t,"height",e);const r=new Zt(t);r.attributes.transform=new et(t,"transform",this.getAttribute("gradientTransform").getValue()),r.children=[A];const o=new Kt(t);o.attributes.x=new et(t,"x",0),o.attributes.y=new et(t,"y",0),o.attributes.width=new et(t,"width",n.width),o.attributes.height=new et(t,"height",n.height),o.children=[r];const s=t.createCanvas(n.width,n.height),c=s.getContext("2d");return c.fillStyle=a,o.render(c),c.createPattern(s,"no-repeat")}return a}inheritStopContainer(t){this.attributesToInherit.forEach((e=>{!this.getAttribute(e).hasValue()&&t.getAttribute(e).hasValue()&&this.getAttribute(e,!0).setValue(t.getAttribute(e).getValue())}))}addParentOpacity(t,e){if(t.hasValue()){return new et(this.document,"color",e).addOpacity(t).getColor()}return e}constructor(t,e,i){super(t,e,i),$t(this,"attributesToInherit",["gradientUnits"]),$t(this,"stops",[]);const{stops:n,children:A}=this;A.forEach((t=>{"stop"===t.type&&n.push(t)}))}}function te(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function ee(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class ie extends vt{getProperty(){var t;const e=this.getAttribute("attributeType").getString(),i=this.getAttribute("attributeName").getString();var n;return"CSS"===e?null===(n=this.parent)||void 0===n?void 0:n.getStyle(i,!0):null===(t=this.parent)||void 0===t?void 0:t.getAttribute(i,!0)}calcValue(){const{initialUnits:t}=this,{progress:e,from:i,to:n}=this.getProgress();let A=i.getNumber()+(n.getNumber()-i.getNumber())*e;return"%"===t&&(A*=100),`${A}${t}`}update(t){const{parent:e}=this,i=this.getProperty();if(!i)return!1;if(this.initialValue||(this.initialValue=i.getString(),this.initialUnits=i.getUnits()),this.duration>this.maxDuration){const t=this.getAttribute("fill").getString("remove");if("indefinite"===this.getAttribute("repeatCount").getString()||"indefinite"===this.getAttribute("repeatDur").getString())this.duration=0;else if("freeze"!==t||this.frozen){if("remove"===t&&!this.removed)return this.removed=!0,e&&i&&i.setValue(e.animationFrozen?e.animationFrozenValue:this.initialValue),!0}else this.frozen=!0,e&&i&&(e.animationFrozen=!0,e.animationFrozenValue=i.getString());return!1}this.duration+=t;let n=!1;if(this.begin<this.duration){let t=this.calcValue();const e=this.getAttribute("type");if(e.hasValue()){t=`${e.getString()}(${t})`}i.setValue(t),n=!0}return n}getProgress(){const{document:t,values:e}=this;let i,n,A=(this.duration-this.begin)/(this.maxDuration-this.begin);if(e.hasValue()){const a=A*(e.getValue().length-1),r=Math.floor(a),o=Math.ceil(a);let s;s=e.getValue()[r],i=new et(t,"from",s?parseFloat(s):0),s=e.getValue()[o],n=new et(t,"to",s?parseFloat(s):0),A=(a-r)/(o-r)}else i=this.from,n=this.to;return{progress:A,from:i,to:n}}constructor(t,e,i){super(t,e,i),ee(this,"type","animate"),ee(this,"begin",void 0),ee(this,"maxDuration",void 0),ee(this,"from",void 0),ee(this,"to",void 0),ee(this,"values",void 0),ee(this,"duration",0),ee(this,"initialValue",void 0),ee(this,"initialUnits",""),ee(this,"removed",!1),ee(this,"frozen",!1),t.screen.animations.push(this),this.begin=this.getAttribute("begin").getMilliseconds(),this.maxDuration=this.begin+this.getAttribute("dur").getMilliseconds(),this.from=this.getAttribute("from"),this.to=this.getAttribute("to"),this.values=new et(t,"values",null);const n=this.getAttribute("values");n.hasValue()&&this.values.setValue(n.getString().split(";"))}}function ne(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Ae extends vt{constructor(t,e,i){super(t,e,i),ne(this,"type","font-face"),ne(this,"ascent",void 0),ne(this,"descent",void 0),ne(this,"unitsPerEm",void 0),this.ascent=this.getAttribute("ascent").getNumber(),this.descent=this.getAttribute("descent").getNumber(),this.unitsPerEm=this.getAttribute("units-per-em").getNumber()}}function ae(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class re extends jt{constructor(t,e,i){super(t,e,i),ae(this,"type","glyph"),ae(this,"horizAdvX",void 0),ae(this,"unicode",void 0),ae(this,"arabicForm",void 0),this.horizAdvX=this.getAttribute("horiz-adv-x").getNumber(),this.unicode=this.getAttribute("unicode").getString(),this.arabicForm=this.getAttribute("arabic-form").getString()}}function oe(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class se extends re{constructor(...t){super(...t),oe(this,"type","missing-glyph"),oe(this,"horizAdvX",0)}}function ce(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function le(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function ge(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function he(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const de=/^\s*data:(([^/,;]+\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;function ue(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class we{async load(t,e){try{const{document:i}=this,n=(await i.pith.parser.load(e)).getElementsByTagName("font");Array.from(n).forEach((e=>{const n=i.createElement(e);i.definitions[t]=n}))}catch(t){console.error(`Error while loading font "${e}":`,t)}this.loaded=!0}constructor(t){ue(this,"document",void 0),ue(this,"loaded",void 0),this.document=t,this.loaded=!1,t.fonts.push(this)}}function Be(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class pe extends vt{constructor(t,e,i){super(t,e,i),Be(this,"type","style");F(Array.from(e.childNodes).map((t=>t.textContent)).join("").replace(/(\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm,"").replace(/@import.*;/g,"")).split("}").forEach((e=>{const i=e.trim();if(!i)return;const n=i.split("{"),A=n[0].split(","),a=n[1].split(";");A.forEach((e=>{const i=e.trim();if(!i)return;const n=t.styles[i]||{};if(a.forEach((e=>{const i=e.indexOf(":"),A=e.substr(0,i).trim(),a=e.substr(i+1,e.length-i).trim();A&&a&&(n[A]=new et(t,A,a))})),t.styles[i]=n,t.stylesSpecificity[i]=function(t){const e=[0,0,0];let i=t.replace(/:not\(([^)]*)\)/g," $1 ").replace(/{[\s\S]*/gm," "),n=0;return[i,n]=J(i,k),e[1]+=n,[i,n]=J(i,R),e[0]+=n,[i,n]=J(i,H),e[1]+=n,[i,n]=J(i,U),e[2]+=n,[i,n]=J(i,G),e[1]+=n,[i,n]=J(i,T),e[1]+=n,i=i.replace(/[*\s+>~]/g," ").replace(/[#.]/g," "),[i,n]=J(i,O),e[2]+=n,e.join("")}(i),"@font-face"===i){const e=n["font-family"].getString().replace(/"|'/g,"");n.src.getString().split(",").forEach((i=>{if(i.indexOf('format("svg")')>0){const n=N(i);n&&new we(t).load(e,n)}}))}}))}))}}function me(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}Be(pe,"parseExternalUrl",N);function Ee(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function fe(t,e,i,n,A,a){return t[i*n*4+4*e+a]}function Ce(t,e,i,n,A,a,r){t[i*n*4+4*e+a]=r}function Qe(t,e,i){return t[e]*i}function ye(t,e,i,n){return e+Math.cos(t)*i+Math.sin(t)*n}class Ie extends vt{apply(t,e,i,n,A){const{includeOpacity:a,matrix:r}=this,o=t.getImageData(0,0,n,A);for(let t=0;t<A;t++)for(let e=0;e<n;e++){const i=fe(o.data,e,t,n,0,0),A=fe(o.data,e,t,n,0,1),s=fe(o.data,e,t,n,0,2),c=fe(o.data,e,t,n,0,3);let l=Qe(r,0,i)+Qe(r,1,A)+Qe(r,2,s)+Qe(r,3,c)+Qe(r,4,1),g=Qe(r,5,i)+Qe(r,6,A)+Qe(r,7,s)+Qe(r,8,c)+Qe(r,9,1),h=Qe(r,10,i)+Qe(r,11,A)+Qe(r,12,s)+Qe(r,13,c)+Qe(r,14,1),d=Qe(r,15,i)+Qe(r,16,A)+Qe(r,17,s)+Qe(r,18,c)+Qe(r,19,1);a&&(l=0,g=0,h=0,d*=c/255),Ce(o.data,e,t,n,0,0,l),Ce(o.data,e,t,n,0,1,g),Ce(o.data,e,t,n,0,2,h),Ce(o.data,e,t,n,0,3,d)}t.clearRect(0,0,n,A),t.putImageData(o,0,0)}constructor(t,e,i){super(t,e,i),Ee(this,"type","feColorMatrix"),Ee(this,"matrix",void 0),Ee(this,"includeOpacity",void 0);let n=P(this.getAttribute("values").getString());switch(this.getAttribute("type").getString("matrix")){case"saturate":{const t=n[0];n=[.213+.787*t,.715-.715*t,.072-.072*t,0,0,.213-.213*t,.715+.285*t,.072-.072*t,0,0,.213-.213*t,.715-.715*t,.072+.928*t,0,0,0,0,0,1,0,0,0,0,0,1];break}case"hueRotate":{const t=n[0]*Math.PI/180;n=[ye(t,.213,.787,-.213),ye(t,.715,-.715,-.715),ye(t,.072,-.072,.928),0,0,ye(t,.213,-.213,.143),ye(t,.715,.285,.14),ye(t,.072,-.072,-.283),0,0,ye(t,.213,-.213,-.787),ye(t,.715,-.715,.715),ye(t,.072,.928,.072),0,0,0,0,0,1,0,0,0,0,0,1];break}case"luminanceToAlpha":n=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,.2125,.7154,.0721,0,0,0,0,0,0,1]}this.matrix=n,this.includeOpacity=this.getAttribute("includeOpacity").hasValue()}}function De(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class xe extends vt{apply(t,e){const{document:i}=this;let n=this.getAttribute("x").getPixels("x"),A=this.getAttribute("y").getPixels("y"),a=this.getStyle("width").getPixels("x"),r=this.getStyle("height").getPixels("y");if(!a&&!r){const e=new kt;this.children.forEach((i=>{i instanceof jt&&e.addBoundingBox(i.getBoundingBox(t))})),n=Math.floor(e.x1),A=Math.floor(e.y1),a=Math.floor(e.width),r=Math.floor(e.height)}const o=this.removeStyles(e,xe.ignoreStyles),s=i.createCanvas(n+a,A+r),c=s.getContext("2d");i.screen.setDefaults(c),this.renderChildren(c),new Ie(i,{nodeType:1,childNodes:[],attributes:[{nodeName:"type",value:"luminanceToAlpha"},{nodeName:"includeOpacity",value:"true"}]}).apply(c,0,0,n+a,A+r);const l=i.createCanvas(n+a,A+r),g=l.getContext("2d");i.screen.setDefaults(g),e.render(g),g.globalCompositeOperation="destination-in",g.fillStyle=c.createPattern(s,"no-repeat"),g.fillRect(0,0,n+a,A+r),t.fillStyle=g.createPattern(l,"no-repeat"),t.fillRect(0,0,n+a,A+r),this.restoreStyles(e,o)}render(t){}constructor(...t){super(...t),De(this,"type","mask")}}De(xe,"ignoreStyles",["mask","transform","clip-path"]);const ve=()=>{};function Me(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Se extends vt{apply(t,e,i,n,A){const{document:a,blurRadius:r}=this,o=a.window?a.window.document.body:null,s=t.canvas;s.id=a.getUniqueId(),o&&(s.style.display="none",o.appendChild(s)),(0,p.canvasRGBA)(s,e,i,n,A,r),o&&o.removeChild(s)}constructor(t,e,i){super(t,e,i),Me(this,"type","feGaussianBlur"),Me(this,"extraFilterDistance",void 0),Me(this,"blurRadius",void 0),this.blurRadius=Math.floor(this.getAttribute("stdDeviation").getNumber()),this.extraFilterDistance=this.blurRadius}}function be(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Fe extends vt{apply(t,e){const{document:i,children:n}=this,A="getBoundingBox"in e?e.getBoundingBox(t):null;if(!A)return;let a=0,r=0;n.forEach((t=>{if(!(t instanceof Se))return;const e=t.extraFilterDistance||0;a=Math.max(a,e),r=Math.max(r,e)}));const o=Math.floor(A.width),s=Math.floor(A.height),c=o+2*a,l=s+2*r;if(Number.isNaN(c)||Number.isNaN(l)||c<1||l<1)return;const g=Math.floor(A.x),h=Math.floor(A.y),d=this.removeStyles(e,Fe.ignoreStyles),u=i.createCanvas(c,l),w=u.getContext("2d");i.screen.setDefaults(w),w.translate(-g+a,-h+r),e.render(w),n.forEach((t=>{t instanceof Se&&"function"==typeof t.apply&&t.apply(w,0,0,c,l)})),t.drawImage(u,0,0,c,l,g-a,h-r,c,l),this.restoreStyles(e,d)}render(t){}constructor(...t){super(...t),be(this,"type","filter")}}be(Fe,"ignoreStyles",["filter","transform","clip-path"]);const Pe={svg:Kt,rect:Wt,circle:class extends jt{path(t){const e=this.getAttribute("cx").getPixels("x"),i=this.getAttribute("cy").getPixels("y"),n=this.getAttribute("r").getPixels();return t&&n>0&&(t.beginPath(),t.arc(e,i,n,0,2*Math.PI,!1),t.closePath()),new kt(e-n,i-n,e+n,i+n)}getMarkers(){return null}constructor(...t){var e,i,n;super(...t),n="circle",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},ellipse:class extends jt{path(t){const e=(Math.sqrt(2)-1)/3*4,i=this.getAttribute("rx").getPixels("x"),n=this.getAttribute("ry").getPixels("y"),A=this.getAttribute("cx").getPixels("x"),a=this.getAttribute("cy").getPixels("y");return t&&i>0&&n>0&&(t.beginPath(),t.moveTo(A+i,a),t.bezierCurveTo(A+i,a+e*n,A+e*i,a+n,A,a+n),t.bezierCurveTo(A-e*i,a+n,A-i,a+e*n,A-i,a),t.bezierCurveTo(A-i,a-e*n,A-e*i,a-n,A,a-n),t.bezierCurveTo(A+e*i,a-n,A+i,a-e*n,A+i,a),t.closePath()),new kt(A-i,a-n,A+i,a+n)}getMarkers(){return null}constructor(...t){var e,i,n;super(...t),n="ellipse",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},line:class extends jt{getPoints(){return[new rt(this.getAttribute("x1").getPixels("x"),this.getAttribute("y1").getPixels("y")),new rt(this.getAttribute("x2").getPixels("x"),this.getAttribute("y2").getPixels("y"))]}path(t){const[{x:e,y:i},{x:n,y:A}]=this.getPoints();return t&&(t.beginPath(),t.moveTo(e,i),t.lineTo(n,A)),new kt(e,i,n,A)}getMarkers(){const[t,e]=this.getPoints(),i=t.angleTo(e);return[[t,i],[e,i]]}constructor(...t){var e,i,n;super(...t),n="line",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},polyline:qt,polygon:class extends qt{path(t){const e=super.path(t),[{x:i,y:n}]=this.points;return t&&(t.lineTo(i,n),t.closePath()),e}constructor(...t){var e,i,n;super(...t),n="polygon",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},path:jt,pattern:class extends vt{createPattern(t,e,i){const n=this.getStyle("width").getPixels("x",!0),A=this.getStyle("height").getPixels("y",!0),a=this.getAttribute("data-frame-width"),r=this.getAttribute("data-frame-height"),o=a.hasValue()?a.getPixels("x",!0):n,s=r.hasValue()?r.getPixels("y",!0):A,c=a.hasValue()&&r.hasValue(),l=new Kt(this.document,void 0);l.attributes.viewBox=new et(this.document,"viewBox",this.getAttribute("viewBox").getValue()),l.attributes.width=new et(this.document,"width",`${o}px`),l.attributes.height=new et(this.document,"height",`${s}px`),l.attributes.transform=new et(this.document,"transform",this.getAttribute("patternTransform").getValue()),l.children=this.children;const g=this.document.createCanvas(o,s),h=g.getContext("2d");h.imageSmoothingEnabled=!0,h.imageSmoothingQuality="high";const d=this.getAttribute("x"),u=this.getAttribute("y");d.hasValue()&&u.hasValue()&&h.translate(d.getPixels("x",!0),u.getPixels("y",!0)),i.hasValue()?this.styles["fill-opacity"]=i:Reflect.deleteProperty(this.styles,"fill-opacity");for(let t=-1;t<=1;t++)for(let e=-1;e<=1;e++)h.save(),l.attributes.x=new et(this.document,"x",t*g.width),l.attributes.y=new et(this.document,"y",e*g.height),l.render(h),h.restore();return t.createPattern(g,c?"no-repeat":"repeat")}constructor(...t){var e,i,n;super(...t),n="pattern",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},marker:class extends vt{render(t,e,i){if(!e)return;const{x:n,y:A}=e,a=this.getAttribute("orient").getString("auto"),r=this.getAttribute("markerUnits").getString("strokeWidth");t.translate(n,A),"auto"===a&&i&&t.rotate(i),"strokeWidth"===r&&t.scale(t.lineWidth,t.lineWidth),t.save();const o=new Kt(this.document);o.type=this.type,o.attributes.viewBox=new et(this.document,"viewBox",this.getAttribute("viewBox").getValue()),o.attributes.refX=new et(this.document,"refX",this.getAttribute("refX").getValue()),o.attributes.refY=new et(this.document,"refY",this.getAttribute("refY").getValue()),o.attributes.width=new et(this.document,"width",this.getAttribute("markerWidth").getValue()),o.attributes.height=new et(this.document,"height",this.getAttribute("markerHeight").getValue()),o.attributes.overflow=new et(this.document,"overflow",this.getAttribute("overflow").getValue()),o.attributes.fill=new et(this.document,"fill",this.getAttribute("fill").getColor("black")),o.attributes.stroke=new et(this.document,"stroke",this.getAttribute("stroke").getValue("none")),o.children=this.children,o.render(t),t.restore(),"strokeWidth"===r&&t.scale(1/t.lineWidth,1/t.lineWidth),"auto"===a&&i&&t.rotate(-i),t.translate(-n,-A)}constructor(...t){var e,i,n;super(...t),n="marker",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},defs:class extends vt{render(){}constructor(...t){var e,i,n;super(...t),n="defs",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},linearGradient:class extends _t{getGradient(t,e){const i="objectBoundingBox"===this.getGradientUnits(),n=i?e.getBoundingBox(t):null;if(i||!n)return null;this.getAttribute("x1").hasValue()||this.getAttribute("y1").hasValue()||this.getAttribute("x2").hasValue()||this.getAttribute("y2").hasValue()||(this.getAttribute("x1",!0).setValue(0),this.getAttribute("y1",!0).setValue(0),this.getAttribute("x2",!0).setValue(1),this.getAttribute("y2",!0).setValue(0));const A=i?n.x+n.width*this.getAttribute("x1").getNumber():this.getAttribute("x1").getPixels("x"),a=i?n.y+n.height*this.getAttribute("y1").getNumber():this.getAttribute("y1").getPixels("y"),r=i?n.x+n.width*this.getAttribute("x2").getNumber():this.getAttribute("x2").getPixels("x"),o=i?n.y+n.height*this.getAttribute("y2").getNumber():this.getAttribute("y2").getPixels("y");return A===r&&a===o?null:t.createLinearGradient(A,a,r,o)}constructor(t,e,i){var n,A,a;super(t,e,i),a="linearGradient",(A="type")in(n=this)?Object.defineProperty(n,A,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[A]=a,this.attributesToInherit.push("x1","y1","x2","y2")}},radialGradient:class extends _t{getGradient(t,e){const i="objectBoundingBox"===this.getGradientUnits(),n=e.getBoundingBox(t);if(i&&!n)return null;this.getAttribute("cx").hasValue()||this.getAttribute("cx",!0).setValue("50%"),this.getAttribute("cy").hasValue()||this.getAttribute("cy",!0).setValue("50%"),this.getAttribute("r").hasValue()||this.getAttribute("r",!0).setValue("50%");const A=i?n.x+n.width*this.getAttribute("cx").getNumber():this.getAttribute("cx").getPixels("x"),a=i?n.y+n.height*this.getAttribute("cy").getNumber():this.getAttribute("cy").getPixels("y");let r=A,o=a;this.getAttribute("fx").hasValue()&&(r=i?n.x+n.width*this.getAttribute("fx").getNumber():this.getAttribute("fx").getPixels("x")),this.getAttribute("fy").hasValue()&&(o=i?n.y+n.height*this.getAttribute("fy").getNumber():this.getAttribute("fy").getPixels("y"));const s=i?(n.width+n.height)/2*this.getAttribute("r").getNumber():this.getAttribute("r").getPixels(),c=this.getAttribute("fr").getPixels();return t.createRadialGradient(r,o,c,A,a,s)}constructor(t,e,i){var n,A,a;super(t,e,i),a="radialGradient",(A="type")in(n=this)?Object.defineProperty(n,A,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[A]=a,this.attributesToInherit.push("cx","cy","r","fx","fy","fr")}},stop:class extends vt{constructor(t,e,i){super(t,e,i),te(this,"type","stop"),te(this,"offset",void 0),te(this,"color",void 0);const n=Math.max(0,Math.min(1,this.getAttribute("offset").getNumber())),A=this.getStyle("stop-opacity");let a=this.getStyle("stop-color",!0);""===a.getString()&&a.setValue("#000"),A.hasValue()&&(a=a.addOpacity(A)),this.offset=n,this.color=a.getColor()}},animate:ie,animateColor:class extends ie{calcValue(){const{progress:t,from:e,to:i}=this.getProgress(),n=new(b(w))(e.getColor()),A=new(b(w))(i.getColor());if(n.ok&&A.ok){const e=n.r+(A.r-n.r)*t,i=n.g+(A.g-n.g)*t,a=n.b+(A.b-n.b)*t;return`rgb(${Math.floor(e)}, ${Math.floor(i)}, ${Math.floor(a)})`}return this.getAttribute("from").getColor()}constructor(...t){var e,i,n;super(...t),n="animateColor",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},animateTransform:class extends ie{calcValue(){const{progress:t,from:e,to:i}=this.getProgress(),n=P(e.getString()),A=P(i.getString()),a=n.map(((e,i)=>e+(A[i]-e)*t)).join(" ");return a}constructor(...t){var e,i,n;super(...t),n="animateTransform",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},font:class extends vt{render(){}constructor(t,e,i){super(t,e,i),ce(this,"type","font"),ce(this,"isArabic",!1),ce(this,"missingGlyph",void 0),ce(this,"glyphs",{}),ce(this,"arabicGlyphs",{}),ce(this,"horizAdvX",void 0),ce(this,"isRTL",!1),ce(this,"fontFace",void 0),this.horizAdvX=this.getAttribute("horiz-adv-x").getNumber();const{definitions:n}=t,{children:A}=this;for(const t of A)if(t instanceof Ae){this.fontFace=t;const e=t.getStyle("font-family");e.hasValue()&&(n[e.getString()]=this)}else if(t instanceof se)this.missingGlyph=t;else if(t instanceof re)if(t.arabicForm){this.isRTL=!0,this.isArabic=!0;const e=this.arabicGlyphs[t.unicode];void 0===e?this.arabicGlyphs[t.unicode]={[t.arabicForm]:t}:e[t.arabicForm]=t}else this.glyphs[t.unicode]=t}},"font-face":Ae,"missing-glyph":se,glyph:re,text:Ut,tspan:Tt,tref:class extends Ut{getText(){const t=this.getHrefAttribute().getDefinition();if(t){const e=t.children[0];if(e)return e.getText()}return""}constructor(...t){var e,i,n;super(...t),n="tref",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},a:class extends Ut{getText(){return this.text}renderChildren(t){if(this.hasText){super.renderChildren(t);const{document:e,x:i,y:n}=this,{mouse:A}=e.screen,a=new et(e,"fontSize",Yt.parse(e.ctx.font).fontSize);A.isWorking()&&A.checkBoundingBox(this,new kt(i,n-a.getPixels("y"),i+this.measureText(t),n))}else if(this.children.length>0){const e=new Zt(this.document);e.children=this.children,e.parent=this,e.render(t)}}onClick(){const{window:t}=this.document;t&&t.open(this.getHrefAttribute().getString())}onMouseMove(){this.document.ctx.canvas.style.cursor="pointer"}constructor(t,e,i){super(t,e,i),le(this,"type","a"),le(this,"hasText",void 0),le(this,"text",void 0);const{childNodes:n}=e,A=n[0],a=n.length>0&&Array.from(n).every((t=>3===t.nodeType));this.hasText=a,this.text=a?this.getTextFromNode(A):""}},textPath:class extends Ut{getText(){return this.text}path(t){const{dataArray:e}=this;t&&t.beginPath(),e.forEach((e=>{let{type:i,points:n}=e;switch(i){case Lt.LINE_TO:t&&t.lineTo(n[0],n[1]);break;case Lt.MOVE_TO:t&&t.moveTo(n[0],n[1]);break;case Lt.CURVE_TO:t&&t.bezierCurveTo(n[0],n[1],n[2],n[3],n[4],n[5]);break;case Lt.QUAD_TO:t&&t.quadraticCurveTo(n[0],n[1],n[2],n[3]);break;case Lt.ARC:{const[e,i,A,a,r,o,s,c]=n,l=A>a?A:a,g=A>a?1:A/a,h=A>a?a/A:1;t&&(t.translate(e,i),t.rotate(s),t.scale(g,h),t.arc(0,0,l,r,r+o,Boolean(1-c)),t.scale(1/g,1/h),t.rotate(-s),t.translate(-e,-i));break}case Lt.CLOSE_PATH:t&&t.closePath()}}))}renderChildren(t){var e;this.setTextData(t),t.save();const i=null===(e=this.parent)||void 0===e?void 0:e.getStyle("text-decoration").getString(),n=this.getFontSize(),{glyphInfo:A}=this,a=t.fillStyle;"underline"===i&&t.beginPath(),A.forEach(((e,A)=>{const{p0:a,p1:r,rotation:o,text:s}=e;t.save(),t.translate(a.x,a.y),t.rotate(o),t.fillStyle&&t.fillText(s,0,0),t.strokeStyle&&t.strokeText(s,0,0),t.restore(),"underline"===i&&(0===A&&t.moveTo(a.x,a.y+n/8),t.lineTo(r.x,r.y+n/5))})),"underline"===i&&(t.lineWidth=n/20,t.strokeStyle=a,t.stroke(),t.closePath()),t.restore()}getLetterSpacingAt(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.letterSpacingCache[t]||0}findSegmentToFitChar(t,e,i,n,A,a,r,o,s){let c=a,l=this.measureText(t,o);" "===o&&"justify"===e&&i<n&&(l+=(n-i)/A),s>-1&&(c+=this.getLetterSpacingAt(s));const g=this.textHeight/20,h=this.getEquidistantPointOnPath(c,g,0),d=this.getEquidistantPointOnPath(c+l,g,0),u={p0:h,p1:d},w=h&&d?Math.atan2(d.y-h.y,d.x-h.x):0;if(r){const t=Math.cos(Math.PI/2+w)*r,e=Math.cos(-w)*r;u.p0={...h,distance:h.distance||0,x:h.x+t,y:h.y+e},u.p1={...d,distance:d.distance||0,x:d.x+t,y:d.y+e}}return c+=l,{offset:c,segment:u,rotation:w}}measureText(t,e){const{measuresCache:i}=this,n=e||this.getText();if(i.has(n))return i.get(n);const A=this.measureTargetText(t,n);return i.set(n,A),A}setTextData(t){var e,i,n;if(this.glyphInfo)return;const A=this.getText(),a=A.split(""),r=A.split(" ").length-1,o=null===(e=this.parent)||void 0===e?void 0:e.getAttribute("dx").split().map((t=>t.getPixels("x"))),s=null===(i=this.parent)||void 0===i?void 0:i.getAttribute("dy").getPixels("y"),c=this.getAttribute("text-anchor").getString("start"),l=this.getStyle("letter-spacing"),g=null===(n=this.parent)||void 0===n?void 0:n.getStyle("letter-spacing");let h=0;l.hasValue()&&"inherit"!==l.getValue()?l.hasValue()&&"initial"!==l.getValue()&&"unset"!==l.getValue()&&(h=l.getPixels()):h=g.getPixels();const d=[],u=A.length;this.letterSpacingCache=d;for(let t=0;t<u;t++)d.push(void 0!==o[t]?o[t]:h);const w=d.reduce(((t,e,i)=>0===i?0:t+e||0),0),B=this.measureText(t),p=Math.max(B+w,0);this.textWidth=B,this.textHeight=this.getFontSize(),this.glyphInfo=[];const m=this.getPathLength(),E=this.getAttribute("startOffset").getNumber(0)*m;let f=0;"middle"!==c&&"center"!==c||(f=-p/2),"end"!==c&&"right"!==c||(f=-p),f+=E,a.forEach(((e,i)=>{const{offset:n,segment:A,rotation:o}=this.findSegmentToFitChar(t,c,p,m,r,f,s,e,i);f=n,A.p0&&A.p1&&this.glyphInfo.push({text:a[i],p0:A.p0,p1:A.p1,rotation:o})}))}parsePathData(t){if(this.pathLength=-1,!t)return[];const e=[],{pathParser:i}=t;for(i.reset();!i.isEnd();){const{current:t}=i,n=t?t.x:0,A=t?t.y:0,a=i.next();let r=a.type,o=[];switch(a.type){case Lt.MOVE_TO:this.pathM(i,o);break;case Lt.LINE_TO:r=this.pathL(i,o);break;case Lt.HORIZ_LINE_TO:r=this.pathH(i,o);break;case Lt.VERT_LINE_TO:r=this.pathV(i,o);break;case Lt.CURVE_TO:this.pathC(i,o);break;case Lt.SMOOTH_CURVE_TO:r=this.pathS(i,o);break;case Lt.QUAD_TO:this.pathQ(i,o);break;case Lt.SMOOTH_QUAD_TO:r=this.pathT(i,o);break;case Lt.ARC:o=this.pathA(i);break;case Lt.CLOSE_PATH:jt.pathZ(i)}a.type!==Lt.CLOSE_PATH?e.push({type:r,points:o,start:{x:n,y:A},pathLength:this.calcLength(n,A,r,o)}):e.push({type:Lt.CLOSE_PATH,points:[],pathLength:0})}return e}pathM(t,e){const{x:i,y:n}=jt.pathM(t).point;e.push(i,n)}pathL(t,e){const{x:i,y:n}=jt.pathL(t).point;return e.push(i,n),Lt.LINE_TO}pathH(t,e){const{x:i,y:n}=jt.pathH(t).point;return e.push(i,n),Lt.LINE_TO}pathV(t,e){const{x:i,y:n}=jt.pathV(t).point;return e.push(i,n),Lt.LINE_TO}pathC(t,e){const{point:i,controlPoint:n,currentPoint:A}=jt.pathC(t);e.push(i.x,i.y,n.x,n.y,A.x,A.y)}pathS(t,e){const{point:i,controlPoint:n,currentPoint:A}=jt.pathS(t);return e.push(i.x,i.y,n.x,n.y,A.x,A.y),Lt.CURVE_TO}pathQ(t,e){const{controlPoint:i,currentPoint:n}=jt.pathQ(t);e.push(i.x,i.y,n.x,n.y)}pathT(t,e){const{controlPoint:i,currentPoint:n}=jt.pathT(t);return e.push(i.x,i.y,n.x,n.y),Lt.QUAD_TO}pathA(t){let{rX:e,rY:i,sweepFlag:n,xAxisRotation:A,centp:a,a1:r,ad:o}=jt.pathA(t);return 0===n&&o>0&&(o-=2*Math.PI),1===n&&o<0&&(o+=2*Math.PI),[a.x,a.y,e,i,r,o,A,n]}calcLength(t,e,i,n){let A=0,a=null,r=null,o=0;switch(i){case Lt.LINE_TO:return this.getLineLength(t,e,n[0],n[1]);case Lt.CURVE_TO:for(A=0,a=this.getPointOnCubicBezier(0,t,e,n[0],n[1],n[2],n[3],n[4],n[5]),o=.01;o<=1;o+=.01)r=this.getPointOnCubicBezier(o,t,e,n[0],n[1],n[2],n[3],n[4],n[5]),A+=this.getLineLength(a.x,a.y,r.x,r.y),a=r;return A;case Lt.QUAD_TO:for(A=0,a=this.getPointOnQuadraticBezier(0,t,e,n[0],n[1],n[2],n[3]),o=.01;o<=1;o+=.01)r=this.getPointOnQuadraticBezier(o,t,e,n[0],n[1],n[2],n[3]),A+=this.getLineLength(a.x,a.y,r.x,r.y),a=r;return A;case Lt.ARC:{A=0;const t=n[4],e=n[5],i=n[4]+e;let s=Math.PI/180;if(Math.abs(t-i)<s&&(s=Math.abs(t-i)),a=this.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],t,0),e<0)for(o=t-s;o>i;o-=s)r=this.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],o,0),A+=this.getLineLength(a.x,a.y,r.x,r.y),a=r;else for(o=t+s;o<i;o+=s)r=this.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],o,0),A+=this.getLineLength(a.x,a.y,r.x,r.y),a=r;return r=this.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],i,0),A+=this.getLineLength(a.x,a.y,r.x,r.y),A}}return 0}getPointOnLine(t,e,i,n,A){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:e,r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:i;const o=(A-i)/(n-e+L);let s=Math.sqrt(t*t/(1+o*o));n<e&&(s*=-1);let c=o*s,l=null;if(n===e)l={x:a,y:r+c};else if((r-i)/(a-e+L)===o)l={x:a+s,y:r+c};else{let g=0,h=0;const d=this.getLineLength(e,i,n,A);if(d<L)return null;let u=(a-e)*(n-e)+(r-i)*(A-i);u/=d*d,g=e+u*(n-e),h=i+u*(A-i);const w=this.getLineLength(a,r,g,h),B=Math.sqrt(t*t-w*w);s=Math.sqrt(B*B/(1+o*o)),n<e&&(s*=-1),c=o*s,l={x:g+s,y:h+c}}return l}getPointOnPath(t){const e=this.getPathLength();let i=0,n=null;if(t<-5e-5||t-5e-5>e)return null;const{dataArray:A}=this;for(const e of A){if(e&&(e.pathLength<5e-5||i+e.pathLength+5e-5<t)){i+=e.pathLength;continue}const A=t-i;let a=0;switch(e.type){case Lt.LINE_TO:n=this.getPointOnLine(A,e.start.x,e.start.y,e.points[0],e.points[1],e.start.x,e.start.y);break;case Lt.ARC:{const t=e.points[4],i=e.points[5],r=e.points[4]+i;if(a=t+A/e.pathLength*i,i<0&&a<r||i>=0&&a>r)break;n=this.getPointOnEllipticalArc(e.points[0],e.points[1],e.points[2],e.points[3],a,e.points[6]);break}case Lt.CURVE_TO:a=A/e.pathLength,a>1&&(a=1),n=this.getPointOnCubicBezier(a,e.start.x,e.start.y,e.points[0],e.points[1],e.points[2],e.points[3],e.points[4],e.points[5]);break;case Lt.QUAD_TO:a=A/e.pathLength,a>1&&(a=1),n=this.getPointOnQuadraticBezier(a,e.start.x,e.start.y,e.points[0],e.points[1],e.points[2],e.points[3])}if(n)return n;break}return null}getLineLength(t,e,i,n){return Math.sqrt((i-t)*(i-t)+(n-e)*(n-e))}getPathLength(){return-1===this.pathLength&&(this.pathLength=this.dataArray.reduce(((t,e)=>e.pathLength>0?t+e.pathLength:t),0)),this.pathLength}getPointOnCubicBezier(t,e,i,n,A,a,r,o,s){return{x:o*K(t)+a*W(t)+n*X(t)+e*q(t),y:s*K(t)+r*W(t)+A*X(t)+i*q(t)}}getPointOnQuadraticBezier(t,e,i,n,A,a,r){return{x:a*Z(t)+n*$(t)+e*_(t),y:r*Z(t)+A*$(t)+i*_(t)}}getPointOnEllipticalArc(t,e,i,n,A,a){const r=Math.cos(a),o=Math.sin(a),s=i*Math.cos(A),c=n*Math.sin(A);return{x:t+(s*r-c*o),y:e+(s*o+c*r)}}buildEquidistantCache(t,e){const i=this.getPathLength(),n=e||.25,A=t||i/100;if(!this.equidistantCache||this.equidistantCache.step!==A||this.equidistantCache.precision!==n){this.equidistantCache={step:A,precision:n,points:[]};let t=0;for(let e=0;e<=i;e+=n){const i=this.getPointOnPath(e),a=this.getPointOnPath(e+n);i&&a&&(t+=this.getLineLength(i.x,i.y,a.x,a.y),t>=A&&(this.equidistantCache.points.push({x:i.x,y:i.y,distance:e}),t-=A))}}}getEquidistantPointOnPath(t,e,i){if(this.buildEquidistantCache(e,i),t<0||t-this.getPathLength()>5e-5)return null;const n=Math.round(t/this.getPathLength()*(this.equidistantCache.points.length-1));return this.equidistantCache.points[n]||null}constructor(t,e,i){super(t,e,i),ge(this,"type","textPath"),ge(this,"textWidth",0),ge(this,"textHeight",0),ge(this,"pathLength",-1),ge(this,"glyphInfo",null),ge(this,"text",void 0),ge(this,"dataArray",void 0),ge(this,"letterSpacingCache",[]),ge(this,"equidistantCache",null),ge(this,"measuresCache",new Map([["",0]]));const n=this.getHrefAttribute().getDefinition();this.text=this.getTextFromNode(),this.dataArray=this.parsePathData(n)}},image:class extends Rt{async loadImage(t){try{const e=await this.document.createImage(t);this.image=e}catch(e){console.error(`Error while loading image "${t}":`,e)}this.loaded=!0}async loadSvg(t){const e=de.exec(t);if(e){const t=e[5];t&&("base64"===e[4]?this.image=atob(t):this.image=decodeURIComponent(t))}else try{const e=await this.document.fetch(t),i=await e.text();this.image=i}catch(e){console.error(`Error while loading image "${t}":`,e)}this.loaded=!0}renderChildren(t){const{document:e,image:i,loaded:n}=this,A=this.getAttribute("x").getPixels("x"),a=this.getAttribute("y").getPixels("y"),r=this.getStyle("width").getPixels("x"),o=this.getStyle("height").getPixels("y");if(n&&i&&r&&o){if(t.save(),t.translate(A,a),"string"==typeof i){const n=e.pith.forkString(t,i,{ignoreMouse:!0,ignoreAnimation:!0,ignoreDimensions:!0,ignoreClear:!0,offsetX:0,offsetY:0,scaleWidth:r,scaleHeight:o}),{documentElement:A}=n.document;A&&(A.parent=this),n.resize(r,o,this.getAttribute("preserveAspectRatio").getString()),n.render()}else e.setViewBox({ctx:t,aspectRatio:this.getAttribute("preserveAspectRatio").getString(),width:r,desiredWidth:i.width,height:o,desiredHeight:i.height}),this.loaded&&("complete"in i&&!i.complete||t.drawImage(i,0,0));t.restore()}}getBoundingBox(){const t=this.getAttribute("x").getPixels("x"),e=this.getAttribute("y").getPixels("y"),i=this.getStyle("width").getPixels("x"),n=this.getStyle("height").getPixels("y");return new kt(t,e,t+i,e+n)}constructor(t,e,i){super(t,e,i),he(this,"type","image"),he(this,"loaded",!1),he(this,"image",void 0);const n=this.getHrefAttribute().getString();if(!n)return;const A=n.endsWith(".svg")||/^\s*data:image\/svg\+xml/i.test(n);t.images.push(this),A?this.loadSvg(n):this.loadImage(n)}},g:Zt,symbol:class extends Rt{render(t){}constructor(...t){var e,i,n;super(...t),n="symbol",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},style:pe,use:class extends Rt{setContext(t){super.setContext(t);const e=this.getAttribute("x"),i=this.getAttribute("y");e.hasValue()&&t.translate(e.getPixels("x"),0),i.hasValue()&&t.translate(0,i.getPixels("y"))}path(t){const{element:e}=this;e&&e.path(t)}renderChildren(t){const{document:e,element:i}=this;if(i){let n=i;if("symbol"===i.type&&(n=new Kt(e),n.attributes.viewBox=new et(e,"viewBox",i.getAttribute("viewBox").getString()),n.attributes.preserveAspectRatio=new et(e,"preserveAspectRatio",i.getAttribute("preserveAspectRatio").getString()),n.attributes.overflow=new et(e,"overflow",i.getAttribute("overflow").getString()),n.children=i.children,i.styles.opacity=new et(e,"opacity",this.calculateOpacity())),"svg"===n.type){const t=this.getStyle("width",!1,!0),i=this.getStyle("height",!1,!0);t.hasValue()&&(n.attributes.width=new et(e,"width",t.getString())),i.hasValue()&&(n.attributes.height=new et(e,"height",i.getString()))}const A=n.parent;n.parent=this,n.render(t),n.parent=A}}getBoundingBox(t){const{element:e}=this;return e?e.getBoundingBox(t):null}elementTransform(){const{document:t,element:e}=this;return e?Dt.fromElement(t,e):null}get element(){return this.cachedElement||(this.cachedElement=this.getHrefAttribute().getDefinition()),this.cachedElement}constructor(...t){super(...t),me(this,"type","use"),me(this,"cachedElement",void 0)}},mask:xe,clipPath:class extends vt{apply(t){const{document:e}=this,i=Reflect.getPrototypeOf(t),{beginPath:n,closePath:A}=t;i&&(i.beginPath=ve,i.closePath=ve),Reflect.apply(n,t,[]),this.children.forEach((n=>{if(!("path"in n))return;let a="elementTransform"in n?n.elementTransform():null;a||(a=Dt.fromElement(e,n)),a&&a.apply(t),n.path(t),i&&(i.closePath=A),a&&a.unapply(t)})),Reflect.apply(A,t,[]),t.clip(),i&&(i.beginPath=n,i.closePath=A)}render(t){}constructor(...t){var e,i,n;super(...t),n="clipPath",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},filter:Fe,feDropShadow:class extends vt{apply(t,e,i,n,A){}constructor(t,e,i){var n,A,a;super(t,e,i),a="feDropShadow",(A="type")in(n=this)?Object.defineProperty(n,A,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[A]=a,this.addStylesFromStyleDefinition()}},feMorphology:class extends vt{apply(t,e,i,n,A){}constructor(...t){var e,i,n;super(...t),n="feMorphology",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},feComposite:class extends vt{apply(t,e,i,n,A){}constructor(...t){var e,i,n;super(...t),n="feComposite",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},feColorMatrix:Ie,feGaussianBlur:Se,title:class extends vt{constructor(...t){var e,i,n;super(...t),n="title",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}},desc:class extends vt{constructor(...t){var e,i,n;super(...t),n="desc",(i="type")in(e=this)?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n}}};function Ye(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Ne{bindCreateImage(t,e){return"boolean"==typeof e?(i,n)=>t(i,"boolean"==typeof n?n:e):t}get window(){return this.screen.window}get fetch(){return this.screen.fetch}get ctx(){return this.screen.ctx}get emSize(){const{emSizeStack:t}=this;return t[t.length-1]||12}set emSize(t){const{emSizeStack:e}=this;e.push(t)}popEmSize(){const{emSizeStack:t}=this;t.pop()}getUniqueId(){return"pith"+ ++this.uniqueId}isImagesLoaded(){return this.images.every((t=>t.loaded))}isFontsLoaded(){return this.fonts.every((t=>t.loaded))}createDocumentElement(t){const e=this.createElement(t.documentElement);return e.root=!0,e.addStylesFromStyleDefinition(),this.documentElement=e,e}createElement(t){const e=t.nodeName.replace(/^[^:]+:/,""),i=Ne.elementTypes[e];return i?new i(this,t):new Mt(this,t)}createTextNode(t){return new Ot(this,t)}setViewBox(t){this.screen.setViewBox({document:this,...t})}constructor(t,{rootEmSize:e=12,emSize:i=12,createCanvas:n=Ne.createCanvas,createImage:A=Ne.createImage,anonymousCrossOrigin:a}={}){Ye(this,"pith",void 0),Ye(this,"rootEmSize",void 0),Ye(this,"documentElement",void 0),Ye(this,"screen",void 0),Ye(this,"createCanvas",void 0),Ye(this,"createImage",void 0),Ye(this,"definitions",void 0),Ye(this,"styles",void 0),Ye(this,"stylesSpecificity",void 0),Ye(this,"images",void 0),Ye(this,"fonts",void 0),Ye(this,"emSizeStack",void 0),Ye(this,"uniqueId",void 0),this.pith=t,this.definitions={},this.styles={},this.stylesSpecificity={},this.images=[],this.fonts=[],this.emSizeStack=[],this.uniqueId=0,this.screen=t.screen,this.rootEmSize=e,this.emSize=i,this.createCanvas=n,this.createImage=this.bindCreateImage(A,a),this.screen.wait((()=>this.isImagesLoaded())),this.screen.wait((()=>this.isFontsLoaded()))}}function ke(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}Ye(Ne,"createCanvas",(function(t,e){const i=document.createElement("canvas");return i.width=t,i.height=e,i})),Ye(Ne,"createImage",(async function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=document.createElement("img");return e&&(i.crossOrigin="Anonymous"),new Promise(((e,n)=>{i.onload=()=>{e(i)},i.onerror=(t,e,i,A,a)=>{n(a)},i.src=t}))})),Ye(Ne,"elementTypes",Pe);class Re{static async from(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const n=new Bt(i),A=await n.parse(e);return new Re(t,A,i)}static fromString(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const n=new Bt(i).parseFromString(e);return new Re(t,n,i)}fork(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return Re.from(t,e,{...this.options,...i})}forkString(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return Re.fromString(t,e,{...this.options,...i})}ready(){return this.screen.ready()}isReady(){return this.screen.isReady()}async render(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.start({enableRedraw:!0,ignoreAnimation:!0,ignoreMouse:!0,...t}),await this.ready(),this.stop()}start(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{documentElement:e,screen:i,options:n}=this;i.start(e,{enableRedraw:!0,...n,...t})}stop(){this.screen.stop()}resize(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.documentElement.resize(t,e,i)}constructor(t,e,i={}){ke(this,"parser",void 0),ke(this,"screen",void 0),ke(this,"document",void 0),ke(this,"documentElement",void 0),ke(this,"options",void 0),this.parser=new Bt(i),this.screen=new ht(t,i),this.options=i;const n=new Ne(this,i),A=n.createDocumentElement(e);this.document=n,this.documentElement=A}}function He(t,e,i,n){Object.defineProperty(t,e,{get:i,set:n,enumerable:!0,configurable:!0})}var Ue="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==S?S:{},Ge={};He(Ge,"CanvasCommand",(()=>$n)),He(Ge,"UpdateWorkflowStateCommand",(()=>_n)),He(Ge,"MoveCommand",(()=>tA)),He(Ge,"RotateCommand",(()=>eA)),He(Ge,"ResizeCommand",(()=>iA)),He(Ge,"GroupCommand",(()=>nA)),He(Ge,"CreateLayoutCommand",(()=>AA)),He(Ge,"ClearLayoutCommand",(()=>aA)),He(Ge,"CreateElementCommand",(()=>rA)),He(Ge,"DeleteElementCommand",(()=>oA)),He(Ge,"CloneElementCommand",(()=>sA)),He(Ge,"FontColorCommand",(()=>cA)),He(Ge,"FontImageFillCommand",(()=>lA)),He(Ge,"FontSizeCommand",(()=>gA)),He(Ge,"FontAlgorithmCommand",(()=>hA)),He(Ge,"FontSourceCommand",(()=>dA)),He(Ge,"FontAlignmentCommand",(()=>uA)),He(Ge,"UpdateFramePattern",(()=>wA)),He(Ge,"TextChangeCommand",(()=>BA)),He(Ge,"IllustrationColorCommand",(()=>pA)),He(Ge,"IllustrationCacheCommand",(()=>mA)),He(Ge,"BringToFrontCommand",(()=>EA)),He(Ge,"BringToBackCommand",(()=>fA)),He(Ge,"BringForwardCommand",(()=>CA)),He(Ge,"SendBackwardsCommand",(()=>QA)),He(Ge,"LayerCommand",(()=>yA)),He({},"generate",(()=>Te));const Te=()=>{const t=()=>Math.floor(65536*(1+Math.random())).toString(16).substring(1);return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()};var Oe={};He(Oe,"ElementNotFoundError",(()=>Kn)),He(Oe,"findElement",(()=>Wn)),He(Oe,"findLayoutForElement",(()=>Xn)),He(Oe,"updatedLayoutForElement",(()=>qn)),He(Oe,"rehydrateSerializedLayout",(()=>Zn));var Je={};He(Je,"CommandContext",(()=>Ln)),He(Je,"getSvgElement",(()=>jn)),He(Je,"elementFactory",(()=>zn)),He(Je,"sortElementsByLayersWithIndex",(()=>Vn)),He({},"SVGLayout",(()=>gi));var Le={};let ze;var je;let Ve;var Ke;let We;var Xe;let qe;var Ze;let $e;var _e;let ti,ei;var ii;let ni;var Ai;let ai;var ri;let oi;var si;let ci;var li;He(Le,"LayoutElementType",(()=>ze)),He(Le,"LayoutRenderingPurpose",(()=>Ve)),He(Le,"TextAlgorithm",(()=>We)),He(Le,"UnitOfMeasurement",(()=>qe)),He(Le,"ScaleAxis",(()=>$e)),He(Le,"AspectConditionAction",(()=>ti)),He(Le,"AspectType",(()=>ei)),He(Le,"MaterialEffectMode",(()=>ni)),He(Le,"AssetType",(()=>ai)),He(Le,"StepType",(()=>oi)),He(Le,"StepAspectType",(()=>ci)),(je=ze||(ze={})).Frame="frame",je.Image="image",je.Illustration="illustration",je.Textbox="textbox",(Ke=Ve||(Ve={})).ThreeD="ThreeD",Ke.FreeDesign="FreeDesign",Ke.Print="Print",(Xe=We||(We={})).Autosize="Autosize",Xe.Traditional="Traditional",(Ze=qe||(qe={})).Pixel="px",Ze.Millimeter="mm",Ze.Centimeter="cm",(_e=$e||($e={}))[_e.North=0]="North",_e[_e.Northeast=1]="Northeast",_e[_e.East=2]="East",_e[_e.Southeast=3]="Southeast",_e[_e.South=4]="South",_e[_e.Southwest=5]="Southwest",_e[_e.West=6]="West",_e[_e.Northwest=7]="Northwest",(ti||(ti={})).Show="Show",(ii=ei||(ei={})).FileUpload="FileUpload",ii.Option="Option",ii.Text="Text",(Ai=ni||(ni={})).None="None",Ai.RemoveWhenSelected="RemoveWhenSelected",Ai.ApplyWhenSelected="ApplyWhenSelected",(ri=ai||(ai={})).Font="Font",ri.Frame="Frame",ri.Illustration="Illustration",ri.Image="Image",ri.Model="Model",ri.Material="Material",ri.Color="Color",ri.QuestionnaireCollateral="QuestionnaireCollateral",ri.RequestCollateral="RequestCollateral",ri.SignupCollateral="SignupCollateral",ri.Video="Video",ri.ColorProfile="ColorProfile",(si=oi||(oi={})).Information="Information",si.Bulk="Bulk",si.DigitalContent="DigitalContent",si.Finish="Finish",si.Frame="Frame",si.Illustration="Illustration",si.Introduction="Introduction",si.Material="Material",si.Model="Model",si.Module="Module",si.Picture="Picture",si.Photo="Photo",si.ProductOverlay="ProductOverlay",si.Question="Question",si.Shape="Shape",si.SilentIllustration="SilentIllustration",si.Text="Text",(li=ci||(ci={})).Color="Color",li.Colors="Colors",li.Selection="Selection",li.Selections="Selections",li.Text="Text",li.Upload="Upload";const gi=({backgroundColor:t,outlineColor:e,borderRadius:n,configuration:A,elements:a,height:r,maxHeight:o,maxWidth:s,outlineArea:c,position:l,preserveAspectRatio:g,viewBox:h,width:d})=>{const u=n||0,w=2*(c?.scale||1),B=h||{x:0,y:0,width:d,height:r},p=`${B.x} ${B.y} ${B.width} ${B.height}`,m=Te(),E=A.purpose===Ve.FreeDesign&&(0,i.jsx)("defs",{children:(0,i.jsx)("clipPath",{id:"viewboxClip",children:(0,i.jsx)("rect",{width:B.width,height:B.height,rx:u})})}),f=A.colorProfiles?.map(((t,e)=>(0,i.jsx)("color-profile",{name:t.name,xlinkHref:t.key,children:" "},e))),C=Vn(a.map((t=>({...t,_renderingConfiguration:A,mask:c?`url(#viewmask-${m})`:void 0}))));return(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",xmlSpace:"preserve",version:"1.1",preserveAspectRatio:g,width:d,height:r,style:{gridColumn:1,gridRow:1,maxWidth:s,maxHeight:o,position:l},viewBox:p,children:[f,E,!!t&&(0,i.jsx)("rect",{id:"layout-background",width:B.width,height:B.height,fill:t,rx:u}),(0,i.jsx)("g",{id:"element-group",clipPath:A.purpose===Ve.FreeDesign?"url(#viewboxClip)":void 0,children:C.map((t=>zn(t))).filter((t=>!!t))}),c&&(0,i.jsx)("rect",{x:c.x,y:c.y,width:c.width,height:c.height,fill:"none",stroke:c.hidden?"none":e||"#aaaaaa",strokeWidth:w/2,strokeDasharray:`${2*w} ${w}`}),c&&(0,i.jsxs)("mask",{id:`viewmask-${m}`,children:[(0,i.jsx)("rect",{x:B.x,y:B.y,width:B.width,height:B.height,fill:"black"}),(0,i.jsx)("rect",{x:c.x,y:c.y,width:c.width,height:c.height,fill:"white"})]})]})};He({},"Image",(()=>bi));var hi={};He(hi,"getAxisAlignedBoundingBox",(()=>di)),He(hi,"degreesToRadians",(()=>wi)),He(hi,"findAngle",(()=>ui)),He(hi,"radiansToDegrees",(()=>Bi)),He(hi,"isCloseToValue",(()=>pi)),He(hi,"getTrueCoordinates",(()=>mi)),He(hi,"getPointOfRotation",(()=>Ei)),He(hi,"getNWPoint",(()=>fi)),He(hi,"getNEPoint",(()=>Ci)),He(hi,"getSWPoint",(()=>Qi)),He(hi,"getSEPoint",(()=>yi)),He(hi,"turnRightClockwise",(()=>Ii)),He(hi,"currentDirection",(()=>Di)),He(hi,"getElementVertices",(()=>xi)),He(hi,"rotateAroundPoint",(()=>vi)),He(hi,"mmPerPixel",(()=>Mi)),He(hi,"cmPerPixel",(()=>Si));const di=(t,e,i,n,A)=>{const a=wi(A),r=i/2,o=n/2,s=t+r,c=e+o,l=Math.sin(a),g=Math.cos(a),h=-o,d=r*g-h*l,u=r*g-o*l,w=r*l+h*g,B=r*l+o*g,p=Math.max(Math.abs(d),Math.abs(u)),m=Math.max(Math.abs(w),Math.abs(B));return{minX:s-p,maxX:s+p,minY:c-m,maxY:c+m}},ui=(t,e,i)=>{const n=Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)),A=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2)),a=Math.sqrt(Math.pow(i.x-t.x,2)+Math.pow(i.y-t.y,2));return Math.acos((A*A+n*n-a*a)/(2*A*n))*(180/Math.PI)},wi=t=>t*(Math.PI/180),Bi=t=>t*(180/Math.PI),pi=(t,e,i)=>Math.abs(t-e)<i,mi=(t,e,i)=>{const n=Math.sin(wi(i)),A=Math.cos(wi(i));return{x:(t.x-e.x)*A-(t.y-e.y)*n+e.x,y:(t.x-e.x)*n+(t.y-e.y)*A+e.y}},Ei=(t,e)=>({x:(t.x+e.x)/2,y:(t.y+e.y)/2}),fi=(t,e,i,n)=>({x:t.x+e?.x*i,y:t.y+e?.y*n}),Ci=(t,e,i,n)=>({x:t.x+(e?.x+e?.width)*i,y:t.y+e?.y*n}),Qi=(t,e,i,n)=>({x:t.x+e?.x*i,y:t.y+(e?.y+e?.height)*n}),yi=(t,e,i,n)=>({x:t.x+(e?.x+e?.width)*i,y:t.y+(e?.y+e?.height)*n}),Ii=t=>{switch(t){case $e.North:return $e.East;case $e.East:return $e.South;case $e.South:return $e.West;case $e.West:return $e.North;case $e.Northwest:return $e.Northeast;case $e.Northeast:return $e.Southeast;case $e.Southeast:return $e.Southwest;case $e.Southwest:return $e.Northwest}},Di=(t,e)=>e>45&&e<=135?Ii(t):e>135&&e<=225?Ii(Ii(t)):e>225&&e<=315?Ii(Ii(Ii(t))):t,xi=(t,e={x:0,y:0},i={x:1,y:1})=>{const n=wi(t.rotation),A={x:e.x+t.x*i.x,y:e.x+t.y*i.y},a={x:t.x+t.width,y:t.y},r={x:e.x+(t.x+t.width)*i.x,y:e.y+(t.height+t.y)*i.y},o={x:e.x+t.x*i.x,y:e.y+(t.height+t.y)*i.y},s={x:(o.x+r.x)/2,y:o.y-t.height*i.y/2};return{a:vi(A,s,n),b:vi(a,s,n),c:vi(r,s,n),d:vi(o,s,n),center:s}},vi=(t,e,i)=>{const n=Math.sin(i),A=Math.cos(i);return{x:(t.x-e.x)*A-(t.y-e.y)*n+e.x,y:(t.x-e.x)*n+(t.y-e.y)*A+e.y}},Mi=.352778,Si=.035277,bi=t=>{const e=t.rotation||0,n=wi(e),A=Math.cos(n),a=-Math.sin(n);return(0,i.jsx)("g",{mask:t.stepName||t.productOverlay?void 0:t.mask,children:(0,i.jsx)("g",{transform:`\n matrix(1, 0, 0, 1, ${t.x}, ${t.y})\n matrix(1, 0, 0, 1, ${t.width/2}, ${t.height/2})\n matrix(${A}, ${-a}, ${a}, ${A}, 0, 0)\n matrix(1, 0, 0, 1, ${-t.width/2}, ${-t.height/2})\n `,children:(0,i.jsx)("image",{xlinkHref:t.src,preserveAspectRatio:t.preserveAspectRatio,width:t.width,height:t.height})})})};He({},"Frame",(()=>Pi));const Fi=256,Pi=t=>{const e=`spiff-frame-${t.id}`,A=`spiff-frame-blur-${t.id}`,a=`spiff-frame-blur-edge-${t.id}`,r=`spiff-frame-focal-mask-${t.id}`,o=()=>t.disablePlaceholder&&!t.pattern?"":t.pattern?t.pattern.src:"data:image/png;base64,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";if(!o())return(0,i.jsx)(b(n).Fragment,{});const s=!!t.focalBlur&&!!t.pattern,c=t.rotation||0,l=wi(c),g=Math.cos(l),h=-Math.sin(l);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("defs",{children:(n=>{const s=t.pattern?.x||0,c=t.pattern?.y||0,l=t.pattern?t.pattern.width*t.pattern.scaleX+Math.abs(s):0,g=t.pattern?t.pattern.height*t.pattern.scaleY+Math.abs(c):0,h=t.dataWidth||l||Fi,d=t.dataHeight||g||256,u=t.pattern?t.pattern.width*t.pattern.scaleX:Fi,w=t.pattern?t.pattern.height*t.pattern.scaleY:256;return(0,i.jsxs)("g",{mask:t.stepName?void 0:t.mask,children:[(0,i.jsx)("pattern",{patternUnits:t.pattern?void 0:"userSpaceOnUse",x:0,y:0,width:t.pattern?1:Fi,height:t.pattern?1:Fi,"data-frame-width":t.pattern?h:void 0,"data-frame-height":t.pattern?d:void 0,id:e,children:(0,i.jsx)("image",{preserveAspectRatio:"none",x:s,y:c,width:u,height:w,xlinkHref:o()})}),n?(0,i.jsx)(Yi,{path:t.path,width:t.width,height:t.height,focalBlurStrength:t.focalBlurStrength||1,focalBlurRadius:t.focalBlurRadius||10,blurFilterId:A,focalMaskId:r,blurEdgeClipId:a}):null]})})(s)}),(0,i.jsx)("g",{mask:t.stepName?void 0:t.mask,children:(0,i.jsxs)("g",{transform:`\n matrix(1, 0, 0, 1, ${t.x}, ${t.y})\n matrix(1, 0, 0, 1, ${t.width/2}, ${t.height/2})\n matrix(${g}, ${-h}, ${h}, ${g}, 0, 0)\n matrix(1, 0, 0, 1, ${-t.width/2}, ${-t.height/2})\n matrix(${t.scaleX}, 0, 0, ${t.scaleY}, 0, 0)\n `,children:[(0,i.jsx)("path",{filter:s?`url(#${A})`:void 0,mask:s?`url(#${a})`:void 0,d:t.path,style:{fill:`url(#${e})`,opacity:t.opacity}}),s?(0,i.jsx)("path",{mask:`url(#${r})`,d:t.path,style:{fill:`url(#${e})`,opacity:t.opacity}}):void 0]})})]})},Yi=t=>{const{path:e,width:n,height:A,focalBlurStrength:a,focalBlurRadius:r,blurFilterId:o,focalMaskId:s,blurEdgeClipId:c}=t;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("filter",{id:o,children:(0,i.jsx)("feGaussianBlur",{stdDeviation:a||0})}),(0,i.jsx)("mask",{id:s,children:(0,i.jsx)("circle",{cx:n/2,cy:A/2,r:r||0,fill:"white",filter:`url(#${o})`})}),(0,i.jsx)("mask",{id:c,children:(0,i.jsx)("path",{d:e,style:{fill:"white",opacity:1}})})]})};He({},"Textbox",(()=>Yn));var Ni={};He(Ni,"fontSizeStep",(()=>mn)),He(Ni,"textWidth",(()=>En)),He(Ni,"charWidth",(()=>fn)),He(Ni,"lineWidth",(()=>Cn)),He(Ni,"applyTextTransformations",(()=>yn)),He(Ni,"zip",(()=>In)),He(Ni,"getTextAlignment",(()=>Dn)),He(Ni,"getAnchor",(()=>xn)),He(Ni,"recomputeTextOnElement",(()=>vn)),He(Ni,"defaultLineHeightFactor",(()=>Mn));var ki={};He(ki,"refitTextbox",(()=>Bn)),He(ki,"recalculateTextboxRegion",(()=>pn));var Ri={};He(Ri,"FontMetrics",(()=>on)),He(Ri,"loadFontFromExternalUrl",(()=>sn)),He(Ri,"getFontMetrics",(()=>ln)),He(Ri,"loadFontFromDataUrl",(()=>cn));var Hi={};He(Hi,"registerJSDOM",(()=>Oi)),He(Hi,"createElement",(()=>ji)),He(Hi,"createElementNS",(()=>Vi)),He(Hi,"domParser",(()=>Ki)),He(Hi,"fetchAsArrayBuffer",(()=>Wi)),He(Hi,"fetchAsString",(()=>Xi)),He(Hi,"loadFontFaceSet",(()=>qi)),He(Hi,"xmlSerializer",(()=>Zi)),He(Hi,"toBase64",(()=>$i)),He(Hi,"dataUrlFromExternalUrl",(()=>_i)),He(Hi,"arrayBufferToDataUrl",(()=>tn)),He(Hi,"arrayBufferToBuffer",(()=>nn)),He(Hi,"dataUrlToArrayBuffer",(()=>en));var Ui=a.Buffer;let Gi;const Ti=new Map;function Oi(t){Gi=t}function Ji(){if(!Gi)throw new Error("JSDOM is not registered. Please register it before calling this function.");return new Gi}if(void 0===Ue.TextEncoder){const{TextEncoder:t}=c;Ue.TextEncoder=t}if(void 0===Ue.TextDecoder){const{TextDecoder:t}=c;Ue.TextDecoder=t}const Li=new(b(o).Agent)({rejectUnauthorized:!("local"===Ue.process?.env?.ENVIRONMENT)}),zi=t=>t.every((t=>"undefined"!==t)),ji=t=>zi([typeof document])?document.createElement(t):Ji().window.document.createElement(t),Vi=(t,e)=>{if(zi([typeof document]))return document.createElementNS(t,e);const i=Ji().window.document.createElement(e);return i.setAttribute("xmlns",t),i},Ki=()=>zi([typeof DOMParser])?new DOMParser:new(Ji().window.DOMParser),Wi=t=>{if(zi([typeof fetch]))return new Promise(((e,i)=>{fetch(t).then((t=>{e(t.arrayBuffer())})).catch((t=>{i(t)}))}));{const e=t.replace("localhost","localstack");return new Promise(((t,i)=>{b(r).get(e,{responseType:"arraybuffer",httpsAgent:Li}).then((e=>{t(e.data)})).catch((t=>{i(t)}))}))}},Xi=t=>{if(zi([typeof fetch]))return new Promise(((e,i)=>{fetch(t).then((t=>{e(t.text())})).catch(i)}));{const e=t.replace("localhost","localstack");return new Promise(((t,i)=>{b(r).get(e,{responseType:"text",httpsAgent:Li}).then((e=>{t(e.data)})).catch(i)}))}},qi=async(t,e)=>{if(zi([typeof FontFace])){const i=t.names.fullName.en,n=new FontFace(i,`url(${e})`);return document.fonts.add(n),n.load()}},Zi=()=>zi([typeof XMLSerializer])?new XMLSerializer:new(Ji().window.XMLSerializer),$i=t=>zi([typeof btoa])?btoa(t):Ui.from(t).toString("base64"),_i=async t=>{if(zi([typeof fetch,typeof Blob,typeof FileReader])){const e=await(async t=>{const e=Ti.get(t);if(e)return e;const i=(await fetch(t)).blob();return Ti.set(t,i),i})(t);return await an(e)}const e=(await b(r).get(t,{responseType:"arraybuffer"})).data;return tn(e)},tn=async t=>{const e=await(async t=>{const e=await(0,s.fromBuffer)(t);return e?e.mime:"image/svg+xml"})(t);return`data:${e};base64,${nn(t).toString("base64")}`},en=t=>{const e=t.replace(/\r?\n/g,""),i=e.indexOf(",");if(-1===i||i<=4)throw new TypeError("malformed data: URI");const n=e.substring(5,i).split(";");let A=!1;for(let t=1;t<n.length;t++)"base64"===n[t]&&(A=!0);const a=A?"base64":"ascii",r=unescape(e.substring(i+1)),o=Ui.from(r,a);return An(o)},nn=t=>Ui.from(t),An=t=>{const e=new ArrayBuffer(t.byteLength),i=new Uint8Array(e);for(let e=0;e<t.length;++e)i[e]=t[e];return e},an=t=>new Promise(((e,i)=>{const n=new FileReader;n.onload=function(t){const n=t.target;n&&n.result?e(n.result.toString()):i()},n.readAsDataURL(t)})),rn=new Map;class on{constructor(t){this.font=t,this.glyphsFromText=new Map,this.kerningValues=new Map,this.height=this.calculateApproximateHeight()}getFont(){return this.font}getGlyphs(t){const e=this.glyphsFromText.get(t);if(e)return e;const i=this.font.stringToGlyphs(t);return this.glyphsFromText.set(t,i),i}getApproximateHeight(){return this.height}getExactHeight(t){const e=this.font.stringToGlyphs(t);let i=0,n=0;return e.forEach((t=>{const e=t.getMetrics();i=Math.max(i,e.yMax),n=Math.min(n,e.yMin)})),i-n}getKerningValue(t,e){let i=this.kerningValues.get(t.name);i||(i=new Map,this.kerningValues.set(t.name,i));let n=i.get(e.name);return n||(n=this.font.getKerningValue(t,e),i.set(e.name,n)),n}calculateApproximateHeight(){const t=this.font.stringToGlyphs("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");let e=0,i=0;return t.forEach((t=>{const n=t.getMetrics();e=Math.max(e,n.yMax),i=Math.min(i,n.yMin)})),e-i}}const sn=async t=>{try{return ln(t).getFont()}catch{const e="data:"===t.substring(0,5).toLowerCase().trim()?cn(t):cn(await _i(t));return gn(t,e),await qi(e,t),e}},cn=t=>{try{return ln(t).getFont()}catch{const e=en(t),i=b(A).parse(e);return gn(t,i),i}},ln=t=>{const e=rn.get(t);if(e)return e;throw new Error("Font metrics unavailable for font")},gn=(t,e)=>{const i=new on(e);return rn.set(t,i),i},hn=(t,e,i,n)=>Math.max(fn(t.join("\n"),i,n),e),dn=(t,e,i,n,A,a)=>{const r=(a||Mn)*A.getApproximateHeight(),o=e.split("\n");try{const e=o.flatMap((e=>un(e,t.width,n,A))),a=e.flatMap((t=>t.lines));return{lines:a,requiredHeight:e.flatMap((t=>t.lines)).length*(n*r),fontSize:i,requiredWidth:hn(a,t.width,n,A)}}catch(a){const o=e.split("");return{lines:o,requiredHeight:o.length*(n*r),fontSize:i,requiredWidth:hn(o,t.width,n,A)}}},un=(t,e,i,n)=>{const A=En(t,i,n);if(A<=e)return{lines:[t],width:A};if(!(t.indexOf(" ")>-1)){if(t.length<=1)throw new Error(`Character ${t} is wider than region`);const A=Math.floor(t.length/2),a=un(t.slice(0,A),e,i,n),r=un(t.slice(A),e,i,n);return{lines:[...a.lines,...r.lines],width:Math.max(a.width,r.width)}}const a=t.split(" "),r=[];let o=-1/0,s=0;for(;s<a.length;){const t=a[s];if(En(t,i,n)>e){const A=un(t,e,i,n);r.push(...A.lines),o=Math.max(o,A.width),s++}else{const A=[t];o=Math.max(o,En(t,i,n));let c=s+1,l=!0;for(;c<a.length&&l;){const t=a[c],r=En(`${A.join(" ")} ${t}`,i,n);r<=e?(A.push(t),o=Math.max(o,r),c++):l=!1}r.push(A.join(" ")),s=c}}if(o<0)throw new Error(`No max width calculated for text: ${r}.`);return{lines:r,width:o}},wn=(t,e,i,n,A,a)=>{const r=(a??Mn)*e.getApproximateHeight(),o=1/i.unitsPerEm,s=n/Cn(t,o,e),c=A/(t.length*r*o);return Math.min(c,s)},Bn=(t,e,i,n)=>{const A=ln(e.fontData.assetUrl),a=A.getFont(),r=e.fontSize/a.unitsPerEm;if(!i)return dn(e,t,e.fontSize,r,A,n);let o;if(o=e.text?e.text.split("\n"):e.input?.split("\n")??[""],i.input===t&&e.width===i.width&&e.height===i.height&&e.lineHeight===i.lineHeight)return{lines:o,requiredHeight:e.height,requiredWidth:hn(o,e.width,r,A),fontSize:e.fontSize};const s=e.width!==i.width!=(e.height!==i.height);return e.lineHeight!==i.lineHeight||s||i.input!==t?dn(e,t,e.fontSize,r,A,n):{lines:o,requiredHeight:e.height,requiredWidth:hn(o,e.width,r,A),fontSize:wn(o,A,a,e.width,e.height,n)}},pn=(t,e,i,n,A)=>{const a=ln(e.assetUrl).getFont();let r={...t},o={...t},s=Cn(n,i/a.unitsPerEm,ln(e.assetUrl));return s&&s<r.width&&(o.width=s,"left"===A?(o.left+=Math.sin(r.rotation*Math.PI/360)*(r.width-s),o.top+=Math.sin(r.rotation*Math.PI/180)*(s-r.width)/2):o.left+="right"===A?r.width-s:(r.width-s)/2,n&&In(n,n).every((([t,e])=>t===e))&&(r=o)),r},mn=1,En=(t,e,i)=>{let n=0;const A=i.getGlyphs(t);return A.forEach(((t,e)=>{if(t.advanceWidth&&(n+=t.advanceWidth),e<A.length-1){const a=i.getKerningValue(t,A[e+1]);n+=a}})),n*=e,n},fn=(t,e,i)=>{let n=0;const A=i.getGlyphs(t);return A.forEach(((t,e)=>{if(t.advanceWidth&&(n=Math.max(n,t.advanceWidth)),e<A.length-1){const a=i.getKerningValue(t,A[e+1]);n=Math.max(n,a)}})),n*=e,n},Cn=(t,e,i)=>{let n=0;return t.forEach((t=>{n=Math.max(n,En(t,e,i))})),n},Qn={stripControlCharacters:!0,vertical:!1,uppercase:!1},yn=(t,e=Qn)=>{const i={...Qn,...e};let n=t||"";return i.stripControlCharacters&&(n=n.replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,"")),i.uppercase&&(n=n.toUpperCase()),i.vertical&&(n=n.split("").join("\n")),n},In=(t,e)=>t.map(((t,i)=>[t,e[i]])),Dn=(t="center",e=!1)=>e?"center":t,xn=t=>"left"===t?"start":"right"===t?"end":"middle",vn=(t,e,i)=>t.fontData?{...t,...(()=>{if(t.algorithm===We.Traditional){const n=Bn(e,t,i,t.lineHeight);return{text:n.lines.join("\n"),height:n.requiredHeight,width:n.requiredWidth,fontSize:n.fontSize,input:e}}return{text:e}})()}:t,Mn=1.1;var Sn={};He(Sn,"colorDefinitionPrintValue",(()=>bn)),He(Sn,"spotColorDefinitionString",(()=>Fn)),He(Sn,"svgColorValueToDefinition",(()=>Pn));const bn=t=>{const e=Fn(t.spotColor);return e?`${t.browserValue} ${e}`:t.browserValue},Fn=t=>{if(!t)return"";if(t.profileName.includes("/")&&t.profileName.includes(".icc")){const e=t.profileName.replace(/\s/g,"-"),i=e.lastIndexOf("/");return`icc-named-color(${e.slice(i+1).slice(0,-4)}, ${t.namedColor})`}return`icc-named-color(${t.profileName}, ${t.namedColor})`},Pn=t=>{const e=t.split(/[ ](?=[^)]*?(?:\(|$))/);if(0===e.length)return{browserValue:"#000000"};if(1===e.length)return{browserValue:e[0]};const i=e[1].match(/\(([^)]+)\)/gm);if(!i)throw new Error("Unhandled state of color value in SVG");const n=i[0].replace(/[() ]/g,"").split(",");return{browserValue:e[0],spotColor:{profileName:n[0],namedColor:n[1]}}},Yn=t=>{const e=(t.rotation||0)*Math.PI/180,n=Math.cos(e),A=-Math.sin(e),a=`text-path-${t.id}`,r=`text-fill-${t.id}`,o=t.x+(t.curved?0:t.width/2),s=t.y+(t.curved?0:t.height/2),c=(t.text||"").split("\n");return t.curved&&!t.paths?null:t.fontData?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)("defs",{children:[t.textFillImage&&(0,i.jsx)("pattern",{id:r,patternUnits:"userSpaceOnUse",width:t.textFillImage.scale*t.textFillImage.width,height:t.textFillImage.scale*t.textFillImage.height,x:0,y:0,children:(0,i.jsx)("image",{href:t.textFillImage.src,xlinkHref:t.textFillImage.src,width:t.textFillImage.scale*t.textFillImage.width,height:t.textFillImage.scale*t.textFillImage.height})}),(0,i.jsx)("style",{type:"text/css",dangerouslySetInnerHTML:{__html:`\n @font-face {\n font-family: '${t.fontData.name}';\n src: url('${t.fontData.assetUrl}') format('truetype');\n }\n `}}),t.curved&&t.paths?(0,i.jsx)("path",{id:a,d:t.paths[0]}):void 0]}),t._renderingConfiguration?.debug?(0,i.jsx)("rect",{stroke:"blue",fill:"none",x:t.x,y:t.y,width:t.width,height:t.height}):void 0,(0,i.jsx)("g",{mask:t.stepName?void 0:t.mask,children:(0,i.jsx)("g",{transform:`matrix(${n}, ${-A}, ${A}, ${n}, ${o}, ${s})`,children:(0,i.jsx)("text",{xmlSpace:"preserve",fontFamily:`'${t.fontData.name}'`,fontSize:t.fontSize,fontStyle:"normal",fontWeight:"normal",fill:t.textFillImage?`url("#${r}")`:t._renderingConfiguration?.spotColors&&t.fillSpotColorDefinition?`${t.fill} ${Fn(t.fillSpotColorDefinition)}`:t.fill,style:{whiteSpace:"pre",userSelect:"none"},children:t.curved?(0,i.jsx)(kn,{text:t.text||"",curvedPathId:a,align:t.align}):c.map(((e,n)=>(0,i.jsx)(Nn,{align:t.vertical?"center":t.align,fontSize:t.fontSize,thisLineIdx:n,amountLines:c.length,text:e,textboxHeight:t.height,textboxWidth:t.width,lineHeight:t.lineHeight,vertical:t.vertical,verticalAlign:t.verticalAlign},n)))})})})]}):null},Nn=t=>(0,i.jsx)("tspan",{textAnchor:xn(t.align),x:"left"===t.align?-t.textboxWidth/2:"right"===t.align?t.textboxWidth/2:0,y:`${(()=>{const e=t.fontSize*(void 0!==t.lineHeight?t.lineHeight:Mn),i=t.textboxHeight/2;if("top"===t.verticalAlign)return-i+3*t.fontSize/4+t.thisLineIdx*e;if("bottom"===t.verticalAlign){const n=t.amountLines-1-t.thisLineIdx;return i-t.fontSize/4-n*e}const n=(t.amountLines-1)/2;return(t.thisLineIdx-n)*e+t.fontSize/4})()}px`,children:t.text}),kn=t=>{const e=`#${t.curvedPathId}`;return(0,i.jsx)("textPath",{startOffset:"left"===t.align?"0%":"right"===t.align?"100%":"50%",textAnchor:xn(t.align),href:e,xlinkHref:e,children:t.text})};He({},"Illustration",(()=>Jn));var Rn={};He(Rn,"traverse",(()=>Un)),He(Rn,"sanitizeSvgTree",(()=>Gn)),He(Rn,"modifySVGWithElementProperties",(()=>Tn)),He(Rn,"generateSVGWithUnknownColors",(()=>On));const Hn=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],Un=(t,e)=>{e(t),t.children.length>0&&Array.from(t.children).forEach((t=>Un(t,e)))},Gn=(t,e=!1)=>{!e&&t.setAttribute("preserveAspectRatio","none");const i=[];Un(t,(t=>{if("script"!==t.tagName)if("style"!==t.tagName);else try{(0,l.parse)(t.innerHTML).stylesheet?.rules.forEach((t=>{i.push(t)})),t.remove()}catch(t){console.error(t)}else t.remove()})),Un(t,(t=>{i.forEach((e=>{e.selectors?.forEach((i=>{((t,e)=>{try{return t.matches(e)}catch(i){return t.classList.contains(e.substring(1))}})(t,i)&&e.declarations?.forEach((e=>{e.property&&e.value&&t.setAttribute(e.property,e.value)}))}))}))}))},Tn=(t,e,i,n,A)=>{const a=(t=>Ki().parseFromString(t,"image/svg+xml").firstElementChild)(t);if(!a)throw new Error("Failed to read SVG.");return((t,e,i)=>{t.setAttribute("height",`${i}px`),t.setAttribute("width",`${e}px`)})(a,e,i),((t,e,i)=>{Un(t,(t=>{const n=t.attributes.getNamedItem("fill");n&&"none"!==n.value&&t.classList.forEach((n=>{if(n.startsWith("spiff-fill")){const A=e[n];A&&t.setAttribute("fill",i?bn(A):A.browserValue)}}));const A=t.attributes.getNamedItem("stroke");A&&"none"!==A.value&&t.classList.forEach((n=>{if(n.startsWith("spiff-stroke")){const A=e[n];A&&t.setAttribute("stroke",i?bn(A):A.browserValue)}}))}))})(a,n,A),(t=>Zi().serializeToString(t))(a)},On=async t=>{const e=t.match(/<svg.*?<\/svg>/s)||[],i=e?.length>0?e[0]:"",n=Ki().parseFromString(i,"image/svg+xml").firstElementChild;if(!n)throw new Error("Failed to read SVG.");Gn(n);const A={};Un(n,(t=>{Hn.includes(t.tagName)&&!t.attributes.getNamedItem("fill")&&t.setAttribute("fill","black");const e=t.attributes.getNamedItem("fill");if(e&&"none"!==e.value){const i=Pn(e.value),n=`spiff-fill-${i.browserValue.replace(/\W/g,"")}`;t.setAttribute("fill",i.browserValue),t.classList.add(n),A[n]=i}const i=t.attributes.getNamedItem("stroke");if(i&&"none"!==i.value){const e=Pn(i.value),n=`spiff-stroke-${e.browserValue.replace(/\W/g,"")}`;t.classList.add(n),t.setAttribute("stroke",e.browserValue),A[n]=e}}));const a=Zi().serializeToString(n);return{colors:A,svg:a}},Jn=t=>{if(t.cachedObjectURL&&!t._renderingConfiguration?.omitCachedFields)return(0,i.jsx)(bi,{id:t.id,src:t.cachedObjectURL,x:t.x,y:t.y,width:t.width,height:t.height,rotation:t.rotation,preserveAspectRatio:"none",immutable:t.immutable,mask:t.stepName?void 0:t.mask});const e=t.rotation||0,n=wi(e),A=Math.cos(n),a=-Math.sin(n),r=`\n matrix(1, 0, 0, 1, ${t.x}, ${t.y})\n matrix(1, 0, 0, 1, ${t.width/2}, ${t.height/2})\n matrix(${A}, ${-a}, ${a}, ${A}, 0, 0)\n matrix(1, 0, 0, 1, ${-t.width/2}, ${-t.height/2})\n `;if(!t.svg)throw new Error(`Illustration element ${t.id} (stepName ${t.stepName}) lacked svg from src ${t.src} at render time.`);return(0,i.jsx)("g",{mask:t.stepName?void 0:t.mask,children:(0,i.jsx)("g",{transform:r,dangerouslySetInnerHTML:{__html:Tn(t.svg,t.width,t.height,t.colors,t._renderingConfiguration?.spotColors)}})})};class Ln{constructor(){this.id=Te(),this.stateCallbacks=[],this.prevCommands=[],this.nextCommands=[]}registerStateCallback(t){this.stateCallbacks.push(t)}unregisterStateCallback(t){this.stateCallbacks.filter((e=>e!==t))}getState(){return this.state}runStateCallbacks(){this.stateCallbacks.forEach((t=>t()))}apply(t,e){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);this.state=this.commandReducer(this.state,t),this.runStateCallbacks(),this.nextCommands=[],e||this.prevCommands.push(t)}undo(){if(!this.state)return;const t=this.prevCommands.pop();if(!t)return;const e=t.undo();t.varying?this.state={...this.state,variation:e}:this.state={...this.state,transaction:e},this.nextCommands.push(t),this.runStateCallbacks()}redo(){if(!this.state)return;const t=this.nextCommands.pop();t&&(this.state=this.commandReducer(this.state,t),this.runStateCallbacks(),this.prevCommands.push(t))}flattenSequence(t,e){const i=this.prevCommands.filter((e=>e.sequenceId===t)).pop();i&&(this.prevCommands=this.prevCommands.filter((e=>e.sequenceId!==t)),i?.overrideOldState(e),this.prevCommands.push(i))}getLayoutById(t){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const e=this.state.transaction?.layouts?.[t],i=this.state.variation?.layouts?.[t],n=e?.layout||i?.layout;if(!n)throw new Error(`No layout: ${t}`);const A=[...e?.elements||[],...i?.elements||[]];return this.getLayoutDataWithState(n,A)}getAllLayouts(){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const t=[...Object.keys(this.state.transaction?.layouts),...Object.keys(this.state.variation?.layouts||{})];return[...new Set(t)].map((t=>this.getLayoutById(t)))}getLayoutDataWithState(t,e){return{layoutState:{layout:t,elements:e},getComponentWithProps:i=>jn(t,e,i)}}initialize(t,e){if(e)return void(this.state={transaction:e});let i={serializableWorkflow:{steps:[]},layouts:{}};t.forEach((t=>{i=new AA(t).apply(i)})),this.runStateCallbacks(),this.state={transaction:i}}commandReducer(t,e){if(e.varying){const i={layouts:{},serializableWorkflow:{steps:[]},...t.variation};return{...t,variation:e.apply(i)}}{const i=t.transaction||{layouts:{},serializableWorkflow:{steps:[]}};return{...t,transaction:e.apply(i)}}}}const zn=t=>"image"===t.type?(0,i.jsx)(bi,{...t},t.id):"frame"===t.type?(0,i.jsx)(Pi,{...t},t.id):"illustration"===t.type?(0,i.jsx)(Jn,{...t},t.id):"textbox"===t.type?(0,i.jsx)(Yn,{...t},t.id):null,jn=(t,e,n)=>{const A=n.renderingConfiguration,a=A?.removeExcludedElements?e.filter((t=>!t.excludeFromExport)):e;return(0,i.jsx)(gi,{preserveAspectRatio:void 0,elements:a,backgroundColor:t.transparentBackground?void 0:"white",width:n.width||t.width,height:n.height||t.height,viewBox:A?.region?{x:A.region.left,y:A.region.top,width:A.region.width,height:A.region.height}:{x:0,y:0,width:t.width,height:t.height},configuration:A,outlineArea:n.outlineArea,maxHeight:n.maxHeight,maxWidth:n.maxWidth,position:n.position,borderRadius:n.borderRadius,outlineColor:n.outlineColor})};function Vn(t){return t.sort(((t,e)=>{const i=t.layer||0,n=e.layer||0;if(i<n)return-1;if(i>n)return 1;const A=t.layerIndex||0,a=e.layerIndex||0;return A<a?-1:A>a?1:0}))}class Kn extends Error{constructor(){super("Element not found!"),Object.setPrototypeOf(this,Kn.prototype)}}const Wn=(t,e)=>Xn(t,e).elements.find((e=>e.id===t)),Xn=(t,e)=>{const i=Object.values(e).find((e=>e.elements.some((e=>e.id===t))));if(!i)throw new Kn;return i},qn=(t,e)=>{const i=Vn([...e.elements.filter((e=>e.id!==t.id)),t]);return{layout:e.layout,elements:i,modificationID:Te()}},Zn=async(t,e)=>{const i=[...Object.keys(t.layouts),...Object.keys(e?.layouts||{})],n=[...new Set(i)];for(let i=0;i<n.length;i++){const A=n[i],a=t.layouts[A],r=e?.layouts[A],o=a||r;await Promise.all(o.elements.map((async t=>{if("illustration"===t.type){const e=t;if(e.src&&!e.svg){const t=await Xi(e.src),i=await On(t);e.svg=Tn(i.svg,e.width,e.height,e.colors)}}isNaN(t.x)&&(t.x=0),isNaN(t.y)&&(t.y=0),isNaN(t.width)&&(t.width=0),isNaN(t.height)&&(t.height=0),isNaN(t.rotation)&&(t.rotation=0)})))}};class $n{undo(){if(!this.oldState)throw new Error("Cannot undo.");return this.oldState}overrideOldState(t){this.oldState=t}}class _n extends $n{constructor(t){super(),this.serializableWorkflow=t}apply(t){return this.oldState=t,{...t,serializableWorkflow:this.serializableWorkflow}}}class tA extends $n{constructor(t,e,i){super(),this.id=t,this.x=e,this.y=i}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,x:this.x,y:this.y},n=Xn(e.id,Object.values(t.layouts)),A=qn(i,n);return{...t,layouts:{...t.layouts,[n.layout.id]:A}}}}class eA extends $n{constructor(t,e){super(),this.id=t,this.angle=e}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,rotation:this.angle},n=Xn(e.id,Object.values(t.layouts)),A=qn(i,n);return{...t,layouts:{...t.layouts,[n.layout.id]:A}}}}class iA extends $n{constructor(t,e,i){super(),this.id=t,this.width=Math.abs(e),this.height=Math.abs(i)}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;let i={...e,width:this.width,height:this.height};if("frame"===e.type){const t=i;t.scaleX=t.scaleX*this.width/e.width,t.scaleY=t.scaleY*this.height/e.height}else if("textbox"===e.type){const t=i,n=(t.algorithm&&t.algorithm!==We.Autosize?t.input:t.text)??"";i=vn(t,n,e)}const n=Xn(e.id,Object.values(t.layouts)),A=qn(i,n);return{...t,layouts:{...t.layouts,[n.layout.id]:A}}}}class nA extends $n{constructor(t){super(),this.commands=t}apply(t){return this.oldState=t,this.commands.reduce(((t,e)=>e.apply(t)),t)}}class AA extends $n{constructor(t){super(),this.layout=t}apply(t){return this.oldState=t,{...t,layouts:{...t.layouts,[this.layout.id]:{elements:[],layout:{...this.layout},modificationID:Te()}}}}}class aA extends $n{constructor(t){super(),this.panelName=t}apply(t){this.oldState=t;const e=Object.values(t.layouts).map((t=>{const e=t.layout.panelId===this.panelName;return{...t,elements:e?[]:[...t.elements],modificationID:Te()}})),i={};return e.forEach((t=>{i[t.layout.id]=t})),{...t,layouts:i}}}class rA extends $n{constructor(t,e){super(),this.element=t,this.layout=e}apply(t){this.oldState=t,t.layouts[this.layout.id]||(t.layouts[this.layout.id]={layout:this.layout,elements:[],modificationID:""});const e=t.layouts[this.layout.id].elements;if(e.find((t=>t.id===this.element.id)))throw new Error(`Failed to apply new ${this.element.type} element because ID ${this.element.id} already taken`);if(this.element.productOverlay||0===e.length){const i=[...e,this.element];return void 0===this.element.layerIndex&&(this.element.layerIndex=this.assignIndex(this.element,i)),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:i,modificationID:Te()}}}}const i=e[e.length-1],n=i.productOverlay?i:null;let A;if(n&&e.pop(),null!==this.element.layerIndex&&void 0!==this.element.layerIndex)A=[...e,this.element].sort(((t,e)=>void 0!==t.layerIndex&&void 0!==e.layerIndex?t.layerIndex-e.layerIndex:0));else{const t=this.assignIndex(this.element,e);this.element.layerIndex=void 0!==t?t:0,A=[...e,this.element]}return n&&A.push(n),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:A,modificationID:Te()}}}}assignIndex(t,e){if(0===e.length)return 0;const i=e.filter((e=>(e.layer||0)===(t.layer||0))).sort(((t,e)=>(t.layerIndex||0)-(e.layerIndex||0)))[e.length-1]?.layerIndex;return void 0!==i?i+1:0}}class oA extends $n{constructor(t){super(),this.id=t}apply(t){this.oldState=t;let e=!1;const i=Object.values(t.layouts).map((t=>(t.elements.filter((t=>t.id!==this.id)).length!==t.elements.length&&(e=!0),{...t,elements:t.elements.filter((t=>t.id!==this.id)),modificationID:Te()})));e||console.log(`Failed to delete element ${this.id}`);const n={};return i.forEach((t=>{n[t.layout.id]=t})),{...t,layouts:n}}}class sA extends $n{constructor(t,i){super(),this.el=b(e)(t),this.layout=i,this.el.id=Te(),this.el.x+=5,this.el.y+=5}apply(t){return this.oldState=t,new rA(this.el,this.layout).apply(t)}}class cA extends $n{constructor(t,e,i){super(),this.id=t,this.color=e,this.textFillSpotColor=i}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,fill:this.color,fillSpotColorDefinition:this.textFillSpotColor,textFillImage:void 0},n=Xn(e.id,Object.values(t.layouts)),A=qn(i,n);return{...t,layouts:{...t.layouts,[n.layout.id]:A}}}}class lA extends $n{constructor(t,e){super(),this.id=t,this.imageFill=e}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,textFillImage:this.imageFill},n=Xn(e.id,Object.values(t.layouts)),A=qn(i,n);return{...t,layouts:{...t.layouts,[n.layout.id]:A}}}}class gA extends $n{constructor(t,e){super(),this.id=t,this.size=e}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,fontSize:this.size},n=Xn(e.id,Object.values(t.layouts)),A=(e.algorithm&&e.algorithm!==We.Autosize?e.input:e.text)??"",a=qn(vn(i,A),n);return{...t,layouts:{...t.layouts,[n.layout.id]:a}}}}class hA extends $n{constructor(t,e){super(),this.id=t,this.algorithm=e}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,algorithm:this.algorithm},n=Xn(e.id,Object.values(t.layouts)),A=qn(i,n);return{...t,layouts:{...t.layouts,[n.layout.id]:A}}}}class dA extends $n{constructor(t,e){super(),this.id=t,this.fontData=e}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,fontData:this.fontData},n=Xn(e.id,Object.values(t.layouts)),A=(e.algorithm&&e.algorithm!==We.Autosize?e.input:e.text)??"",a=qn(vn(i,A),n);return{...t,layouts:{...t.layouts,[n.layout.id]:a}}}}class uA extends $n{constructor(t,e){super(),this.id=t,this.align=e}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,align:this.align},n=Xn(e.id,Object.values(t.layouts)),A=qn(i,n);return{...t,layouts:{...t.layouts,[n.layout.id]:A}}}}class wA extends $n{constructor(t,e,i){super(),this.id=t,this.imageData=e,this.offsets=i}apply(t){this.oldState=t;const e=Xn(this.id,Object.values(t.layouts)),i=e.elements.findIndex((t=>t.id===this.id)),n=e.elements[i].pattern,A=[...e.elements];A.splice(i,1,{...e.elements[i],pattern:{...n,src:this.imageData.src,x:this.offsets.x,y:this.offsets.y,width:this.imageData.width,height:this.imageData.height,scaleX:this.offsets.zoom,scaleY:this.offsets.zoom}});const a={...e,elements:A,modificationID:Te()};return{...t,layouts:{...t.layouts,[e.layout.id]:a}}}}class BA extends $n{constructor(t,e){super(),this.id=t,this.text=e}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i=Xn(e.id,Object.values(t.layouts)),n=qn(vn(e,this.text,e),i);return{...t,layouts:{...t.layouts,[i.layout.id]:n}}}}class pA extends $n{constructor(t,e,i){super(),this.id=t,this.className=e,this.fill=i}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i=e.colors||{},n=i[this.className];i[this.className]={browserValue:this.fill,spotColor:n?.spotColor};const A={...e,colors:i},a=Xn(e.id,Object.values(t.layouts)),r=qn(A,a);return{...t,layouts:{...t.layouts,[a.layout.id]:r}}}}class mA extends $n{constructor(t,e,i){super(),this.id=t,this.svgBody=e,this.objectURL=i}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i={...e,svg:this.svgBody,cachedObjectURL:this.objectURL},n=Xn(e.id,Object.values(t.layouts)),A=qn(i,n);return{...t,layouts:{...t.layouts,[n.layout.id]:A}}}}class EA extends $n{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!Wn(this.id,Object.values(t.layouts)).id)throw new Kn;const e=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!e)throw new Error("Layout missing from state!");const i=e.elements.findIndex((t=>t.id===this.id));e.elements.push(e.elements.splice(i,1)[0]);const n=[...e.elements];return n.forEach(((t,e)=>t.layerIndex=e)),{...t,layouts:{...t.layouts,[e.layout.id]:{...t.layouts[e.layout.id],elements:n,modificationID:Te()}}}}}class fA extends $n{constructor(t){super(),this.id=t}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!i)throw new Error("Layout missing from state!");const n=i.elements.findIndex((t=>t.id===this.id));i.elements.splice(n,1),i.elements.unshift(e);const A=[...i.elements],a=A.splice(n,1)[0];return A.splice(n,0,a),A.forEach(((t,e)=>t.layerIndex=e)),{...t,layouts:{...t.layouts,[i.layout.id]:{...t.layouts[i.layout.id],elements:A,modificationID:Te()}}}}}class CA extends $n{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!Wn(this.id,Object.values(t.layouts)).id)throw new Kn;const e=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!e)throw new Error("Layout missing from state!");const i=e.elements.findIndex((t=>t.id===this.id)),n=i+1,A=[...e.elements],a=A.splice(i,1)[0];return A.splice(n,0,a),A.forEach(((t,e)=>t.layerIndex=e)),{...t,layouts:{...t.layouts,[e.layout.id]:{...t.layouts[e.layout.id],elements:A,modificationID:Te()}}}}}class QA extends $n{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!Wn(this.id,Object.values(t.layouts)).id)throw new Kn;const e=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!e)throw new Error("Layout missing from state!");const i=e.elements.findIndex((t=>t.id===this.id)),n=i-1,A=[...e.elements],a=A.splice(i,1)[0];return A.splice(n,0,a),A.forEach(((t,e)=>t.layerIndex=e)),{...t,layouts:{...t.layouts,[e.layout.id]:{...t.layouts[e.layout.id],elements:A,modificationID:Te()}}}}}class yA extends $n{constructor(t,e){super(),this.id=t,this.value=e}apply(t){this.oldState=t;const e=Wn(this.id,Object.values(t.layouts));if(!e.id)throw new Kn;const i=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!i)throw new Error("Layout missing from state!");return{...t,layouts:{...t.layouts,[i.layout.id]:qn({...e,layer:this.value},i)}}}}var IA={};He(IA,"patternImageDataCache",(()=>FA)),He(IA,"frameDataCache",(()=>PA)),He(IA,"generateFrameSVG",(()=>YA)),He(IA,"generateDefaultRectangleFrameSvg",(()=>NA)),He(IA,"getVariant",(()=>kA)),He(IA,"getFrameData",(()=>RA)),He(IA,"calculateOffsets",(()=>HA)),He(IA,"getPatternImageData",(()=>UA)),He(IA,"GetSVGDimensions",(()=>GA)),He(IA,"svgStringDimensions",(()=>TA));var DA={};He(DA,"getExifOrientation",(()=>vA)),He(DA,"canvasDims",(()=>MA)),He(DA,"getAttributesFromArrayBuffer",(()=>SA));let xA=null;const vA=t=>new Promise((e=>{const i=nn(t);(0,s.fromBuffer)(t).then((t=>{const n=t?.mime;if("image/jpeg"!==n)return e(1);(new(0,h.ExifImage)).loadImage(i,((t,i)=>e(t?1:i.image.Orientation||1)))}))})),MA=t=>{const e=8192,i=t.naturalWidth/t.naturalHeight;return t.naturalHeight<=e&&t.naturalWidth<=e?[t.naturalWidth,t.naturalHeight]:t.naturalHeight>t.naturalWidth?[i*e,e]:[e,e/i]},SA=async t=>{const e=await(async t=>{const e=await tn(t),i=await(0,g.loadImage)(e),[n,A]=MA(i),a=await(async()=>{if(null!==xA)return!xA;const t=await(0,g.loadImage)("data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAIAAwMBEQACEQEDEQH/xABRAAEAAAAAAAAAAAAAAAAAAAAKEAEBAQADAQEAAAAAAAAAAAAGBQQDCAkCBwEBAAAAAAAAAAAAAAAAAAAAABEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AG8T9NfSMEVMhQvoP3fFiRZ+MTHDifa/95OFSZU5OzRzxkyejv8ciEfhSceSXGjS8eSdLnZc2HDm4M3BxcXwH/9k=");return xA=2===t.width&&3===t.height,!xA})();if(!a){const t=(0,g.createCanvas)(n,A);return t.getContext("2d").drawImage(i,0,0,n,A),t}const r=await vA(t),[o,s]=r>4?[A,n]:[n,A],c=(0,g.createCanvas)(o,s),l=c.getContext("2d");switch(r){case 2:l.translate(o,0),l.scale(-1,1);break;case 3:l.translate(o,s),l.rotate(Math.PI);break;case 4:l.translate(0,s),l.scale(1,-1);break;case 5:l.rotate(-.5*Math.PI),l.scale(-1,1);break;case 6:l.rotate(-.5*Math.PI),l.translate(-o,0);break;case 7:l.rotate(-.5*Math.PI),l.translate(-o,s),l.scale(1,-1);break;case 8:l.rotate(.5*Math.PI),l.translate(0,-s)}return l.drawImage(i,0,0,o,s),c})(t);return"image/jpeg"===(await(0,s.fromBuffer)(t))?.mime?{dataUrl:e.toDataURL("image/jpeg",1),height:e.height,width:e.width}:{dataUrl:e.toDataURL(),height:e.height,width:e.width}};He({},"getDefaultVariant",(()=>bA));const bA=t=>{const e=t.variants;if(e){if(1===e.length)return e[0];if(void 0!==t.defaultVariant)return e.find((e=>e.id===t.defaultVariant))}},FA=new Map,PA=new Map,YA=async(t,e)=>{if(!e){if(!t)throw new Error("No region or src supplied. Cannot construct frame!");return NA(t)}return Xi(e)},NA=t=>{const e=t.width,i=e/t.height,n=Math.max(e,512),A=n/i;return`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 ${n} ${A}'>\n <path id="target-path" d='M0 0 h ${n} v ${A} h ${-n} Z' />\n </svg>\n `},kA=(t,e)=>{if(!e)return;const i=e.variants?.find((e=>e.id===t.frameVariantId))||bA(e);if(!i)throw new Error(`No variant with ID: ${t.frameVariantId}`);if(!i.asset)throw new Error(`No asset for variant with ID: ${t.frameVariantId}`);return i},RA=async t=>{const e=Ki().parseFromString(t,"image/svg+xml"),i=e.querySelector("svg");if(!i)throw new Error("Malformed frame SVG: <svg> tag not found");const n=i.getAttribute("viewBox");if(!n)throw new Error("SVG missing viewBox.");const A=n.split(" "),a=parseFloat(A[3])||1,r=parseFloat(A[2])||1,o=e.getElementById("target-path"),s=e.getElementsByClassName("st0").item(0);if(o){const t=o.getAttribute("d");if(!t)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const e={path:t,width:r,height:a};return PA.set(t,e),e}if(s){const t=s.getAttribute("d");if(!t)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const e={path:t,width:r,height:a};return PA.set(t,e),e}throw new Error("Malformed frame SVG")},HA=(t,e,i)=>{const n=e.width>=e.height,A=t.width>=t.height,a=e.width/2,r=e.height/2,o=(n?e.height:e.width)/(A?t.width:t.height),s=i?.scale||o,c=a-t.width/2*s,l=i?.left||c,g=r-t.height/2*s;return{x:l,y:i?.top||g,zoom:s}},UA=async t=>{if(FA.has(t))return FA.get(t);if(t.endsWith("svg")){const e=await GA(t),i=e.width,n=e.height,A={src:t,width:i,height:n,aspect:i/n};return FA.set(t,A),A}{const e=await Wi(t),i=await SA(e),n={src:t,width:i.width,height:i.height,aspect:i.width/i.height};return FA.set(t,n),n}},GA=async t=>{const e=await Xi(t);return TA(e)},TA=t=>{const e=Ki().parseFromString(t,"image/svg+xml").querySelector("svg");if(!e)throw new Error("No svg tag found, this svg must be malformed!");const i=e.getAttribute("viewBox"),n=e.getAttribute("width"),A=e.getAttribute("height"),a=i?i?.split(" ").map((t=>Number(t))):[0,0,Number(n),Number(A)];if(!a)throw new Error("No viewbox or width/height values detected on SVG file!");return{width:a[2],height:a[3]}};var OA={};He(OA,"determineCorrectFontSizeAndLines",(()=>LA)),He(OA,"determineCorrectTextboxRegion",(()=>zA));const JA=(t,e,i,n,A)=>{if(e.some((t=>null==t)))throw new Error(`Failed to autosize lines: ${e.join(", ")}`);let a=e.map((t=>t.split("\n"))).flat(),r=a.length,o=a.map((t=>En(t,n,A)));const s=A.getApproximateHeight()*n;let c=!0;for(;c;){if(s+(r-1)*i>t.height)return[null,null];const e=Math.max(...o);if(e<=t.width)return[a,e];const l=o.reduce(((t,e,i,n)=>e>n[t]?i:t),0),g=a[l];let h=!1,d=g.length;for(;!h&&d>-1;){d=g.lastIndexOf(" ",d-1);const e=[g.slice(0,d),g.slice(d+1)],i=e.map((t=>En(t,n,A)));i[0]<=t.width&&(a=[...a.slice(0,l),...e,...a.slice(l+1)],o=[...o.slice(0,l),...i,...o.slice(l+1)],r+=1,h=!0)}h||(c=!1)}return[null,null]},LA=(t,e,i,n,A)=>{let a,r;const o=ln(e.assetUrl),s=o.getFont();if(A.size){const e=t/s.unitsPerEm;return[a,r]=JA(i,n,t,e,o),[A.size,a,r]}let c=6-mn;if(n.length>0){let t=n,e=0;for(;(!A.maxSize||c<=A.maxSize)&&t;)c+=mn,e=c/s.unitsPerEm,[t,r]=JA(i,n,c,e,o)}c>6&&(c-=mn),A.minSize&&c<A.minSize&&(c=A.minSize);const l=c/s.unitsPerEm;return[a,r]=JA(i,n,c,l,o),[c,a,r]},zA=(t,e,i,n,A)=>{let a={...t},r={...t},[o,s,c]=LA(i,e,r,n,{size:0,minSize:i,maxSize:i});var l,g;return c&&c<a.width&&(r.width=c,"left"===A?(r.left+=Math.sin(a.rotation*Math.PI/360)*(a.width-c),r.top+=Math.sin(a.rotation*Math.PI/180)*(c-a.width)/2):r.left+="right"===A?a.width-c:(a.width-c)/2,[o,s]=LA(i,e,r,n,{size:i}),o===i&&s&&(l=n,g=s,l.map(((t,e)=>[t,g[e]]))).every((([t,e])=>t===e))&&(a=r)),a};var jA={};He(jA,"svgObjectURL",(()=>WA)),He(jA,"LayoutElementFactory",(()=>qA));const VA=(t,e)=>{const i=t.layoutState.elements.filter((t=>t.layer===e)),n=Math.max(...i.map((t=>t.layerIndex)).filter((t=>void 0!==t)));return Math.max(n,0)+1},KA=async t=>new Promise((e=>{Xi(t).then((t=>{e(t)})).catch((t=>console.error(t)))})),WA=async t=>{const e=Ki().parseFromString(t,"image/svg+xml").firstElementChild;if(!e)throw new Error("Failed to read SVG");const i=(new XMLSerializer).serializeToString(e),n=document.createElement("canvas"),A=n.getContext("2d"),a=await Re.from(A,i,{anonymousCrossOrigin:!0,ignoreDimensions:!1}),r=e.getAttribute("width"),o=e.getAttribute("height"),s=2048;if(o&&r){const t=parseFloat(o),e=parseFloat(r)/t;e>1?a.resize(s,s/e):a.resize(s*e,s)}else a.resize(s,s);return await a.render(),await(async t=>new Promise(((e,i)=>{try{if(!URL||!URL.createObjectURL)throw new Error("Environment incapable of generating ObjectURL");t.toBlob((i=>{if(!i){if(0===t.width||0===t.height)throw new Error(`Canvas dimensions are invalid (${t.width},${t.height})`);if(t.width*t.height>=268435456)throw new Error(`Canvas dimensions exceed device limit (${t.width},${t.height})`);throw new Error("Couldn't generate object URL for Illustration, the blob was undefined!")}e(URL.createObjectURL(i))}))}catch(t){i(t)}})))(n)},XA=async(t,e,i,n)=>{const A=t.layoutState.layout.useEditableArea&&t.layoutState.layout.editableArea||{width:t.layoutState.layout.width,height:t.layoutState.layout.height,x:0,y:0},a=A.width<A.height?A.width:A.height,r=t.layoutState.layout.useEditableArea?a/1.3:a/2,o={top:A.y+A.height/2-r/2,left:A.x+A.width/2-r/2,width:r,height:r,rotation:0,panelId:t.layoutState.layout.panelId};if(i&&e===ze.Illustration){const t=await On(await KA(i)),e=Ki().parseFromString(t.svg,"image/svg+xml").firstElementChild.getAttribute("viewBox");if(!e)throw new Error("SVG missing viewBox.");const n=o.height,A=e.split(" "),a=(parseFloat(A[2])||1)/(parseFloat(A[3])||1);o.height=o.width/a,o.top+=(n-o.height)/2}if(i&&e===ze.Image){const t=o.height,e=await Wi(i),n=await SA(e),A=n.width/n.height;o.height=o.width/A,o.top+=(t-o.height)/2}if(i&&e===ze.Textbox&&n?.text&&n?.fontScale){await sn(i);const t=ln(i),e=En(n.text,n?.fontScale,t);o.width=Math.min(e,.85*A.width),o.left=A.x+A.width/2-o.width/2}return o};class qA{static async getFrame(t,e){const i=await YA(e.region,e.src),n=await RA(i),A=e.region||await XA(t,ze.Frame);return{id:Te(),x:A.left,y:A.top,width:A.width,height:A.height,layer:A.layer||0,layerIndex:A.layerIndex||VA(t,A.layer||0),rotation:A.rotation,scaleX:A.width/n.width,scaleY:A.height/n.height,path:n.path,dataWidth:n.width,dataHeight:n.height,type:ze.Frame,disablePlaceholder:e.configuration.disablePlaceholder,focalBlur:e.configuration.focalBlur,focalBlurStrength:e.configuration.focalBlurStrength,focalBlurRadius:e.configuration.focalBlurRadius,forceImageCover:e.configuration.forceImageCover,pattern:void 0,immutable:A.immutable}}static async getImage(t,e){const i=e.region||await XA(t,ze.Image,e.src);return{id:Te(),src:e.src,type:ze.Image,y:i.top,x:i.left,rotation:i.rotation,width:i.width,height:i.height,layer:i.layer||0,layerIndex:i.layerIndex||VA(t,i.layer||0),immutable:i.immutable,preserveAspectRatio:"none"}}static async getTextbox(t,e){const{configuration:i,fontSrc:n,designInputStep:A}=e,a=await sn(n),r={assetUrl:n,name:a.names.fullName.en},o=A?.text||i.defaultText||"",s=i.replaceableText?i.replaceableText.replace("{{}}",o):o,c=yn(s,{vertical:i.vertical,uppercase:i.uppercase}),l=e.region||await XA(t,ze.Textbox,n,{text:c,fontScale:i.size?i.size/a.unitsPerEm:void 0}),g=vn({id:Te(),type:ze.Textbox,x:l.left,y:l.top,width:l.width,height:l.height,align:Dn(i.textAlign,i.vertical),curved:i.curved,fill:A?.color||i.colour||"#000000",fontData:r,layer:l.layer||0,layerIndex:l.layerIndex||VA(t,l.layer||0),paths:i.paths,rotation:l.rotation,vertical:i.vertical,verticalAlign:i.verticalAlign||"middle",algorithm:We.Traditional,fontSize:i.size||Math.max(Math.round(.025*l.height),1),text:c,input:o},c),h=pn({...l,height:g.height},r,g.fontSize,g?.text?.split("\n")||[],g.align);return{...g,x:h.left,y:h.top+(l.height-h.height)/2,width:h.width,height:h.height}}static async getShape(t,e){const i=`\n <svg\n xmlns="http://www.w3.org/2000/svg"\n xmlnsXlink="http://www.w3.org/1999/xlink"\n xmlSpace="preserve"\n preserveAspectRatio="none"\n version="1.1"\n width="1"\n height="1"\n viewBox="0 0 1 1"\n >\n <rect\n x="0"\n y="0"\n width="1"\n height="1"\n class="spiff-fill-shape"\n fill="${e.color}"\n />\n </svg>\n `,n={};n["spiff-fill-shape"]={browserValue:e.color};const A=e.region||await XA(t,ze.Illustration),a=Te();return{stepRegion:e.region,colors:n,id:a,svg:i,type:ze.Illustration,y:A.top,x:A.left,rotation:A.rotation,width:A.width,height:A.height,layer:A.layer||0,layerIndex:A.layerIndex||VA(t,A.layer||0),immutable:A.immutable}}static async getIllustration(t,e){const i=e.region||await XA(t,ze.Illustration,e.src),n=await On(await KA(e.src)),A=await WA(n.svg),a=Te();return{cachedObjectURL:A,stepRegion:e.region,colors:n.colors,id:a,src:e.src,svg:n.svg,type:ze.Illustration,y:i.top,x:i.left,rotation:i.rotation,width:i.width,height:i.height,layer:i.layer||0,layerIndex:i.layerIndex||VA(t,i.layer||0),immutable:i.immutable}}}function ZA(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class $A extends Error{constructor(t){super(t),this.name=this.constructor.name}}class _A extends $A{constructor(t){super(`ConfigurationError - ${t}`)}}class ta extends _A{constructor(t){super(`Option not Configured: ${t.stepTitle}`),ZA(this,"optionId",void 0),this.optionId=t?.optionId||"N/A"}}class ea extends _A{constructor(t){super(`Panel not Found: ${t.panelId}`),ZA(this,"panelId",void 0),this.panelId=t?.panelId||"N/A"}}class ia extends _A{constructor(t){super(`Asset not found for variant: ${t.name}`),ZA(this,"variant",void 0),this.variant=t}}class na extends _A{constructor(t){super(`Resource not found for asset: ${t.name}`),ZA(this,"asset",void 0),this.asset=t}}class Aa extends _A{constructor(t,e){super(`Workflow Misconfiguration: ${t.stepName} - ${e}`),ZA(this,"step",void 0),this.step=t}}class aa extends $A{constructor(t){super(`ImplementationError - ${t}`)}}class ra extends aa{constructor(t){super(`Unhandled Behavior Encountered: ${t}`)}}class oa extends aa{constructor(t){super(`Parsing Error: ${t}`)}}class sa extends aa{constructor(t){super(`Client Error: ${t}`)}}class ca extends aa{constructor(t){super(`Resource Generation Failed: ${t}`)}}function la(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class ga{get(t){return localStorage.getItem(t)||void 0}set(t,e){localStorage.setItem(t,e)}remove(t){localStorage.removeItem(t)}getMap(t){const e=this.get(t);if(e)return new Map(JSON.parse(e))}setMap(t,e){const i=JSON.stringify([...e.entries()]);this.set(t,i)}}class ha{constructor(){la(this,"storage",new Map)}get(t){return this.storage.get(t)||void 0}set(t,e){this.storage.set(t,e)}remove(t){this.storage.delete(t)}getMap(t){const e=this.get(t);if(e)return new Map(JSON.parse(e))}setMap(t,e){const i=JSON.stringify([...e.entries()]);this.set(t,i)}}const da=(()=>{try{return localStorage?new ga:new ha}catch{return console.warn("Local storage was unavilable due to browser security settings. Using in-memory storage instead."),new ha}})();function ua(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const wa=new class{constructor(){ua(this,"defaultServerUrl","https://api.spiff.com.au"),ua(this,"defaultServicesApiUrl","https://services.spiff.com.au"),ua(this,"defaultHubUrl","https://hub.spiff.com.au"),ua(this,"serverUrl",void 0),ua(this,"servicesApiUrl",void 0),ua(this,"hubUrl",void 0),ua(this,"serverUrlCallbacks",void 0),this.serverUrl=this.defaultServerUrl,this.servicesApiUrl=this.defaultServicesApiUrl,this.hubUrl=this.defaultHubUrl,this.serverUrlCallbacks=[]}getServerUrl(){return this.serverUrl}getServicesApiUrl(){return this.servicesApiUrl}getHubUrl(){return this.hubUrl}setServerUrl(t){this.serverUrl=t,this.serverUrlCallbacks.forEach((t=>t()))}setServicesApiUrl(t){this.servicesApiUrl=t}setHubUrl(t){this.hubUrl=t}addServerUrlCallback(t){this.serverUrlCallbacks.push(t)}};function Ba(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}let pa;const ma=t=>{pa=t};let Ea;const fa=t=>{Ea=t};let Ca;const Qa=t=>{Ca=t};let ya;const Ia=new class{constructor(){Ba(this,"shadowGraphqlClient",void 0),this.shadowGraphqlClient=this.constructShadowGraphqlClient(),wa.addServerUrlCallback((()=>{this.shadowGraphqlClient=this.constructShadowGraphqlClient()}))}getShadowGraphqlClient(){return this.shadowGraphqlClient}constructShadowGraphqlClient(){const e=(0,t.createHttpLink)({uri:`${wa.getServerUrl()}/graphql`,fetch:f.fetch}),i=(0,m.setContext)((async(t,e)=>{const{headers:i}=e,n=i||{},A=await(async()=>{const t={applicationKey:ya,bundleOwnerId:Ea,customerToken:Ca,transactionOwnerId:pa};return"undefined"!=typeof window&&(window.location.href.includes("/workflows/product/")||window.location.href.includes("hub=true"))?{...await new Promise((t=>{const e=wa.getHubUrl(),i=n=>{n.origin===e&&(window.removeEventListener("message",i),t(n.data))};window.parent!==window&&(window.addEventListener("message",i,!1),window.parent.postMessage("ready",e))})),...t}:t})(),a=e.bearer??A.bearer,r=e.partnerId??A.partnerId,o=e.activeIntegration??A.activeIntegration,s=e.transactionOwnerId??A.transactionOwnerId,c=e.customerToken??A.customerToken,l=e.applicationKey??A.applicationKey,g=e.bundleOwnerId??A.bundleOwnerId;return a&&(n.Authorization=`Bearer ${a}`),r&&(n.partnerId=r),o&&(n.activeIntegration=o),s&&(n.transactionOwnerId=s),c&&(n.customerToken=c),l&&(n["X-Application-Key"]=l),g&&(n.bundleOwnerId=g),{headers:n}})),n=(0,E.onError)((({operation:t,graphQLErrors:e,networkError:i})=>{(e||[]).forEach((({message:e,locations:i,path:n})=>{console.log("[GraphQL Operation Error]"),console.log("Name:"+t.operationName),console.log("Query:"+JSON.stringify(t.query)),console.log(`Message: ${e}, Location: ${JSON.stringify(i,null,2)}, Path: ${n}`),console.log("Variables:"+JSON.stringify(t.variables))})),i&&console.log("GraphQL Network error")}));const A=new(0,t.InMemoryCache)({addTypename:!1,typePolicies:{Transaction:{fields:{bulkEmailAddress:{read:(t=null)=>t,merge:(t,e)=>e||t||null},transactionOwnerId:{read:(t=null)=>t,merge:(t,e)=>e||t||null},customLogoLink:{read:(t=null)=>t,merge:(t,e)=>e||t||null},workflowFooterLogoLink:{read:(t=null)=>t,merge:(t,e)=>e||t||null},workflowState:{read:(t=null)=>t,merge:(t,e)=>e||t||null},bulkSourceUrl:{read:(t=null)=>t,merge:(t,e)=>e||t||null},externalDesignProductId:{read:(t=null)=>t,merge:(t,e)=>e||t||null},externalDesignProductVariantId:{read:(t=null)=>t,merge:(t,e)=>e||t||null},externalCartProductId:{read:(t=null)=>t,merge:(t,e)=>e||t||null},externalCartProductVariantId:{read:(t=null)=>t,merge:(t,e)=>e||t||null},lastSyncedAt:{read:(t=null)=>t,merge:(t,e)=>e||t||null},lineItem:{read:(t=null)=>t,merge:(t,e)=>e||t||null}}},WorkflowProduct:{fields:{isPresent:{read:(t=null)=>t,merge:(t,e)=>e||t||null}}},Product:{fields:{imageUrl:{read:(t=null)=>t,merge:(t,e)=>e||t||null},overlayImageUrl:{read:(t=null)=>t,merge:(t,e)=>e||t||null},preloadImageUrl:{read:(t=null)=>t,merge:(t,e)=>e||t||null},weight:{read:(t=null)=>t,merge:(t,e)=>e||t||null},conversionConfiguration:{read:(t=null)=>t,merge:(t,e)=>e||t||null},bulkConfiguration:{read:(t=null)=>t,merge:(t,e)=>e||t||null}}}}});return new(0,t.ApolloClient)({link:(0,t.from)([n,i,e]),cache:A,name:"Core"})}};function Da(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const xa=t.gql`
2
2
  fragment AssetMetadataFields on Asset {
3
3
  metadata {
4
4
  key
@@ -138,7 +138,7 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
138
138
  ...OptionFields
139
139
  }
140
140
  }
141
- `,Oa=async t=>{const e=t.map((t=>Ha.get({id:t}))),i=t.filter(((t,i)=>void 0===e[i]));if(0===i.length)return Promise.all(e);const n=(async t=>{const e=await Ia.getShadowGraphqlClient().query({query:Ta,errorPolicy:"all",fetchPolicy:"no-cache",variables:{ids:t}});return e.data.options.forEach((t=>{t.defaultVariant?.asset&&ka.cacheAsset(t.defaultVariant.asset),t.colorProfile&&ka.cacheAsset(t.colorProfile),t.variants?.forEach((t=>{t.asset&&ka.cacheAsset(t.asset),t.displayImage&&ka.cacheAsset(t.displayImage),t.thumbnail&&ka.cacheAsset(t.thumbnail),t.material&&ka.cacheMaterial(t.material)}))})),e.data.options})(i),A=i.map((t=>Ha.set({id:t},(async(t,e)=>(await e).find((e=>e.id===t)))(t,n)))),a=e.filter((t=>void 0!==t));return await Promise.all(a.concat(A))};const Ja=new class{constructor(){Ua(this,"getDisplayImageSource",(t=>{if(t){const e=t.displayImage?.fileLink;if(e)return e}})),Ua(this,"getSelectedVariant",((t,e)=>{if(t&&0!==e.length)return t.variants?.find((t=>t.id===e[0]))}))}async getOption(t){return(async()=>{const e=(await Oa([t]))[0];if(e)return e})()}async getAssetTileImageForVariant(t){const e=t.thumbnail;if(e){const t=e.versions?.find((t=>"thumbnail"===t.name)),i=e.fileLink;return t?.link||i}const i=t.asset;if(i){const t=i.versions?.find((t=>"thumbnail"===t.name)),e=i.fileLink;return t?.link||e}return t.material?t.material.id:""}getDefaultVariant(t){const e=t.variants;if(e){if(1===e.length)return e[0];if(void 0!==t.defaultVariant)return e.find((e=>e.id===t.defaultVariant?.id))}}},La=(0,n.createContext)(new Ln),za=function(){const[t,e]=(0,n.useState)([]);return{addEvent:(0,n.useCallback)((t=>{e((e=>[...e,t]))}),[]),updateEvent:(0,n.useCallback)((t=>{e((e=>{const i=e.findIndex((e=>e.pointerId===t.pointerId));if(-1===i)return e;const n=[...e];return n[i]=t,n}))}),[]),removeEvent:(0,n.useCallback)((t=>{e((e=>e.filter((e=>e.pointerId!==t.pointerId))))}),[]),eventCache:t,curActiveEvents:t.length}},ja=()=>{const t=(0,n.useContext)(La),[e,i]=(0,n.useState)(new Date);(0,n.useEffect)((()=>{const e=()=>{i(new Date)};return t.registerStateCallback(e),()=>{t.unregisterStateCallback(e)}}),[t]);return{commandDispatcher:(e,i)=>{t.apply(e,i)},getLayoutById:(0,n.useCallback)((e=>t.getLayoutById(e)),[t,e]),getAllLayouts:(0,n.useCallback)((()=>t.getAllLayouts()),[t,e]),getReducerState:(0,n.useCallback)((()=>{const e=t.getState();return e||{transaction:{layouts:{},serializableWorkflow:{steps:[]}}}}),[t]),lastUpdated:e,flattenSequence:(e,i)=>{t.flattenSequence(e,i)}}};function Va(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}let Ka;var Wa;(Wa=Ka||(Ka={})).None="None",Wa.FrameAdjustment="FrameAdjustment",Wa.Variations="Variations",Wa.FinalizeDesign="FinalizeDesign",Wa.SavedDesigns="SavedDesigns",Wa.ThreeDPreview="ThreeDPreview",Wa.Panels="Panels";const Xa=(t,e)=>({layoutId:t()[0].layoutState.layout.id,selectedElement:void 0,zoom:e,xTranslation:0,yTranslation:0,maxZoom:5,units:qe.Pixel,subMenu:Ka.None,activeModifierKeys:[],metaPressed:!1,elementEvent:void 0,scrolledMovement:!1}),qa=(t,e)=>b(C)(t,e.apply(t))?t:e.apply(t),Za=(0,n.createContext)({}),$a=t=>{const{getAllLayouts:e}=ja(),[A,a]=(0,n.useReducer)(qa,Xa(e,t.defaultZoom||1)),r=(0,n.useMemo)((()=>({state:A,uiDispatcher:a})),[A,a]);return(0,i.jsx)(Za.Provider,{value:r,children:t.children})};class _a{constructor(t){Va(this,"changes",void 0),this.changes=t}apply(t){return{...t,...this.changes}}}const tr=()=>(0,n.useContext)(Za);let er;var ir;let nr;var Ar;let ar;var rr;let sr;var or;let cr;var lr;let gr;var hr;(ir=er||(er={})).Hub="Hub",ir.Shopify="Shopify",(Ar=nr||(nr={}))[Ar.Orbit=0]="Orbit",Ar[Ar.Pan=1]="Pan",(rr=ar||(ar={})).PerVariation="PerVariation",rr.BaseProduct="BaseProduct",(or=sr||(sr={})).Manual="Manual",or.OnStart="OnStart",or.OnQuit="OnQuit",or.OnEnd="OnEnd",(lr=cr||(cr={})).Email="Email",lr.FirstName="FirstName",lr.LastName="LastName",lr.Phone="Phone",(hr=gr||(gr={})).Owner="Owner",hr.Approver="Approver",hr.Editor="Editor",hr.Viewer="Viewer";const dr=(t,e,n,A)=>{const a=e.layout.useEditableArea&&e.layout.editableArea||{width:e.layout.width,height:e.layout.height,x:0,y:0},r=e.elements.filter((e=>e.id!==t.id&&!e.immutable&&!e.productOverlay)),s=r.map((t=>di(t.x,t.y,t.width,t.height,t.rotation))),o=[],c=new Set;s.forEach((t=>c.add(t.minX))),s.forEach((t=>c.add(t.maxX))),[a.x,a.x+a.width/2,a.x+a.width].forEach((t=>c.add(t)));const l=new Set;s.forEach((t=>l.add(t.minY))),s.forEach((t=>l.add(t.maxY))),[a.y,a.y+a.height/2,a.y+a.height].forEach((t=>l.add(t)));const g=r.map((t=>t.y));for(let t=-315;t<=315;t+=45)g.push(t);const h=di(t.x,t.y,t.width,t.height,t.rotation),d=[{value:h.minX,anchor:-1},{value:h.minX+(h.maxX-h.minX)/2,anchor:0},{value:h.minX+(h.maxX-h.minX),anchor:1}],u=[{value:h.minY,anchor:-1},{value:h.minY+(h.maxY-h.minY)/2,anchor:0},{value:h.minY+(h.maxY-h.minY),anchor:1}],w=[{value:t.rotation,anchor:0}],B=(t,e,A,r)=>{const s=[];return e.forEach((e=>{const o=A.find((t=>pi(e,t.value,1*n))),[c,l]=((t,e)=>[{x:"x"===t?e:a.x,y:"x"===t?a.y:e},{x:"x"===t?e:a.x+a.width,y:"x"===t?a.y+a.height:e}])(t,e),g="rotation"===t?null:(0,i.jsx)("line",{x1:c.x,y1:c.y,x2:l.x,y2:l.y,stroke:r||"#D61B5C",strokeWidth:1.2*n},`${t}-${e}-${c.x}-${c.y}-${l.x}-${l.y}`);void 0!==o&&s.push({type:t,value:e,anchorPoint:o.anchor,svgNode:g,guidelineCoordinates:[c,l]})})),s};return o.push(...B("x",Array.from(c),d,A),...B("y",Array.from(l),u,A),...B("rotation",g,w,A)),o};function ur(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const wr=new class{constructor(){ur(this,"latestToast",void 0),ur(this,"toastType",void 0),ur(this,"toastCallbacks",void 0),this.latestToast=null,this.toastType=null,this.toastCallbacks=[]}addToastCallback(t){t({toastMessage:this.latestToast,toastType:this.toastType}),this.toastCallbacks.push(t)}setLatestToast(t,e){this.latestToast=t,this.toastType=e,this.onToastChange()}onToastChange(){this.toastCallbacks.forEach((t=>t({toastMessage:this.latestToast,toastType:this.toastType})))}};let Br;var pr;let mr;var Er;(pr=Br||(Br={})).Translate="Translate",pr.Rotate="Rotate",pr.Resize="Resize",(Er=mr||(mr={})).ControlLeft="ControlLeft",Er.ControlRight="ControlRight",Er.Equal="Equal",Er.MetaLeft="MetaLeft",Er.MetaRight="MetaRight",Er.Minus="Minus",Er.ArrowLeft="ArrowLeft",Er.ArrowRight="ArrowRight",Er.ArrowUp="ArrowUp",Er.ArrowDown="ArrowDown",Er.AltLeft="AltLeft",Er.AltRight="AltRight",Er.Delete="Delete",Er.Backspace="Backspace";const fr=t=>"mobile"===t?3.75:5,Cr=(t,e,i,n)=>{const A=()=>{switch(i){case qe.Pixel:return 1;case qe.Millimeter:return Mi;case qe.Centimeter:return Si;default:throw new ra("Unknown unit of measurement")}};let a=e.x,r=e.y,s=e.x,o=e.y;switch(t){case mr.ArrowLeft:s=e.x-1/A();break;case mr.ArrowUp:o=e.y-1/A();break;case mr.ArrowRight:s=e.x+1/A();break;case mr.ArrowDown:o=e.y+1/A();break;default:throw new ra("Unhandled element interaction!")}const c=di(s,o,e.width,e.height,e.rotation);return(!n||c.minX>=n.left&&c.maxX<=n.left+n.width&&c.minY>=n.top&&c.maxY<=n.top+n.height)&&(a=s,r=o),new tA(e.id,a,r)};let Qr=0,yr=0;var Ir=0;const Dr=(t,e,i,n,A,a)=>{const r=di(t,e,i,n,A),s=r.maxY-r.minY;return!a||r.maxY-.1*s>=a.top&&r.minY+.1*s<=a.top+a.height},xr=(t,e,i,n,A,a)=>{const r=di(t,e,i,n,A),s=r.maxX-r.minX;return!a||r.maxX-.1*s>=a.left&&r.minX+.1*s<=a.left+a.width},vr=(t,e,i)=>({x:(t.x-e.x)*((i.maxX-i.minX)/e.width)+i.minX,y:(t.y-e.y)*((i.maxY-i.minY)/e.height)+i.minY}),Mr=t=>Math.abs(t)<.001?0:Math.abs(t-1)<.001?1:t;let Sr;var br;(br=Sr||(Sr={}))[br.Height=0]="Height",br[br.Width=1]="Width",br[br.Both=2]="Both";const Fr=(t,e,i,n,A)=>{const a=t.rotation*Math.PI/180,r=((t,e,i,n,A)=>{if(A<90){const a=A*Math.PI/180,r=Mr(Math.sin(a)),s=Mr(Math.cos(a));return{height:i*s+n*r,width:i*r+n*s,x:t-i*r,y:e}}if(A<180){const a=(A-90)*Math.PI/180,r=Mr(Math.sin(a)),s=Mr(Math.cos(a));return{width:i*s+n*r,height:i*r+n*s,x:t-(i*s+n*r),y:e-i*r}}if(A<270){const a=(A-180)*Math.PI/180,r=Mr(Math.sin(a)),s=Mr(Math.cos(a));return{height:i*s+n*r,width:i*r+n*s,x:t-n*s,y:e-(i*s+n*r)}}const a=(A-270)*Math.PI/180,r=Mr(Math.sin(a)),s=Mr(Math.cos(a));return{width:i*s+n*r,height:i*r+n*s,x:t,y:e-n*s}})(e.x,e.y,i===Sr.Both||i===Sr.Height?n:t.height,i===Sr.Both||i===Sr.Width?A:t.width,t.rotation),s=xi({x:r.x,y:r.y,width:r.width,height:r.height,rotation:t.rotation}).center;return vi(e,s,-a)},Pr=(t,e,i,n,A,a,r,s,o,c,l)=>{const g=((t,e,i,n,A,a,r,s,o,c,l)=>{l=l??1;const g=n.width/e.width,h=n.height/e.height,d=t.deltaX/g,u=t.deltaY/h,w=i.rotation*Math.PI/180,B=Math.sin(w),p=Math.cos(w),m=i.width/i.height,E=.05*e.width/l,f=.05*e.height/l,C=E/m;switch(A.type){case Br.Resize:let e={top:i.y,left:i.x,width:i.width,height:i.height,rotation:i.rotation,fontSize:i.fontSize},l=e;switch(A.screenAxis){case $e.North:{const n=-d*B+u*p,A=i.y+n,a=Math.max(i.height-n,f),r=xi({...i}).center,s=xi({...i,y:A,height:a}).center,o=vi(s,r,w),c=o.x-i.width/2,g=o.y-a/2;l={...e,left:c,top:g,height:a};const h=180*w/Math.PI,m=di(c,g,i.width,a,h),C=vr({x:t.destX,y:t.destY},t.targetRect,m),Q=vi({x:C.x,y:C.y},r,-w);if(a===f||Q.y>g+a){const t=Mr(Math.sin(w)),n=Mr(Math.cos(w)),A=xi({...i}).center,a=vi({x:i.x,y:i.y},A,w),r={x:a.x-(i.height-f)*t,y:a.y+(i.height-f)*n},s=Fr(i,r,Sr.Height,f,E);return{...e,height:f,top:s.y,left:s.x}}}break;case $e.East:{const n=d*p+u*B,A=Math.max(i.width+n,E);let a=i.height;const r=xi({...i}).center,s=xi({...i,width:A,height:a}).center,o=vi(s,r,w),c=o.x-A/2,g=o.y-a/2;l={...e,left:c,top:g,width:A,height:a};const h=180*w/Math.PI,m=di(c,g,i.width,a,h),C=vr({x:t.destX,y:t.destY},t.targetRect,m),Q=vi({x:C.x,y:C.y},r,-w);if(A===E||Q.x<c){const t=xi({...i}).center,n=vi({x:i.x,y:i.y},t,w),A=Fr(i,n,Sr.Width,f,E);return{...e,width:E,top:A.y,left:A.x}}}break;case $e.West:{const n=d*p+u*B,A=i.x+n,a=Math.max(i.width-n,E);let r=i.height;const s=xi({...i}).center,o=xi({...i,width:a,height:r,x:A}).center,c=vi(o,s,w),g=c.x-a/2,h=c.y-r/2;l={...e,left:g,top:h,width:a,height:r};const m=180*w/Math.PI,C=di(g,h,i.width,r,m),Q=vr({x:t.destX,y:t.destY},t.targetRect,C),y=vi({x:Q.x,y:Q.y},s,-w);if(a===E||y.x>g+a){const t=Mr(Math.sin(w)),n=Mr(Math.cos(w)),A=xi({...i}).center,a=vi({x:i.x,y:i.y},A,w),r={x:a.x+(i.width-E)*n,y:a.y+(i.width-E)*t},s=Fr(i,r,Sr.Width,f,E);return{...e,width:E,top:s.y,left:s.x}}}break;case $e.South:{const n=-d*B+u*p,A=Math.max(i.height+n,f),a=xi({...i}).center,r=xi({...i,height:A}).center,s=vi(r,a,w),o=s.x-i.width/2,c=s.y-A/2;l={...e,left:o,top:c,height:A};const g=180*w/Math.PI,h=di(o,c,i.width,A,g),m=vr({x:t.destX,y:t.destY},t.targetRect,h),C=vi({x:m.x,y:m.y},a,-w);if(A===f||C.y<c){const t=xi({...i}).center,n=vi({x:i.x,y:i.y},t,w),A=Fr(i,n,Sr.Height,f,E);return{...e,height:f,top:A.y,left:A.x}}}break;case $e.Northeast:{const n=d*p+u*B,A=Math.max(i.width+n,E);let a=Math.max(A/m,C),r=i.y-n/m;const s=xi({...i}).center,o=xi({...i,width:A,height:a,y:r}).center,c=vi(o,s,w),g=c.x-A/2,h=c.y-a/2;l={...e,left:g,top:h,width:A,height:a};const f=180*w/Math.PI,Q=di(g,h,i.width,a,f),y=vr({x:t.destX,y:t.destY},t.targetRect,Q),I=vi({x:y.x,y:y.y},s,-w);if(A===E||a===C||I.x<g||I.y>h+a){const t=xi({...i}).center,n=vi({x:i.x,y:i.y},t,w),A={x:n.x-(i.height-C)*B,y:n.y+(i.height-C)*p},a=Fr(i,A,Sr.Both,C,E);return{...e,height:C,width:E,top:a.y,left:a.x}}}break;case $e.Northwest:{const n=-d*p+-u*B,A=i.x-n,a=Math.max(i.width+n,E);let r=i.y-n/m,s=Math.max(a/m,C);const o=xi({...i}).center,c=xi({...i,x:A,y:r,width:a,height:s}).center,g=vi(c,o,w),h=g.x-a/2,f=g.y-s/2;l={...e,left:h,top:f,width:a,height:s};const Q=180*w/Math.PI,y=di(h,f,i.width,s,Q),I=vr({x:t.destX,y:t.destY},t.targetRect,y),D=vi({x:I.x,y:I.y},o,-w);if(a===E||s===C||D.x>h+a||D.y>f+s){const t={x:i.x+i.width,y:i.y+i.height},n={x:t.x-E,y:t.y-C},A=vi(n,o,w),a=Fr(i,A,Sr.Both,C,E);return{...e,height:C,width:E,top:a.y,left:a.x}}}break;case $e.Southeast:{const n=d*p+u*B,A=Math.max(i.width+n,E);let a=Math.max(A/m,C);const r=xi({...i}).center,s=xi({...i,width:A,height:a}).center,o=vi(s,r,w),c=o.x-A/2,g=o.y-a/2;l={...e,left:c,top:g,width:A,height:a};const h=180*w/Math.PI,f=di(c,g,A,a,h),Q=vr({x:t.destX,y:t.destY},t.targetRect,f),y=vi({x:Q.x,y:Q.y},r,-w);if(A===E||a===C||y.x<c||y.y<g){const t=xi({...i}).center,n=vi({x:i.x,y:i.y},t,w),A=Fr(i,n,Sr.Both,C,E);return{...e,width:E,height:C,top:A.y,left:A.x}}}break;case $e.Southwest:{const n=-d*p+-u*B,A=Math.max(i.width+n,E);let a=i.x-n,r=Math.max(A/m,C);const s=xi({...i}).center,o=xi({...i,width:A,height:r,x:a}).center,c=vi(o,s,w),g=c.x-A/2,h=c.y-r/2;l={...e,left:g,top:h,width:A,height:r};const f=180*w/Math.PI,Q=di(g,h,i.width,r,f),y=vr({x:t.destX,y:t.destY},t.targetRect,Q),I=vi({x:y.x,y:y.y},s,-w);if(A===E||r===C||I.x>g+A||I.y<h){const t=xi({...i}).center,n=vi({x:i.x,y:i.y},t,w),A={x:n.x+(i.width-E)*p,y:n.y+(i.width-E)*B},a=Fr(i,A,Sr.Both,C,E);return{...e,height:C,width:E,top:a.y,left:a.x}}}}return Dr(l.left,l.top,l.width,l.height,l.rotation,c)&&xr(l.left,l.top,l.width,l.height,l.rotation,c)&&(e=l),e;case Br.Rotate:const Q={x:t.destX,y:t.destY};let y,I=i.rotation;const D=xi(i,n,{x:g,y:h}),x=ui(Q,D.c,D.d),v=ui(Q,D.d,D.c);if(0===a.filter((t=>"rotation"===t.type)).length)Ir=0,y=(i.rotation+x-v)%360;else{Ir+=Math.sqrt(d**2+u**2);const t=Math.abs(Ir)>fr(r)*window.devicePixelRatio/g;y=t?(i.rotation+x-v)%360:a.find((t=>"rotation"===t.type))?.value||0,t&&(Ir=0)}return Dr(i.x,i.y,i.width,i.height,y,c)&&xr(i.x,i.y,i.width,i.height,y,c)&&(I=y),I<0&&(I+=360),{top:i.y,left:i.x,width:i.width,height:i.height,rotation:I};case Br.Translate:let M,S,b=i.x,F=i.y;if(0===a.filter((t=>"rotation"!==t.type)).length)M=i.x+d,S=i.y+u;else{const t=a.find((t=>"x"===t.type)),e=a.find((t=>"y"===t.type)),n=t=>{switch(t){case-1:return 0;case 0:return i.height/2;case 1:return i.height;default:return 0}};Qr+=d,yr+=u;const A=t?(t=>{switch(t){case-1:return 0;case 0:return i.width/2;case 1:return i.width;default:return 0}})(t.anchorPoint):void 0,c=e?n(e.anchorPoint):void 0,l=void 0!==A&&Math.abs(Qr)<=fr(r),g=void 0!==c&&Math.abs(yr)<=fr(r);(l||g)&&(o(!0),s&&wr.setLatestToast("Tip: Nudge selected elements using arrow keys.",null)),t&&l?M=i.x:(M=i.x+Qr,Qr=0),e&&g?S=i.y:(S=i.y+yr,yr=0)}return Dr(M,S,i.width,i.height,i.rotation,c)&&(F=S),xr(M,S,i.width,i.height,i.rotation,c)&&(b=M),{top:F,left:b,width:i.width,height:i.height,rotation:i.rotation}}})(t,e,i,n,A,a,r,s,o,c,l),h=[];if(g.width>0&&g.height>0&&(h.push(new tA(i.id,g.left,g.top),new iA(i.id,g.width,g.height),new eA(i.id,g.rotation)),i.type===ze.Textbox)){const t=i;g.fontSize&&t.fontSize!==g.fontSize&&h.push(new gA(t.id,g.fontSize))}return h},Yr=t=>{const{onPointerDown:e,scaleFactor:A,elementWidth:a}=t,r=(0,n.useCallback)((t=>{t.stopPropagation(),e&&e(t)}),[e]),s=13*A,o=30*A;return(0,i.jsxs)("g",{transform:`translate(${o})`,children:[(0,i.jsx)("circle",{cx:a/2,cy:-2.5*s,r:1.3*s,fill:"transparent",style:{cursor:"pointer"},onPointerDown:r}),(0,i.jsxs)("svg",{onPointerDown:r,x:a/2-s,y:-2.5*s-s,width:2*s,height:2*s,style:{cursor:"pointer"},viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,i.jsx)("path",{d:"M10.3246 4.31731C10.751 2.5609 13.249 2.5609 13.6754 4.31731C13.9508 5.45193 15.2507 5.99038 16.2478 5.38285C17.7913 4.44239 19.5576 6.2087 18.6172 7.75218C18.0096 8.74925 18.5481 10.0492 19.6827 10.3246C21.4391 10.751 21.4391 13.249 19.6827 13.6754C18.5481 13.9508 18.0096 15.2507 18.6172 16.2478C19.5576 17.7913 17.7913 19.5576 16.2478 18.6172C15.2507 18.0096 13.9508 18.5481 13.6754 19.6827C13.249 21.4391 10.751 21.4391 10.3246 19.6827C10.0492 18.5481 8.74926 18.0096 7.75219 18.6172C6.2087 19.5576 4.44239 17.7913 5.38285 16.2478C5.99038 15.2507 5.45193 13.9508 4.31731 13.6754C2.5609 13.249 2.5609 10.751 4.31731 10.3246C5.45193 10.0492 5.99037 8.74926 5.38285 7.75218C4.44239 6.2087 6.2087 4.44239 7.75219 5.38285C8.74926 5.99037 10.0492 5.45193 10.3246 4.31731Z",stroke:"#111827",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),(0,i.jsx)("path",{d:"M15 12C15 13.6569 13.6569 15 12 15C10.3431 15 9 13.6569 9 12C9 10.3431 10.3431 9 12 9C13.6569 9 15 10.3431 15 12Z",stroke:"#111827",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]})]})},Nr="#ffffff",kr=t=>{const{isMobile:e,outerRadius:A,x:a,y:r,cursorStyle:s,onPointerDown:o,handleClass:c,cornerRadius:l,color:g,strokeWidth:h}=t,[d,u]=(0,n.useState)(!1);(0,n.useEffect)((()=>{const t=()=>{u(!1)};return document.addEventListener("pointerup",t),()=>{document.removeEventListener("pointerup",t)}}),[]);const w=(0,n.useCallback)((t=>{u(!0),o(t)}),[o]);return e?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("circle",{cx:a,cy:r,r:A,fill:d?"rgba(0,0,0,0.5)":"rgba(0,0,0,0)",style:{cursor:s},onPointerDown:w}),(0,i.jsx)("circle",{className:c,cx:a,cy:r,r:l,fill:Nr,style:{cursor:s,pointerEvents:"none"},stroke:g,strokeWidth:h})]}):(0,i.jsx)("circle",{className:c,cx:a,cy:r,r:l,fill:Nr,style:{cursor:s},stroke:g,strokeWidth:h,onPointerDown:o})},Rr=t=>{const{isMobile:e,outerRadius:A,outerWidth:a,outerHeight:r,x:s,y:o,width:c,height:l,cursorStyle:g,onPointerDown:h,edgeHandleRadius:d,color:u,strokeWidth:w}=t,[B,p]=(0,n.useState)(!1);(0,n.useEffect)((()=>{const t=()=>{p(!1)};return document.addEventListener("pointerup",t),()=>{document.removeEventListener("pointerup",t)}}),[]);const m=(0,n.useCallback)((t=>{p(!0),h(t)}),[h]);return e?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("rect",{x:s-(a-c)/2,y:o-(r-l)/2,width:a,height:r,rx:A,fill:B?"rgba(0,0,0,0.5)":"rgba(0,0,0,0)",style:{cursor:g},onPointerDown:m}),(0,i.jsx)("rect",{x:s,y:o,width:c,height:l,rx:d,fill:Nr,style:{cursor:g,pointerEvents:"none"},stroke:u,strokeWidth:w})]}):(0,i.jsx)("rect",{x:s,y:o,width:c,height:l,rx:d,fill:Nr,style:{cursor:g},stroke:u,strokeWidth:w,onPointerDown:h})},Hr=t=>{const{isMobile:e,color:A,elementHeight:a,elementWidth:r,onBeginResize:s,rotation:o,scaleFactor:c,disableX:l,disableY:g,disableCorners:h}=t,d=7.5*c,u=3*c,w=28*c,B=6*c,p=30*c,m=5*c,E=40*c,f=36*c,C=1.2*c,Q=(0,n.useCallback)(((t,e,i)=>{t.stopPropagation(),s(e,i)}),[s]),y=(0,n.useCallback)((t=>Q(t,Di($e.West,360-o),$e.West)),[Q,o]),I=(0,n.useCallback)((t=>Q(t,Di($e.East,360-o),$e.East)),[Q,o]),D=(0,n.useCallback)((t=>Q(t,Di($e.North,360-o),$e.North)),[Q,o]),x=(0,n.useCallback)((t=>Q(t,Di($e.South,360-o),$e.South)),[Q,o]),v=(0,n.useCallback)((t=>Q(t,$e.Northwest,$e.Northwest)),[Q]),M=(0,n.useCallback)((t=>Q(t,$e.Northeast,$e.Northeast)),[Q]),S=(0,n.useCallback)((t=>Q(t,$e.Southwest,$e.Southwest)),[Q]),b=(0,n.useCallback)((t=>Q(t,$e.Northeast,$e.Southeast)),[Q]),F=(e?a-2*p-E:a-2*d-w)>0&&(e?r-2*p-E:r-2*d-w)>0;return(0,i.jsxs)(i.Fragment,{children:[h?void 0:(0,i.jsx)(kr,{isMobile:e,outerRadius:p,x:0,y:0,cursorStyle:"nw-resize",onPointerDown:v,handleClass:"cornerNorthWest",cornerRadius:d,color:A,strokeWidth:C}),F&&!h?(0,i.jsx)(kr,{isMobile:e,outerRadius:p,x:r,y:0,cursorStyle:"ne-resize",onPointerDown:M,handleClass:"cornerNorthEast",cornerRadius:d,color:A,strokeWidth:C}):void 0,F&&!h?(0,i.jsx)(kr,{isMobile:e,outerRadius:p,x:r,y:a,cursorStyle:"se-resize",onPointerDown:b,handleClass:"cornerSouthEast",cornerRadius:d,color:A,strokeWidth:C}):void 0,F&&!h?(0,i.jsx)(kr,{isMobile:e,outerRadius:p,x:0,y:a,cursorStyle:"sw-resize",onPointerDown:S,handleClass:"cornerSouthWest",cornerRadius:d,color:A,strokeWidth:C}):void 0,F&&!l?(0,i.jsx)(Rr,{isMobile:e,outerRadius:m,outerWidth:f,outerHeight:E,x:-B/2,y:a/2-w/2,width:B,height:w,onPointerDown:y,edgeHandleRadius:u,cursorStyle:"w-resize",color:A,strokeWidth:C}):void 0,F&&!g?(0,i.jsx)(Rr,{isMobile:e,outerRadius:m,outerWidth:E,outerHeight:f,x:r/2-w/2,y:a-B/2,width:w,height:B,onPointerDown:x,edgeHandleRadius:u,cursorStyle:"s-resize",color:A,strokeWidth:C}):void 0,l?void 0:(0,i.jsx)(Rr,{isMobile:e,outerRadius:m,outerWidth:f,outerHeight:E,x:r-B/2,y:a/2-Math.min(w,.8*a)/2,width:B,height:Math.min(w,.8*a),onPointerDown:I,edgeHandleRadius:u,cursorStyle:"e-resize",color:A,strokeWidth:C}),F&&!g?(0,i.jsx)(Rr,{isMobile:e,outerRadius:m,outerWidth:E,outerHeight:f,x:r/2-w/2,y:-B/2,width:w,height:B,onPointerDown:D,edgeHandleRadius:u,cursorStyle:"n-resize",color:A,strokeWidth:C}):void 0]})},Ur=t=>{const{isMobile:e,color:A,elementWidth:a,onBeginRotate:r,scaleFactor:s}=t,o=(0,n.useCallback)((t=>{t.stopPropagation(),r()}),[r]),c=13*s,l=30*s;return(0,i.jsxs)("g",{transform:e?`translate(${-l})`:void 0,children:[(0,i.jsx)("circle",{cx:a/2,cy:-2.5*c,r:1.3*c,fill:"transparent",style:{cursor:"ew-resize"},onPointerDown:o}),(0,i.jsxs)("svg",{x:a/2-c,y:-2.5*c-c,xmlns:"http://www.w3.org/2000/svg",style:{cursor:"ew-resize"},height:2*c,viewBox:"0 0 24 24",width:2*c,stroke:A,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",fill:"none",onPointerDown:o,children:[" ",(0,i.jsx)("polyline",{points:"23 4 23 10 17 10"})," ",(0,i.jsx)("path",{d:"M20.49 15a9 9 0 1 1-2.12-9.36L23 10"})]})]})},Gr="spiffElementID",Tr=({color:t,height:e,highlighted:A,id:a,immutable:r,onBeginMove:s,onPointerEnter:o,onPointerLeave:c,onSelected:l,pressed:g,rotation:h,scaleFactor:d,selected:u,width:w,x:B,y:p})=>{const m=1.2*d,{addEvent:E,removeEvent:f,curActiveEvents:C}=za(),Q=(0,n.useCallback)((t=>{E(t),t[Gr]=a;0===C&&0===t.button&&(l(a,t),s())}),[a,u,C,l,s]),y=(0,n.useCallback)((t=>{f(t)}),[]),I=(0,n.useCallback)((t=>{o(a)}),[a,C,o]),D=(0,n.useCallback)((t=>{f(t),c(a)}),[a,C,c]),x=r?void 0:u?g?"grabbing":"grab":"pointer",v=r?"none":"visibleFill";return(0,i.jsx)("g",{transform:`translate(${B}, ${p}) rotate(${h} ${w/2} ${e/2})`,children:(0,i.jsx)("rect",{className:"interactableInnerRect",width:w,height:e,stroke:u||A?t:"none",pointerEvents:v,fill:"none",strokeWidth:m,style:{cursor:x},onPointerDown:r?void 0:Q,onPointerUp:r?void 0:y,onPointerEnter:r?void 0:I,onPointerLeave:r?void 0:D})})},Or=t=>{const{isMobile:e,color:n,height:A,onBeginResize:a,onBeginRotate:r,onContextMenuHandlePointerDown:s,rotation:o,scaleFactor:c,width:l,x:g,y:h,disableX:d,disableY:u,disableCorners:w,disableRotation:B}=t;return(0,i.jsxs)("g",{transform:`translate(${g}, ${h}) rotate(${o} ${l/2} ${A/2})`,children:[!B&&(0,i.jsx)(Ur,{isMobile:e&&!!s,color:n,elementWidth:l,onBeginRotate:r,scaleFactor:c}),e&&s&&(0,i.jsx)(Yr,{onPointerDown:s,elementWidth:l,scaleFactor:c}),(0,i.jsx)(Hr,{isMobile:e,color:n,elementHeight:A,elementWidth:l,rotation:o,scaleFactor:c,onBeginResize:a,disableX:d,disableY:u,disableCorners:w})]})},Jr=.5,Lr=["TEXTAREA","INPUT"],zr=(t,e,i,A,a,r,s,o,c)=>{const{state:l,uiDispatcher:g}=(0,n.useContext)(Za),{getLayoutById:h,getReducerState:d,flattenSequence:u}=ja(),[w,B]=(0,n.useState)(!1),[p,m]=(0,n.useState)(void 0),[E,f]=(0,n.useState)(void 0),[C,Q]=(0,n.useState)(void 0),[y,I]=(0,n.useState)(null),D=h(l.layoutId);(0,n.useEffect)((()=>{if("adjustment"===a&&t?.current&&A){if(A<Jr)return void g(new _a({zoom:Jr}));if(A>l.maxZoom)return void g(new _a({zoom:l.maxZoom}));g(new _a({zoom:A}))}}),[A,g,t,a,l.maxZoom]);const x=(0,n.useCallback)(((t,n)=>{g(new _a({zoom:n}));const A=e?.current?.scrollWidth-e?.current?.clientWidth!=0,r=e?.current?.scrollHeight-e?.current?.clientHeight!=0;e.current&&i.current&&!l.scrolledMovement&&"advanced"===a&&(r&&(e.current.scrollTop=i.current.offsetTop+(e.current.scrollHeight-e.current.clientHeight)/2),A&&(e.current.scrollLeft=(i.current.offsetLeft+e.current.scrollWidth-e.current.clientWidth)/2))}),[g,e,i,l.scrolledMovement,a]);(0,n.useEffect)((()=>{l.zoom<=1&&g(new _a({scrolledMovement:!1}))}),[g,l.zoom]);const v=e?.current?.getBoundingClientRect(),M=((v?.width||1)+(v?.height||1))/2,S=(D.layoutState.layout.width+D.layoutState.layout.height)/2/M/l.zoom,b=(0,n.useMemo)((()=>{const t=l.activeModifierKeys,e=l.elementEvent,i=t.includes(mr.ControlLeft)||t.includes(mr.MetaLeft)||t.includes(mr.ControlRight)||t.includes(mr.MetaRight);if(!l.selectedElement||!e||i)return[];const n=e&&e.type===Br.Translate,A=e&&e.type===Br.Rotate,a=D.layoutState.elements.find((t=>t.id===l.selectedElement));return(n||A)&&a?dr(a,D.layoutState,S,o):[]}),[l.selectedElement,l.elementEvent,l.activeModifierKeys,D.layoutState,S]),F=(0,n.useCallback)((()=>{const t=Te();m(t),f(d().transaction)}),[d]),P=(0,n.useCallback)((t=>{I(t.target),t[Gr]||(I(null),g(new _a({selectedElement:void 0})))}),[l,g]),Y=(0,n.useCallback)((()=>{g(new _a({scrolledMovement:!0}))}),[g]),N=(0,n.useCallback)(((i,n)=>{const A=D.layoutState.elements.find((t=>t.id===l.selectedElement)),a=y?.getBoundingClientRect();if(!(l.elementEvent&&t.current&&e.current&&l.selectedElement&&A&&i.isPrimary))return void(e.current.hasPointerCapture(i.pointerId)&&e.current.releasePointerCapture(i.pointerId));e.current.hasPointerCapture(i.pointerId)||e.current.setPointerCapture(i.pointerId);const o=t.current.getBoundingClientRect(),c=new nA(Pr({deltaX:C?i.screenX-C.screenX:0,deltaY:C?i.screenY-C.screenY:0,destX:i.clientX,destY:i.clientY,targetRect:a},D.layoutState.layout,A,o,l.elementEvent,b,s,"desktop"===s&&!w,B,n,l.zoom));c.sequenceId=p,r(c,!1),Q({screenX:i.screenX,screenY:i.screenY})}),[D.layoutState.elements,D.layoutState.layout,l.elementEvent,t,l.selectedElement,e,b,r,C]),k=(0,n.useCallback)((t=>{g(new _a({elementEvent:t}))}),[g]),R=(0,n.useCallback)((()=>{k(void 0),p&&E&&(u(p,E),m(void 0),f(void 0),c&&c()),Q(void 0)}),[k,p,E,u,c]),H=(0,n.useCallback)(((t,e)=>{let i=l.zoom;const n=l.maxZoom,A=l.selectedElement,s=l.activeModifierKeys;if((s.includes(mr.AltLeft)||s.includes(mr.AltRight))&&(t.code===mr.Equal||t.code===mr.Minus)){const e=.05*n;t.code===mr.Equal?g(new _a({zoom:i+e<=n?i+=e:i})):g(new _a({zoom:i-e>=Jr?i-e:i}))}const o=D.layoutState.elements.find((t=>t.id===A));if(A&&o){if(t.code===mr.MetaLeft||t.code===mr.ControlLeft||t.code===mr.MetaRight||t.code===mr.ControlRight){const e=t.code,i=l.activeModifierKeys;if(!i.includes(e))return g(new _a({activeModifierKeys:i.concat(e)}))}if(t.code===mr.ArrowDown||t.code===mr.ArrowUp||t.code===mr.ArrowLeft||t.code===mr.ArrowRight){g(new _a({elementEvent:{type:Br.Translate}}));const i=Cr(t.code,o,l.units,e);r(i,!1),g(new _a({elementEvent:void 0}))}t.code!==mr.Delete&&t.code!==mr.Backspace||"advanced"!==a||o.stepName||(g(new _a({selectedElement:void 0})),r(new sA(o.id),!1))}}),[r,g,D.layoutState.elements,a,l.activeModifierKeys,l.maxZoom,l.selectedElement,l.units,l.zoom]),U=(0,n.useCallback)((t=>{if(t.code===mr.MetaLeft||t.code===mr.ControlLeft||t.code===mr.MetaRight||t.code===mr.ControlRight){const e=l.activeModifierKeys,i=t.code;g(new _a({activeModifierKeys:e.filter((t=>t!==i))}))}}),[g,l.activeModifierKeys]);return{guidelines:b,scale:S,zoomableElementRef:i,setElementEvent:k,handleZoom:x,handleKeyDown:H,handleKeyUp:U,handlePointerPressedBackground:P,handlePointerReleased:R,handlePointerMove:N,handleScroll:Y,handleSequenceStart:F}},jr=(t,e,i)=>{const A=(0,n.useMemo)((()=>[...new Set(t)].map((t=>String(t).toLowerCase()))),[]),a=(0,n.useRef)([]),r=(0,n.useCallback)((()=>{const t=A.every((t=>a.current.includes(t))),e=a.current.length===A.length;return t&&e}),[]),s=(0,n.useCallback)((t=>{const i=String(t.key).toLowerCase();if(t.repeat||"meta"===i)return;const n=t.target;return!(Lr.indexOf(n.tagName)>=0)&&(a.current=[...new Set([...a.current,i])],r()&&e(),t.preventDefault())}),[r,A,e,t]),o=(0,n.useCallback)((t=>{const e=String(t.key).toLowerCase(),n=r();a.current=a.current.filter((t=>t!==e));const A=r();i&&n&&!A&&i()}),[A]);(0,n.useEffect)((()=>(window.addEventListener("keydown",s),window.addEventListener("keyup",o),()=>{window.removeEventListener("keydown",s),window.removeEventListener("keyup",o)})),[s,o])},Vr=t=>{const{isMobile:e,primaryColor:A,customViewbox:a,editorRef:r,elementEvent:s,guidelines:o,layoutHeight:c,layoutWidth:l,targetedElements:g,scale:h,selectedElement:d,onElementEvent:u,onElementSelected:w,onSequenceStart:B,onMouseMove:p,onContextMenuHandlePointerDown:m}=t,{state:E}=tr(),{getLayoutById:f}=ja(),C=f(E.layoutId),[Q,y]=(0,n.useState)(void 0),I=(0,n.useCallback)((t=>{y(t)}),[]),D=(0,n.useCallback)((t=>{Q===t&&y(void 0)}),[Q]),x=(0,n.useCallback)((()=>{B(),u({type:Br.Translate})}),[u,B]),v=(0,n.useCallback)(((t,e)=>{B(),u({type:Br.Resize,relativeAxis:t,screenAxis:e})}),[u,B]),M=(0,n.useCallback)((()=>{B(),u({type:Br.Rotate})}),[u,B]),S=a||{x:0,y:0,width:l,height:c},b=C.layoutState.elements,F=b.find((t=>t.id===d)),P=F;return(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",xmlSpace:"preserve",version:"1.1",style:{touchAction:"none",position:"absolute",maxWidth:"100%",maxHeight:"100%",overflow:"visible"},width:"auto",height:"auto",viewBox:`${S.x} ${S.y} ${S.width} ${S.height}`,children:[(0,i.jsx)("rect",{onMouseMove:p,style:{pointerEvents:"all"},fill:"none",stroke:"none",ref:r,width:l,height:c}),o.map((t=>t.svgNode)),b.map((t=>{const e=void 0!==d&&t.id===d,n=e&&void 0!==s,a=void 0!==Q&&t.id===Q;return(0,i.jsx)(Tr,{color:A,id:t.id,selected:e,highlighted:a,pressed:n,x:t.x,y:t.y,width:t.width,height:t.height,rotation:t.rotation,immutable:t.immutable||g&&!g.includes(t.id),onSelected:w,onBeginMove:x,onPointerEnter:I,onPointerLeave:D,scaleFactor:h},t.id)})),F&&(0,i.jsx)(Or,{isMobile:e,color:A,x:F.x,y:F.y,disableCorners:F.type===ze.Textbox&&(!P.algorithm||P.algorithm===We.Autosize),disableX:F.type===ze.Frame||F.type===ze.Image||F.type===ze.Textbox&&(!P.algorithm||P.algorithm===We.Autosize),disableY:F.type===ze.Textbox||F.type===ze.Frame||F.type===ze.Image,width:F.width,height:F.height,rotation:F.rotation,onBeginResize:v,onBeginRotate:M,scaleFactor:h,onContextMenuHandlePointerDown:m})]})};function Kr(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Wr{constructor(){Kr(this,"timestamp",Date.now())}}class Xr{constructor(t){Kr(this,"queue",[]),Kr(this,"activePromise",void 0),Kr(this,"queueMaxSize",void 0),this.queueMaxSize=t}enqueue(t){if(this.queue.push(t),void 0!==this.queueMaxSize&&this.queue.length>this.queueMaxSize){const t=this.queue.length-1;for(let e=0;e<t;++e)this.queue.shift()}this.activePromise||(this.activePromise=this.dequeue())}hasActivePromise(){return!!this.activePromise}getRemainingQueueSize(){return this.queue.length}async finalize(){return this.activePromise?this.activePromise:Promise.resolve()}async dequeue(){const t=this.queue.shift();if(t)try{await t.execute()}catch(t){console.log(t)}finally{await this.dequeue()}else this.activePromise=void 0}}function qr(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Zr{constructor(){qr(this,"moduleName",void 0)}}const $r=t=>Vi("http://www.w3.org/2000/svg",t),_r=(t,e)=>{const i=$r("rect");return i.setAttribute("height",`${t}`),i.setAttribute("width",`${e}`),i},ts=()=>{const t=$r("svg");return t.setAttribute("xmlns","http://www.w3.org/2000/svg"),t.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink"),t.setAttribute("version","1.1"),t};function es(t){const e=ts(),i=/viewBox="0 0 (.+?) (.+?)"/.exec(t)||["0","0"],n=parseFloat(i[1]),A=parseFloat(i[2]);return e.setAttribute("height",`${A}`),e.setAttribute("width",`${n}`),[e,A,n]}function is(t,e,i){const n=Te();((t,e,i)=>{const n=$r("g");t.appendChild(n),n.setAttribute("id",i),n.innerHTML=e})(e,i,`bgdef-${n}`),t.appendChild((t=>{const e=$r("use");return e.setAttribute("xlink:href",t),e.setAttribute("href",t),e})(`#bgdef-${n}`))}const ns=(t,e,i,n)=>{const A=ji("filter");A.setAttribute("id",n),A.setAttribute("height","200%"),A.setAttribute("width","200%"),A.setAttribute("x","-50%"),A.setAttribute("y","-50%");const a=ji("feOffset");A.appendChild(a),a.setAttribute("result","offOut"),a.setAttribute("in","SourceAlpha"),a.setAttribute("dx",`${t}`),a.setAttribute("dy",`${e}`);const r=ji("feGaussianBlur");A.appendChild(r),r.setAttribute("result","blurOut"),r.setAttribute("in","offOut"),r.setAttribute("stdDeviation",`${i}`);const s=ji("feBlend");return A.appendChild(s),s.setAttribute("in","SourceGraphic"),s.setAttribute("in2","blurOut"),s.setAttribute("mode","normal"),A},As=t=>{let e=t;return e=e.replace(/feoffset/gi,"feOffset"),e=e.replace(/fegaussianblur/gi,"feGaussianBlur"),e=e.replace(/feblend/gi,"feBlend"),e=e.replace(/lineargradient/gi,"linearGradient"),e=e.replace(/stddeviation/gi,"stdDeviation"),e};function as(t,e,i,n,A,a){const r=A||1,s=a||1,o={x:e[0],y:e[1],width:e[2]-e[0],height:e[3]-e[1]};if(o.width<=0)return;const c=function(t,e,i,n){const A=i/t,a=n/e;if(A>1&&a>1)return Math.min(A,a);if(A>1&&a<1)return a;if(A<1&&a>1)return A;return Math.min(A,a)}(o.height,o.width,i*r,n*s),l=(n-c*o.width)/2-c*o.x,g=(i-c*o.height)/2-c*o.y;t.setAttribute("transform",`translate(${l} ${g}) scale(${c} ${c})`)}function rs(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const ss={m:["x","y"],z:[],l:["x","y"],h:["x"],v:["y"],c:["x1","y1","x2","y2","x","y"],s:["x2","y2","x","y"],q:["x1","y1","x","y"],t:["x","y"],a:["rx","ry","xRotation","largeArc","sweep","x","y"]};class os{constructor(t){rs(this,"paths",void 0);const e=Array.from(t.querySelectorAll("path"));this.paths=e.map((t=>{const e=t.getAttribute("d")||"";return{pathElement:t,pathData:this.parsePath(e)}}))}transform(t){for(const e of this.paths)e.pathData=this.runTransformer(e.pathData,t);this.update()}encodePath(t){let e="";return t.map((t=>{const i=[],n=t.relative?t.type:t.type.toUpperCase();let A=e!==n;const a=ss[t.type];A&&(i.push(n),e=n);for(const e of a){const n=t[e];let a;switch(typeof n){case"boolean":a=0|n;break;case"number":a=(100*n|0)/100;break;default:throw new sa("Failed to encode path.")}A||i.push(" "),i.push(a),A=!1}return i.join("")})).join("")}parsePath(t){const e=/([mzlhvcsqta])([^mzlhvcsqta]*)/gi,i=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi,n=[];let A;for(e.lastIndex=0;A=e.exec(t);){const t=A[1].toLowerCase(),e=(A[2].match(i)||[]).map(parseFloat),a=t===A[1],r=ss[t];if(e.length<r.length)throw new sa(`Path type "${t}" given ${e.length} arguments, expected ${r.length}.`);if(r.length>0){if(e.length%r.length!=0)throw new sa(`Path type "${t}" given ${e.length} arguments, not divisible by ${r.length}`);for(let i=0;i<e.length/r.length;i++){const A={type:t,relative:a};for(let t=0;t<r.length;t++)A[r[t]]=e[i*r.length+t];n.push(A)}}else n.push({type:t,relative:a})}return n}runTransformer(t,e){const i=[["x1","y1"],["x2","y2"],["x","y"]];return this.transformPath(t,(t=>{for(let n=0;n<i.length;n++){const[A,a]=i[n];if(A in t&&a in t){const i=[t[A],t[a]],n=e(i);if(n.length<2)throw new sa("Transformer must return at least 2 points.");t[A]=n[0],t[a]=n[1]}}return t}))}transformPath(t,e){const i=[];for(let n=0;n<t.length;n++){const A=e(JSON.parse(JSON.stringify(t[n])));Array.isArray(A)?i.push(...A):A&&i.push(A)}return i}update(){for(const{pathElement:t,pathData:e}of this.paths){const i=this.encodePath(e);t.setAttribute("d",i)}}}function cs(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class ls extends Zr{constructor(...t){super(...t),cs(this,"moduleName","Favourites")}svgPreview(t){return this.svg(t)}svgPrint(t){return this.svg(t)}svg(t){const e=cn("data:application/font-woff;base64,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"),i=""!==t?(n=t).charAt(0).toUpperCase()+n.substr(1).toLowerCase():"";var n;const A=e.getPath(i,0,72,72);return this.brandSvg(A,'<?xml version="1.0" encoding="iso-8859-1"?>\n\x3c!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\n\t width="289.691px" height="204.059px" viewBox="0 0 289.691 204.059" enable-background="new 0 0 289.691 204.059"\n\t xml:space="preserve">\n<g id="Layer_3">\n\t<g>\n\t\t<g>\n\t\t\t<defs>\n\t\t\t\t<path id="SVGID_1_" d="M132.799,0L132.799,0c-2.85,0-5.611,0.376-8.204,1.119c-6.512,1.865-14.407,8.455-17.575,17.447\n\t\t\t\t\tc-5.374,1.759-16.263,6.039-18.474,16.876c-12.301,4.695-59.215,23.718-76.41,46.864c-1.783,2.067-14.076,17.86-11.873,42.198\n\t\t\t\t\tc2.083,23.017,14.66,39.637,20.03,46.733c0.496,0.655,0.925,1.223,1.271,1.697c3.272,4.502,16.448,20.198,29.967,27.96\n\t\t\t\t\tc0.985,0.565,2.526,1.337,3.598,1.671c9.286,2.898,13.053,0.684,13.053,0.684l-5.734-6.704\n\t\t\t\t\tc-0.113-0.047-1.555-2.104-2.024-3.528c-0.401-1.1-0.683-3.708,1.941-8.822c1.92-3.74,8.466-11.905,30.74-24.556\n\t\t\t\t\tc19.286-10.953,45.665-22.672,78.404-34.831c0.384-0.138,43.36-15.521,71.448-17.843l0.084-0.007l0.084-0.01\n\t\t\t\t\tc0.056-0.006,5.722-0.659,11.761-0.659c7.122,0,10.06,0.898,11.094,1.355l0.378,9.638c0,0,5.87-4.852,7.88-7.117\n\t\t\t\t\tc2.01-2.264,12.031-11.822,14.79-47.407c0.084-0.941,1.244-14.374,0.202-25.831c-0.428-4.706-2.167-9.042-5.03-12.54\n\t\t\t\t\tc-4.914-6.004-15.065-13.686-35.521-16.2c-0.84-0.118-8.692-1.176-21.503-1.176c-14.431,0-29.204,1.305-43.952,3.882\n\t\t\t\t\tc-1.858-1.395-4.78-2.782-9.053-2.782c-0.427,0-0.861,0.014-1.303,0.043c-1.604-2.318-4.231-4.531-8.237-5.259\n\t\t\t\t\tc-0.396-0.076-1.797-0.315-3.752-0.315c-0.897,0-1.798,0.051-2.676,0.152h-0.001c-0.244,0.007-1.149-0.008-2.428-0.517\n\t\t\t\t\tc-0.623-0.317-2.157-1.062-3.567-1.46c-0.945-0.267-2.142-0.54-3.842-0.54c-1.387,0-2.951,0.186-4.78,0.569l-0.214,0.045\n\t\t\t\t\tl-0.073,0.023c-0.141,0.032-0.727,0.154-1.455,0.154c-0.378,0-0.727-0.033-1.036-0.098C139.516,0.637,136.489,0,132.799,0z"/>\n\t\t\t</defs>\n\t\t\t<clipPath id="SVGID_2_">\n\t\t\t\t<use xlink:href="#SVGID_1_" overflow="visible"/>\n\t\t\t</clipPath>\n\t\t\t\n\t\t\t\t<radialGradient id="SVGID_3_" cx="0.6661" cy="211.1478" r="1" gradientTransform="matrix(196.7466 -33.1074 59.2188 355.3871 -12531.9229 -75128.1562)" gradientUnits="userSpaceOnUse">\n\t\t\t\t<stop offset="0" style="stop-color:#31006F"/>\n\t\t\t\t<stop offset="0.7044" style="stop-color:#31006F"/>\n\t\t\t\t<stop offset="0.9025" style="stop-color:#8663A8"/>\n\t\t\t\t<stop offset="0.9837" style="stop-color:#380874"/>\n\t\t\t</radialGradient>\n\t\t\t<path clip-path="url(#SVGID_2_)" fill="url(#SVGID_3_)" d="M289.231,36.928c0-15.893-21.025-34.603-52.712-35.045\n\t\t\t\tc-15.771-0.22-99.017-1.969-102.404-3.731C132.43-2.669,102,8.514,99.071,14.978c-1.352,2.989-12.46,12.774-12.087,16.225\n\t\t\t\tC43.908,47.213,14.509,73.752,3.19,93.894c-4.256,7.574-5.912,24.772,1.863,48.426c7.171,21.815,39.719,65.369,55.762,70.653\n\t\t\t\tc34.873-19.08-3.701-15.168,25.189-33.173c37.467-23.352,96.365-43.82,128.896-51.007c51.454-11.366,72.09-9.938,70.905-8.055\n\t\t\t\tC293.781,108.06,291.07,57.024,289.231,36.928z"/>\n\t\t</g>\n\t\t<path fill="#F4F5F5" d="M273.502,102.985c0,0-0.484,7.046-0.92,8.889l-0.856,0.768l-1.487,1.343c0,0,0.746-3.28,0.676-7.538\n\t\t\tL273.502,102.985z"/>\n\t\t<g>\n\t\t\t<defs>\n\t\t\t\t<path id="SVGID_4_" d="M273.495,103.048l-0.914,8.826l-6.223,5.407l-0.378-9.638c-3.51-1.84-20.124-1.91-40.523,1.965\n\t\t\t\t\tc-20.398,3.875-55.726,13.5-108.591,37.875c-52.865,24.375-56.042,40.035-56.3,41.165c-0.258,1.129-0.609,2.871-0.246,4.106\n\t\t\t\t\tc0.363,1.234,1.566,3.062,1.566,3.062c0.622,0.875,6.294,7.434,6.294,7.434c-0.243,0.139-0.713,0.296-0.713,0.296\n\t\t\t\t\tc-3.776-1.363-10.024-5.048-12.507-6.55c-0.105-0.059-0.211-0.109-0.316-0.168c-0.213-0.126-0.425-0.267-0.634-0.411\n\t\t\t\t\tl-0.127-0.079l-0.016-0.022c-4.346-3.133-7.493-10.523,1.153-21.838c7.623-9.975,16.641-15.494,27.199-21.737\n\t\t\t\t\tc35.97-21.271,88.653-41.928,128.445-51.065c20.468-4.7,37.871-6.713,47.404-5.994\n\t\t\t\t\tC270.766,96.641,274.312,100.216,273.495,103.048z M103.152,50.182c-0.754,0.298-4.411,1.78-5.162,2.081\n\t\t\t\t\tc-46.711,18.73-75.543,39.262-85.429,55.22c-4.89,7.894-6.183,14.713-7.333,23.376c-0.528,3.979-0.264,9.917,0.182,13.905\n\t\t\t\t\tc0.098,0.872,0.196,1.558,0.285,1.837c-6.447-20.414-0.184-36.278,3.696-43.319c10.903-19.787,49.756-42.606,92.09-58.743\n\t\t\t\t\tC101.625,47.168,102.123,48.443,103.152,50.182z M289.642,46.027c0,0-1.68-8.208-8.18-16.932\n\t\t\t\t\tC281.44,29.064,260.598,16,235.788,15.96c-15.584-0.025-35.217,2.462-56.404,6.836c0.858,0.69,2.004,2.132,1.76,4.812\n\t\t\t\t\tc21.139-4.514,40.632-7.022,56.269-6.997c16.325,0.026,32.385,3.661,38.959,8.397c2.862,2.062,6.187,5.337,8.039,8.968\n\t\t\t\t\tc0.562,1.011,3.167,5.866,5.214,12.307C289.626,50.282,289.762,47.693,289.642,46.027z"/>\n\t\t\t</defs>\n\t\t\t<clipPath id="SVGID_5_">\n\t\t\t\t<use xlink:href="#SVGID_4_" overflow="visible"/>\n\t\t\t</clipPath>\n\t\t\t<rect x="282.522" y="30.129" clip-path="url(#SVGID_5_)" fill="#95979A" width="7.146" height="21.322"/>\n\t\t\t\n\t\t\t\t<radialGradient id="SVGID_6_" cx="0.6661" cy="211.1478" r="1" gradientTransform="matrix(270.0389 19.3946 -19.0497 267.9429 3989.5959 -56677.875)" gradientUnits="userSpaceOnUse">\n\t\t\t\t<stop offset="0" style="stop-color:#000000"/>\n\t\t\t\t<stop offset="0.0996" style="stop-color:#242425"/>\n\t\t\t\t<stop offset="0.2741" style="stop-color:#4E4F51"/>\n\t\t\t\t<stop offset="0.5029" style="stop-color:#757779"/>\n\t\t\t\t<stop offset="0.7746" style="stop-color:#A6A8AB"/>\n\t\t\t\t<stop offset="0.8165" style="stop-color:#E2E3E4"/>\n\t\t\t\t<stop offset="0.8338" style="stop-color:#ECEDED"/>\n\t\t\t\t<stop offset="0.8581" style="stop-color:#F2F2F3"/>\n\t\t\t\t<stop offset="0.9255" style="stop-color:#F3F4F4"/>\n\t\t\t\t<stop offset="0.9497" style="stop-color:#85878A"/>\n\t\t\t\t<stop offset="0.9601" style="stop-color:#77787B"/>\n\t\t\t\t<stop offset="0.9911" style="stop-color:#C8CACC"/>\n\t\t\t</radialGradient>\n\t\t\t<path clip-path="url(#SVGID_5_)" fill="url(#SVGID_6_)" d="M274.97,104.208c-1.015,1.477-1.895,7.095-2.389,7.667\n\t\t\t\tc0.266-0.396-6.223,5.407-6.223,5.407S53.633,196.961,60.248,199.321c-1.672-0.501-3.655-1.4-5.602-2.491\n\t\t\t\tc-4.713-2.786-8.78-10.369,0.376-22.35c7.623-9.975,16.641-15.494,27.199-21.736c35.97-21.271,88.653-41.929,128.445-51.066\n\t\t\t\tc20.468-4.7,37.871-6.713,47.404-5.994C271.591,96.703,276.421,101.309,274.97,104.208z M101.481,44.54\n\t\t\t\tc-42.334,16.137-81.187,38.956-92.09,58.743c-3.88,7.042-10.143,22.905-3.696,43.319c-0.089-0.279-0.188-0.965-0.285-1.837\n\t\t\t\tc-0.446-3.989-0.711-9.927-0.182-13.905c1.15-8.662,2.444-15.482,7.333-23.376c9.886-15.959,38.718-36.49,85.429-55.219\n\t\t\t\tc0.752-0.301,4.408-1.784,5.162-2.081C102.123,48.443,101.625,47.168,101.481,44.54z M235.789,15.959\n\t\t\t\tc-15.583-0.025-35.217,2.462-56.404,6.835c0.858,0.69,2.004,2.132,1.76,4.812c21.139-4.514,40.632-7.022,56.269-6.997\n\t\t\t\tc16.325,0.026,32.385,3.661,38.959,8.397c2.862,2.062,7.305,5.886,8.059,9.237c-0.04-1.016-0.352-2.27-0.408-2.911\n\t\t\t\tC283.11,25.107,267.1,16.009,235.789,15.959z"/>\n\t\t</g>\n\t\t<path fill="#DCDDDE" d="M60.273,199.427l7.908,3.825l-5.24-6.101C62.941,197.152,58.272,198.786,60.273,199.427"/>\n\t\t\n\t\t\t<radialGradient id="SVGID_7_" cx="0.6661" cy="211.1478" r="1" gradientTransform="matrix(270.0424 19.3949 -19.05 267.9464 3989.6995 -56678.5859)" gradientUnits="userSpaceOnUse">\n\t\t\t<stop offset="0" style="stop-color:#000000"/>\n\t\t\t<stop offset="0.0996" style="stop-color:#242425"/>\n\t\t\t<stop offset="0.2741" style="stop-color:#4E4F51"/>\n\t\t\t<stop offset="0.5029" style="stop-color:#757779"/>\n\t\t\t<stop offset="0.7746" style="stop-color:#A6A8AB"/>\n\t\t\t<stop offset="0.8338" style="stop-color:#ECEDED"/>\n\t\t\t<stop offset="0.8581" style="stop-color:#F2F2F3"/>\n\t\t\t<stop offset="0.9255" style="stop-color:#F3F4F4"/>\n\t\t\t<stop offset="0.9601" style="stop-color:#77787B"/>\n\t\t\t<stop offset="0.9911" style="stop-color:#C8CACC"/>\n\t\t</radialGradient>\n\t\t<path fill="url(#SVGID_7_)" d="M273.283,103.591c-1.014,1.477-1.926,2.342-2.419,2.914c1.213-1.808-4.269-10.909-55.135-0.044\n\t\t\tc-20.898,4.464-58.364,17.017-91.77,32.224c-14.657,6.627-44.582,21.095-57.613,32.959c-12.456,11.341-14.277,24.658-5.817,27.676\n\t\t\tc-1.672-0.501-3.937-1.4-5.884-2.491c-4.713-2.786-8.78-10.369,0.376-22.35c7.623-9.975,16.641-15.494,27.199-21.737\n\t\t\tc35.97-21.271,88.653-41.928,128.445-51.065c20.468-4.7,37.871-6.713,47.404-5.994\n\t\t\tC271.591,96.703,274.735,100.692,273.283,103.591z M101.481,44.54c-42.334,16.137-81.187,38.956-92.09,58.743\n\t\t\tc-3.88,7.042-10.143,22.905-3.696,43.319c-0.089-0.279-0.188-0.965-0.285-1.837c-0.446-3.989-0.711-9.927-0.182-13.905\n\t\t\tc1.15-8.662,2.444-15.482,7.333-23.376c9.886-15.959,38.718-36.49,85.429-55.219c0.752-0.301,4.408-1.784,5.162-2.081\n\t\t\tC102.123,48.443,101.625,47.168,101.481,44.54z M235.789,15.959c-15.583-0.025-35.217,2.462-56.404,6.835\n\t\t\tc0.858,0.69,2.004,2.132,1.76,4.812c21.139-4.514,40.632-7.022,56.269-6.997c16.325,0.026,32.385,3.661,38.959,8.397\n\t\t\tc2.862,2.062,6.771,6.064,8.179,9.197c-0.546-1.213-0.441-2.314-0.498-2.954C283.141,25.023,267.1,16.009,235.789,15.959z"/>\n\t</g>\n</g>\n<g id="Layer_2">\n\t<g opacity="0.7">\n\t\t<defs>\n\t\t\t\n\t\t\t\t<rect id="SVGID_8_" x="112.559" y="3.607" transform="matrix(0.1079 -0.9942 0.9942 0.1079 82.6225 182.4761)" opacity="0.7" width="60.856" height="83.188"/>\n\t\t</defs>\n\t\t<clipPath id="SVGID_9_">\n\t\t\t<use xlink:href="#SVGID_8_" overflow="visible"/>\n\t\t</clipPath>\n\t\t<g clip-path="url(#SVGID_9_)">\n\t\t\t<g>\n\t\t\t\t<defs>\n\t\t\t\t\t\n\t\t\t\t\t\t<rect id="SVGID_10_" x="112.559" y="3.607" transform="matrix(0.1079 -0.9942 0.9942 0.1079 82.6225 182.4761)" width="60.856" height="83.188"/>\n\t\t\t\t</defs>\n\t\t\t\t<clipPath id="SVGID_11_">\n\t\t\t\t\t<use xlink:href="#SVGID_10_" overflow="visible"/>\n\t\t\t\t</clipPath>\n\t\t\t\t<g transform="matrix(1 0 7.450581e-09 1 -7.629395e-06 0)" clip-path="url(#SVGID_11_)">\n\t\t\t\t\t\n\t\t\t\t\t\t<image overflow="visible" enable-background="new " width="636" height="465" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnwAAAHRCAYAAADwh2T7AAAACXBIWXMAAAsSAAALEgHS3X78AAAA\nGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAyOdJREFUeNrsvQmYJddVJnhuRLwt\nX26VSlWpnC4ttiTLwrIMwiC7PcYG3MYbiw0NxgZ6eub7hvVjuoH5mOlvtp6mu5mmm8GAaRpk424w\ntpFNgxdZNjZehCRbaClbaLNcUqmcVapSKisrt5dviYiJGxXnvT/OuxEvsyqztjz/p9B7GW+tFxH3\n/vc/5/yHSKFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKh\nUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQ\nKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAo\nFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgU\nCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQK\nhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqF\nQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVC\noVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKh\nUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQ\nKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUik0gjmNj\nt628ZmJi0ktuvEaj4We77OvtPj/bvGzfdnw/n7dOp+u1Ox0vDENvs9/bPqfX6xl4ncfvF0WRr2eA\nQqFQKBSKSx4JiTJ228RTzf79+71rr72OiV0QBJWA7ydbJdmq2VbJ9vmOLSWLb33rD3o/+3O/4I36\n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\nX4m2Sibqakbo8W26c7doKZ0/f3/pF3/pV0ovv/Kqn7wev9/vexx1nFKIAgAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCz+fwEGABq0\nIfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 10.4696)">\n\t\t\t\t\t</image>\n\t\t\t\t</g>\n\t\t\t</g>\n\t\t</g>\n\t</g>\n\t<g>\n\t\t<path fill="#ED1C24" d="M174.957,30.203c-0.284-0.646-1.032-1.349-2.281-1.388c-0.213-0.007-0.435,0.007-0.667,0.04\n\t\t\tc-0.904,0.135-1.788,0.676-2.397,1.515c-0.402-0.719-1.081-1.196-1.905-1.321c-0.113-0.015-0.225-0.023-0.335-0.027\n\t\t\tc-0.035-0.001-0.07-0.002-0.105-0.002c0.172-0.292,0.28-0.589,0.333-0.87c0.131-0.693-0.072-1.291-0.545-1.601\n\t\t\tc-0.191-0.125-0.416-0.196-0.65-0.203c-0.414-0.013-0.742,0.159-1.09,0.342c-0.158,0.083-0.322,0.169-0.491,0.236\n\t\t\tc-0.302,0.121-0.62,0.221-0.948,0.31c-0.029-0.454-0.146-0.885-0.436-1.223c-0.197-0.229-0.553-0.506-1.131-0.524\n\t\t\tc-0.063-0.002-0.128-0.001-0.194,0.004c-0.966,0.063-1.745,0.958-2.372,2.727c-0.002-0.19-0.031-0.381-0.09-0.567\n\t\t\tc-0.244-0.763-0.938-1.273-1.766-1.299c-0.319-0.01-0.649,0.055-0.953,0.188c-1.049,0.458-1.616,1.61-1.291,2.623\n\t\t\tc0.025,0.077,0.057,0.15,0.091,0.222c-1.238,0.182-2.105,1.065-2.674,1.944c-0.238-0.137-0.515-0.227-0.835-0.237\n\t\t\tc-0.169-0.005-0.339,0.014-0.506,0.058c-0.744,0.195-1.028,0.664-1.142,1.25c-0.255-0.728-0.738-1.205-1.626-1.278\n\t\t\tc-0.04-0.003-0.08-0.006-0.119-0.007c-0.921-0.029-2.08,0.433-2.367,2.796c-0.036,0.299-0.063,0.607-0.082,0.909\n\t\t\tc-0.185-0.607-0.511-1.198-1.091-1.689c-0.646-0.547-1.254-0.676-1.651-0.689c-0.637-0.02-1.129,0.236-1.377,0.481\n\t\t\tc-0.597,0.589-0.39,1.317-0.29,1.724c0.101,0.407,0.175,0.841,0.148,1.094c-0.193-0.645-0.454-1.168-0.971-1.624\n\t\t\tc-0.483-0.427-1.119-0.664-1.84-0.686c-0.187-0.006-0.378,0.003-0.569,0.027c-1.897,0.236-3.379,1.794-4.103,4.067\n\t\t\tc-0.137-0.23-0.291-0.438-0.46-0.621c-0.752-0.814-1.642-1.242-2.643-1.273c-0.282-0.009-0.576,0.014-0.874,0.068l-0.035,0.007\n\t\t\tc-0.416,0.089-1.162,0.321-1.482,0.869c-0.247,0.423-0.376,1.01,0.169,1.614c-0.218-0.108-0.428-0.184-0.624-0.236\n\t\t\tc-0.283-0.076-0.568-0.119-0.846-0.128c-0.847-0.026-1.578,0.258-1.956,0.761c-0.202,0.269-0.366,0.639-0.279,1.093\n\t\t\tc-0.423-0.205-0.899-0.324-1.389-0.34c-0.248-0.008-0.501,0.011-0.752,0.055c-1.608,0.242-2.789,1.427-3.544,3.038\n\t\t\tc-0.073-0.026-0.149-0.046-0.227-0.059l-0.102-0.013l-0.051-0.002c-0.585-0.018-0.94,0.353-1.176,0.599\n\t\t\tc-0.035,0.036-0.07,0.073-0.108,0.111c-0.072-0.797-0.11-1.449-0.109-2.219c0.002-1.13,0.277-1.776,0.46-2.081l0.108-0.037\n\t\t\tc0.742-0.252,1.458-0.494,2.075-0.713c1.449-0.513,2.455-0.881,3.21-1.315c1.468-0.844,2.565-2.057,2.934-3.245\n\t\t\tc0.274-0.882,0.244-1.625-0.086-2.15c-0.22-0.35-0.557-0.574-0.947-0.631l-0.09-0.012l-0.063-0.002\n\t\t\tc-0.458-0.014-0.795,0.195-1.15,0.417c-0.257,0.16-0.576,0.359-1.07,0.584c-1.027,0.468-2.291,0.943-4.226,1.588\n\t\t\tc-2.061,0.687-4.653,1.655-6.419,3.049c-1.906,1.505-2.48,3.077-2.625,4.121c-0.222,1.504,0.493,1.941,0.939,2.068\n\t\t\tc0.108,0.03,0.218,0.048,0.329,0.051c0.725,0.023,1.146-0.487,1.453-0.86l0.116-0.139c0.058-0.068,0.217-0.242,0.521-0.483\n\t\t\tc-0.311,1.478-0.287,3.07-0.178,4.325c-0.914,0.725-1.319,1.77-1.384,2.545c-0.083,1.003,0.31,1.736,1.028,1.915l0.123,0.029\n\t\t\tl0.115,0.004c0.321,0.01,0.567-0.108,0.757-0.244c0.609,4.554,0.717,8.077,0.29,9.801l-0.016,0.064\n\t\t\tc-0.387,1.52,0.233,2.055,0.822,2.236l0.046,0.014l0.047,0.01c0.123,0.026,0.251,0.042,0.379,0.046\n\t\t\tc1.267,0.04,2.568-0.992,3.313-2.627c0.805-1.768,0.616-5.234,0.038-9.882c0.532,3.639,2.059,5.666,4.39,5.738\n\t\t\tc0.124,0.004,0.251,0.001,0.368-0.009c0.849-0.062,1.602-0.463,2.178-1.159c0.355-0.43,0.617-0.941,0.809-1.457\n\t\t\tc0.11,0.087,0.225,0.168,0.344,0.243c0.554,0.365,1.192,0.568,1.845,0.588c1.091,0.034,2.317-0.442,2.439-1.389\n\t\t\tc0.013-0.096,0.022-0.263-0.018-0.454c1.075-0.184,2.154-1.507,2.94-3.632c0.244-0.61,0.524-1.38,0.754-2.37\n\t\t\tc0.905,1.882,2.357,2.659,3.709,2.702c0.195,0.006,0.395-0.002,0.594-0.025c1.006-0.116,1.957-0.705,2.679-1.659\n\t\t\tc0.437-0.578,0.776-1.268,1.008-2.029c0.451,0.709,1.149,1.203,2.224,1.267l0.046,0.002c1.327,0.023,2.306-0.963,2.955-2.236\n\t\t\tc0.959,1.074,1.995,1.336,2.721,1.359c0.829,0.026,1.462-0.254,1.695-0.376c0.59-0.307,0.946-0.813,0.963-1.342\n\t\t\tc1.498-0.553,1.303-2.42,1.236-3.064c-0.027-0.256-0.048-0.613-0.06-1.022c0.391,3.088,2.039,3.501,2.788,3.524l0,0\n\t\t\tc0.15,0.005,0.304-0.004,0.458-0.026c1.034-0.145,1.704-0.783,1.915-1.46c0.426,0.451,0.991,0.741,1.74,0.764\n\t\t\tc0.067,0.002,0.133,0.002,0.199-0.001c0.842-0.031,1.792-0.53,2.195-1.222c0.463,0.425,1.031,0.713,1.71,0.813\n\t\t\tc0.143,0.021,0.287,0.034,0.429,0.039c1.101,0.034,1.976-0.421,2.642-1.037c0.006,0.012,0.012,0.024,0.018,0.035\n\t\t\tc0.269,0.491,0.752,0.65,0.988,0.699c0.12,0.028,0.256,0.044,0.408,0.049c1.154,0.036,2.81-0.562,3.673-2.358\n\t\t\tc0.97-1.986,0.067-3.915-0.472-5.068c-0.1-0.213-0.194-0.414-0.246-0.554c-0.098-0.265-0.126-0.473-0.126-0.618\n\t\t\tc0.146,0.07,0.336,0.137,0.569,0.144l0,0c0.134,0.004,0.268-0.012,0.4-0.05c0.389-0.113,0.702-0.386,0.881-0.77\n\t\t\tC175.21,31.395,175.199,30.754,174.957,30.203z"/>\n\t\t<g opacity="0.5">\n\t\t\t<g>\n\t\t\t\t<g>\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t<rect id="SVGID_12_" x="122.62" y="13.483" transform="matrix(0.1079 -0.9942 0.9942 0.1079 82.8799 180.6859)" width="38.995" height="61.358"/>\n\t\t\t\t\t</defs>\n\t\t\t\t\t<clipPath id="SVGID_13_">\n\t\t\t\t\t\t<use xlink:href="#SVGID_12_" overflow="visible"/>\n\t\t\t\t\t</clipPath>\n\t\t\t\t\t<path clip-path="url(#SVGID_13_)" fill="#595959" d="M157.669,27.744c0.539-0.235,1.102-0.034,1.257,0.45\n\t\t\t\t\t\tc0.155,0.484-0.156,1.067-0.695,1.302s-1.102,0.034-1.257-0.45C156.819,28.563,157.13,27.98,157.669,27.744z M119.826,43.655\n\t\t\t\t\t\tc-0.307-0.039-0.601,0.927-2.176,1.357c-0.184-1.752-0.28-2.686-0.278-3.95c0.003-1.842,0.643-2.734,0.871-2.994\n\t\t\t\t\t\tc0.889-0.302,1.761-0.595,2.492-0.854c1.426-0.504,2.373-0.855,3.031-1.233c1.285-0.739,2.168-1.752,2.44-2.628\n\t\t\t\t\t\tc0.263-0.848,0.108-1.352-0.159-1.391c-0.268-0.04-0.628,0.384-1.766,0.903c-1.137,0.518-2.508,1.022-4.332,1.63\n\t\t\t\t\t\tc-1.822,0.608-4.417,1.551-6.091,2.872c-1.67,1.319-2.117,2.651-2.225,3.43c-0.095,0.645,0.021,0.83,0.164,0.871\n\t\t\t\t\t\tc0.261,0.074,0.47-0.245,0.779-0.608c0.34-0.4,1.422-1.42,3.907-2.374c-2.038,1.607-1.804,5.732-1.598,7.467\n\t\t\t\t\t\tc-1.159,0.567-1.417,1.691-1.45,2.084c-0.032,0.393,0.058,0.739,0.21,0.777c0.161,0.04,0.533-0.636,1.571-0.962\n\t\t\t\t\t\tc0.69,4.555,1.107,9.428,0.505,11.861c-0.075,0.302-0.256,0.905,0.074,1.007c0.727,0.155,1.8-0.473,2.483-1.972\n\t\t\t\t\t\tc0.704-1.547,0.439-5.103-0.081-9.294c-0.117-0.94-0.224-1.812-0.321-2.628c1.211-0.291,1.874-1.491,2.028-1.952\n\t\t\t\t\t\tC120.088,44.523,120.118,43.702,119.826,43.655z M130.074,51.611c-0.265-0.039-0.868-0.51-1.296-1.466\n\t\t\t\t\t\tc-0.428-0.956-0.667-2.03-0.996-4.399c-0.33-2.376-0.494-2.793-1.161-2.785c-1.585,0.11-1.332,3.047-1.225,4.474\n\t\t\t\t\t\tc-0.121,2.203-0.473,3.913-1.194,3.923c-0.693,0.009-1.276-0.779-1.295-4.642c0.132-5.085,2.759-4.477,3.032-4.377\n\t\t\t\t\t\tc0.26,0.095,0.382,0.213,0.49,0.129c0.164-0.13-0.002-0.695-0.34-1.104s-1.109-0.875-2.144-0.688\n\t\t\t\t\t\tc-2.001,0.292-3.796,3.05-3.633,7.367c0.164,4.356,1.895,6.263,3.668,6.12c2.348-0.172,2.497-4.137,2.494-4.163\n\t\t\t\t\t\tc0.1,0.365,0.627,1.421,1.498,1.957c1.252,0.833,2.599,0.21,2.629-0.029C130.633,51.688,130.339,51.65,130.074,51.611z\n\t\t\t\t\t\t M131.157,36.977c-0.397,0.085-0.709,0.243-0.775,0.358c-0.29,0.497,0.606,0.526,1.43,1.498\n\t\t\t\t\t\tc0.597,0.704,1.088,1.814,1.094,4.28c0.007,2.777-0.854,4.389-0.854,4.389s-0.213-3.202-0.935-5.373\n\t\t\t\t\t\tc-0.606-1.823-1.491-2.673-2.404-2.919c-0.85-0.228-1.487,0.01-1.658,0.238s-0.076,0.389,0.168,0.665\n\t\t\t\t\t\tc0.244,0.276,1.377,1.501,2.216,4.524c0.789,2.842,0.893,3.765,1.024,4.472s0.258,1.386,0.905,1.443\n\t\t\t\t\t\tc0.46,0.04,1.424-0.8,2.219-2.96c0.423-1.054,0.808-2.278,1.011-3.944c0.381-3.08-0.149-4.973-0.91-5.796\n\t\t\t\t\t\tC133.158,37.278,132.392,36.753,131.157,36.977z M139.529,47.213c1.948-0.224,3.569-3.052,2.982-6.673\n\t\t\t\t\t\tc-0.106-0.653-0.375-1.867-0.943-2.583c-0.426-0.538-0.973-0.891-1.403-0.615c-0.26,0.236-0.128,0.378,0.164,1.215\n\t\t\t\t\t\tc0.292,0.836,0.412,1.987,0.38,3.117c-0.039,1.394-0.291,2.961-1.279,2.961c-1.021,0-1.49-1.887-1.492-3.975\n\t\t\t\t\t\tc-0.002-2.093,0.829-4.31,2.061-4.3c0.628,0.012,0.855,0.441,1.052,0.375c0.272-0.091,0.413-0.952-0.313-1.592\n\t\t\t\t\t\tc-0.413-0.365-1.001-0.466-1.56-0.397c-2.419,0.301-3.811,3.434-3.624,6.951C135.752,45.425,137.38,47.46,139.529,47.213z\n\t\t\t\t\t\t M145.628,44.787c1.515,0.026,2.403-2.327,2.68-3.779c0.203,0.594,0.482,1.172,0.864,1.664c1.306,1.69,2.804,1.247,3.31,0.984\n\t\t\t\t\t\tc0.268-0.139,0.403-0.329,0.379-0.45c-0.014-0.073-0.086-0.121-0.221-0.12c-0.761-0.005-1.35-0.307-1.926-1.249\n\t\t\t\t\t\tc-0.545-0.911-0.744-3.102-0.662-6.233c0.076-2.898-0.336-3.145-0.888-3.191c-0.947-0.078-1.215,0.941-1.324,1.842\n\t\t\t\t\t\tc-0.15,1.235-0.122,2.681-0.105,3.1c0.01,0.243,0.023,0.688,0.077,1.236c-0.174,1.228-0.597,3.492-1.341,3.448\n\t\t\t\t\t\tc-0.899-0.054-0.589-3.584-0.614-4.841c-0.02-1.043-0.045-2.252-0.962-3.028c-0.822-0.696-1.46-0.372-1.57-0.263\n\t\t\t\t\t\tc-0.175,0.173-0.065,0.431,0.043,0.857c0.12,0.474,0.2,2.01,0.238,4.057C143.646,40.891,143.24,44.643,145.628,44.787z\n\t\t\t\t\t\t M157.653,33.034c-1.42-0.098-1.575,2.98-1.534,4.971c0.052,2.5,0.824,3.789,2.097,3.61c0.758-0.106,1.073-0.619,1.056-0.869\n\t\t\t\t\t\tc-0.025-0.362-0.44-0.311-0.717-1.207c-0.34-1.504-0.41-2.85-0.249-4.672C158.452,33.225,158.059,33.062,157.653,33.034z\n\t\t\t\t\t\t M159.146,31.495c0.26,0.093,0.283-0.215,1.269-0.659c0.037-0.016,0.075-0.029,0.111-0.043\n\t\t\t\t\t\tc-0.167,0.823-0.362,2.163-0.43,4.646c-0.122,4.802,1.093,5.506,2.084,5.469c0.708-0.026,1.348-0.566,1.35-0.83\n\t\t\t\t\t\tc0.003-0.321-0.308-0.301-0.523-0.704c-0.487-0.802-0.629-2.096-0.625-4.917c0.044-1.726,0.21-3.044,0.374-4.116\n\t\t\t\t\t\tc0.462-0.075,1.018-0.172,1.714-0.317c2.379-0.495,2.569-2.178,2.294-2.358c-0.195-0.128-0.631,0.233-1.238,0.475\n\t\t\t\t\t\tc-0.829,0.331-1.742,0.524-2.532,0.685c0.024-0.163,0.046-0.321,0.064-0.473c0.165-1.38-0.145-1.597-0.572-1.57\n\t\t\t\t\t\tc-0.738,0.048-1.35,1.713-1.615,2.592c-0.501,0.186-0.913,0.419-1.261,0.725C159.065,30.582,158.878,31.4,159.146,31.495z\n\t\t\t\t\t\t M169.767,37.669c-0.163,0.581-1.266,3.171-3.484,2.843c-2.028-0.3-2.627-3.201-2.293-5.576\n\t\t\t\t\t\tc0.252-1.79,1.569-4.898,3.883-4.603c1.266,0.193,1.987,1.876,0.644,4.281c-0.739,1.323-1.79,2.002-2.322,2.279\n\t\t\t\t\t\tc0.213,0.858,0.64,1.375,1.301,1.421c0.713,0.049,1.354-0.274,1.843-0.843c0.154-0.18,0.277-0.33,0.393-0.312\n\t\t\t\t\t\tC169.872,37.181,169.841,37.405,169.767,37.669z M166.053,35.928c0.386-0.343,1.023-1.013,1.459-2.014\n\t\t\t\t\t\tc0.637-1.461,0.445-2.312,0.018-2.358c-0.569-0.061-1.407,1.512-1.485,3.318C166.029,35.25,166.031,35.602,166.053,35.928z\n\t\t\t\t\t\t M174.271,30.85c-0.17-0.386-0.72-0.87-1.799-0.714c-1.189,0.178-2.432,1.418-2.263,3.34c0.164,1.861,0.986,2.894,1.051,4.055\n\t\t\t\t\t\tc0.06,1.08-0.326,1.672-0.87,2.138c-0.257,0.219-0.283,0.328-0.229,0.428c0.054,0.099,0.193,0.148,0.274,0.163\n\t\t\t\t\t\tc0.317,0.085,2.019,0.054,2.875-1.728c0.914-1.871-0.402-3.806-0.759-4.771c-0.391-1.049-0.161-1.942,0.416-2.143\n\t\t\t\t\t\tc0.642-0.224,0.869,0.281,1.138,0.203C174.391,31.739,174.445,31.245,174.271,30.85z M153.379,42.311\n\t\t\t\t\t\tc0.913-0.181,0.801-1.27,0.726-1.99c-0.097-0.932-0.125-3.023,0.072-4.446c0.223-1.611,0.891-3.178,2.191-3.604\n\t\t\t\t\t\tc1.146-0.376,1.619,0.165,1.894-0.117c0.232-0.238-0.183-1.484-1.721-1.509c-1.773-0.029-2.703,2.153-2.97,2.93\n\t\t\t\t\t\tc0,0-0.437-1.385-1.277-1.166c-0.465,0.122-0.385,0.411-0.432,2.009c-0.047,1.596-0.18,3.627,0.031,5.384\n\t\t\t\t\t\tC152.104,41.557,152.467,42.492,153.379,42.311z"/>\n\t\t\t\t</g>\n\t\t\t</g>\n\t\t</g>\n\t\t<path fill="#FFF200" d="M157.366,27.533c0.539-0.235,1.102-0.034,1.257,0.45c0.155,0.484-0.156,1.067-0.695,1.302\n\t\t\tc-0.539,0.236-1.102,0.034-1.257-0.45C156.515,28.351,156.827,27.768,157.366,27.533z M119.523,43.443\n\t\t\tc-0.307-0.039-0.601,0.927-2.176,1.357c-0.184-1.752-0.28-2.686-0.278-3.95c0.003-1.842,0.643-2.734,0.871-2.994\n\t\t\tc0.889-0.302,1.761-0.595,2.492-0.854c1.426-0.504,2.373-0.854,3.031-1.233c1.285-0.739,2.168-1.752,2.44-2.628\n\t\t\tc0.263-0.848,0.108-1.352-0.159-1.391c-0.268-0.04-0.628,0.384-1.766,0.902c-1.137,0.518-2.508,1.022-4.332,1.63\n\t\t\tc-1.822,0.608-4.417,1.551-6.091,2.872c-1.67,1.319-2.117,2.651-2.225,3.43c-0.095,0.645,0.021,0.83,0.164,0.871\n\t\t\tc0.261,0.074,0.47-0.245,0.779-0.608c0.34-0.4,1.422-1.42,3.907-2.374c-2.038,1.607-1.804,5.732-1.598,7.467\n\t\t\tc-1.159,0.567-1.417,1.691-1.45,2.084c-0.032,0.393,0.058,0.739,0.21,0.777c0.161,0.04,0.533-0.636,1.571-0.962\n\t\t\tc0.69,4.555,1.107,9.428,0.505,11.861c-0.075,0.302-0.256,0.905,0.074,1.007c0.727,0.155,1.8-0.473,2.483-1.972\n\t\t\tc0.704-1.547,0.439-5.103-0.081-9.294c-0.117-0.94-0.224-1.812-0.321-2.628c1.211-0.291,1.874-1.491,2.028-1.952\n\t\t\tC119.785,44.311,119.815,43.491,119.523,43.443z M129.771,51.4c-0.265-0.039-0.868-0.51-1.296-1.466\n\t\t\tc-0.428-0.956-0.666-2.03-0.996-4.399c-0.33-2.376-0.494-2.793-1.161-2.785c-1.585,0.11-1.332,3.047-1.225,4.474\n\t\t\tc-0.121,2.203-0.473,3.913-1.194,3.923c-0.693,0.009-1.276-0.779-1.295-4.642c0.132-5.085,2.759-4.477,3.032-4.377\n\t\t\tc0.26,0.094,0.382,0.213,0.49,0.129c0.164-0.13-0.002-0.695-0.34-1.104s-1.109-0.875-2.144-0.688\n\t\t\tc-2.001,0.292-3.796,3.05-3.633,7.367c0.164,4.356,1.895,6.263,3.668,6.12c2.348-0.172,2.497-4.137,2.494-4.163\n\t\t\tc0.1,0.365,0.627,1.421,1.498,1.957c1.252,0.833,2.599,0.21,2.629-0.029C130.33,51.477,130.036,51.439,129.771,51.4z\n\t\t\t M130.853,36.765c-0.397,0.085-0.709,0.243-0.775,0.358c-0.29,0.497,0.606,0.526,1.43,1.498c0.597,0.704,1.088,1.814,1.094,4.28\n\t\t\tc0.007,2.777-0.854,4.389-0.854,4.389s-0.213-3.202-0.935-5.373c-0.606-1.823-1.491-2.673-2.404-2.919\n\t\t\tc-0.85-0.228-1.487,0.01-1.658,0.238s-0.076,0.389,0.168,0.665c0.244,0.276,1.377,1.501,2.216,4.524\n\t\t\tc0.789,2.842,0.893,3.765,1.024,4.472c0.131,0.706,0.258,1.386,0.905,1.443c0.46,0.04,1.424-0.8,2.219-2.96\n\t\t\tc0.423-1.054,0.808-2.278,1.011-3.944c0.381-3.08-0.149-4.973-0.91-5.796C132.854,37.066,132.088,36.542,130.853,36.765z\n\t\t\t M139.225,47.001c1.948-0.224,3.569-3.052,2.982-6.673c-0.106-0.653-0.375-1.867-0.943-2.583\n\t\t\tc-0.426-0.538-0.973-0.891-1.403-0.615c-0.26,0.236-0.128,0.378,0.164,1.215c0.292,0.836,0.412,1.987,0.38,3.117\n\t\t\tc-0.039,1.394-0.291,2.961-1.279,2.961c-1.021,0-1.49-1.887-1.492-3.975c-0.002-2.093,0.829-4.31,2.061-4.3\n\t\t\tc0.628,0.012,0.855,0.441,1.052,0.375c0.272-0.091,0.412-0.951-0.313-1.592c-0.413-0.365-1.001-0.466-1.56-0.397\n\t\t\tc-2.419,0.301-3.811,3.434-3.624,6.951C135.449,45.214,137.077,47.248,139.225,47.001z M145.325,44.575\n\t\t\tc1.515,0.026,2.403-2.327,2.68-3.779c0.203,0.594,0.482,1.172,0.864,1.664c1.306,1.69,2.804,1.247,3.31,0.984\n\t\t\tc0.268-0.139,0.403-0.329,0.379-0.451c-0.014-0.073-0.086-0.121-0.221-0.12c-0.761-0.005-1.35-0.307-1.926-1.249\n\t\t\tc-0.545-0.911-0.744-3.102-0.662-6.232c0.076-2.898-0.336-3.145-0.888-3.191c-0.947-0.078-1.215,0.941-1.324,1.842\n\t\t\tc-0.15,1.235-0.122,2.68-0.105,3.1c0.01,0.243,0.023,0.688,0.077,1.236c-0.174,1.228-0.597,3.492-1.341,3.448\n\t\t\tc-0.899-0.053-0.589-3.584-0.614-4.841c-0.02-1.043-0.045-2.252-0.962-3.028c-0.822-0.696-1.46-0.372-1.57-0.263\n\t\t\tc-0.175,0.173-0.065,0.431,0.043,0.857c0.12,0.474,0.2,2.01,0.238,4.057C143.342,40.679,142.937,44.431,145.325,44.575z\n\t\t\t M157.349,32.822c-1.42-0.098-1.575,2.98-1.534,4.971c0.052,2.5,0.824,3.789,2.097,3.61c0.757-0.106,1.073-0.619,1.056-0.869\n\t\t\tc-0.025-0.362-0.44-0.311-0.717-1.207c-0.34-1.504-0.41-2.85-0.249-4.672C158.149,33.014,157.756,32.85,157.349,32.822z\n\t\t\t M158.843,31.284c0.26,0.093,0.283-0.215,1.269-0.659c0.037-0.016,0.074-0.029,0.111-0.043c-0.167,0.823-0.362,2.163-0.43,4.646\n\t\t\tc-0.122,4.802,1.093,5.506,2.084,5.469c0.708-0.026,1.348-0.566,1.35-0.83c0.003-0.321-0.308-0.301-0.523-0.704\n\t\t\tc-0.487-0.802-0.629-2.096-0.625-4.917c0.044-1.726,0.21-3.044,0.374-4.116c0.462-0.075,1.018-0.172,1.715-0.317\n\t\t\tc2.379-0.495,2.569-2.178,2.294-2.358c-0.195-0.128-0.631,0.233-1.238,0.475c-0.829,0.331-1.742,0.524-2.532,0.685\n\t\t\tc0.024-0.163,0.046-0.321,0.064-0.473c0.165-1.38-0.145-1.597-0.572-1.57c-0.738,0.048-1.35,1.713-1.615,2.592\n\t\t\tc-0.501,0.186-0.914,0.419-1.261,0.725C158.762,30.371,158.575,31.188,158.843,31.284z M169.464,37.457\n\t\t\tc-0.163,0.581-1.266,3.171-3.484,2.843c-2.028-0.3-2.627-3.201-2.293-5.576c0.252-1.79,1.569-4.898,3.883-4.603\n\t\t\tc1.266,0.193,1.987,1.876,0.644,4.281c-0.739,1.323-1.79,2.002-2.322,2.279c0.213,0.858,0.64,1.375,1.301,1.421\n\t\t\tc0.713,0.049,1.354-0.274,1.843-0.843c0.154-0.18,0.277-0.33,0.393-0.312C169.569,36.97,169.538,37.194,169.464,37.457z\n\t\t\t M165.75,35.716c0.386-0.343,1.023-1.013,1.459-2.014c0.637-1.461,0.445-2.312,0.018-2.358c-0.569-0.061-1.407,1.512-1.485,3.318\n\t\t\tC165.725,35.038,165.728,35.391,165.75,35.716z M173.968,30.638c-0.17-0.386-0.72-0.87-1.799-0.714\n\t\t\tc-1.189,0.178-2.432,1.418-2.263,3.34c0.164,1.861,0.986,2.894,1.051,4.055c0.06,1.08-0.326,1.672-0.87,2.138\n\t\t\tc-0.257,0.219-0.283,0.328-0.228,0.428c0.054,0.099,0.193,0.148,0.274,0.163c0.317,0.085,2.019,0.054,2.875-1.728\n\t\t\tc0.914-1.871-0.402-3.805-0.759-4.77c-0.391-1.049-0.161-1.943,0.416-2.143c0.642-0.224,0.869,0.281,1.138,0.203\n\t\t\tC174.087,31.527,174.141,31.033,173.968,30.638z M153.075,42.099c0.913-0.181,0.801-1.27,0.726-1.99\n\t\t\tc-0.097-0.932-0.125-3.023,0.072-4.446c0.223-1.611,0.891-3.178,2.191-3.604c1.146-0.376,1.619,0.165,1.894-0.117\n\t\t\tc0.232-0.238-0.183-1.484-1.721-1.509c-1.773-0.029-2.703,2.153-2.97,2.93c0,0-0.437-1.385-1.277-1.166\n\t\t\tc-0.465,0.122-0.385,0.411-0.432,2.009c-0.047,1.596-0.18,3.627,0.031,5.384C151.801,41.345,152.163,42.28,153.075,42.099z"/>\n\t</g>\n\t\n\t\t<linearGradient id="cadbury_logo_2_" gradientUnits="userSpaceOnUse" x1="151.1472" y1="251.8356" x2="178.1811" y2="232.0889" gradientTransform="matrix(0.99 0.1407 0.1407 -0.99 -56.0405 236.3141)">\n\t\t<stop offset="0" style="stop-color:#986E3A"/>\n\t\t<stop offset="0.511" style="stop-color:#D6B37C"/>\n\t\t<stop offset="1" style="stop-color:#9A673B"/>\n\t</linearGradient>\n\t<path id="cadbury_logo_1_" fill="url(#cadbury_logo_2_)" d="M160.872,15.197c0.086-0.372,0.157-0.937-0.174-1.216\n\t\tc-0.116-0.072-0.243-0.08-0.381-0.036c-0.196,0.076-0.326,0.259-0.39,0.459c-0.353,0.937-0.622,1.924-1.184,2.793\n\t\tc-0.168,0.259-0.395,0.583-0.658,0.576c-0.065-0.004-0.117-0.039-0.155-0.17c-0.175-0.763,0.2-1.636,0.454-2.383\n\t\tc0.091-0.22,0.15-0.53,0.046-0.738c-0.059-0.109-0.167-0.174-0.284-0.184c-0.334-0.017-0.534,0.258-0.7,0.522\n\t\tc-0.606,1.125-1.099,2.418-1.915,3.445c-0.122,0.126-0.242,0.298-0.432,0.28c-0.082-0.012-0.148-0.077-0.178-0.183\n\t\tc-0.106-0.462,0.035-1.152,0.243-1.692c0.152-0.393,0.327-0.638,0.402-1.033c0.03-0.212-0.035-0.402-0.231-0.509\n\t\tc-0.105-0.045-0.209-0.066-0.358,0.006c-0.282,0.153-0.53,0.382-0.862,0.444c0.066-0.236,0.151-0.459,0.136-0.708\n\t\tc-0.02-0.211-0.089-0.449-0.284-0.531c-0.189-0.069-0.423-0.018-0.597,0.134c-0.499,0.5-0.529,1.315-0.303,1.961\n\t\tc-0.157,0.821-0.547,1.604-0.992,2.3c-0.166,0.224-0.328,0.479-0.608,0.514c-0.188,0.001-0.279-0.133-0.327-0.364\n\t\tc0.275-0.536,0.607-1.127,0.758-1.694c0.119-0.441,0.282-1.121,0.01-1.539c-0.058-0.102-0.194-0.172-0.338-0.161\n\t\tc-0.27,0.011-0.47,0.209-0.628,0.407c-0.595,0.865-0.739,1.875-0.754,2.904c-0.107,0.328-0.283,0.666-0.545,0.914\n\t\tc-0.124,0.123-0.334,0.24-0.5,0.161c-0.094-0.062-0.15-0.161-0.169-0.275c-0.096-0.637,0.147-1.258,0.35-1.852\n\t\tc0.362-1.059,0.739-1.311,0.551-1.759c-0.073-0.165-0.239-0.27-0.407-0.277c-0.219-0.021-0.469,0.105-0.604,0.312\n\t\tc-0.295,0.49-0.602,1.004-1.025,1.409c-0.249,0.222-0.459,0.429-0.829,0.589c-0.023-0.205-0.069-0.415-0.131-0.603\n\t\tc-0.197-0.605-0.578-1.196-1.284-1.15c-0.245,0.015-0.485,0.143-0.651,0.244c0.09-0.875,0.321-1.735,0.74-2.5\n\t\tc0.255-0.467,0.664-0.939,0.713-1.334c0.026-0.212-0.065-0.419-0.243-0.524c-0.186-0.096-0.374-0.096-0.583,0.004\n\t\tc-0.423,0.242-0.674,0.708-0.888,1.135c-0.402,0.443-1.005,0.643-1.614,0.777c-0.808,0.21-1.324-0.023-1.864-0.518\n\t\tc-0.147-0.116-0.328-0.243-0.541-0.226c-0.222-0.002-0.444,0.199-0.531,0.354c-0.114,0.182-0.118,0.435-0.006,0.61\n\t\tc0.457,0.663,1.038,1.173,1.296,2.062c0.059,0.206,0.106,0.411,0.107,0.626c-1.579,0.918-2.489,2.841-2.42,4.606\n\t\tc-0.157,0.514-0.311,1.399-0.913,1.365c-0.304-0.063-0.729-1.071,0.118-4.043c0.044-0.447,0.176-0.92-0.058-1.35\n\t\tc-0.134-0.242-0.449-0.288-0.698-0.28c-1.978,0.201-3.175,2.511-4.069,4.116c-1.125,1.8-2.473,2.883-3.843,3.561\n\t\tc-3.361,1.665-7.159,1.041-7.425-2.664c-0.255-3.531,1.91-7.598,6.584-9.522c3.61-1.485,5.994-0.295,5.953,1.836\n\t\tc-0.02,1.037-0.719,4.227-5.229,5.846c-0.775,0.278-2.187,0.391-2.762-0.277c-0.902-1.064-0.583-2.368-0.007-3.289\n\t\tc1.005-1.489,2.717-2.402,4.498-2.85c0.146-0.029,0.267-0.096,0.342-0.259c0.044-0.111,0.042-0.214-0.014-0.355\n\t\tc-0.096-0.19-0.278-0.234-0.459-0.215c-1.623,0.229-3.108,0.916-4.264,1.891c-1.366,1.243-2.38,2.854-2.253,4.68\n\t\tc0.092,1.191,0.898,2.265,2.078,2.571c1.308,0.292,3.093-0.317,4.279-0.927c2.478-1.401,4.552-3.835,4.883-6.584\n\t\tc0.121-1.23-0.477-2.475-1.557-3.129c-1.735-0.995-5.294-0.958-8.865,1.322c-1.286,0.823-3.225,2.255-4.59,4.855\n\t\tc-1.364,2.601-1.449,6.171,0.654,8.159c1.531,1.447,4.03,1.905,6.552,1.207c1.826-0.506,3.653-1.959,5.125-3.85\n\t\tc-0.081,1.148,0.661,1.663,1.375,1.677c1.581,0.02,2.267-1.975,2.267-1.975c0.19,0.575,0.264,0.837,0.872,0.994\n\t\tc1.026,0.261,1.476-0.572,1.657-1.215c0.175,0.408,0.636,0.79,1.117,0.739c0.759-0.073,1.291-0.769,1.577-1.373\n\t\tc1.009-2.136,1.002-4.585,0.396-6.807c0.431-0.025,0.712-0.134,1.084-0.257c0.21-0.068,0.373-0.122,0.579-0.205\n\t\tc-0.345,1.389-0.567,2.831-0.558,4.315c0.044,0.98,0.096,2.118,0.788,2.783c0.298,0.306,0.729,0.407,1.152,0.268\n\t\tc0.539-0.158,0.988-0.897,1.171-1.439c0.132-0.331,0.325-1.121,0.373-1.659c0.214-0.151,0.435-0.286,0.641-0.451\n\t\tc0.085-0.069,0.13-0.101,0.212-0.169c-0.101,0.607-0.207,1.302-0.064,1.912c0.091,0.424,0.355,0.799,0.773,0.9\n\t\tc0.688,0.142,1.395-0.759,1.801-1.273c0.137,0.243,0.307,0.499,0.589,0.593c0.332,0.109,0.784-0.029,1.067-0.36\n\t\tc0.826-0.967,1.176-2.288,1.596-3.486l0.045-0.125c0.215-0.056,0.397-0.136,0.595-0.257c-0.181,0.503-0.33,1.025-0.396,1.563\n\t\tc-0.089,0.655,0.013,1.49,0.571,1.83c0.286,0.15,0.666-0.028,0.87-0.193c0.658-0.565,1.088-1.383,1.492-2.119l0.031-0.05\n\t\tc-0.014,0.404,0.055,0.946,0.254,1.288c0.114,0.201,0.361,0.368,0.583,0.35c0.677-0.078,1.008-0.707,1.391-1.23\n\t\tc0.066-0.09,0.136-0.209,0.177-0.266c-0.169,0.857-0.485,1.799-0.675,2.663c-0.049,0.22-0.204,0.705-0.125,0.998\n\t\tc0.089,0.332,0.34,0.563,0.83,0.614c0.091,0.008,0.139-0.037,0.148-0.106c-0.116-0.546,0.002-0.992,0.22-1.791\n\t\tC160.065,18.438,160.489,16.803,160.872,15.197z M137.211,19.107c-0.455,1.511-1.221,3.579-1.733,4.151\n\t\tc-0.694,0.776-1.06-0.081-0.88-0.598c0.272-1.31,0.914-3.001,1.948-3.999c0.137-0.115,0.473-0.4,0.664-0.182\n\t\tC137.279,18.616,137.261,18.942,137.211,19.107z M141.501,20.641c-0.125,0.378-0.278,0.806-0.557,1.127\n\t\tc-0.081,0.099-0.235,0.216-0.368,0.117c-0.328-0.263-0.291-0.978-0.222-1.421c0.131-0.847,0.558-1.744,1.347-2.201l0.043-0.022\n\t\tC141.852,19.053,141.705,19.865,141.501,20.641z M145.322,20.76c-0.086,0.025-0.165,0.006-0.233-0.034\n\t\tc-0.314-0.245-0.397-0.973-0.422-1.517c-0.02-0.431,0.041-1.236,0.425-1.577c0.242-0.179,0.531-0.126,0.629,0.136\n\t\tc0.209,0.505,0.213,1.379,0.116,1.958C145.779,20.072,145.676,20.676,145.322,20.76z"/>\n</g>\n</svg>\n\n')}brandSvg(t,e){const i=t.toSVG(2),n=t.getBoundingBox(),A=n.x2-n.x1,a=t.toPathData(3),[r,s,o]=es(e);if(!r)return"";const c=$r("defs");r.appendChild(c),is(r,c,e);const l=.23*s,g=.94*o,h=.04*o,d=.53*s,u=$r("g");r.appendChild(u),u.setAttribute("transform",`translate(${h} ${d}) rotate(-21)`);const w=_r(l,g);w.setAttribute("opacity","0"),u.appendChild(w);const B=$r("g");u.appendChild(B);const p=(()=>{const t=$r("g"),e=$r("defs");t.appendChild(e),e.appendChild(ns(3,7,4,"shadow"));const n=$r("g");t.appendChild(n),n.setAttribute("filter","url(#shadow)"),n.innerHTML=i;const a=$r("g");t.appendChild(a),a.setAttribute("fill","red"),a.setAttribute("stroke","red"),a.setAttribute("stroke-width","9"),a.innerHTML=i;const r=$r("g");t.appendChild(r),r.setAttribute("fill","#9d2621"),r.setAttribute("transform","translate(1,1)"),r.innerHTML=i;const s=$r("g");t.appendChild(s),s.setAttribute("fill","yellow"),s.innerHTML=i;return new os(t).transform((([t,e])=>[t,e+(A/2-t)**2/(2.9*A)])),t})();B.appendChild(p);return as(B,b(I)(a),l,g),As(r.outerHTML)}}function gs(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class hs extends Zr{constructor(t,e){super(),gs(this,"moduleName","Maltesers"),gs(this,"shortLength",5),gs(this,"backgroundSvg",void 0),gs(this,"backgroundShortSvg",void 0),gs(this,"indicator",(t=>t?1:0)),this.backgroundSvg=t,this.backgroundShortSvg=e}svgPreview(t){return this.svg(t)}svgPrint(t){return this.svg(t)}svg(t){const e=cn("data:application/octet-stream;base64,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ZWxmIE1ha2VyIDIuMy41AABNAGEAbAB0AGUAcwBlAHIAcwBSAGUAZwB1AGwAYQByAABNYWx0ZXNlcnNSZWd1bGFyAABNAGEAbAB0AGUAcwBlAHIAcwAATWFsdGVzZXJzAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAAAAAAACAAAAAAAA/4MAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAAABAAIBAgEDAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQCsAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAljb250cm9sTEYJY29udHJvbENSB0FwLmxpZ2EHQWoubGlnYQdFdC5saWdhB0VmLmxpZ2EHRWoubGlnYQdFay5saWdhB0VsLmxpZ2EHRWIubGlnYQdGdC5saWdhB0ZoLmxpZ2EHRmsubGlnYQdGbC5saWdhB0ZiLmxpZ2EHSHQubGlnYQdIZi5saWdhB0l0LmxpZ2EHSXAubGlnYQdJZi5saWdhB0lqLmxpZ2EHSWwubGlnYQdJYi5saWdhB0p0LmxpZ2EHSmYubGlnYQdKaC5saWdhB0prLmxpZ2EHSmwubGlnYQdKYi5saWdhB0t0LmxpZ2EHS3AubGlnYQdLeS5saWdhB0xqLmxpZ2EHTWoubGlnYQdNaC5saWdhB01mLmxpZ2EHTnQubGlnYQdOZi5saWdhB09mLmxpZ2EHT3oubGlnYQdQcS5saWdhB1B3LmxpZ2EHUHIubGlnYQdQdC5saWdhB1B5LmxpZ2EHUHUubGlnYQdQaS5saWdhB1BmLmxpZ2EHUGgubGlnYQdQai5saWdhB1BrLmxpZ2EHUGwubGlnYQdQei5saWdhB1B4LmxpZ2EHUHYubGlnYQdQYi5saWdhB1BuLmxpZ2EHUG0ubGlnYQdScC5saWdhB1JmLmxpZ2EHUmoubGlnYQdUdC5saWdhB1RmLmxpZ2EHVGgubGlnYQdUay5saWdhB1RsLmxpZ2EHVGIubGlnYQdVdC5saWdhB1VzLmxpZ2EHVWYubGlnYQdWdC5saWdhB1ZzLmxpZ2EHVmYubGlnYQdWbC5saWdhB1d0LmxpZ2EHV2YubGlnYQdYcC5saWdhB1l0LmxpZ2EHWWkubGlnYQdZZi5saWdhB1loLmxpZ2EHWWwubGlnYQdZay5saWdhB1liLmxpZ2EHQWYubGlnYQdDeS5saWdhB0VoLmxpZ2EHR3IubGlnYQdPcC5saWdhB2J0LmxpZ2EHYnIubGlnYQdiZi5saWdhB2JqLmxpZ2EHYnoubGlnYQdkdC5saWdhB2VmLmxpZ2EHZnQubGlnYQdmaC5saWdhB2ZiLmxpZ2EHZmsubGlnYQdnai5saWdhB2pqLmxpZ2EHeWoubGlnYQd0dC5saWdhB3RmLmxpZ2EHdGgubGlnYQd0aS5saWdhB3RrLmxpZ2EHdGwubGlnYQh0dGgubGlnYQhlZmYubGlnYQhlZmIubGlnYQdmZi5saWdhB2ZpLmxpZ2EHZmwubGlnYQAAAAAAAAH//wACAAEAAAAMAAAAHAAAAAIAAgADADoAAQA7AKsAAgAEAAAAAgAAAAEAAAAKAB4ALAABbGF0bgAIAAQAAAAA//8AAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQQIAB0AQABaAGQAngDIANIA5AEWAUgBYgFsAYYBmAGyAkQCXgKQAqoCzALeAugDIgNMA1YDdAOuA7gDwgP+AAMACAAOABQAjQACACUAPAACACkAOwACAC8AAQAEAI4AAgA4AAcAEAAWABwAIgAoAC4ANACPAAIAJwBCAAIAIQBBAAIAKwBAAAIAKgA/AAIAKQA+AAIAJQA9AAIAMwAFAAwAEgAYAB4AJABHAAIAIQBGAAIAKwBFAAIAKgBEAAIAJwBDAAIAMwABAAQAkAACADEAAgAGAAwASQACACUASAACADMABgAOABQAGgAgACYALABPAAIAIQBOAAIAKwBNAAIAKQBMAAIAJQBLAAIALwBKAAIAMwAGAA4AFAAaACAAJgAsAFUAAgAhAFQAAgArAFMAAgAqAFIAAgAnAFEAAgAlAFAAAgAzAAMACAAOABQAWAACADgAVwACAC8AVgACADMAAQAEAFkAAgApAAMACAAOABQAXAACACUAWwACACcAWgACACkAAgAGAAwAXgACACUAXQACADMAAwAIAA4AFACRAAIALwBgAAIAOQBfAAIAJQASACYALAAyADgAPgBEAEoAUABWAFwAYgBoAG4AdAB6AIAAhgCMAHIAAgAsAHEAAgAtAHAAAgAhAG8AAgA1AG4AAgA3AG0AAgA5AGwAAgArAGsAAgAqAGoAAgApAGkAAgAnAGgAAgAlAGcAAgAoAGYAAgA0AGUAAgA4AGQAAgAzAGMAAgAxAGIAAgA2AGEAAgAwAAMACAAOABQAdQACACkAdAACACUAcwACAC8ABgAOABQAGgAgACYALAB7AAIAIQB6AAIAKwB5AAIAKgB4AAIAJwB3AAIAJQB2AAIAMwADAAgADgAUAH4AAgAlAH0AAgAyAHwAAgAzAAQACgAQABYAHACCAAIAKwCBAAIAJQCAAAIAMgB/AAIAMwACAAYADACEAAIAJQCDAAIAMwABAAQAhQACAC8ABwAQABYAHAAiACgALgA0AIwAAgAhAIsAAgAqAIoAAgArAIkAAgAnAIgAAgAlAIcAAgAoAIYAAgAzAAUADAASABgAHgAkAJYAAgA5AJUAAgApAJQAAgAlAJMAAgAxAJIAAgAzAAEABACXAAIAMwADAAgAEAAYAKgAAwAlACEApwADACUAJQCYAAIAJQAHABAAFgAcACIAKAAuADQAqwACACsAqgACACgAqQACACUAnAACACoAmwACACEAmgACACcAmQACADMAAQAEAJ0AAgApAAEABACeAAIAKQAHABAAGAAeACQAKgAwADYApgADADMAJwClAAIAKwCkAAIAKgCjAAIAKACiAAIAJwChAAIAJQCgAAIAMwABAAQAnwACACkAAQAdAAYACAAKAAsADAANAA4ADwAQABEAEgATABQAFQAXABkAGgAbABwAHQAeACEAIwAkACUAJgApADMAOAAAAAEAAAAKAB4ALAABbGF0bgAIAAQAAAAA//8AAQAAAAFrZXJuAAgAAAABAAAAAQAEAAIAAAABAAgAAQPGAAQAAABEAJIAnADSAOABIgEoATYBPAFKAVABXgFkAW4BfAGKAawBsgHAAcYB1AHiAewB/gIIAhYCSAJiAnAChgKcAqoCvALKAtAC6gL0AvoDAAMKAxADGgMgAyYDLAMyAzgDOAMyAz4DRANOAz4DVANaA2ADIANmA2wDcgN4A34DiAOOA5gDngOkA7IDvAACAC7//AA3//IADQAl/+oAKP/8ACn/9AAq//AAK//6ACz//gAt//4AMf/qADP//AA0//wANf/+ADb/+AA5//QAAwAt//wALv/8ADb//AAQACT//AAl/+wAJv/6ACf//AAp/+wAKv/0ACv/+gAs//gALf/8AC//7gAx//gAMv/0ADT/9gA3/+oAOP/6ADn/5AABADf/+gADADX//AA3/+gAOf/6AAEALv/2AAMAKP/8ACn/6AAy/+QAAQAu//IAAwAo/+4AL//2ADX/5gABACT/8AACABgAAgAoAAQAAwAo//4ALv/wADL/+AADACf/9gAv/+4Ao//sAAgAKf/qACv/9AAu//wAL//uADH/7gAy//IAN//mAJX/9AABADYADgADACAABAAjAAQAM//4AAEAMv/8AAMAJv/+ACr/+AA3//4AAwAo//gALv/0AJn/7AACACMAAgAl/+wABAAk//wAL//8ADT/9AA4//4AAgAt//IAq//iAAMAJf/sACb/+AA3//wADAAk//wAJv/+ACj/+gAp/+AAK//+ACz/9gAt//wAL//qADH/7AAy//IAN//cAKP/4gAGACQAAgAl/9oAK//yAC//4gAx/+gAMv/8AAMAKQB+ADL/7ACeAIgABQAg//wAIv/4ACb//AAu//YANQAEAAUAKf/0ACr/+AAv//QAM//mAKP/3gADACEAHAAkAAIALv/4AAQAJf/0AC3//gAv//wAmf/8AAMAJP/wACf/+AAp/+4AAQAk//oABgAg//QAIf/wACj/9gAu/+wAL//0ADP/9AACACH//gA3//IAAQApAEIAAQAnACgAAgAzADQAqgAoAAEAMwA0AAIAMwAyAKEARgABADL/6gABADMALAABACkANAABAJoAGAABADMAMgABACkAOAABADMAMAACACUAEgAzAC4AAQApAHgAAQApADYAAQAzAC4AAQAzADgAAQAzAEIAAQAzAEwAAQAz//IAAQAnAEgAAgAl/+4Amv/oAAEAKQBiAAIAKQBaAJ4AUAABACkAVgABAKEARAADADMANgCaABIAogBKAAIAJwAsAKEARgACAC3/8gA3/+oAAQBEAAYABwAIAAkACgAMABEAFAAVABgAHQAgACEAIgAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOQA8AD0APgBIAEkASwBMAE0AUABRAFkAWgBcAF4AXwBhAGgAagB+AIEAhACIAI0AkQCYAJoAnQCeAJ8AoAChAKkAqgAAAAAAAQAAAADUGBYRAAAAANfpcqUAAAAA1+lypQ=="),i=""!==t?(n=t).charAt(0).toUpperCase()+n.substr(1).toLowerCase():"";var n;const A=e.getPath(i,0,72,72),a=t.length<this.shortLength,r=a?this.backgroundShortSvg:this.backgroundSvg;return this.brandSvg(A,r,a)}brandSvg(t,e,i){const n=t.toSVG(2),A=t.getBoundingBox(),a=A.y2-A.y1,r=A.x2-A.x1,s=t.toPathData(3),[o,c,l]=es(e);if(!o)return"";const g=$r("defs");let h,d,u,w;o.appendChild(g),is(o,g,e),i?(h=.275*c,d=l/2*1.1,u=.22*l,w=.32*c):(h=.22*c*1.1,d=.8*l,u=.067*l,w=.33*c);const B=$r("g");o.appendChild(B),B.setAttribute("transform",`translate(${u} ${w}) rotate(-10)`);const p=_r(h,d);p.setAttribute("opacity","0"),B.appendChild(p);const m=$r("g");B.appendChild(m);const E=(()=>{const t=$r("g"),e=$r("g");t.appendChild(e),e.setAttribute("stroke","#5C1A0D"),e.setAttribute("stroke-width","4"),e.setAttribute("transform","translate(1,1)"),e.innerHTML=n;const i=$r("g");t.appendChild(i),i.setAttribute("fill","#FFE386"),i.setAttribute("transform","translate(1,1)"),i.innerHTML=n;const A=$r("g");t.appendChild(A),A.setAttribute("fill","white"),A.innerHTML=n;const s=new os(t);return s.transform((([t,e])=>[t,e+((r-t)*e)**2/(5e4*r)])),s.transform((([t,e])=>[t,e+(r/3-t)**2/r*this.indicator(t<r/3)])),s.transform((([t,e])=>[t-(a-e)*(r-t)/800,e])),t})();m.appendChild(E);return as(m,b(I)(s),h,d),o.outerHTML}}function ds(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class us extends Zr{constructor(...t){super(...t),ds(this,"moduleName","Vegemite")}svgPreview(t,e){return this.svgElement(t,e)}svgPrint(t,e){return this.svgElement(t,e)}svgElement(t,e){const i=cn("data:application/octet-stream;base64,AAEAAAAPAIAAAwBwRkZUTYdHeHoAAElcAAAAHEdERUYAJwBUAAAe2AAAAB5HUE9TkNtcVAAAHygAACoyR1NVQrj/uP4AAB74AAAAME9TLzJoWmUcAAABeAAAAGBjbWFwtkIacAAAAxAAAAJWZ2FzcP//AAMAAB7QAAAACGdseWY27KOUAAAGCAAAFcRoZWFkFPal0gAAAPwAAAA2aGhlYQU0Ar0AAAE0AAAAJGhtdHiADw6qAAAB2AAAAThsb2Nh5CzfJAAABWgAAACebWF4cACVAEwAAAFYAAAAIG5hbWXeIPPyAAAbzAAAAiJwb3N0ABeZTwAAHfAAAADdAAEAAAABAAAZ9vREXw889QALA+gAAAAA2ZexNAAAAADZl7E0ADL/yQJ2ArwAAAAIAAIAAAAAAAAAAQAAArz/wwAAAqsAAAAAAnYAAQAAAAAAAAAAAAAAAAAAAE4AAQAAAE4ASQAFAAAAAAACAAAAAQABAAAAQAAAAAAAAAAEAbsBkAAFAAACigK7AAAAjAKKArsAAAHfADEBAgAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAABYWFhYAEAACgCtArz/wwAAAqkANgAAAAMAAAAAAmQCZAAAACAAAgIPADIAAAAAAU0AAAAAAAAAAAAAALQAAAD3ADUCfQA1AcoANQKrADUCDQA1AX4ANQHYADUBNQA1AcgANQHUADUB8AA1AeEANQHpADUBqQA1AdAANQHpADUCqgA1Af8ANQGaADUB3wA1AbgANQFtADUBbQA1AekANQG8ADUA1QA1AYcANQHBADUBUAA1AhsANQHBADUB4QA1AZYANQH0ADUBxQA1AcUAMgGJADUBwwA1Ad0ANQJ1ADUB9wA1AcoANQF6ADUB3AA1Af8ANQGaADUB3wA1AbgANQFtADUBbQA1AekANQG8ADUA1QA1AYcANQHBADUBUAA1AhsANQHBADUB4QA1AZYANQH0ADUBxQA1AcUAMgGJADUBwwA1Ad0ANQJ1ADUB9wA1AcoANQF6ADUAtAAAAAAAAAAAAAMAAAADAAAAHAABAAAAAAFQAAMAAQAAABwABAE0AAAALgAgAAQADgAAAAoADQAhACYAKgA5AFoAXgB6AKAArQDFAM8A1gDdAOUA7wD2AP0A/wF4//8AAAAAAAoADQAgACMAKgAwAEAAXgBhAKAArQDAAMcA0QDYAOAA5wDxAPgA/wF4//8AAf/5//f/5f/k/+H/3P/W/9P/0f+s/6AAAAAAAAAAAAAAAAAAAAAA/0v+twABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAIAAwADoARABOAF4AaAAAAAAAAAAXABcAFwAXABcAFwAZABsAGwAbABsAHwAfAB8AHwAkACUAJQAlACUAJQAlACsAKwArACsALwAyADIAMgAyADIAMgA0ADYANgA2ADYAOgA6ADoAOgA/AEAAQABAAEAAQABAAEYARgBGAEYASgAAAQYAAAEAAAAAAAAAAQIDAAAEAAAAAAAAAAAAAAAAAAAAAQAABQYABwgJCgAAAAsAAAAAAAwNDg8QERITFBUAAAAAAAAWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAAAAAxAAAyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKSwAAAAAAFxcZGyQlKzIyMjIyMjQ2NjY2Ojo6Oj9AQEBAQEZGRkYAAAAAAAAAAAAAAAAAAAAlAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABMFxclAAAAAAAAAAAAAEovAAAAAAAAAAAAAAAXGxcbGx8fHx8lJQAlKysrAAAAAAAAAAAAAAAAAAAAACgAKAAoACgAKAAoADwAbgC0AQgBbgGQAcYB1AIGAkYCYAKSAtAC4gMoA2ADyAPgBBoEUAR4BI4EogTWBOoE9gUiBToFSAViBXoFqgXWBjAGWgaaBqwG2AbqBwYHIAc2B0wHXgd2B7AH5ggOCCQIOAhsCIAIjAi4CNAI3gj4CRAJQAlsCcYJ8AowCkIKbgqACpwKtgrMCuIK4griAAAABQAyAAAB3QK8AAMABgAJAAwADwAAEyERIRsCCwEREwMhAxMRMgGr/lUcubrGtMG5AXKttQK8/UQCqP7LATX+tgEs/acBGP7MAUn+0QJdAAACADUABQDCAmoAAwAHAAATESMRExUjNcGLi4sCaf5mAZr+KY2NAAAAAgA1AAACSAJkABsAHwAAJQcjNyMHIzcjNzM3IzczNzMHMzczBzMHIwczByc3IwcBthdrFkoXbBdeDl8KYA9fFWwVShVtFWoPagpqDscJSgqqqqqqqmxHbJqamppsR2xsR0cAAAEANf/JAZUCqgAwAAABFR4BByM0LgEjIgYVFBYXHgMVFA4BBxUjNS4BNTMUFjMyNjU0LgInJjU0Njc1ARwwPAF3CBQOExcsPCEwFgkZNyhnPkGDGRQTGBElHBprRzQCqkQNV0INGBIdFB8hGw4tMCkUJkU7EENDCmk8GiUgFBIeGA4LKXpKVxBEAAAABQA1/+8CdgJrAAwAGAAcACkAOAAAEzQ2MzIeARUUBiMiJjcVFBYzMjY1NCYiBiUDIxMDNTQ+ATMyFhQGIyImNxUUHgEzMjY1NC4BIyIGNk02JD0jTTc2TVEeFBUeHiodAWjhVeEtIz0kN01ONjZOUQ4YDRUeDhcOFR4B1j5XKEUoPldXPgEXISEYGCEhcf2dAmP+JgEoRChXfFdWPwEPGhAiGBAbDyIAAwA1AAAB2AJnACQAOQBIAAAlFwcnDgEjIiY1ND4CNyY1NDYzMhYVFA4IBxc3MyciBhUUHgQXPgU1NCYjAxY+ATcnDgUVFBYBmT8qQgdUMk1cDyETFDVTNzdPAwUJBw0HDgUMATUabPULGQQFCgUKAQENBAsEBBYNAQ8bEQRRAQ4ECwUEIbFNZEERMGJKHzMqEhFDQD9ZVjsLFxITDRAJDgULAUFBtRgSBw4LDwcOAQEQBg8LDwcPGf58AQsOB2IBDQUOCg8IGyQAAAAAAQA1ATwBSQJtABEAABMHNxcHFwcnFyM3Byc3JzcXJ+YXVSVnZyhTGE0WUShnZyVWGAJselJLJSVOVXp7Vk4nI0tReQACADUAAAGjAmQAFwAmAAA3NTQ+AzMyHgMdARQOAiMiLgI3FRQeATMyPQE0IyIOAjYZJzIvFxQtMicaIjc9Hh09OiR8CBsXOTkSGAsF4KQxTzEhDQwhMFAypDtaMhkYMlvjrBUkH1isVxEeGgABADUAAAEAAmEABQAAMxEjNTMRhE7KAd6D/Z8AAQA1AAMBkwJmACEAADc1Njc+AzU0JiMiByM+Ajc+AzMyFhUUBgcGBzMVOi5WFxkaCx0XMQJ2AQINDQ4qLCIQTlkjLkAargN3L1kYHCcoFyIhXhsgNxccJxIHbU04WDRHHYEAAAEANQAAAZ8CZAAtAAATNjc2MzIWFRQOAwcWFRQGIyImJyYnMxYXMjY1NC4DKwE1MzI1NCYjIgdDAjktP0RVCw0VCwlca0otVRYVBn4KLhobCg8UDQcsFT0RESQCAaxgMCdfQRcoGBcIBiVpTWwrKCRENgElHRAYCwcCbzsVHjMAAgA1//8BuwJjAAoADQAAITUjNRMzETMVIxUnMzUBDdfadDY20WJrcgGF/oN6a+XAAAAAAAEANf//AawCYwAgAAABFSMHNjMyHgIVFA4CIyIuASczFjMyNjU0JiMiBycTAX+uCxsnKUIlExYrSy8zUS8HfRYjGygkHy4SZSoCYoBSEic+QyEkSkIqL00xJi8hHy80HwFTAAACADUAAAG0AmIAFgAoAAABMhYVFAYjIiYnJjU0PwEzBw4BBzAyNgMyPgE1NC4EIyIGFRQeAQEaO19vTy9QGCksepBYAw4CCA0kEx8TBAgLDxQLHSUVHQGvbF9kgConOV1LVdqUBRYFAv7XFCYXChMSEAwHLyEaJxIAAAAAAQA1//8BdAJjAAYAABMhFQMjEyM2AT6sibS9AmJ3/hUB3wAAAwA1AAABmwJkABkAJAAuAAATNTQ2MhYVFA4BBxYVFA4BIi4BNTQ3LgMXFRQWMjY1NCYiBjcVFBYyNjQmIgZCVqBWFBAMPC1RaFEtPAkLEgpwHjAdHTAeCRskGxskGwG/AUJhYkIeMxINJGU5WjMzWjllJAkNHSbhARgqKhkaKirTARcfHy8fHwAAAAACADUAAAG0AmQAFgAkAAA/AT4BNyYOASMiJjU0NjMyFhcWFRQPARM1NC4BIyIGFRQWMzI2fVgDDQQBCA0EO15uTy9QGCoteSsVHhAcKCUfHiUBlAQWBgEBAWxfZIAqJzldTFXaAYkBGiYSLiIgMi4AAgA1/8wCdQJtADgASAAAAQcGBwYzMjY1NCYjIgYHBh4DFxY3FQYnLgQ3ND4CMzIWFRQGIyInBicuATU0NjMyFhc3BzY1NC4CJyYGHQEUFjc2AfscBAIBFhYmbFVhdgcBBhwtVThNX01cQGlGMBUBLExzQniZWjs3FB07NT1PQBwoBwgqCQIHEg0gKCAUIQG2ux0NGVo8Wm2Laxg2RTcpBAUfWxsCASlBVlsvQHpfOqF8XZBBNwEBWkRIcyAWKMkaIgcQGBEBAz8rAyYjAQIAAAIANQAAAcgCZQAHAAoAADcHIxMzEyMvAge8GG6bYJdvGhknK3JyAmT9nHJz1tYAAAMANQABAWQCaAAPABoAJQAANxEzMhcWFRQHFhUUBw4BIwMzMjc2NTQnJisBFxUzMjc2NTQnJiM2lEAiJC9DJhszNx0mEgkQEAgUJQExFAsVFAoWAgJlKShQUygka1cuIhMBfAYLIB4LBuNwCA4mIgwGAAAAAQA1AAABqQJnACUAACUzDgEjIi4CNTQ+AjMyHgMXIy4DIyIOARUUFjMyPgIBSWAQX0cxSiwWFStLMSM7KB4QA2AFDhQfER4pEi8qFCEUCulrfjNXbD47alk0HzJAPR0SISATNEwsSWcXJxkAAgA1AAABgwJlAA8AGAAAMxEzMh4DFxYVFA4CIwMRMzI1NCcmIzZ/EhcsICYOJBUtTzUiKF4TFzMCZAEMFi4hT29BbFcwAdr+r6dDLjkAAAABADUAAAE3AmUACwAAEyEVIxUzFSMVMxUhNgEBlpGSlv8AAmR4cHmKeQAAAAEANQAAATcCZQAJAAAzESEVIxUzFSMRNgEBmJOTAmR5b3r+/gAAAAABADUAAAG3AmYAIQAAARUmBw4CFRQeAjMyNzY3IzUzFgcGIyIuATU0NjMyFhcBQBQ3FygbEBkgESEWGQVr0wUTMH89WCpiX0haEAGbAUgCASNPOC1FKhUaHDlpZkOyVYlXiaZvWwAAAAEANQAAAYYCZQALAAAzIxEzFTM1MxEjNSOcZmaDZ2eDAmTm5v2c9QABADUAAACgAmUAAwAAMxEzETZpAmT9nAABADUAAAFRAmUAGgAAAREUBwYHBiMiLgMnJjUzFBYVFjMyNzY1EQFQDQ8fJi4IESsgIAUCcQEEGxUHBAJk/pZkLCscIwIRHkEsFxcCDAQzGxAhAZEAAAAAAQA1//8BiwJmAAoAABcRMxETMwMTIwMRNmdzbISTfnABAmb+7AEU/s/+zAEJ/vYAAQA1AAABGgJlAAUAADMRMxEzFTZpewJk/iaKAAEANQAAAeUCZQAMAAAzIxEzGwEzESMTAyMDlmCLTEuMYARZRVgCZP52AYr9nAHK/jYBygABADUAAAGMAmUACQAAGwEDMxEjAxMjEZ2NAWNikwJjAmT+lAFs/ZwBaf6XAmQAAAACADUAAAGsAmUADAAfAAATNDYzMhYVFA4BIyImNxQWMzI+BDU0LgIjIg4BNmRWUWs0VDRWZGgqKg8aEQ0IAwgSIhceJw4BLKGXmJpfjUaelUtjDxohKCcUHzo1IDVKAAACADUAAAFgAmYAEAAbAAATMzIeARcWFRQGBw4BKwEVIxMVMzI3NjU0JyYjNoEjMRoMLhcSFjEtKGRkJRoNGBkOHAJlCxMPO2cvWRkdGMAB3ZMJEi8uEQoAAwA1//8BvwJmABsALgA8AAAlFwYiLgInDgIjIi4BNTQ+ATMyFhUUBx4CAyIOBAc2MzIXFhc2NTQuAQMeAzsBMjcmJyYjIgG9AQINGRgcChMsFBM+VycmWD1Uah0GDQzAERwSDQcCARgVKCIbHQkbLGgGFRUTBgYWDhEOGSAPenkBAggSDRMTAlaGU1GIXK5/ZUkIBwEBZxIgHScLCBEoHzQeLTJOKP7/HCgQCQwiFSMAAAAAAgA1//8BjwJmAA0AGgAAJRcjJxUjETMXFhcWFRQnNjU0LgInKwEVMzIBDYF+cGpqOi4UW4QYCxARBQY1Lhb7++vqAmQBBQosgohEFyoVHg4IAZkAAQAyAAABjwJnACsAADczFBY3NjU0JicuAycmPgEzMhYXIy4DIyIGFRQWFx4BFRQOAiMiJjZ2JBIyJjwRICobAQE0TSs5WQp0AQMJEg0RHCdBQTEUJkQsXFbFKx8BBDgWIB4JFyg7ITlVKFRbCwwTCh0UFSIkJEc2JUE3IGkAAAABADUAAAFTAmUABwAAMxEjNSEVIxGLVQEdVQHseHj+FAAAAAABADUAAAGNAmUAGgAAEzMRFBceATI2NzY1ETMRFA4BBwYjIiYnLgE1NmsIBR8qHgUIagcQDjBUIk0ZGQwCZP6WLhsSGBYQFzUBa/6WM0MvFEEcJCZISwAAAQA1AAABpwJlAAYAADMDMxsBMwO2gGdQUWmAAmT+UwGt/ZwAAQA1AAACQAJkAAwAADMDMxsBMxsBMwMjCwGfaWk4PFA8OGhrWz4+AmP+cwGN/nEBj/2dAYz+dAABADUAAAHBAmUACwAAMxMDMxc3MwMTIycHNop6c0NCcnmJc1VRAUYBHq6u/t/+vdnZAAAAAQA1AAABlAJlAAkAADczAzMXNzMDFSOsAXdvQUFtd3HrAXn29v6H6wAAAAABADUAAAFDAmYACQAAAQMzFSE1EyM1IQFDiIj+85OTAQ0B5v6kimcBdYkAAAEANQFFAaYCagAGAAAbATMTIycHNnx3fYE4NwFFAST+3LOzAAIANQAAAcgCZQAHAAoAADcHIxMzEyMvAge8GG6bYJdvGhknK3JyAmT9nHJz1tYAAAMANQABAWQCaAAPABoAJQAANxEzMhcWFRQHFhUUBw4BIwMzMjc2NTQnJisBFxUzMjc2NTQnJiM2lEAiJC9DJhszNx0mEgkQEAgUJQExFAsVFAoWAgJlKShQUygka1cuIhMBfAYLIB4LBuNwCA4mIgwGAAAAAQA1AAABqQJnACUAACUzDgEjIi4CNTQ+AjMyHgMXIy4DIyIOARUUFjMyPgIBSWAQX0cxSiwWFStLMSM7KB4QA2AFDhQfER4pEi8qFCEUCulrfjNXbD47alk0HzJAPR0SISATNEwsSWcXJxkAAgA1AAABgwJlAA8AGAAAMxEzMh4DFxYVFA4CIwMRMzI1NCcmIzZ/EhcsICYOJBUtTzUiKF4TFzMCZAEMFi4hT29BbFcwAdr+r6dDLjkAAAABADUAAAE3AmUACwAAEyEVIxUzFSMVMxUhNgEBlpGSlv8AAmR4cHmKeQAAAAEANQAAATcCZQAJAAAzESEVIxUzFSMRNgEBmJOTAmR5b3r+/gAAAAABADUAAAG3AmYAIQAAARUmBw4CFRQeAjMyNzY3IzUzFgcGIyIuATU0NjMyFhcBQBQ3FygbEBkgESEWGQVr0wUTMH89WCpiX0haEAGbAUgCASNPOC1FKhUaHDlpZkOyVYlXiaZvWwAAAAEANQAAAYYCZQALAAAzIxEzFTM1MxEjNSOcZmaDZ2eDAmTm5v2c9QABADUAAACgAmUAAwAAMxEzETZpAmT9nAABADUAAAFRAmUAGgAAAREUBwYHBiMiLgMnJjUzFBYVFjMyNzY1EQFQDQ8fJi4IESsgIAUCcQEEGxUHBAJk/pZkLCscIwIRHkEsFxcCDAQzGxAhAZEAAAAAAQA1//8BiwJmAAoAABcRMxETMwMTIwMRNmdzbISTfnABAmb+7AEU/s/+zAEJ/vYAAQA1AAABGgJlAAUAADMRMxEzFTZpewJk/iaKAAEANQAAAeUCZQAMAAAzIxEzGwEzESMTAyMDlmCLTEuMYARZRVgCZP52AYr9nAHK/jYBygABADUAAAGMAmUACQAAGwEDMxEjAxMjEZ2NAWNikwJjAmT+lAFs/ZwBaf6XAmQAAAACADUAAAGsAmUADAAfAAATNDYzMhYVFA4BIyImNxQWMzI+BDU0LgIjIg4BNmRWUWs0VDRWZGgqKg8aEQ0IAwgSIhceJw4BLKGXmJpfjUaelUtjDxohKCcUHzo1IDVKAAACADUAAAFgAmYAEAAbAAATMzIeARcWFRQGBw4BKwEVIxMVMzI3NjU0JyYjNoEjMRoMLhcSFjEtKGRkJRoNGBkOHAJlCxMPO2cvWRkdGMAB3ZMJEi8uEQoAAwA1//8BvwJmABsALgA8AAAlFwYiLgInDgIjIi4BNTQ+ATMyFhUUBx4CAyIOBAc2MzIXFhc2NTQuAQMeAzsBMjcmJyYjIgG9AQINGRgcChMsFBM+VycmWD1Uah0GDQzAERwSDQcCARgVKCIbHQkbLGgGFRUTBgYWDhEOGSAPenkBAggSDRMTAlaGU1GIXK5/ZUkIBwEBZxIgHScLCBEoHzQeLTJOKP7/HCgQCQwiFSMAAAAAAgA1//8BjwJmAA0AGgAAJRcjJxUjETMXFhcWFRQnNjU0LgInKwEVMzIBDYF+cGpqOi4UW4QYCxARBQY1Lhb7++vqAmQBBQosgohEFyoVHg4IAZkAAQAyAAABjwJnACsAADczFBY3NjU0JicuAycmPgEzMhYXIy4DIyIGFRQWFx4BFRQOAiMiJjZ2JBIyJjwRICobAQE0TSs5WQp0AQMJEg0RHCdBQTEUJkQsXFbFKx8BBDgWIB4JFyg7ITlVKFRbCwwTCh0UFSIkJEc2JUE3IGkAAAABADUAAAFTAmUABwAAMxEjNSEVIxGLVQEdVQHseHj+FAAAAAABADUAAAGNAmUAGgAAEzMRFBceATI2NzY1ETMRFA4BBwYjIiYnLgE1NmsIBR8qHgUIagcQDjBUIk0ZGQwCZP6WLhsSGBYQFzUBa/6WM0MvFEEcJCZISwAAAQA1AAABpwJlAAYAADMDMxsBMwO2gGdQUWmAAmT+UwGt/ZwAAQA1AAACQAJkAAwAADMDMxsBMxsBMwMjCwGfaWk4PFA8OGhrWz4+AmP+cwGN/nEBj/2dAYz+dAABADUAAAHBAmUACwAAMxMDMxc3MwMTIycHNop6c0NCcnmJc1VRAUYBHq6u/t/+vdnZAAAAAQA1AAABlAJlAAkAADczAzMXNzMDFSOsAXdvQUFtd3HrAXn29v6H6wAAAAABADUAAAFDAmYACQAAAQMzFSE1EyM1IQFDiIj+85OTAQ0B5v6kimcBdYkAAAAAEADGAAEAAAAAAAEACAASAAEAAAAAAAIABwArAAEAAAAAAAMAFQBfAAEAAAAAAAQACACHAAEAAAAAAAUAIgDWAAEAAAAAAAYADwEZAAEAAAAAABAACAE7AAEAAAAAABEABwFUAAMAAQQJAAEAEAAAAAMAAQQJAAIADgAbAAMAAQQJAAMAKgAzAAMAAQQJAAQAEAB1AAMAAQQJAAUARACQAAMAAQQJAAYAHgD5AAMAAQQJABAAEAEpAAMAAQQJABEADgFEAFYAZQBnAGUAbQBpAHQAZQAAVmVnZW1pdGUAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAADEALgAwADAAMgA7AFYAZQBnAGUAbQBpAHQAZQBSAGUAZwB1AGwAYQByAAAxLjAwMjtWZWdlbWl0ZVJlZ3VsYXIAAFYAZQBnAGUAbQBpAHQAZQAAVmVnZW1pdGUAAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADIAOwBGAG8AbgB0AHMAZQBsAGYAIABNAGEAawBlAHIAIAAzAC4AMwAuADAAAFZlcnNpb24gMS4wMDI7Rm9udHNlbGYgTWFrZXIgMy4zLjAAAFYAZQBnAGUAbQBpAHQAZQBSAGUAZwB1AGwAYQByAABWZWdlbWl0ZVJlZ3VsYXIAAFYAZQBnAGUAbQBpAHQAZQAAVmVnZW1pdGUAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAAAAAAgAAAAAAAP+DADIAAAAAAAAAAAAAAAAAAAAAAAAAAABOAAAAAQACAQIBAwADAAQABgAHAAgACQANABMAFAAVABYAFwAYABkAGgAbABwAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0AQQBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0ArAEECWNvbnRyb2xMRgljb250cm9sQ1IKc29mdGh5cGhlbgAAAAAAAAH//wACAAEAAAAMAAAAFgAAAAIAAQABAE0AAQAEAAAAAgAAAAAAAQAAAAoALAAuAAJERkxUAA5sYXRuABgABAAAAAD//wAAAAQAAAAA//8AAAAAAAAAAQAAAAoAMAA+AAJERkxUAA5sYXRuABoABAAAAAD//wABAAAABAAAAAD//wABAAAAAWtlcm4ACAAAAAEAAAABAAQAAgAAAAEACAABKd4ABAAAAEYAlgEwAd4CjAM2A+AEegUsBWYGDAa+B3AIHgjQCYIKNAriC4gMAgx0DOYNZA3mDlQOyg88D54QEBCGEQARchHsEmIS1BOWFAwUghTwFWIV1BaiFxQXkhgEGMYZdBomGtQbfhwYHL4dYB3+HpgfPh/oIJYhPCHmIpQjRiPsJJolSCXuJpQnQifoKJIpRAAmAAn/8QAK//sADP/7AA3/+wAO//sAD//7ABD/+wAR//sAEv/7ABP/+wAU//sAFf/xABb/8QAZ//sAHf/2AB7/+wAf//sAIP/xACH/+wAi//sAI//7ACT/+wAl//EAJv/2ACf/8QAo//sAKf/2ACr/+wAr//sALP/sAC3/7AAu/+IAL//dADD/9gAx/+wAMv/7ADP/+wA0//YAKwAG//EACP/nAAn/4gAK/9MAC//iAAz/9gAN/+IADv/sAA//4gAQ/9gAEf/iABL/1QAT//EAFP/nABX/8QAW/9gAMf/TADL/pgAz//MANP/nADX/8QA2//EAN//7ADj/7gA5//YAOv/7ADv/2AA8//EAPf/2AD7/9gA///EAQP/sAEH/+wBC/+wAQ//xAET/7ABF/+wARv/2AEf/3QBI/90ASf/EAEr/zgBL//YAKwAG//YAB//2AAn/3QAL/+wADP/sAA3/8QAO//YAD//sABD/8QAR/+wAEv/iABP/5wAU/+wAFf/dABb/7AAX/78AMf/YADL/sAAz/+IANP/iADX/8QA2/+cAN//xADj/3QA5/+wAOv/2ADv/4gA8//EAPf/xAD7/8QA///YAQP/YAEH/9gBC/+cAQ//sAET/7ABF/+wARv/xAEf/zgBI/9MASf/OAEr/zgBL/+wAKgAG//YAB//iAAj/4gAK/+IADP/dAA3/ugAO/+IAD//iABD/5wAR/+IAEv/dABP/yQAU/90AFf+mABb/0wAx/5gAMv/YADP/4gA0/9MANf/xADb/7AA3/+wAOP/iADn/7AA6//EAO//dADz/5wA9/+wAPv/sAD//5wBA/9gAQf/sAEL/zgBD/+wARP/YAEX/tQBG/90AR/+hAEj/oQBJ/8QASv+DAEv/7AAqAAb/8QAH/90ACP/YAAn/oQAL/8kADP/iAA3/sAAO/+cAD//YABD/4gAR/90AEv/bABP/4gAU/+IAFf/TABb/5wAg/+QAMf/nADL/3AAz//QANP/rADX/9AA2//IAN//4ADj/8AA5//QAOv/1ADv/7AA8/+oAPf/7AD7/9wA///IAQP/tAEH/+wBC/+IAQ//2AET/4wBF/7YARv/vAEf/pgBK/6MAS//yACYAB//TAAj/8QAK/84ADP/dAA3/9gAO//EAD//dABD/pgAR/8kAEv+6ABP/7AAU/90AFf/OADH/xAAy/5IAM//sADT/3QA1/+cANv/xADf/9gA4/90AO/9WADz/5wA9//EAPv/sAD//5wBA/84AQf/dAEL/0wBD/+cARP/nAEX/5wBG/+cAR//dAEj/2ABJ/7oASv/JAEv/4gAsAAb/+wAH//sACP/xAAn/zgAK/+cAC//dAAz/9gAN/9gADv/tAA//7AAQ/+kAEf/rABL/3QAT/90AFP/hABX/3QAW/90AMf/nADL/vwAz/+cANP/nADX/8QA2//EAN//sADj/5wA5//YAOv/2ADv/4gA8//EAPf/2AD7/+wA///sAQP/2AEH/+wBC/+wAQ//7AET/7ABF/9MARv/7AEf/yQBI/84ASf+wAEr/xABL/+cADgAG//sACf/xAAv/7AAN//sADv/7AA8AAAAR//EAEv/0ABP/9gAU//EAFf/xABb/7AAx//YAQP/2ACkABv/7AAf/9gAI//sACf/iAAr/5wAL/+wADP/vAA3/3QAO//sAD//qABD/8QAR/+wAEv/nABP/8QAU/+cAFf/iABb/7AAx/+cAMv/vADP//AA0/+cANf/7ADb//gA4//EAOf/8ADr//AA7/+kAPP/6AD3//QA+//4AP//7AEL/6gBD//0ARP/2AEX/7ABG//EAR//YAEj/4gBJ/+wASv/LAEv//AAsAAb/+wAH//EACP/2AAn/0wAK/+IAC//JAAz/5wAN/90ADv/iAA//7AAQ/+cAEf/sABL/3QAT/9MAFP/iABX/zgAW/+cAMf/YADL/xAAz/+wANP/dADX/6AA2//EAN//xADj/4wA5//EAOv/2ADv/7AA8/+wAPf/sAD7/9gA//+wAQP/iAEH/8QBC/90AQ//nAET/5wBF/8QARv/mAEf/xABI/8kASf+1AEr/rQBL/+IALAAG//sAB//7AAj/9gAJ/9MACv/2AAv/ugAM/+kADf/dAA7/9gAP/+wAEP/2ABH/8AAS//EAE//2ABT/5wAV/9gAFv/sADH/vwAy/9UAM//eADT/3wA1//EANv/xADf/9gA4/+IAOf/xADr/9gA7/+wAPP/xAD3/9gA+//EAP//2AED/2ABB//EAQv/nAEP/9gBE/+cARf/TAEb/8QBH/9gASP/YAEn/xgBK/78AS//xACsABv/7AAf/9gAI/+wACf/TAAr/5wAL/90ADP/lAA3/zgAO/90AD//dABD/7AAR/+IAEv/iABP/2AAU/+IAFf/JABb/5wAx/90AMv/EADP/6wA0/+EANf/wADb/8AA4/9wAOf/dADr/7AA7/9gAPP/sAD3/5wA+/+wAP//iAED/0wBB/+IAQv/YAEP/4gBE/84ARf/JAEb/4gBH/8kASP/OAEn/vwBK/8kAS//TACwABv/7AAf/3wAI/+cACf+wAAr/4wAL/8kADP/dAA3/xwAO/+cAD//dABD/7AAR/+cAEv/iABP/yQAU/9cAFf+/ABb/4gAa/+kAMf/YADL/uwAz/+EANP/dADb/6wA3//MAOP/lADn/8QA6//IAO//eADz/5wA9/+4APv/zAD//8ABA/+IAQf/2AEL/6gBD//YARP/kAEX/zABG/+8AR/+0AEj/uwBJ/64ASv+vAEv/5QAsAAb/+wAH/90ACP/nAAn/4gAK/9MAC//nAAz/3QAN//YADv/eAA//3QAQ/7AAEf/OABL/sAAT//sAFP/dABX/0wAW/9MAMf/iADL/iAAz//YANP/OADX/9gA2//EAN//xADj/0wA5//YAOv/zADv/gAA8//EAPf/7AD7/+wA///YAQP/OAEH/7gBC/84AQ//2AET/2ABF//sARv/2AEf/5wBI/+cASf/TAEr/4gBL/+wALAAG//sAB//2AAj/8QAJ/9gACv/nAAv/3QAM/+IADf/dAA7/4gAP/+IAEP/nABH/5wAS/9gAE//YABT/3QAV/84AFv/sADH/5wAy/78AM//nADT/2AA1/+cANv/nADf/7AA4/90AOf/sADr/7AA7/+cAPP/sAD3/8QA+/+wAP//xAED/4gBB//EAQv/dAEP/5wBE/+IARf/YAEb/5wBH/78ASP/HAEn/sABK/7UAS//dACsABv/xAAf/8QAI/+IACf/dAAr/0wAL/+IADP/iAA3/3QAO/+cAD//dABD/zgAR/9MAEv/EABP/0wAU/84AFv/dADH/4gAy/6EAM//jADT/3QA1/+wANv/sADf/5wA4/90AOf/nADr/8QA7/78APP/xAD3/9gA+/+wAP//nAED/3QBB/+cAQv/nAEP/5wBE/+IARf/OAEb/3QBH/8QASP/JAEn/lwBK/7oAS//YACkABv/sAAf/0wAI/90ACf/OAAr/3QAM/90ADf/EAA7/5wAP/9gAEP/YABH/3QAS/9MAE//YABT/4gAV/90AMf/sADL/wAAz/+8ANP/kADX/6wA2//AAN//2ADj/5AA5//EAOv/uADv/1gA8//QAPf/2AD7/8QA///AAQP/dAEH/7ABD/+gARP/YAEX/1QBG/+wAR/+3AEj/wwBJ/7UASv+wAEv/5gAeAAf/zgAi/+4AI//5ACT/7wAy/9AAM//pADT/sQA1/+sANv/nADf/5gA4/7oAOf/vADr/9wA7/9AAPP/sAD3/6wA+/+YAP//sAED/uwBB/+kAQv+7AEP/5ABE/9QARf+6AEb/0ABH/34ASP+SAEn/zQBK/5sAS//nABwAF//RACT//wAy/9EAM//uADT/5wA1/+8ANv/3ADf/7gA4/+gAOf/3ADr/+wA7/9oAPP/vAD3/9wA+/+4AP//vAED/4QBB//cAQv/nAEP/7wBE/+4ARf/QAEb/9wBH/8EASP/MAEn/wwBK/7sAS//nABwAF//QABv/+QAy/8EAM//zADT/6wA1//sANv/zADf/+wA4/+8AOf/zADr//gA7/+EAPP/vAD3/9wA+//kAP//3AED/4gBB//kAQv/jAEP/8wBE/+YARf/VAEb/+QBH/84ASP/JAEn/twBK/8EAS//rAB8ABv/7ABL/3wAX/8kAJf/5ACv/7wAy/7oAM//zADT/6wA1/+8ANv/uADf/8wA4/+oAOf/vADr/7wA7/9QAPP/5AD3//gA+//EAP//vAED/4wBB//MAQv/mAEP/7gBE/+cARf/XAEb/6wBH/8kASP/JAEn/twBK/7cAS//nACAABv/7ACQAAgAl/+8AJ//5AC3//gAv//4AMv/oADP//QA0/+sANf/7ADb/+gA3//sAOP/jADn/9wA6//oAO//kADz//wA9//0APv/+AD8AAABA/+gAQf/7AEL/6ABD//sARP/sAEX/8QBG//sAR//qAEj/6wBJ/+cASv/qAEv/+QAbAAb/+wAl/+8AMv+5ADP/+wA0/+8ANf/7ADb/+wA3//0AOP/vADn/+wA6AAAAO/+7ADz//gA9//4APv/7AED/7ABB//4AQv/nAEP/+QBE//kARf/7AEb/+QBH//MASP/rAEn/4gBK/+8AS//7AB0ABv/2ABf/zgAl/+8AMv+3ADP/9wA0/+sANf/3ADb/8QA3//kAOP/uADn/8wA6//sAO//YADz/8wA9/+4APv/3AD//8wBA/+MAQf/3AEL/6QBD/+8ARP/nAEX/1ABG/+8AR//JAEj/zABJ/6YASv/JAEv/3AAcAAb/+wAX//MAJf/7ADL/6wAz//4ANP/uADX/+wA2//4AN//+ADj/8wA5//0AOv/+ADv/7gA8//4APf/+AD7/+wA///4AQP/uAEL/9wBD//4ARP/+AEX/+QBG//4AR//uAEj/9wBJ/+4ASv/zAEv//gAYAAb/+wAx//YAMv/rADP//wA0//MANf//ADYAAQA3//8AOP/zADv/6AA8//4APf/+AD4AAQBA/+4AQf//AEL/8wBD//4ARP/4AEX//QBH/+wASP/3AEn/7ABK//EASwABABwABv/2ABf/4QAy/8oAM//9ADT/+QA1//4ANv/7ADf//gA4//MAOf/+ADr//wA7/+EAPP/7AD3//gA+//4AP//+AED/7wBB//4AQv/zAEP//gBE//sARf/7AEb//gBH/+8ASP/5AEn/2gBK//oAS//+AB0ABv/nABf/5wAx/7AAMv/hADP/7gA0/7QANf/rADb/5wA3/+4AOP+sADn/6wA6//kAO/+3ADz/6gA9/+8APv/nAD//5wBA/6wAQf/uAEL/rgBD/+cARP+8AEX/3ABG/9oAR//cAEj/0QBJ/9oASv/RAEv/7wAeAAb/9gAX//cAI//9ADH/vwAy/+4AM//5ADT/2gA1//4ANv/3ADf/+wA4/9oAOf/3ADr/+wA7/+cAPP/7AD3/+QA+//cAP//5AED/1ABB//sAQv/cAEP/9wBE/+8ARf/JAEb/6wBH/8QASP++AEn/5wBK/8EAS//+ABwAF//7ADH/7AAy/+QAM//+ADT/7gA1//4ANgAAADf//QA4//cAOf/7ADr//gA7/+4APP/+AD3//gA+//0AP//7AED/7wBB//4AQv/uAEP//gBE//cARf/7AEb/+QBH/+gASP/vAEn/6wBK/+gAS//+AB4ABv/7ABf/8wAa//4AHf/3ACX/9wAq//4AMf/2ADL/5AAz//0ANP/zADX/+wA2//4AN//+ADj/+QA7/+4APf/+AD7/+wA///4AQP/2AEH/+gBC/+4AQ//7AET/+QBF//sARv/+AEf/8wBI/+8ASf/zAEr/6wBL//4AHQAG//EAJP/3ADH/7AAy/7sAM//sADT/4wA1/+8ANv/vADf/9wA4/+QAOf/qADr/9wA7/98APP/vAD3/9wA+/+sAP//uAED/4wBB/+4AQv/mAEP/7wBE/+IARf/VAEb/7gBH/8MASP/GAEn/uwBK/7oAS//fABwABv/sACT//gAy/54AM//rADT/6gA1//EANv/rADf/9wA4/+MAOf/oADr/9wA7/64APP/sAD3/8QA+/+wAP//sAED/4QBB//MAQv/oAEP/5ABE/9gARf/kAEb/7gBH/9EASP/QAEn/uwBK/8QAS//zADAAF//3ABj//wAZ/+kAGv//ABv//QAc//4AHf/pAB7/+wAf//8AIP/iACH//gAi//8AI//+ACT//wAl/+IAJ//uACj//gAp/+cAKv/hACv/+QAs/8MALf/QAC7/5AAv/8wAMP//ADL/4QAz//4ANP/jADX/9wA3//kAOP/fADn/9wA7/+IAPP/5AD3/+gA+//EAP//6AED/2gBB/+8AQv/aAET/7wBF/9cARv/qAEf/xgBI/7sASf/qAEr/tABL//sAHQAG/+cAF//oACT/+gAy/+IAM//xADT/zAA1/+8ANv/sADf/+gA4/8wAOf/3ADr/8wA7/8kAPP/uAD3/7wA+/+wAP//rAED/yQBB//cAQv/MAEP/+ABE/9QARf/KAEb/2gBH/8EASP/EAEn/4gBK/7cAS//vAB0ABv/xABv/+QAl/+4AMv+8ADP/7wA0/9wANf/zADb/6AA3//cAOP/hADn/5gA6//MAO//aADz/6QA9//MAPv/pAD//6wBA/+MAQf/3AEL/2gBD/+kARP/rAEX/1ABG/+kAR//JAEj/zABJ/7QASv+7AEv/5wAbAAb/9gAy/6YAM//9ADT/0wA1//oANv/+ADf//QA4/9UAOf/3ADr//wA7/7kAPP/6AD3//gA+//sAP//7AED/0ABB//oAQv/XAEP/+QBE/+IARf/zAEb/9wBH/+8ASP/vAEn/6gBK/+cAS//6ABwABv/7ACQAAgAy/9UAM//7ADT/7wA1//cANv/9ADf//wA4/+4AOf/7ADr//wA7/+sAPP/+AD3//gA+//0AP//6AED/7gBB//sAQv/sAEP/+wBE/+8ARf/7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ABX/3QAx//YAMv+5ADP/+AA0/+MANf/3ADb/+AA3//kAOP/iADn/+gA6//0AO//OADz//QA9//4APv/5AD///ABA/+YAQv/jAEP/9wBE/+YARf/vAEb//gBH/+cASP/vAEn/0QBK/+YAS//9ACgAB//2AAj/4gAJ/90ACv/sAAv/4gAM/+gADf/iAA7/9QAP/+gAEP/dABH/4AAS/+YAE//OABT/4gAV/90AJP/7ADH/9gAy/8EAM//vADT/3wA2//QAN//4ADj/4wA5/+kAOv/6ADv/0QA8/+YAPf/zAD7/6QA///EAQP/qAEL/3ABD/+gARP/fAEb/+ABH/7sASP+7AEn/rwBK/68AS//jACcACP/xAAn/7AAK//gADP/2AA7/9wAP//YAEP/xABH/5wAS/+cAE//xABT/7AAV/+UAMf/2ADL/6AAz//kANP/qADX/+wA2//oAN//7ADj/6wA5//cAOv//ADv/4wA8//sAPf/+AD7/+wA///oAQP/sAEH/+gBC/+MAQ//5AET/7wBF/+oARv/7AEf/4wBI/+wASf/jAEr/6gBL//4AJgAH//sACP/7AAn/5wAK//oADP/2AA7/9gAP//YAEP/xABH/8QAS//IAE//xABT/5wAV//EAMv/nADP/+wA0//EANf/9ADb//gA3//4AOP/uADn/+wA6//4AO//oAD0AAAA+//sAP//+AED/7wBB//4AQv/qAEP//wBE//EARf/3AEb/+wBH/+YASP/3AEn/2gBK/+QAS//7ACkAB//2AAj/9gAJ/90ACv/yAAz/8QAO//EAD//wABD/6gAR/+wAEv/mABP/9AAU/+wAFf/rABf/zgAx//YAMv/OADP/7wA0/+oANf/5ADb//gA3//0AOP/oADn/+QA6//0AO//YADz//gA9//8APv/6AD//+QBA/+4AQf/5AEL/4wBD//gARP/qAEX/+QBG//oAR//pAEj/6QBJ/9UASv/rAEv/+gAqAAf/sgAI/8kACf+wAAr/ugAL/7UADP+1AA3/3QAO/+QAD/+6ABD/sgAR/7UAEv+xABP/4gAU/6sAFf+mADH/lwAy/9oAM//jADT/qwA1/+IANv/iADf/4wA4/5oAOf/XADr/7gA7/7QAPP/kAD3/6wA+/+4AP//mAED/rQBB/+8AQv+qAEP/6gBE/74ARf/XAEb/2gBH/9AASP/SAEn/1QBK/80AS//qACsAB//nAAj/8QAJ/6YACv/sAAv/nAAM/90ADf+6AA7/9gAP/+IAEP/sABH/3QAS/9oAE//sABT/3QAV/8QAJP/+ADH/pgAy/+sAM//vADT/ygA1//0ANv/zADf/+wA4/9MAOf/vADr/+wA7/9gAPP/3AD3/9wA+//EAP//7AED/1QBB//cAQv/PAEP/8wBE/+YARf+7AEb/5wBH/7UASP/JAEn/2gBK/6UAS//zACkAB//2AAn/7AAK//kAC//sAAz/9gAO//oAD//2ABD/7AAR/+cAEv/vABP/9gAU//EAFf/sABcAAQAx/+YAMv/pADP/+QA0/+oANf/zADb/+wA3//oAOP/nADn/9wA6//4AO//uADz/+QA9//oAPv/7AD//+QBA/+8AQf/3AEL/6QBD//oARP/sAEX/8wBG//gAR//pAEj/6QBJ/+MASv/nAEv//QAqAAf/9gAI//sACf/sAAr/9wAL/+wADP/7AA7/+gAP//EAEP/2ABH/7AAS//EAE//2ABT/9gAV/+QAFwABADH/8QAy/+kAM//3ADT/6QA1//kANv/5ADf/+QA4/+8AOf/6ADr//gA7/+8APP/7AD3/+gA+//oAP//4AED/7wBB//sAQv/rAEP//QBE/+8ARf/3AEb/+gBH/+4ASP/rAEn/4QBK/+wAS//5ACsAB//xAAj/4gAJ/9gACv/sAAv/2AAM//YADf/iAA7/8QAP/90AEP/iABH/0wAS/+IAE//JABT/4gAV/94AJP/7ADH/3QAy/7QAM//pADT/4QA1/+wANv/vADf/6gA4/+IAOf/qADr/+gA7/9oAPP/pAD3/6wA+/+wAP//pAED/4QBB/+sAQv/cAEP/6wBE/+IARf/JAEb/7gBH/7wASP/BAEn/pgBK/7UAS//kACwAB//iAAj/5wAJ/+IACv/OAAv/2AAM/+cADf/nAA7/8AAP/90AEP+6ABH/xAAS/9cAE//XABT/2AAV/9gAG//3ACT/+wAx/+IAMv+gADP/6QA0/+MANf/mADb/7wA3/+sAOP/aADn/6AA6//YAO/+xADz/6wA9/+4APv/oAD//7wBA/9oAQf/oAEL/1wBD/+MARP/aAEX/2ABG/+cAR//PAEj/yQBJ/7kASv/BAEv/6AApAAf/8QAI/+wACf/OAAr/6gAL/84ADP/nAA3/2AAO//YAD//fABD/4gAR/9gAEv/lABP/5wAU/+IAFf/YADH/4gAy/+cAM//3ADT/2gA1//gANv/5ADf/+wA4/9wAOf/3ADr//gA7/+MAPP/3AD3//QA+//cAP//3AED/1QBC/9UAQ//9AET/6QBF/+EARv/pAEf/ugBI/8QASf/aAEr/wgBL//sAKwAH/8kACP/YAAn/xAAK/9MAC/+/AAz/yQAN/9gADv/nAA//xAAQ/7oAEf+1ABL/wQAT/9gAFP+6ABX/vwAk//sAMf+/ADL/2gAz/+gANP/KADX/6QA2/+kAN//oADj/xgA5/+QAOv/nADv/uQA8/+wAPf/uAD7/6QA//+cAQP/GAEH/7ABC/8kAQ//mAET/2ABF/84ARv/VAEf/wQBI/7wASf/GAEr/tABL/+8AKwAH//EACP/2AAn/yQAK/+oAC//TAAz/3QAN/+cADv/sAA//4gAQ/+IAEf/YABL/3wAT/90AFP/dABX/2AAk//sAMf/nADL/xgAz//MANP/iADX/7wA2/+4AN//3ADj/4wA5/+kAOv/vADv/1wA8/+4APf/zAD7/6gA//+0AQP/kAEH/9wBC/98AQ//qAET/5wBF/9AARv/vAEf/yQBI/9AASf/PAEr/xABL/+8AKQAH/+cACP/sAAn/5wAK/+kAC//dAAz/2AAO/+wAD//XABD/qwAR/8kAEv/AABP/9gAU/9MAFf/OADH/2AAy/7AAM//5ADT/2gA1//0ANv/6ADf//gA4/98AOf/3ADr//QA7/8YAPP/7AD3//gA+//gAP//4AED/1QBB//0AQv/VAEP/+ABE/+MARf/zAEb/+QBH/+4ASP/zAEn/4gBK/+cAS//zACkACP/2AAn/5wAK//QAC//sAAz/+wAN//4ADv/2AA//5QAQ/+wAEf/nABL/8wAT//EAFP/nABX/3QAx/+QAMv/KADP/+QA0/+wANf/6ADb/+gA3//sAOP/vADn/+gA6AAAAO//hADz//wA9//0APv/5AD///gBA/+wAQf/7AEL/7ABD//sARP/vAEX/9wBG//sAR//zAEj/6gBJ/+EASv/jAEv/+wArAAf/zgAI/84ACf/YAAr/ygAL/9gADP/JAA3/+wAO/9kAD//JABD/ogAR/7oAEv+5ABP/5wAU/8QAFf+9ACT/+wAx/7oAMv+FADP/+wA0/7sANf/qADb/6wA3/+wAOP++ADn/5gA6/+8AO/+iADz/6AA9/+oAPv/sAD//7wBA/8MAQf/mAEL/uwBD/+YARP/KAEX/6QBG/+8AR//jAEj/3wBJ/9MASv/hAEv/6wApAAf/zgAI/84ACf/TAAv/2AAM/84ADv/eAA//xAAQ/7AAEf/TABL/sQAT/+wAFP/FABX/yQAk//sAMf/JADL/lQAz//MANP/BADX/+QA2//MAN//3ADj/xgA5//sAOv/3ADv/pQA8/+8APf/+AD7/7gA//+oAQP/DAEH/7gBC/8QAQ//vAET/0ABF/+4ARv/uAEf/6QBI/+QASf/aAEr/5gBL//cAKgAH/8QACP/OAAn/pgAL/7oADP+rAA3/3QAO/+cAD/+5ABD/twAR/8QAEv+zABP/0wAU/7AAFf+cACT/+wAx/6EAMv/aADP/4wA0/7cANf/4ADb/4wA3//0AOP+3ADn/7gA6/+8AO/+7ADz/7gA9//EAPv/jAD//6ABA/7oAQf/zAEL/uQBD/+sARP/OAEX/3wBG/+EAR//aAEj/2ABJ/9gASv/MAEv/7gAsAAf/yQAI/84ACf/JAAr/wgAL/8kADP/JAA3//gAO/8kAD/+6ABD/jQAR/7oAEv+gABP/4gAU/7UAFf+6AB7/8QAk//sAMf+1ADL/lwAz/+8ANP+7ADX/5gA2/+4AN//uADj/uQA5/+gAOv/3ADv/hAA8/+8APf/sAD7/7AA//+oAQP+6AEH/7ABC/7kAQ//pAET/ygBF/+8ARv/vAEf/6ABI/+kASf/fAEr/5ABL//EAJgAH//YACf/iAAr/7AAL/+cADP/iAA3//wAO//UAD//nABD/7AAR/+IAEv/gABP/7AAU/90AFf/TADH/4gAy/+sAM//+ADT/6AA1//4ANgAEADf//wA4/9wAOf/6ADv/5gA8//8APf//AD///QBA/+MAQf//AEMAAABE/+8ARf/4AEb/+wBH//cASP/rAEn/6QBK/+kAS//9AAIAAQAGAEsAAAAAAAAAAQAAAADUGBYRAAAAANmXsTQAAAAA2ZexNA=="),n=""!==t?(A=t).charAt(0).toUpperCase()+A.substr(1).toLowerCase():"";var A;const a=i.getPath(n,0,72,72),r=a.toSVG(2),s=a.getBoundingBox(),o=s.x2-s.x1,c=a.toPathData(3),l=$r("g");l.className.baseVal="module-root";const g=$r("defs");l.appendChild(g);const h=$r("g");h.className.baseVal="module-bounds",l.appendChild(h);const d=_r(e.height,e.width);d.setAttribute("opacity","0"),h.appendChild(d);const u=$r("g");u.className.baseVal="module-text-enclosure",l.appendChild(u);const w=(()=>{const t=$r("g");t.className.baseVal="module-text-group";const e=$r("defs");t.appendChild(e),e.appendChild(ns(0,2,2,"shadow"));const i=$r("path");i.setAttribute("d",c),i.setAttribute("stroke","black"),i.setAttribute("stroke-width","3"),e.appendChild(i);const n=$r("g");n.className.baseVal="module-layer0",t.appendChild(n),n.setAttribute("filter","url(#shadow)"),n.innerHTML=i.outerHTML;const A=$r("g");A.className.baseVal="module-layer1",t.appendChild(A),A.setAttribute("stroke-width","3"),A.setAttribute("stroke","rgb(45,41,38)"),A.setAttribute("fill","rgb(45,41,38)"),A.setAttribute("transform","translate(0.5,0)"),A.innerHTML=r;const a=$r("g");a.className.baseVal="module-layer2",t.appendChild(a),a.setAttribute("fill","rgb(255,209,0)"),a.setAttribute("transform","translate(1,-0.1)"),a.innerHTML=r;const s=$r("g");s.className.baseVal="module-layer3",t.appendChild(s),s.setAttribute("fill","white"),s.innerHTML=r;return new os(t).transform((([t,e])=>[t,e+(o/2-t)**2/(6*o)])),t})();u.appendChild(w);return as(u,b(I)(c),e.height,e.width,.35,.65),As(l.outerHTML)}}async function ws(t){if("Favourites"===t)return new ls;if("Maltesers"===t){const t=Xi("https://assets.spiff.com.au/public/modules/img/MaltesersBackground.svg"),e=Xi("https://assets.spiff.com.au/public/modules/img/MaltesersBackgroundShort.svg"),i=await Promise.all([t,e]);return new hs(i[0],i[1])}if("Vegemite"===t)return new us;throw new ra(`Failed to resolve Module, Module ${t} not found`)}const Bs=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],ps=async(t,e,i)=>{const n=e.data,A=i.data.baseUrl,a=n.assetUrl.replace("localhost","localstack"),r="http"===A.slice(0,4)?"":"https://",s=new URL(r+A);s.searchParams.append("video",$i(JSON.stringify([{href:a}]))),s.pathname=s.pathname+("/"===s.pathname.slice(-1)?"":"/");const o=s.toString(),c=`data:image/svg+xml;base64,${$i(await(0,y.toString)(o,{type:"svg"}))}`,l=e=>{const i=t.find((t=>t.panelId===e.panelId));if(!i)throw new ea(e);const n=Te();return new rA({id:n,src:c,type:ze.Image,y:e.top,x:e.left,width:e.width,height:e.height,rotation:0},i)},g=i.data.regions;try{return g.map(l)}catch(t){return console.error(t),[]}},ms=async(t,e,i,n)=>{const A=i.data,a=A.assetUrl,r=await UA(a);try{const i=kA(A,n.option);i&&(e[n.stepName]={selectedVariants:[i]});const a=async e=>{const a=await YA(e||{width:1,height:1},i?.asset?.fileLink),s=await RA(a),o=Te(),c=t.find((t=>t.panelId===e.panelId));if(!c)throw new ea(e);const l=HA(r,s,{scale:A.scale,left:A.x,top:A.y});return[new rA({id:o,path:s.path,dataWidth:s.width,dataHeight:s.height,type:ze.Frame,focalBlur:n.data.focalBlur,focalBlurStrength:n.data.focalBlurStrength,focalBlurRadius:n.data.focalBlurRadius,forceImageCover:n.data.forceImageCover,x:e.left,y:e.top,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,rotation:e.rotation,scaleX:e.width/s.width,scaleY:e.height/s.height,pattern:void 0},c),new wA(o,r,l)]};return(await Promise.all(n.data.regions.map((t=>a(t))))).flat()}catch(t){return console.error(t),[]}},Es=async(t,e,i,n)=>{const A=i.data,a=n.option;if(!a)return console.error(`No option for step ${n.stepName}.`),[];const r=a.variants?.find((t=>t.id===A.illustrationVariantId))||bA(a);if(!r)return console.error(`No variant with ID: ${A.illustrationVariantId}`),[];if(!r.asset)return console.error(`No asset for variant with ID: ${A.illustrationVariantId}`),[];e[n.stepName]={selectedVariants:[r]};const s=r.asset?.fileLink;if(!s)return console.error(`No asset link for variant with ID: ${A.illustrationVariantId}`),[];const o=(await Xi(s)).match(/<svg.*?<\/svg>/s)||[],c=o?.length>0?o[0]:"",l=Ki().parseFromString(c,"image/svg+xml").firstElementChild;if(!l)return console.error("Failed to read SVG."),[];Gn(l);const g={};Un(l,(t=>{Bs.includes(t.tagName)&&!t.attributes.getNamedItem("fill")&&t.setAttribute("fill","#000000");const e=t.attributes.getNamedItem("fill");if(e&&"none"!==e.value){const i=e.value,n=`spiff-fill-${i.replace(/\W/g,"")}`;t.classList.add(n),g[n]={browserValue:i}}const i=t.attributes.getNamedItem("stroke");if(i&&"none"!==i.value){const e=i.value,n=`spiff-stroke-${e.replace(/\W/g,"")}`;t.classList.add(n),g[n]={browserValue:e}}}));const h=Zi().serializeToString(l),d=A.colors;if(d)for(const[t,e]of Object.entries(g))for(const i of Object.keys(d))if(e.browserValue===i){g[t]={browserValue:d[i]};break}const u=e=>{const i=t.find((t=>t.panelId===e.panelId));if(!i)throw new ea(e);const n=Te();return new rA({colors:g,id:n,svg:h,type:ze.Illustration,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,immutable:e.immutable},i)},w=n.data.regions;try{return w.map(u)}catch(t){return console.error(t),[]}},fs=async(t,e,i)=>{const n=await ws(i.data.module),A=e.data,a=i.data.regions;try{return a.map((e=>((e,i)=>{const n=t.find((t=>t.panelId===i.panelId));if(!n)throw new ea(i);const A=Te();return new rA({colors:{},id:A,svg:e,type:ze.Illustration,y:i.top,x:i.left,rotation:i.rotation,width:i.width,height:i.height,layer:i.layer,layerIndex:i.layerIndex},n)})(n.svgPrint(A.text,e),e)))}catch(t){return console.error(t),[]}},Cs=async(t,e,i,n)=>{const A=i.data,a=n.option;if(!a)return console.error(`No option for step ${n.stepName}.`),[];const r=a.variants?.find((t=>t.id===A.pictureVariantId))||bA(a);if(!r)return console.error(`No variant with ID: ${A.pictureVariantId}`),[];if(!r.asset)return console.error(`No asset for variant with ID: ${A.pictureVariantId}`),[];e[n.stepName]={selectedVariants:[r]};const s=r.asset?.fileLink;if(!s)return console.error(`No asset link for variant with ID: ${A.pictureVariantId}`),[];const o=e=>{const i=t.find((t=>t.panelId===e.panelId));if(!i)throw new ea(e);const n=Te();return new rA({id:n,src:s,type:ze.Image,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,immutable:e.immutable,preserveAspectRatio:"none"},i)},c=n.data.regions;try{return c.map(o)}catch(t){return console.error(t),[]}},Qs=async(t,e,i,n)=>{const A=i.data,a=n.option;if(!a)return console.error(`No option for step ${n.stepName}.`),[];const r=a.variants?.find((t=>t.id===A.colorVariantId))||bA(a);if(!r)return console.error(`No variant with ID: ${A.colorVariantId}`),[];e[n.stepName]={selectedVariants:[r]};const s=e=>{const i=t.find((t=>t.panelId===e.panelId));if(!i)throw new ea(e);const n=`\n <svg\n xmlns="http://www.w3.org/2000/svg"\n xmlnsXlink="http://www.w3.org/1999/xlink"\n xmlSpace="preserve"\n preserveAspectRatio="none"\n version="1.1"\n width="1"\n height="1"\n viewBox="0 0 1 1"\n >\n <rect\n x="0"\n y="0"\n width="1"\n height="1"\n class="spiff-fill-shape"\n fill="${r?.color}"\n />\n </svg>\n `,A={"spiff-fill-shape":{browserValue:r.color||"#000000"}},a=Te();return new rA({colors:A,id:a,svg:n,type:ze.Illustration,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,immutable:e.immutable},i)},o=n.data.regions;try{return o.map(s)}catch(t){return console.error(t),[]}},ys=async(t,e,i)=>{const n=[],A=e.type===si.ProductOverlay?i||e.data.asset?.fileLink||"":e.data.asset?.fileLink||"",a=A.endsWith(".jpeg")||A.endsWith(".jpg")||A.endsWith(".png")?ze.Image:(A.endsWith(".svg"),ze.Illustration),r=e.data.regions;if("image"===a)try{r.forEach((i=>{const r=t.find((t=>t.panelId===i.panelId));if(!r)throw new ea(i);const s={id:Te(),src:A,type:a,y:i.top,x:i.left,width:i.width,height:i.height,layer:i.layer,layerIndex:i.layerIndex,productOverlay:e.type===si.ProductOverlay||void 0,scaleX:1,scaleY:1,rotation:i.rotation,excludeFromExport:e.data.excludeFromPrint,preserveAspectRatio:"none"};n.push(new rA(s,r))}))}catch(t){console.error(t)}else{console.log(`fetching ${A}`);const i=await Xi(A),s=t=>{const e=t.match(/<svg.*?<\/svg>/s)||[],i=e?.length>0?e[0]:"",n=Ki().parseFromString(i,"image/svg+xml").firstElementChild;if(!n)throw new sa("Failed to read SVG.");Gn(n);return Zi().serializeToString(n)};r.forEach((r=>{const o=t.find((t=>t.panelId===r.panelId));if(!o)throw new ea(r);const c={id:Te(),src:A,asset_key:A,svg:s(i),colors:{},type:a,y:r.top,x:r.left,width:r.width,height:r.height,layer:r.layer,layerIndex:r.layerIndex,scaleX:1,scaleY:1,rotation:r.rotation,productOverlay:e.type===si.ProductOverlay||void 0,excludeFromExport:e.data.excludeFromPrint};n.push(new rA(c,o))}))}return n},Is=async(t,e,i,n)=>{const A=[],a=i.data,r=await(async()=>{const t=(()=>{const t=n.option;if(!t)return;const i=t.variants?.find((t=>t.id===a.fontVariantId))||bA(t);if(!i)return;if(!i.asset)return;e[n.stepName]={selectedVariants:[i]};return i.asset.fileLink||void 0})();if(!t)return;console.log(`fetching ${t}`);const i=await Wi(t),A=await tn(i),r=cn(A);await qi(r,t);return{assetUrl:t,name:r.names.fullName.en}})(),s=n.data.replaceableText?n.data.replaceableText.replace("{{}}",a.text):a.text,o=yn(s,{vertical:n.data.vertical,uppercase:n.data.uppercase}),c=a.color||await(async t=>{const e=t.colorOption;if(!e)return;return Ja.getDefaultVariant(e)?.color})(n.data),l=n.data.regions;for(const e of l){const s=t.find((t=>t.panelId===e.panelId));if(!s)continue;const l={stepName:i.name,id:Te(),align:(g=n.data,g.vertical?"center":g.textAlign||"center"),curved:n.data.curved,fill:a.color||c||"#000000",fontData:r,fontSize:n.data.size||30,height:e.height,layer:e.layer,layerIndex:e.layerIndex,paths:n.data.paths,rotation:e.rotation,text:o,type:ze.Textbox,vertical:n.data.vertical,verticalAlign:n.data.verticalAlign||"middle",width:e.width,x:e.left,y:e.top};if(r){const[t,i]=LA(n.data.size||30,r,e,[yn(o,{vertical:n.data.vertical,uppercase:n.data.uppercase})],{size:n.data.size,minSize:n.data.minSize,maxSize:n.data.maxSize});A.push(new rA({...l,fontSize:t,text:l.curved?l.text:(i||[]).join("\n")},s))}else A.push(new rA(l,s))}var g;return A},Ds=(t,e)=>!t.conditions||t.conditions.every((t=>{const i=e[t.targetStepName];if(i&&i.selectedVariants){const e=i.selectedVariants;return t.requiredVariantSelections.some((t=>void 0!==e.find((e=>e.id===t))))}return!1})),xs=async(t,e,i,n)=>{const A=[],a={};for(const n of t){const t=e.steps.find((t=>t.stepName===n.name));if(t)switch(t.type){case si.DigitalContent:A.push(...await ps(i,n,t));break;case si.Frame:case si.Photo:A.push(...await ms(i,a,n,t));break;case si.Illustration:A.push(...await Es(i,a,n,t));break;case si.Module:A.push(...await fs(i,n,t));break;case si.Picture:A.push(...await Cs(i,a,n,t));break;case si.Shape:A.push(...await Qs(i,a,n,t));break;case si.Text:A.push(...await Is(i,a,n,t))}}for(const t of e.steps)t.type!==si.SilentIllustration&&t.type!==si.ProductOverlay||Ds(t,a)&&A.push(...await ys(i,t,n));return A};function vs(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Ms{constructor(t){vs(this,"layouts",void 0),vs(this,"handleCompleteRender",void 0),this.handleCompleteRender=null;const e=new Map;t.forEach((t=>e.set(t.id,new bs(t.id,t.name,this)))),this.layouts=e}setCompleteRenderCallback(t){this.handleCompleteRender=t,t(Array.from(this.layouts.values()))}onCompleteRender(){this.handleCompleteRender&&this.handleCompleteRender(Array.from(this.layouts.values()))}getAll(){return this.layouts}}let Ss;class bs{constructor(t,e,i){vs(this,"hasSetStaticContext",!1),vs(this,"id",void 0),vs(this,"name",void 0),vs(this,"service",void 0),vs(this,"interactiveDirty",!1),vs(this,"textureCtx",void 0),vs(this,"staticCtxDirty",!1),vs(this,"lastRequestedRenderArguments",void 0),vs(this,"lastCompletedStaticRender",void 0),vs(this,"lastModificationID",void 0),vs(this,"renderQueue",new Xr(2)),this.id=t,this.name=e,this.service=i}getID(){return this.id}getName(){return this.name}getStaticContext(){return this.textureCtx}setStaticContext(t){if(this.textureCtx=t,this.lastRequestedRenderArguments){const{workflow:t,layouts:e,variationRecord:i,productOverlayImageUrl:n}=this.lastRequestedRenderArguments;this.render(t,e,i,n)}}getStaticContextDirty(){return this.staticCtxDirty}setStaticContextDirty(t){this.staticCtxDirty=t}getInteractiveCanvasDirty(){return this.interactiveDirty}setInteractiveCanvasDirty(t){this.interactiveDirty=t}markLastCompletedStaticRender(){this.lastCompletedStaticRender=Date.now(),this.service.onCompleteRender()}getLastCompletedStaticRender(){return this.lastCompletedStaticRender}getLastModificationID(){return this.lastModificationID}async render(t,i,n,A){const a=b(e)(i);this.lastRequestedRenderArguments={workflow:t,layouts:a,variationRecord:n,productOverlayImageUrl:A};const r=this.getStaticContext();if(!r)return this.markLastCompletedStaticRender(),void this.setStaticContextDirty(!1);this.renderQueue.enqueue(new Fs(this.getID(),r,(()=>{if(void 0!==Ss)return Ss;const t=document.createElement("canvas").getContext("webgl2");return Ss=!!t,Ss})(),(()=>{this.markLastCompletedStaticRender(),this.setStaticContextDirty(!0)}),t,a,n,A))}}class Fs extends Wr{constructor(t,e,i,n,A,a,r,s){super(),vs(this,"layoutId",void 0),vs(this,"ctx",void 0),vs(this,"nonPOTSupport",void 0),vs(this,"onRender",void 0),vs(this,"workflow",void 0),vs(this,"layouts",void 0),vs(this,"variationRecord",void 0),vs(this,"productOverlayImageUrl",void 0),this.layoutId=t,this.ctx=e,this.nonPOTSupport=i,this.onRender=n,this.workflow=A,this.layouts=a,this.variationRecord=r,this.productOverlayImageUrl=s}getDynamicTextureResolution(){return this.getIsMobile()||!this.offscreenRenderingSupported()?{width:1024,height:1024}:{width:2048,height:2048}}getIsMobile(){return window.innerWidth<=480}offscreenRenderingSupported(){return!navigator.userAgent.includes("SamsungBrowser")&&(!!window.Worker&&!!window.OffscreenCanvas)}resizeFit(t,e=4096){const i=e/t.width,n=e/t.height,A=Math.min(i,n);return A>1?t:{width:t.width*A,height:t.height*A}}async execute(){const t=this.layouts.find((t=>t.layoutState.layout.id===this.layoutId));if(!t)return;const e=t.layoutState.elements||[];if(this.variationRecord){const i=this.variationRecord.values.map((t=>({stepName:t.stepName,stepAspectType:t.aspect,value:t.value}))),n=await Ys(Ps(i,this.workflow),this.workflow,this.layouts.map((t=>t.layoutState.layout)),this.productOverlayImageUrl),A=n?.layouts[t.layoutState.layout.id];(A?.elements||[]).forEach((t=>{const i=e.find((e=>e.stepName===t.stepName));i&&i.type===ze.Textbox?(i.text=t.text,i.fontSize=t.fontSize):e.push(t)})),Vn(e)}const i=t.layoutState.layout.width,n=t.layoutState.layout.height,A=this.getDynamicTextureResolution().width,a=this.getDynamicTextureResolution().height;let r,s;if(this.nonPOTSupport){i/n<A/a?(r=A,s=n*(A/i)):(r=i*(a/n),s=a);const t=this.resizeFit({width:r,height:s});r=t.width,s=t.height}else r=this.getDynamicTextureResolution().width,s=this.getDynamicTextureResolution().height;const o=jn(t.layoutState.layout,e,{renderingConfiguration:{purpose:Ve.ThreeD}}),c=b(Q).renderToStaticMarkup(o),l=await Re.from(this.ctx,c,{anonymousCrossOrigin:!0,ignoreDimensions:!this.nonPOTSupport,ignoreAnimation:!0,ignoreClear:!0,ignoreMouse:!0,enableRedraw:!1});l.resize(r,s),await l.render(),this.onRender()}}const Ps=(t,e)=>{const i=[];return t.forEach((t=>{const n=e.steps.find((e=>e.stepName===t.stepName));n?.type===si.Text&&"Text"===t.stepAspectType&&i.push({name:n.stepName,data:{text:t.value}})})),i},Ys=async(t,e,i,n)=>{let A={serializableWorkflow:{steps:[]},layouts:{}};A=new nA(i.map((t=>new AA(t)))).apply(A);const a=await xs(t,e,i,n);return new nA(a).apply(A)},Ns=()=>{const t=window.chrome,e=window.navigator,i=e.vendor,n=void 0!==window.opr;return!e.userAgent.match("CriOS")&&(null!=t&&"Google Inc."===i&&!1===n)},ks=({isMobile:t,color:e,outlineColor:A,editorRef:a,zoomableElementRef:r,interactionElementRef:s,guidelines:o,isMakingAdjustments:c,outlineArea:l,visibleLayoutId:g,xTranslation:h,yTranslation:d,targetedElements:u,borderRadius:w,canvasFilter:B,children:p,handleContextMenu:m,onMouseMove:E,onContextMenuHandlePointerDown:f,handleKeyDown:C,handleKeyUp:Q,handlePointerMove:y,handlePointerPressedBackground:I,handlePointerReleased:D,handleScroll:x,onSequenceStart:v,setElementEvent:M,onElementSelected:S,variationRecord:b,workflow:F})=>{const{state:P}=tr(),[Y,N]=(0,n.useState)([]),{getLayoutById:k,getAllLayouts:R}=ja(),H=(0,n.useMemo)((()=>k(g)),[k,g]),U=(0,n.useCallback)((t=>{if(l){const e={left:l.x||0,top:l.y||0,width:l.width||1,height:l.height||1,panelId:"",rotation:0};return C(t,e)}return C(t)}),[C,l]),G=(0,n.useCallback)((t=>{if(l){const e={left:l.x||0,top:l.y||0,width:l.width||1,height:l.height||1,panelId:"",rotation:0};return y(t,e)}return y(t)}),[y,l]),T=(0,n.useMemo)((()=>({justifyContent:"center",position:"relative",height:"100%",width:"100%",scrollbarWidth:"none",outline:Ns()?"none":void 0})),[]),O=(0,n.useMemo)((()=>({height:"100%",transform:`scale(${P.zoom}) translate(${h}px, ${d}px)`,display:"flex",justifyContent:"center",alignItems:"center",filter:B||"drop-shadow(0px 0px 5px rgba(0, 0, 0, 0.2))",overflow:"visible"})),[P.zoom,B,h,d]),J=10/P.zoom,L=H.layoutState.layout.width,z=H.layoutState.layout.height,j=r.current?.offsetHeight||1024,V=r.current?.offsetWidth||1024,K=J*(Math.sqrt(L*z)/1e3)*(100/Math.sqrt(j*V))*Math.sqrt((W=V/j,Math.exp(Math.abs(Math.log(W)))));var W;return(0,n.useEffect)((()=>{(async()=>{const t=R(),e=H.layoutState.elements||[];N(await(async(t,e)=>{if(!b)return t;const i=[...t],n=b.values.map((t=>({stepName:t.stepName,stepAspectType:t.aspect,value:t.value}))),A=await Ys(Ps(n,F),F,e.map((t=>t.layoutState.layout)),void 0),a=A?.layouts[H.layoutState.layout.id];return(a?.elements||[]).forEach((t=>{const e=i.find((e=>e.stepName===t.stepName));e&&e.type===ze.Textbox&&(e.text=t.text,e.fontSize=t.fontSize)})),Vn(i),i})(e,t))})()}),[c,K,w,A,l,b,g,F,R,H.layoutState.elements,H.layoutState.layout]),(0,i.jsx)("div",{style:T,onContextMenu:m,onKeyDown:U,onKeyUp:Q,onPointerDown:I,onMouseLeave:D,onPointerMoveCapture:G,onPointerUp:D,onWheelCapture:x,ref:s,tabIndex:-1,children:(0,i.jsxs)("div",{ref:r,style:O,children:[p,jn(H.layoutState.layout,Y,{renderingConfiguration:{purpose:Ve.FreeDesign},height:c?"100%":"auto",width:c?"100%":"auto",maxHeight:"100%",maxWidth:"100%",position:"absolute",outlineArea:l?{...l,scale:K}:void 0,borderRadius:w,outlineColor:A}),(0,i.jsx)(Vr,{isMobile:t,primaryColor:e,editorRef:a,elementEvent:P.elementEvent,guidelines:o,layoutHeight:H.layoutState.layout.height,layoutWidth:H.layoutState.layout.width,onElementEvent:M,onSequenceStart:v,onElementSelected:S,scale:K,selectedElement:P.selectedElement,targetedElements:u,onMouseMove:E,onContextMenuHandlePointerDown:f})]})})},Rs=({borderRadius:t,canvasFilter:e,color:A,guidelineColor:a,handleContextMenu:r,hideEditableAreaRect:s,isMobile:o,onContextMenuHandlePointerDown:c,onDragEnd:l,onElementSelected:g,onMouseMove:h,outlineColor:d,variationRecord:u,workflow:w})=>{const{commandDispatcher:B,getLayoutById:p}=ja(),{state:m,uiDispatcher:E}=tr(),f=(0,n.useRef)(null),C=(0,n.useRef)(null),Q=(0,n.useRef)(null),{guidelines:y,handleKeyDown:I,handleKeyUp:D,handlePointerMove:x,handlePointerPressedBackground:v,handlePointerReleased:M,handleScroll:S,handleSequenceStart:b,setElementEvent:F}=zr(f,C,Q,void 0,"advanced",B,o?"mobile":"desktop",a,l),P=(0,n.useMemo)((()=>p(m.layoutId)),[p,m.layoutId]),Y=(0,n.useCallback)(((t,e)=>{g&&g(t,e),E(new _a({selectedElement:t}))}),[E,g]),N=(0,n.useMemo)((()=>{if(P.layoutState.layout.useEditableArea)return{...P.layoutState.layout.editableArea,hidden:s}}),[P.layoutState.layout.useEditableArea,P.layoutState.layout.editableArea,s]);return(0,i.jsx)(ks,{outlineArea:N,isMobile:o,color:A,outlineColor:d,editorRef:f,interactionElementRef:C,zoomableElementRef:Q,guidelines:y,visibleLayoutId:m.layoutId,xTranslation:m.xTranslation,yTranslation:m.yTranslation,borderRadius:t,canvasFilter:e,handleContextMenu:r,onMouseMove:h,onContextMenuHandlePointerDown:c,handleKeyDown:I,handleKeyUp:D,handlePointerMove:x,handlePointerPressedBackground:v,handlePointerReleased:M,handleScroll:S,onSequenceStart:b,setElementEvent:F,onElementSelected:Y,variationRecord:u,workflow:w})},Hs=t.gql`
141
+ `,Oa=async t=>{const e=t.map((t=>Ha.get({id:t}))),i=t.filter(((t,i)=>void 0===e[i]));if(0===i.length)return Promise.all(e);const n=(async t=>{const e=await Ia.getShadowGraphqlClient().query({query:Ta,errorPolicy:"all",fetchPolicy:"no-cache",variables:{ids:t}});return e.data.options.forEach((t=>{t.defaultVariant?.asset&&ka.cacheAsset(t.defaultVariant.asset),t.colorProfile&&ka.cacheAsset(t.colorProfile),t.variants?.forEach((t=>{t.asset&&ka.cacheAsset(t.asset),t.displayImage&&ka.cacheAsset(t.displayImage),t.thumbnail&&ka.cacheAsset(t.thumbnail),t.material&&ka.cacheMaterial(t.material)}))})),e.data.options})(i),A=i.map((t=>Ha.set({id:t},(async(t,e)=>(await e).find((e=>e.id===t)))(t,n)))),a=e.filter((t=>void 0!==t));return await Promise.all(a.concat(A))};const Ja=new class{constructor(){Ua(this,"getDisplayImageSource",(t=>{if(t){const e=t.displayImage?.fileLink;if(e)return e}})),Ua(this,"getSelectedVariant",((t,e)=>{if(t&&0!==e.length)return t.variants?.find((t=>t.id===e[0]))}))}async getOption(t){return(async()=>{const e=(await Oa([t]))[0];if(e)return e})()}async getAssetTileImageForVariant(t){const e=t.thumbnail;if(e){const t=e.versions?.find((t=>"thumbnail"===t.name)),i=e.fileLink;return t?.link||i}const i=t.asset;if(i){const t=i.versions?.find((t=>"thumbnail"===t.name)),e=i.fileLink;return t?.link||e}return t.material?t.material.id:""}getDefaultVariant(t){const e=t.variants;if(e){if(1===e.length)return e[0];if(void 0!==t.defaultVariant)return e.find((e=>e.id===t.defaultVariant?.id))}}},La=(0,n.createContext)(new Ln),za=function(){const[t,e]=(0,n.useState)([]);return{addEvent:(0,n.useCallback)((t=>{e((e=>[...e,t]))}),[]),updateEvent:(0,n.useCallback)((t=>{e((e=>{const i=e.findIndex((e=>e.pointerId===t.pointerId));if(-1===i)return e;const n=[...e];return n[i]=t,n}))}),[]),removeEvent:(0,n.useCallback)((t=>{e((e=>e.filter((e=>e.pointerId!==t.pointerId))))}),[]),eventCache:t,curActiveEvents:t.length}},ja=()=>{const t=(0,n.useContext)(La),[e,i]=(0,n.useState)(new Date);(0,n.useEffect)((()=>{const e=()=>{i(new Date)};return t.registerStateCallback(e),()=>{t.unregisterStateCallback(e)}}),[t]);return{commandDispatcher:(e,i)=>{t.apply(e,i)},getLayoutById:(0,n.useCallback)((e=>t.getLayoutById(e)),[t,e]),getAllLayouts:(0,n.useCallback)((()=>t.getAllLayouts()),[t,e]),getReducerState:(0,n.useCallback)((()=>{const e=t.getState();return e||{transaction:{layouts:{},serializableWorkflow:{steps:[]}}}}),[t]),lastUpdated:e,flattenSequence:(e,i)=>{t.flattenSequence(e,i)}}};function Va(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}let Ka;var Wa;(Wa=Ka||(Ka={})).None="None",Wa.FrameAdjustment="FrameAdjustment",Wa.Variations="Variations",Wa.FinalizeDesign="FinalizeDesign",Wa.SavedDesigns="SavedDesigns",Wa.ThreeDPreview="ThreeDPreview",Wa.Panels="Panels";const Xa=(t,e)=>({layoutId:t()[0].layoutState.layout.id,selectedElement:void 0,zoom:e,xTranslation:0,yTranslation:0,maxZoom:5,units:qe.Pixel,subMenu:Ka.None,activeModifierKeys:[],metaPressed:!1,elementEvent:void 0,scrolledMovement:!1}),qa=(t,e)=>b(C)(t,e.apply(t))?t:e.apply(t),Za=(0,n.createContext)({}),$a=t=>{const{getAllLayouts:e}=ja(),[A,a]=(0,n.useReducer)(qa,Xa(e,t.defaultZoom||1)),r=(0,n.useMemo)((()=>({state:A,uiDispatcher:a})),[A,a]);return(0,i.jsx)(Za.Provider,{value:r,children:t.children})};class _a{constructor(t){Va(this,"changes",void 0),this.changes=t}apply(t){return{...t,...this.changes}}}const tr=()=>(0,n.useContext)(Za);let er;var ir;let nr;var Ar;let ar;var rr;let or;var sr;let cr;var lr;let gr;var hr;(ir=er||(er={})).Hub="Hub",ir.Shopify="Shopify",(Ar=nr||(nr={}))[Ar.Orbit=0]="Orbit",Ar[Ar.Pan=1]="Pan",(rr=ar||(ar={})).PerVariation="PerVariation",rr.BaseProduct="BaseProduct",(sr=or||(or={})).Manual="Manual",sr.OnStart="OnStart",sr.OnQuit="OnQuit",sr.OnEnd="OnEnd",(lr=cr||(cr={})).Email="Email",lr.FirstName="FirstName",lr.LastName="LastName",lr.Phone="Phone",(hr=gr||(gr={})).Owner="Owner",hr.Approver="Approver",hr.Editor="Editor",hr.Viewer="Viewer";const dr=(t,e,n,A)=>{const a=e.layout.useEditableArea&&e.layout.editableArea||{width:e.layout.width,height:e.layout.height,x:0,y:0},r=e.elements.filter((e=>e.id!==t.id&&!e.immutable&&!e.productOverlay)),o=r.map((t=>di(t.x,t.y,t.width,t.height,t.rotation))),s=[],c=new Set;o.forEach((t=>c.add(t.minX))),o.forEach((t=>c.add(t.maxX))),[a.x,a.x+a.width/2,a.x+a.width].forEach((t=>c.add(t)));const l=new Set;o.forEach((t=>l.add(t.minY))),o.forEach((t=>l.add(t.maxY))),[a.y,a.y+a.height/2,a.y+a.height].forEach((t=>l.add(t)));const g=r.map((t=>t.y));for(let t=-315;t<=315;t+=45)g.push(t);const h=di(t.x,t.y,t.width,t.height,t.rotation),d=[{value:h.minX,anchor:-1},{value:h.minX+(h.maxX-h.minX)/2,anchor:0},{value:h.minX+(h.maxX-h.minX),anchor:1}],u=[{value:h.minY,anchor:-1},{value:h.minY+(h.maxY-h.minY)/2,anchor:0},{value:h.minY+(h.maxY-h.minY),anchor:1}],w=[{value:t.rotation,anchor:0}],B=(t,e,A,r)=>{const o=[];return e.forEach((e=>{const s=A.find((t=>pi(e,t.value,1*n))),[c,l]=((t,e)=>[{x:"x"===t?e:a.x,y:"x"===t?a.y:e},{x:"x"===t?e:a.x+a.width,y:"x"===t?a.y+a.height:e}])(t,e),g="rotation"===t?null:(0,i.jsx)("line",{x1:c.x,y1:c.y,x2:l.x,y2:l.y,stroke:r||"#D61B5C",strokeWidth:1.2*n},`${t}-${e}-${c.x}-${c.y}-${l.x}-${l.y}`);void 0!==s&&o.push({type:t,value:e,anchorPoint:s.anchor,svgNode:g,guidelineCoordinates:[c,l]})})),o};return s.push(...B("x",Array.from(c),d,A),...B("y",Array.from(l),u,A),...B("rotation",g,w,A)),s};function ur(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const wr=new class{constructor(){ur(this,"latestToast",void 0),ur(this,"toastType",void 0),ur(this,"toastCallbacks",void 0),this.latestToast=null,this.toastType=null,this.toastCallbacks=[]}addToastCallback(t){t({toastMessage:this.latestToast,toastType:this.toastType}),this.toastCallbacks.push(t)}setLatestToast(t,e){this.latestToast=t,this.toastType=e,this.onToastChange()}onToastChange(){this.toastCallbacks.forEach((t=>t({toastMessage:this.latestToast,toastType:this.toastType})))}};let Br;var pr;let mr;var Er;(pr=Br||(Br={})).Translate="Translate",pr.Rotate="Rotate",pr.Resize="Resize",(Er=mr||(mr={})).ControlLeft="ControlLeft",Er.ControlRight="ControlRight",Er.Equal="Equal",Er.MetaLeft="MetaLeft",Er.MetaRight="MetaRight",Er.Minus="Minus",Er.ArrowLeft="ArrowLeft",Er.ArrowRight="ArrowRight",Er.ArrowUp="ArrowUp",Er.ArrowDown="ArrowDown",Er.AltLeft="AltLeft",Er.AltRight="AltRight",Er.Delete="Delete",Er.Backspace="Backspace";const fr=t=>"mobile"===t?3.75:5,Cr=(t,e,i,n)=>{const A=()=>{switch(i){case qe.Pixel:return 1;case qe.Millimeter:return Mi;case qe.Centimeter:return Si;default:throw new ra("Unknown unit of measurement")}};let a=e.x,r=e.y,o=e.x,s=e.y;switch(t){case mr.ArrowLeft:o=e.x-1/A();break;case mr.ArrowUp:s=e.y-1/A();break;case mr.ArrowRight:o=e.x+1/A();break;case mr.ArrowDown:s=e.y+1/A();break;default:throw new ra("Unhandled element interaction!")}const c=di(o,s,e.width,e.height,e.rotation);return(!n||c.minX>=n.left&&c.maxX<=n.left+n.width&&c.minY>=n.top&&c.maxY<=n.top+n.height)&&(a=o,r=s),new tA(e.id,a,r)};let Qr=0,yr=0;var Ir=0;const Dr=(t,e,i,n,A,a)=>{const r=di(t,e,i,n,A),o=r.maxY-r.minY;return!a||r.maxY-.1*o>=a.top&&r.minY+.1*o<=a.top+a.height},xr=(t,e,i,n,A,a)=>{const r=di(t,e,i,n,A),o=r.maxX-r.minX;return!a||r.maxX-.1*o>=a.left&&r.minX+.1*o<=a.left+a.width},vr=(t,e,i)=>({x:(t.x-e.x)*((i.maxX-i.minX)/e.width)+i.minX,y:(t.y-e.y)*((i.maxY-i.minY)/e.height)+i.minY}),Mr=t=>Math.abs(t)<.001?0:Math.abs(t-1)<.001?1:t;let Sr;var br;(br=Sr||(Sr={}))[br.Height=0]="Height",br[br.Width=1]="Width",br[br.Both=2]="Both";const Fr=(t,e,i,n,A)=>{const a=t.rotation*Math.PI/180,r=((t,e,i,n,A)=>{if(A<90){const a=A*Math.PI/180,r=Mr(Math.sin(a)),o=Mr(Math.cos(a));return{height:i*o+n*r,width:i*r+n*o,x:t-i*r,y:e}}if(A<180){const a=(A-90)*Math.PI/180,r=Mr(Math.sin(a)),o=Mr(Math.cos(a));return{width:i*o+n*r,height:i*r+n*o,x:t-(i*o+n*r),y:e-i*r}}if(A<270){const a=(A-180)*Math.PI/180,r=Mr(Math.sin(a)),o=Mr(Math.cos(a));return{height:i*o+n*r,width:i*r+n*o,x:t-n*o,y:e-(i*o+n*r)}}const a=(A-270)*Math.PI/180,r=Mr(Math.sin(a)),o=Mr(Math.cos(a));return{width:i*o+n*r,height:i*r+n*o,x:t,y:e-n*o}})(e.x,e.y,i===Sr.Both||i===Sr.Height?n:t.height,i===Sr.Both||i===Sr.Width?A:t.width,t.rotation),o=xi({x:r.x,y:r.y,width:r.width,height:r.height,rotation:t.rotation}).center;return vi(e,o,-a)},Pr=(t,e,i,n,A,a,r,o,s,c,l)=>{const g=((t,e,i,n,A,a,r,o,s,c,l)=>{l=l??1;const g=n.width/e.width,h=n.height/e.height,d=t.deltaX/g,u=t.deltaY/h,w=i.rotation*Math.PI/180,B=Math.sin(w),p=Math.cos(w),m=i.width/i.height,E=.05*e.width/l,f=.05*e.height/l,C=E/m;switch(A.type){case Br.Resize:let e={top:i.y,left:i.x,width:i.width,height:i.height,rotation:i.rotation,fontSize:i.fontSize},l=e;switch(A.screenAxis){case $e.North:{const n=-d*B+u*p,A=i.y+n,a=Math.max(i.height-n,f),r=xi({...i}).center,o=xi({...i,y:A,height:a}).center,s=vi(o,r,w),c=s.x-i.width/2,g=s.y-a/2;l={...e,left:c,top:g,height:a};const h=180*w/Math.PI,m=di(c,g,i.width,a,h),C=vr({x:t.destX,y:t.destY},t.targetRect,m),Q=vi({x:C.x,y:C.y},r,-w);if(a===f||Q.y>g+a){const t=Mr(Math.sin(w)),n=Mr(Math.cos(w)),A=xi({...i}).center,a=vi({x:i.x,y:i.y},A,w),r={x:a.x-(i.height-f)*t,y:a.y+(i.height-f)*n},o=Fr(i,r,Sr.Height,f,E);return{...e,height:f,top:o.y,left:o.x}}}break;case $e.East:{const n=d*p+u*B,A=Math.max(i.width+n,E);let a=i.height;const r=xi({...i}).center,o=xi({...i,width:A,height:a}).center,s=vi(o,r,w),c=s.x-A/2,g=s.y-a/2;l={...e,left:c,top:g,width:A,height:a};const h=180*w/Math.PI,m=di(c,g,i.width,a,h),C=vr({x:t.destX,y:t.destY},t.targetRect,m),Q=vi({x:C.x,y:C.y},r,-w);if(A===E||Q.x<c){const t=xi({...i}).center,n=vi({x:i.x,y:i.y},t,w),A=Fr(i,n,Sr.Width,f,E);return{...e,width:E,top:A.y,left:A.x}}}break;case $e.West:{const n=d*p+u*B,A=i.x+n,a=Math.max(i.width-n,E);let r=i.height;const o=xi({...i}).center,s=xi({...i,width:a,height:r,x:A}).center,c=vi(s,o,w),g=c.x-a/2,h=c.y-r/2;l={...e,left:g,top:h,width:a,height:r};const m=180*w/Math.PI,C=di(g,h,i.width,r,m),Q=vr({x:t.destX,y:t.destY},t.targetRect,C),y=vi({x:Q.x,y:Q.y},o,-w);if(a===E||y.x>g+a){const t=Mr(Math.sin(w)),n=Mr(Math.cos(w)),A=xi({...i}).center,a=vi({x:i.x,y:i.y},A,w),r={x:a.x+(i.width-E)*n,y:a.y+(i.width-E)*t},o=Fr(i,r,Sr.Width,f,E);return{...e,width:E,top:o.y,left:o.x}}}break;case $e.South:{const n=-d*B+u*p,A=Math.max(i.height+n,f),a=xi({...i}).center,r=xi({...i,height:A}).center,o=vi(r,a,w),s=o.x-i.width/2,c=o.y-A/2;l={...e,left:s,top:c,height:A};const g=180*w/Math.PI,h=di(s,c,i.width,A,g),m=vr({x:t.destX,y:t.destY},t.targetRect,h),C=vi({x:m.x,y:m.y},a,-w);if(A===f||C.y<c){const t=xi({...i}).center,n=vi({x:i.x,y:i.y},t,w),A=Fr(i,n,Sr.Height,f,E);return{...e,height:f,top:A.y,left:A.x}}}break;case $e.Northeast:{const n=d*p+u*B,A=Math.max(i.width+n,E);let a=Math.max(A/m,C),r=i.y-n/m;const o=xi({...i}).center,s=xi({...i,width:A,height:a,y:r}).center,c=vi(s,o,w),g=c.x-A/2,h=c.y-a/2;l={...e,left:g,top:h,width:A,height:a};const f=180*w/Math.PI,Q=di(g,h,i.width,a,f),y=vr({x:t.destX,y:t.destY},t.targetRect,Q),I=vi({x:y.x,y:y.y},o,-w);if(A===E||a===C||I.x<g||I.y>h+a){const t=xi({...i}).center,n=vi({x:i.x,y:i.y},t,w),A={x:n.x-(i.height-C)*B,y:n.y+(i.height-C)*p},a=Fr(i,A,Sr.Both,C,E);return{...e,height:C,width:E,top:a.y,left:a.x}}}break;case $e.Northwest:{const n=-d*p+-u*B,A=i.x-n,a=Math.max(i.width+n,E);let r=i.y-n/m,o=Math.max(a/m,C);const s=xi({...i}).center,c=xi({...i,x:A,y:r,width:a,height:o}).center,g=vi(c,s,w),h=g.x-a/2,f=g.y-o/2;l={...e,left:h,top:f,width:a,height:o};const Q=180*w/Math.PI,y=di(h,f,i.width,o,Q),I=vr({x:t.destX,y:t.destY},t.targetRect,y),D=vi({x:I.x,y:I.y},s,-w);if(a===E||o===C||D.x>h+a||D.y>f+o){const t={x:i.x+i.width,y:i.y+i.height},n={x:t.x-E,y:t.y-C},A=vi(n,s,w),a=Fr(i,A,Sr.Both,C,E);return{...e,height:C,width:E,top:a.y,left:a.x}}}break;case $e.Southeast:{const n=d*p+u*B,A=Math.max(i.width+n,E);let a=Math.max(A/m,C);const r=xi({...i}).center,o=xi({...i,width:A,height:a}).center,s=vi(o,r,w),c=s.x-A/2,g=s.y-a/2;l={...e,left:c,top:g,width:A,height:a};const h=180*w/Math.PI,f=di(c,g,A,a,h),Q=vr({x:t.destX,y:t.destY},t.targetRect,f),y=vi({x:Q.x,y:Q.y},r,-w);if(A===E||a===C||y.x<c||y.y<g){const t=xi({...i}).center,n=vi({x:i.x,y:i.y},t,w),A=Fr(i,n,Sr.Both,C,E);return{...e,width:E,height:C,top:A.y,left:A.x}}}break;case $e.Southwest:{const n=-d*p+-u*B,A=Math.max(i.width+n,E);let a=i.x-n,r=Math.max(A/m,C);const o=xi({...i}).center,s=xi({...i,width:A,height:r,x:a}).center,c=vi(s,o,w),g=c.x-A/2,h=c.y-r/2;l={...e,left:g,top:h,width:A,height:r};const f=180*w/Math.PI,Q=di(g,h,i.width,r,f),y=vr({x:t.destX,y:t.destY},t.targetRect,Q),I=vi({x:y.x,y:y.y},o,-w);if(A===E||r===C||I.x>g+A||I.y<h){const t=xi({...i}).center,n=vi({x:i.x,y:i.y},t,w),A={x:n.x+(i.width-E)*p,y:n.y+(i.width-E)*B},a=Fr(i,A,Sr.Both,C,E);return{...e,height:C,width:E,top:a.y,left:a.x}}}}return Dr(l.left,l.top,l.width,l.height,l.rotation,c)&&xr(l.left,l.top,l.width,l.height,l.rotation,c)&&(e=l),e;case Br.Rotate:const Q={x:t.destX,y:t.destY};let y,I=i.rotation;const D=xi(i,n,{x:g,y:h}),x=ui(Q,D.c,D.d),v=ui(Q,D.d,D.c);if(0===a.filter((t=>"rotation"===t.type)).length)Ir=0,y=(i.rotation+x-v)%360;else{Ir+=Math.sqrt(d**2+u**2);const t=Math.abs(Ir)>fr(r)*window.devicePixelRatio/g;y=t?(i.rotation+x-v)%360:a.find((t=>"rotation"===t.type))?.value||0,t&&(Ir=0)}return Dr(i.x,i.y,i.width,i.height,y,c)&&xr(i.x,i.y,i.width,i.height,y,c)&&(I=y),I<0&&(I+=360),{top:i.y,left:i.x,width:i.width,height:i.height,rotation:I};case Br.Translate:let M,S,b=i.x,F=i.y;if(0===a.filter((t=>"rotation"!==t.type)).length)M=i.x+d,S=i.y+u;else{const t=a.find((t=>"x"===t.type)),e=a.find((t=>"y"===t.type)),n=t=>{switch(t){case-1:return 0;case 0:return i.height/2;case 1:return i.height;default:return 0}};Qr+=d,yr+=u;const A=t?(t=>{switch(t){case-1:return 0;case 0:return i.width/2;case 1:return i.width;default:return 0}})(t.anchorPoint):void 0,c=e?n(e.anchorPoint):void 0,l=void 0!==A&&Math.abs(Qr)<=fr(r),g=void 0!==c&&Math.abs(yr)<=fr(r);(l||g)&&(s(!0),o&&wr.setLatestToast("Tip: Nudge selected elements using arrow keys.",null)),t&&l?M=i.x:(M=i.x+Qr,Qr=0),e&&g?S=i.y:(S=i.y+yr,yr=0)}return Dr(M,S,i.width,i.height,i.rotation,c)&&(F=S),xr(M,S,i.width,i.height,i.rotation,c)&&(b=M),{top:F,left:b,width:i.width,height:i.height,rotation:i.rotation}}})(t,e,i,n,A,a,r,o,s,c,l),h=[];if(g.width>0&&g.height>0&&(h.push(new tA(i.id,g.left,g.top),new iA(i.id,g.width,g.height),new eA(i.id,g.rotation)),i.type===ze.Textbox)){const t=i;g.fontSize&&t.fontSize!==g.fontSize&&h.push(new gA(t.id,g.fontSize))}return h},Yr=t=>{const{onPointerDown:e,scaleFactor:A,elementWidth:a}=t,r=(0,n.useCallback)((t=>{t.stopPropagation(),e&&e(t)}),[e]),o=13*A,s=30*A;return(0,i.jsxs)("g",{transform:`translate(${s})`,children:[(0,i.jsx)("circle",{cx:a/2,cy:-2.5*o,r:1.3*o,fill:"transparent",style:{cursor:"pointer"},onPointerDown:r}),(0,i.jsxs)("svg",{onPointerDown:r,x:a/2-o,y:-2.5*o-o,width:2*o,height:2*o,style:{cursor:"pointer"},viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,i.jsx)("path",{d:"M10.3246 4.31731C10.751 2.5609 13.249 2.5609 13.6754 4.31731C13.9508 5.45193 15.2507 5.99038 16.2478 5.38285C17.7913 4.44239 19.5576 6.2087 18.6172 7.75218C18.0096 8.74925 18.5481 10.0492 19.6827 10.3246C21.4391 10.751 21.4391 13.249 19.6827 13.6754C18.5481 13.9508 18.0096 15.2507 18.6172 16.2478C19.5576 17.7913 17.7913 19.5576 16.2478 18.6172C15.2507 18.0096 13.9508 18.5481 13.6754 19.6827C13.249 21.4391 10.751 21.4391 10.3246 19.6827C10.0492 18.5481 8.74926 18.0096 7.75219 18.6172C6.2087 19.5576 4.44239 17.7913 5.38285 16.2478C5.99038 15.2507 5.45193 13.9508 4.31731 13.6754C2.5609 13.249 2.5609 10.751 4.31731 10.3246C5.45193 10.0492 5.99037 8.74926 5.38285 7.75218C4.44239 6.2087 6.2087 4.44239 7.75219 5.38285C8.74926 5.99037 10.0492 5.45193 10.3246 4.31731Z",stroke:"#111827",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),(0,i.jsx)("path",{d:"M15 12C15 13.6569 13.6569 15 12 15C10.3431 15 9 13.6569 9 12C9 10.3431 10.3431 9 12 9C13.6569 9 15 10.3431 15 12Z",stroke:"#111827",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]})]})},Nr="#ffffff",kr=t=>{const{isMobile:e,outerRadius:A,x:a,y:r,cursorStyle:o,onPointerDown:s,handleClass:c,cornerRadius:l,color:g,strokeWidth:h}=t,[d,u]=(0,n.useState)(!1);(0,n.useEffect)((()=>{const t=()=>{u(!1)};return document.addEventListener("pointerup",t),()=>{document.removeEventListener("pointerup",t)}}),[]);const w=(0,n.useCallback)((t=>{u(!0),s(t)}),[s]);return e?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("circle",{cx:a,cy:r,r:A,fill:d?"rgba(0,0,0,0.5)":"rgba(0,0,0,0)",style:{cursor:o},onPointerDown:w}),(0,i.jsx)("circle",{className:c,cx:a,cy:r,r:l,fill:Nr,style:{cursor:o,pointerEvents:"none"},stroke:g,strokeWidth:h})]}):(0,i.jsx)("circle",{className:c,cx:a,cy:r,r:l,fill:Nr,style:{cursor:o},stroke:g,strokeWidth:h,onPointerDown:s})},Rr=t=>{const{isMobile:e,outerRadius:A,outerWidth:a,outerHeight:r,x:o,y:s,width:c,height:l,cursorStyle:g,onPointerDown:h,edgeHandleRadius:d,color:u,strokeWidth:w}=t,[B,p]=(0,n.useState)(!1);(0,n.useEffect)((()=>{const t=()=>{p(!1)};return document.addEventListener("pointerup",t),()=>{document.removeEventListener("pointerup",t)}}),[]);const m=(0,n.useCallback)((t=>{p(!0),h(t)}),[h]);return e?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("rect",{x:o-(a-c)/2,y:s-(r-l)/2,width:a,height:r,rx:A,fill:B?"rgba(0,0,0,0.5)":"rgba(0,0,0,0)",style:{cursor:g},onPointerDown:m}),(0,i.jsx)("rect",{x:o,y:s,width:c,height:l,rx:d,fill:Nr,style:{cursor:g,pointerEvents:"none"},stroke:u,strokeWidth:w})]}):(0,i.jsx)("rect",{x:o,y:s,width:c,height:l,rx:d,fill:Nr,style:{cursor:g},stroke:u,strokeWidth:w,onPointerDown:h})},Hr=t=>{const{isMobile:e,color:A,elementHeight:a,elementWidth:r,onBeginResize:o,rotation:s,scaleFactor:c,disableX:l,disableY:g,disableCorners:h}=t,d=7.5*c,u=3*c,w=28*c,B=6*c,p=30*c,m=5*c,E=40*c,f=36*c,C=1.2*c,Q=(0,n.useCallback)(((t,e,i)=>{t.stopPropagation(),o(e,i)}),[o]),y=(0,n.useCallback)((t=>Q(t,Di($e.West,360-s),$e.West)),[Q,s]),I=(0,n.useCallback)((t=>Q(t,Di($e.East,360-s),$e.East)),[Q,s]),D=(0,n.useCallback)((t=>Q(t,Di($e.North,360-s),$e.North)),[Q,s]),x=(0,n.useCallback)((t=>Q(t,Di($e.South,360-s),$e.South)),[Q,s]),v=(0,n.useCallback)((t=>Q(t,$e.Northwest,$e.Northwest)),[Q]),M=(0,n.useCallback)((t=>Q(t,$e.Northeast,$e.Northeast)),[Q]),S=(0,n.useCallback)((t=>Q(t,$e.Southwest,$e.Southwest)),[Q]),b=(0,n.useCallback)((t=>Q(t,$e.Northeast,$e.Southeast)),[Q]),F=(e?a-2*p-E:a-2*d-w)>0&&(e?r-2*p-E:r-2*d-w)>0;return(0,i.jsxs)(i.Fragment,{children:[h?void 0:(0,i.jsx)(kr,{isMobile:e,outerRadius:p,x:0,y:0,cursorStyle:"nw-resize",onPointerDown:v,handleClass:"cornerNorthWest",cornerRadius:d,color:A,strokeWidth:C}),F&&!h?(0,i.jsx)(kr,{isMobile:e,outerRadius:p,x:r,y:0,cursorStyle:"ne-resize",onPointerDown:M,handleClass:"cornerNorthEast",cornerRadius:d,color:A,strokeWidth:C}):void 0,F&&!h?(0,i.jsx)(kr,{isMobile:e,outerRadius:p,x:r,y:a,cursorStyle:"se-resize",onPointerDown:b,handleClass:"cornerSouthEast",cornerRadius:d,color:A,strokeWidth:C}):void 0,F&&!h?(0,i.jsx)(kr,{isMobile:e,outerRadius:p,x:0,y:a,cursorStyle:"sw-resize",onPointerDown:S,handleClass:"cornerSouthWest",cornerRadius:d,color:A,strokeWidth:C}):void 0,F&&!l?(0,i.jsx)(Rr,{isMobile:e,outerRadius:m,outerWidth:f,outerHeight:E,x:-B/2,y:a/2-w/2,width:B,height:w,onPointerDown:y,edgeHandleRadius:u,cursorStyle:"w-resize",color:A,strokeWidth:C}):void 0,F&&!g?(0,i.jsx)(Rr,{isMobile:e,outerRadius:m,outerWidth:E,outerHeight:f,x:r/2-w/2,y:a-B/2,width:w,height:B,onPointerDown:x,edgeHandleRadius:u,cursorStyle:"s-resize",color:A,strokeWidth:C}):void 0,l?void 0:(0,i.jsx)(Rr,{isMobile:e,outerRadius:m,outerWidth:f,outerHeight:E,x:r-B/2,y:a/2-Math.min(w,.8*a)/2,width:B,height:Math.min(w,.8*a),onPointerDown:I,edgeHandleRadius:u,cursorStyle:"e-resize",color:A,strokeWidth:C}),F&&!g?(0,i.jsx)(Rr,{isMobile:e,outerRadius:m,outerWidth:E,outerHeight:f,x:r/2-w/2,y:-B/2,width:w,height:B,onPointerDown:D,edgeHandleRadius:u,cursorStyle:"n-resize",color:A,strokeWidth:C}):void 0]})},Ur=t=>{const{isMobile:e,color:A,elementWidth:a,onBeginRotate:r,scaleFactor:o}=t,s=(0,n.useCallback)((t=>{t.stopPropagation(),r()}),[r]),c=13*o,l=30*o;return(0,i.jsxs)("g",{transform:e?`translate(${-l})`:void 0,children:[(0,i.jsx)("circle",{cx:a/2,cy:-2.5*c,r:1.3*c,fill:"transparent",style:{cursor:"ew-resize"},onPointerDown:s}),(0,i.jsxs)("svg",{x:a/2-c,y:-2.5*c-c,xmlns:"http://www.w3.org/2000/svg",style:{cursor:"ew-resize"},height:2*c,viewBox:"0 0 24 24",width:2*c,stroke:A,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",fill:"none",onPointerDown:s,children:[" ",(0,i.jsx)("polyline",{points:"23 4 23 10 17 10"})," ",(0,i.jsx)("path",{d:"M20.49 15a9 9 0 1 1-2.12-9.36L23 10"})]})]})},Gr="spiffElementID",Tr=({color:t,height:e,highlighted:A,id:a,immutable:r,onBeginMove:o,onPointerEnter:s,onPointerLeave:c,onSelected:l,pressed:g,rotation:h,scaleFactor:d,selected:u,width:w,x:B,y:p})=>{const m=1.2*d,{addEvent:E,removeEvent:f,curActiveEvents:C}=za(),Q=(0,n.useCallback)((t=>{E(t),t[Gr]=a;0===C&&0===t.button&&(l(a,t),o())}),[a,u,C,l,o]),y=(0,n.useCallback)((t=>{f(t)}),[]),I=(0,n.useCallback)((t=>{s(a)}),[a,C,s]),D=(0,n.useCallback)((t=>{f(t),c(a)}),[a,C,c]),x=r?void 0:u?g?"grabbing":"grab":"pointer",v=r?"none":"visibleFill";return(0,i.jsx)("g",{transform:`translate(${B}, ${p}) rotate(${h} ${w/2} ${e/2})`,children:(0,i.jsx)("rect",{className:"interactableInnerRect",width:w,height:e,stroke:u||A?t:"none",pointerEvents:v,fill:"none",strokeWidth:m,style:{cursor:x},onPointerDown:r?void 0:Q,onPointerUp:r?void 0:y,onPointerEnter:r?void 0:I,onPointerLeave:r?void 0:D})})},Or=t=>{const{isMobile:e,color:n,height:A,onBeginResize:a,onBeginRotate:r,onContextMenuHandlePointerDown:o,rotation:s,scaleFactor:c,width:l,x:g,y:h,disableX:d,disableY:u,disableCorners:w,disableRotation:B}=t;return(0,i.jsxs)("g",{transform:`translate(${g}, ${h}) rotate(${s} ${l/2} ${A/2})`,children:[!B&&(0,i.jsx)(Ur,{isMobile:e&&!!o,color:n,elementWidth:l,onBeginRotate:r,scaleFactor:c}),e&&o&&(0,i.jsx)(Yr,{onPointerDown:o,elementWidth:l,scaleFactor:c}),(0,i.jsx)(Hr,{isMobile:e,color:n,elementHeight:A,elementWidth:l,rotation:s,scaleFactor:c,onBeginResize:a,disableX:d,disableY:u,disableCorners:w})]})},Jr=.5,Lr=["TEXTAREA","INPUT"],zr=(t,e,i,A,a,r,o,s,c)=>{const{state:l,uiDispatcher:g}=(0,n.useContext)(Za),{getLayoutById:h,getReducerState:d,flattenSequence:u}=ja(),[w,B]=(0,n.useState)(!1),[p,m]=(0,n.useState)(void 0),[E,f]=(0,n.useState)(void 0),[C,Q]=(0,n.useState)(void 0),[y,I]=(0,n.useState)(null),D=h(l.layoutId);(0,n.useEffect)((()=>{if("adjustment"===a&&t?.current&&A){if(A<Jr)return void g(new _a({zoom:Jr}));if(A>l.maxZoom)return void g(new _a({zoom:l.maxZoom}));g(new _a({zoom:A}))}}),[A,g,t,a,l.maxZoom]);const x=(0,n.useCallback)(((t,n)=>{g(new _a({zoom:n}));const A=e?.current?.scrollWidth-e?.current?.clientWidth!=0,r=e?.current?.scrollHeight-e?.current?.clientHeight!=0;e.current&&i.current&&!l.scrolledMovement&&"advanced"===a&&(r&&(e.current.scrollTop=i.current.offsetTop+(e.current.scrollHeight-e.current.clientHeight)/2),A&&(e.current.scrollLeft=(i.current.offsetLeft+e.current.scrollWidth-e.current.clientWidth)/2))}),[g,e,i,l.scrolledMovement,a]);(0,n.useEffect)((()=>{l.zoom<=1&&g(new _a({scrolledMovement:!1}))}),[g,l.zoom]);const v=e?.current?.getBoundingClientRect(),M=((v?.width||1)+(v?.height||1))/2,S=(D.layoutState.layout.width+D.layoutState.layout.height)/2/M/l.zoom,b=(0,n.useMemo)((()=>{const t=l.activeModifierKeys,e=l.elementEvent,i=t.includes(mr.ControlLeft)||t.includes(mr.MetaLeft)||t.includes(mr.ControlRight)||t.includes(mr.MetaRight);if(!l.selectedElement||!e||i)return[];const n=e&&e.type===Br.Translate,A=e&&e.type===Br.Rotate,a=D.layoutState.elements.find((t=>t.id===l.selectedElement));return(n||A)&&a?dr(a,D.layoutState,S,s):[]}),[l.selectedElement,l.elementEvent,l.activeModifierKeys,D.layoutState,S]),F=(0,n.useCallback)((()=>{const t=Te();m(t),f(d().transaction)}),[d]),P=(0,n.useCallback)((t=>{I(t.target),t[Gr]||(I(null),g(new _a({selectedElement:void 0})))}),[l,g]),Y=(0,n.useCallback)((()=>{g(new _a({scrolledMovement:!0}))}),[g]),N=(0,n.useCallback)(((i,n)=>{const A=D.layoutState.elements.find((t=>t.id===l.selectedElement)),a=y?.getBoundingClientRect();if(!(l.elementEvent&&t.current&&e.current&&l.selectedElement&&A&&i.isPrimary))return void(e.current.hasPointerCapture(i.pointerId)&&e.current.releasePointerCapture(i.pointerId));e.current.hasPointerCapture(i.pointerId)||e.current.setPointerCapture(i.pointerId);const s=t.current.getBoundingClientRect(),c=new nA(Pr({deltaX:C?i.screenX-C.screenX:0,deltaY:C?i.screenY-C.screenY:0,destX:i.clientX,destY:i.clientY,targetRect:a},D.layoutState.layout,A,s,l.elementEvent,b,o,"desktop"===o&&!w,B,n,l.zoom));c.sequenceId=p,r(c,!1),Q({screenX:i.screenX,screenY:i.screenY})}),[D.layoutState.elements,D.layoutState.layout,l.elementEvent,t,l.selectedElement,e,b,r,C]),k=(0,n.useCallback)((t=>{g(new _a({elementEvent:t}))}),[g]),R=(0,n.useCallback)((()=>{k(void 0),p&&E&&(u(p,E),m(void 0),f(void 0),c&&c()),Q(void 0)}),[k,p,E,u,c]),H=(0,n.useCallback)(((t,e)=>{let i=l.zoom;const n=l.maxZoom,A=l.selectedElement,o=l.activeModifierKeys;if((o.includes(mr.AltLeft)||o.includes(mr.AltRight))&&(t.code===mr.Equal||t.code===mr.Minus)){const e=.05*n;t.code===mr.Equal?g(new _a({zoom:i+e<=n?i+=e:i})):g(new _a({zoom:i-e>=Jr?i-e:i}))}const s=D.layoutState.elements.find((t=>t.id===A));if(A&&s){if(t.code===mr.MetaLeft||t.code===mr.ControlLeft||t.code===mr.MetaRight||t.code===mr.ControlRight){const e=t.code,i=l.activeModifierKeys;if(!i.includes(e))return g(new _a({activeModifierKeys:i.concat(e)}))}if(t.code===mr.ArrowDown||t.code===mr.ArrowUp||t.code===mr.ArrowLeft||t.code===mr.ArrowRight){g(new _a({elementEvent:{type:Br.Translate}}));const i=Cr(t.code,s,l.units,e);r(i,!1),g(new _a({elementEvent:void 0}))}t.code!==mr.Delete&&t.code!==mr.Backspace||"advanced"!==a||s.stepName||(g(new _a({selectedElement:void 0})),r(new oA(s.id),!1))}}),[r,g,D.layoutState.elements,a,l.activeModifierKeys,l.maxZoom,l.selectedElement,l.units,l.zoom]),U=(0,n.useCallback)((t=>{if(t.code===mr.MetaLeft||t.code===mr.ControlLeft||t.code===mr.MetaRight||t.code===mr.ControlRight){const e=l.activeModifierKeys,i=t.code;g(new _a({activeModifierKeys:e.filter((t=>t!==i))}))}}),[g,l.activeModifierKeys]);return{guidelines:b,scale:S,zoomableElementRef:i,setElementEvent:k,handleZoom:x,handleKeyDown:H,handleKeyUp:U,handlePointerPressedBackground:P,handlePointerReleased:R,handlePointerMove:N,handleScroll:Y,handleSequenceStart:F}},jr=(t,e,i)=>{const A=(0,n.useMemo)((()=>[...new Set(t)].map((t=>String(t).toLowerCase()))),[]),a=(0,n.useRef)([]),r=(0,n.useCallback)((()=>{const t=A.every((t=>a.current.includes(t))),e=a.current.length===A.length;return t&&e}),[]),o=(0,n.useCallback)((t=>{const i=String(t.key).toLowerCase();if(t.repeat||"meta"===i)return;const n=t.target;return!(Lr.indexOf(n.tagName)>=0)&&(a.current=[...new Set([...a.current,i])],r()&&e(),t.preventDefault())}),[r,A,e,t]),s=(0,n.useCallback)((t=>{const e=String(t.key).toLowerCase(),n=r();a.current=a.current.filter((t=>t!==e));const A=r();i&&n&&!A&&i()}),[A]);(0,n.useEffect)((()=>(window.addEventListener("keydown",o),window.addEventListener("keyup",s),()=>{window.removeEventListener("keydown",o),window.removeEventListener("keyup",s)})),[o,s])},Vr=t=>{const{isMobile:e,primaryColor:A,customViewbox:a,editorRef:r,elementEvent:o,guidelines:s,layoutHeight:c,layoutWidth:l,targetedElements:g,scale:h,selectedElement:d,onElementEvent:u,onElementSelected:w,onSequenceStart:B,onMouseMove:p,onContextMenuHandlePointerDown:m}=t,{state:E}=tr(),{getLayoutById:f}=ja(),C=f(E.layoutId),[Q,y]=(0,n.useState)(void 0),I=(0,n.useCallback)((t=>{y(t)}),[]),D=(0,n.useCallback)((t=>{Q===t&&y(void 0)}),[Q]),x=(0,n.useCallback)((()=>{B(),u({type:Br.Translate})}),[u,B]),v=(0,n.useCallback)(((t,e)=>{B(),u({type:Br.Resize,relativeAxis:t,screenAxis:e})}),[u,B]),M=(0,n.useCallback)((()=>{B(),u({type:Br.Rotate})}),[u,B]),S=a||{x:0,y:0,width:l,height:c},b=C.layoutState.elements,F=b.find((t=>t.id===d)),P=F;return(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",xmlSpace:"preserve",version:"1.1",style:{touchAction:"none",position:"absolute",maxWidth:"100%",maxHeight:"100%",overflow:"visible"},width:"auto",height:"auto",viewBox:`${S.x} ${S.y} ${S.width} ${S.height}`,children:[(0,i.jsx)("rect",{onMouseMove:p,style:{pointerEvents:"all"},fill:"none",stroke:"none",ref:r,width:l,height:c}),s.map((t=>t.svgNode)),b.map((t=>{const e=void 0!==d&&t.id===d,n=e&&void 0!==o,a=void 0!==Q&&t.id===Q;return(0,i.jsx)(Tr,{color:A,id:t.id,selected:e,highlighted:a,pressed:n,x:t.x,y:t.y,width:t.width,height:t.height,rotation:t.rotation,immutable:t.immutable||g&&!g.includes(t.id),onSelected:w,onBeginMove:x,onPointerEnter:I,onPointerLeave:D,scaleFactor:h},t.id)})),F&&(0,i.jsx)(Or,{isMobile:e,color:A,x:F.x,y:F.y,disableCorners:F.type===ze.Textbox&&(!P.algorithm||P.algorithm===We.Autosize),disableX:F.type===ze.Frame||F.type===ze.Image||F.type===ze.Textbox&&(!P.algorithm||P.algorithm===We.Autosize),disableY:F.type===ze.Textbox||F.type===ze.Frame||F.type===ze.Image,width:F.width,height:F.height,rotation:F.rotation,onBeginResize:v,onBeginRotate:M,scaleFactor:h,onContextMenuHandlePointerDown:m})]})};function Kr(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Wr{constructor(){Kr(this,"timestamp",Date.now())}}class Xr{constructor(t){Kr(this,"queue",[]),Kr(this,"activePromise",void 0),Kr(this,"queueMaxSize",void 0),this.queueMaxSize=t}enqueue(t){if(this.queue.push(t),void 0!==this.queueMaxSize&&this.queue.length>this.queueMaxSize){const t=this.queue.length-1;for(let e=0;e<t;++e)this.queue.shift()}this.activePromise||(this.activePromise=this.dequeue())}hasActivePromise(){return!!this.activePromise}getRemainingQueueSize(){return this.queue.length}async finalize(){return this.activePromise?this.activePromise:Promise.resolve()}async dequeue(){const t=this.queue.shift();if(t)try{await t.execute()}catch(t){console.log(t)}finally{await this.dequeue()}else this.activePromise=void 0}}function qr(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Zr{constructor(){qr(this,"moduleName",void 0)}}const $r=t=>Vi("http://www.w3.org/2000/svg",t),_r=(t,e)=>{const i=$r("rect");return i.setAttribute("height",`${t}`),i.setAttribute("width",`${e}`),i},to=()=>{const t=$r("svg");return t.setAttribute("xmlns","http://www.w3.org/2000/svg"),t.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink"),t.setAttribute("version","1.1"),t};function eo(t){const e=to(),i=/viewBox="0 0 (.+?) (.+?)"/.exec(t)||["0","0"],n=parseFloat(i[1]),A=parseFloat(i[2]);return e.setAttribute("height",`${A}`),e.setAttribute("width",`${n}`),[e,A,n]}function io(t,e,i){const n=Te();((t,e,i)=>{const n=$r("g");t.appendChild(n),n.setAttribute("id",i),n.innerHTML=e})(e,i,`bgdef-${n}`),t.appendChild((t=>{const e=$r("use");return e.setAttribute("xlink:href",t),e.setAttribute("href",t),e})(`#bgdef-${n}`))}const no=(t,e,i,n)=>{const A=ji("filter");A.setAttribute("id",n),A.setAttribute("height","200%"),A.setAttribute("width","200%"),A.setAttribute("x","-50%"),A.setAttribute("y","-50%");const a=ji("feOffset");A.appendChild(a),a.setAttribute("result","offOut"),a.setAttribute("in","SourceAlpha"),a.setAttribute("dx",`${t}`),a.setAttribute("dy",`${e}`);const r=ji("feGaussianBlur");A.appendChild(r),r.setAttribute("result","blurOut"),r.setAttribute("in","offOut"),r.setAttribute("stdDeviation",`${i}`);const o=ji("feBlend");return A.appendChild(o),o.setAttribute("in","SourceGraphic"),o.setAttribute("in2","blurOut"),o.setAttribute("mode","normal"),A},Ao=t=>{let e=t;return e=e.replace(/feoffset/gi,"feOffset"),e=e.replace(/fegaussianblur/gi,"feGaussianBlur"),e=e.replace(/feblend/gi,"feBlend"),e=e.replace(/lineargradient/gi,"linearGradient"),e=e.replace(/stddeviation/gi,"stdDeviation"),e};function ao(t,e,i,n,A,a){const r=A||1,o=a||1,s={x:e[0],y:e[1],width:e[2]-e[0],height:e[3]-e[1]};if(s.width<=0)return;const c=function(t,e,i,n){const A=i/t,a=n/e;if(A>1&&a>1)return Math.min(A,a);if(A>1&&a<1)return a;if(A<1&&a>1)return A;return Math.min(A,a)}(s.height,s.width,i*r,n*o),l=(n-c*s.width)/2-c*s.x,g=(i-c*s.height)/2-c*s.y;t.setAttribute("transform",`translate(${l} ${g}) scale(${c} ${c})`)}function ro(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const oo={m:["x","y"],z:[],l:["x","y"],h:["x"],v:["y"],c:["x1","y1","x2","y2","x","y"],s:["x2","y2","x","y"],q:["x1","y1","x","y"],t:["x","y"],a:["rx","ry","xRotation","largeArc","sweep","x","y"]};class so{constructor(t){ro(this,"paths",void 0);const e=Array.from(t.querySelectorAll("path"));this.paths=e.map((t=>{const e=t.getAttribute("d")||"";return{pathElement:t,pathData:this.parsePath(e)}}))}transform(t){for(const e of this.paths)e.pathData=this.runTransformer(e.pathData,t);this.update()}encodePath(t){let e="";return t.map((t=>{const i=[],n=t.relative?t.type:t.type.toUpperCase();let A=e!==n;const a=oo[t.type];A&&(i.push(n),e=n);for(const e of a){const n=t[e];let a;switch(typeof n){case"boolean":a=0|n;break;case"number":a=(100*n|0)/100;break;default:throw new oa("Failed to encode path.")}A||i.push(" "),i.push(a),A=!1}return i.join("")})).join("")}parsePath(t){const e=/([mzlhvcsqta])([^mzlhvcsqta]*)/gi,i=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi,n=[];let A;for(e.lastIndex=0;A=e.exec(t);){const t=A[1].toLowerCase(),e=(A[2].match(i)||[]).map(parseFloat),a=t===A[1],r=oo[t];if(e.length<r.length)throw new oa(`Path type "${t}" given ${e.length} arguments, expected ${r.length}.`);if(r.length>0){if(e.length%r.length!=0)throw new oa(`Path type "${t}" given ${e.length} arguments, not divisible by ${r.length}`);for(let i=0;i<e.length/r.length;i++){const A={type:t,relative:a};for(let t=0;t<r.length;t++)A[r[t]]=e[i*r.length+t];n.push(A)}}else n.push({type:t,relative:a})}return n}runTransformer(t,e){const i=[["x1","y1"],["x2","y2"],["x","y"]];return this.transformPath(t,(t=>{for(let n=0;n<i.length;n++){const[A,a]=i[n];if(A in t&&a in t){const i=[t[A],t[a]],n=e(i);if(n.length<2)throw new oa("Transformer must return at least 2 points.");t[A]=n[0],t[a]=n[1]}}return t}))}transformPath(t,e){const i=[];for(let n=0;n<t.length;n++){const A=e(JSON.parse(JSON.stringify(t[n])));Array.isArray(A)?i.push(...A):A&&i.push(A)}return i}update(){for(const{pathElement:t,pathData:e}of this.paths){const i=this.encodePath(e);t.setAttribute("d",i)}}}function co(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class lo extends Zr{constructor(...t){super(...t),co(this,"moduleName","Favourites")}svgPreview(t){return this.svg(t)}svgPrint(t){return this.svg(t)}svg(t){const e=cn("data:application/font-woff;base64,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"),i=""!==t?(n=t).charAt(0).toUpperCase()+n.substr(1).toLowerCase():"";var n;const A=e.getPath(i,0,72,72);return this.brandSvg(A,'<?xml version="1.0" encoding="iso-8859-1"?>\n\x3c!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\n\t width="289.691px" height="204.059px" viewBox="0 0 289.691 204.059" enable-background="new 0 0 289.691 204.059"\n\t xml:space="preserve">\n<g id="Layer_3">\n\t<g>\n\t\t<g>\n\t\t\t<defs>\n\t\t\t\t<path id="SVGID_1_" d="M132.799,0L132.799,0c-2.85,0-5.611,0.376-8.204,1.119c-6.512,1.865-14.407,8.455-17.575,17.447\n\t\t\t\t\tc-5.374,1.759-16.263,6.039-18.474,16.876c-12.301,4.695-59.215,23.718-76.41,46.864c-1.783,2.067-14.076,17.86-11.873,42.198\n\t\t\t\t\tc2.083,23.017,14.66,39.637,20.03,46.733c0.496,0.655,0.925,1.223,1.271,1.697c3.272,4.502,16.448,20.198,29.967,27.96\n\t\t\t\t\tc0.985,0.565,2.526,1.337,3.598,1.671c9.286,2.898,13.053,0.684,13.053,0.684l-5.734-6.704\n\t\t\t\t\tc-0.113-0.047-1.555-2.104-2.024-3.528c-0.401-1.1-0.683-3.708,1.941-8.822c1.92-3.74,8.466-11.905,30.74-24.556\n\t\t\t\t\tc19.286-10.953,45.665-22.672,78.404-34.831c0.384-0.138,43.36-15.521,71.448-17.843l0.084-0.007l0.084-0.01\n\t\t\t\t\tc0.056-0.006,5.722-0.659,11.761-0.659c7.122,0,10.06,0.898,11.094,1.355l0.378,9.638c0,0,5.87-4.852,7.88-7.117\n\t\t\t\t\tc2.01-2.264,12.031-11.822,14.79-47.407c0.084-0.941,1.244-14.374,0.202-25.831c-0.428-4.706-2.167-9.042-5.03-12.54\n\t\t\t\t\tc-4.914-6.004-15.065-13.686-35.521-16.2c-0.84-0.118-8.692-1.176-21.503-1.176c-14.431,0-29.204,1.305-43.952,3.882\n\t\t\t\t\tc-1.858-1.395-4.78-2.782-9.053-2.782c-0.427,0-0.861,0.014-1.303,0.043c-1.604-2.318-4.231-4.531-8.237-5.259\n\t\t\t\t\tc-0.396-0.076-1.797-0.315-3.752-0.315c-0.897,0-1.798,0.051-2.676,0.152h-0.001c-0.244,0.007-1.149-0.008-2.428-0.517\n\t\t\t\t\tc-0.623-0.317-2.157-1.062-3.567-1.46c-0.945-0.267-2.142-0.54-3.842-0.54c-1.387,0-2.951,0.186-4.78,0.569l-0.214,0.045\n\t\t\t\t\tl-0.073,0.023c-0.141,0.032-0.727,0.154-1.455,0.154c-0.378,0-0.727-0.033-1.036-0.098C139.516,0.637,136.489,0,132.799,0z"/>\n\t\t\t</defs>\n\t\t\t<clipPath id="SVGID_2_">\n\t\t\t\t<use xlink:href="#SVGID_1_" overflow="visible"/>\n\t\t\t</clipPath>\n\t\t\t\n\t\t\t\t<radialGradient id="SVGID_3_" cx="0.6661" cy="211.1478" r="1" gradientTransform="matrix(196.7466 -33.1074 59.2188 355.3871 -12531.9229 -75128.1562)" gradientUnits="userSpaceOnUse">\n\t\t\t\t<stop offset="0" style="stop-color:#31006F"/>\n\t\t\t\t<stop offset="0.7044" style="stop-color:#31006F"/>\n\t\t\t\t<stop offset="0.9025" style="stop-color:#8663A8"/>\n\t\t\t\t<stop offset="0.9837" style="stop-color:#380874"/>\n\t\t\t</radialGradient>\n\t\t\t<path clip-path="url(#SVGID_2_)" fill="url(#SVGID_3_)" d="M289.231,36.928c0-15.893-21.025-34.603-52.712-35.045\n\t\t\t\tc-15.771-0.22-99.017-1.969-102.404-3.731C132.43-2.669,102,8.514,99.071,14.978c-1.352,2.989-12.46,12.774-12.087,16.225\n\t\t\t\tC43.908,47.213,14.509,73.752,3.19,93.894c-4.256,7.574-5.912,24.772,1.863,48.426c7.171,21.815,39.719,65.369,55.762,70.653\n\t\t\t\tc34.873-19.08-3.701-15.168,25.189-33.173c37.467-23.352,96.365-43.82,128.896-51.007c51.454-11.366,72.09-9.938,70.905-8.055\n\t\t\t\tC293.781,108.06,291.07,57.024,289.231,36.928z"/>\n\t\t</g>\n\t\t<path fill="#F4F5F5" d="M273.502,102.985c0,0-0.484,7.046-0.92,8.889l-0.856,0.768l-1.487,1.343c0,0,0.746-3.28,0.676-7.538\n\t\t\tL273.502,102.985z"/>\n\t\t<g>\n\t\t\t<defs>\n\t\t\t\t<path id="SVGID_4_" d="M273.495,103.048l-0.914,8.826l-6.223,5.407l-0.378-9.638c-3.51-1.84-20.124-1.91-40.523,1.965\n\t\t\t\t\tc-20.398,3.875-55.726,13.5-108.591,37.875c-52.865,24.375-56.042,40.035-56.3,41.165c-0.258,1.129-0.609,2.871-0.246,4.106\n\t\t\t\t\tc0.363,1.234,1.566,3.062,1.566,3.062c0.622,0.875,6.294,7.434,6.294,7.434c-0.243,0.139-0.713,0.296-0.713,0.296\n\t\t\t\t\tc-3.776-1.363-10.024-5.048-12.507-6.55c-0.105-0.059-0.211-0.109-0.316-0.168c-0.213-0.126-0.425-0.267-0.634-0.411\n\t\t\t\t\tl-0.127-0.079l-0.016-0.022c-4.346-3.133-7.493-10.523,1.153-21.838c7.623-9.975,16.641-15.494,27.199-21.737\n\t\t\t\t\tc35.97-21.271,88.653-41.928,128.445-51.065c20.468-4.7,37.871-6.713,47.404-5.994\n\t\t\t\t\tC270.766,96.641,274.312,100.216,273.495,103.048z M103.152,50.182c-0.754,0.298-4.411,1.78-5.162,2.081\n\t\t\t\t\tc-46.711,18.73-75.543,39.262-85.429,55.22c-4.89,7.894-6.183,14.713-7.333,23.376c-0.528,3.979-0.264,9.917,0.182,13.905\n\t\t\t\t\tc0.098,0.872,0.196,1.558,0.285,1.837c-6.447-20.414-0.184-36.278,3.696-43.319c10.903-19.787,49.756-42.606,92.09-58.743\n\t\t\t\t\tC101.625,47.168,102.123,48.443,103.152,50.182z M289.642,46.027c0,0-1.68-8.208-8.18-16.932\n\t\t\t\t\tC281.44,29.064,260.598,16,235.788,15.96c-15.584-0.025-35.217,2.462-56.404,6.836c0.858,0.69,2.004,2.132,1.76,4.812\n\t\t\t\t\tc21.139-4.514,40.632-7.022,56.269-6.997c16.325,0.026,32.385,3.661,38.959,8.397c2.862,2.062,6.187,5.337,8.039,8.968\n\t\t\t\t\tc0.562,1.011,3.167,5.866,5.214,12.307C289.626,50.282,289.762,47.693,289.642,46.027z"/>\n\t\t\t</defs>\n\t\t\t<clipPath id="SVGID_5_">\n\t\t\t\t<use xlink:href="#SVGID_4_" overflow="visible"/>\n\t\t\t</clipPath>\n\t\t\t<rect x="282.522" y="30.129" clip-path="url(#SVGID_5_)" fill="#95979A" width="7.146" height="21.322"/>\n\t\t\t\n\t\t\t\t<radialGradient id="SVGID_6_" cx="0.6661" cy="211.1478" r="1" gradientTransform="matrix(270.0389 19.3946 -19.0497 267.9429 3989.5959 -56677.875)" gradientUnits="userSpaceOnUse">\n\t\t\t\t<stop offset="0" style="stop-color:#000000"/>\n\t\t\t\t<stop offset="0.0996" style="stop-color:#242425"/>\n\t\t\t\t<stop offset="0.2741" style="stop-color:#4E4F51"/>\n\t\t\t\t<stop offset="0.5029" style="stop-color:#757779"/>\n\t\t\t\t<stop offset="0.7746" style="stop-color:#A6A8AB"/>\n\t\t\t\t<stop offset="0.8165" style="stop-color:#E2E3E4"/>\n\t\t\t\t<stop offset="0.8338" style="stop-color:#ECEDED"/>\n\t\t\t\t<stop offset="0.8581" style="stop-color:#F2F2F3"/>\n\t\t\t\t<stop offset="0.9255" style="stop-color:#F3F4F4"/>\n\t\t\t\t<stop offset="0.9497" style="stop-color:#85878A"/>\n\t\t\t\t<stop offset="0.9601" style="stop-color:#77787B"/>\n\t\t\t\t<stop offset="0.9911" style="stop-color:#C8CACC"/>\n\t\t\t</radialGradient>\n\t\t\t<path clip-path="url(#SVGID_5_)" fill="url(#SVGID_6_)" d="M274.97,104.208c-1.015,1.477-1.895,7.095-2.389,7.667\n\t\t\t\tc0.266-0.396-6.223,5.407-6.223,5.407S53.633,196.961,60.248,199.321c-1.672-0.501-3.655-1.4-5.602-2.491\n\t\t\t\tc-4.713-2.786-8.78-10.369,0.376-22.35c7.623-9.975,16.641-15.494,27.199-21.736c35.97-21.271,88.653-41.929,128.445-51.066\n\t\t\t\tc20.468-4.7,37.871-6.713,47.404-5.994C271.591,96.703,276.421,101.309,274.97,104.208z M101.481,44.54\n\t\t\t\tc-42.334,16.137-81.187,38.956-92.09,58.743c-3.88,7.042-10.143,22.905-3.696,43.319c-0.089-0.279-0.188-0.965-0.285-1.837\n\t\t\t\tc-0.446-3.989-0.711-9.927-0.182-13.905c1.15-8.662,2.444-15.482,7.333-23.376c9.886-15.959,38.718-36.49,85.429-55.219\n\t\t\t\tc0.752-0.301,4.408-1.784,5.162-2.081C102.123,48.443,101.625,47.168,101.481,44.54z M235.789,15.959\n\t\t\t\tc-15.583-0.025-35.217,2.462-56.404,6.835c0.858,0.69,2.004,2.132,1.76,4.812c21.139-4.514,40.632-7.022,56.269-6.997\n\t\t\t\tc16.325,0.026,32.385,3.661,38.959,8.397c2.862,2.062,7.305,5.886,8.059,9.237c-0.04-1.016-0.352-2.27-0.408-2.911\n\t\t\t\tC283.11,25.107,267.1,16.009,235.789,15.959z"/>\n\t\t</g>\n\t\t<path fill="#DCDDDE" d="M60.273,199.427l7.908,3.825l-5.24-6.101C62.941,197.152,58.272,198.786,60.273,199.427"/>\n\t\t\n\t\t\t<radialGradient id="SVGID_7_" cx="0.6661" cy="211.1478" r="1" gradientTransform="matrix(270.0424 19.3949 -19.05 267.9464 3989.6995 -56678.5859)" gradientUnits="userSpaceOnUse">\n\t\t\t<stop offset="0" style="stop-color:#000000"/>\n\t\t\t<stop offset="0.0996" style="stop-color:#242425"/>\n\t\t\t<stop offset="0.2741" style="stop-color:#4E4F51"/>\n\t\t\t<stop offset="0.5029" style="stop-color:#757779"/>\n\t\t\t<stop offset="0.7746" style="stop-color:#A6A8AB"/>\n\t\t\t<stop offset="0.8338" style="stop-color:#ECEDED"/>\n\t\t\t<stop offset="0.8581" style="stop-color:#F2F2F3"/>\n\t\t\t<stop offset="0.9255" style="stop-color:#F3F4F4"/>\n\t\t\t<stop offset="0.9601" style="stop-color:#77787B"/>\n\t\t\t<stop offset="0.9911" style="stop-color:#C8CACC"/>\n\t\t</radialGradient>\n\t\t<path fill="url(#SVGID_7_)" d="M273.283,103.591c-1.014,1.477-1.926,2.342-2.419,2.914c1.213-1.808-4.269-10.909-55.135-0.044\n\t\t\tc-20.898,4.464-58.364,17.017-91.77,32.224c-14.657,6.627-44.582,21.095-57.613,32.959c-12.456,11.341-14.277,24.658-5.817,27.676\n\t\t\tc-1.672-0.501-3.937-1.4-5.884-2.491c-4.713-2.786-8.78-10.369,0.376-22.35c7.623-9.975,16.641-15.494,27.199-21.737\n\t\t\tc35.97-21.271,88.653-41.928,128.445-51.065c20.468-4.7,37.871-6.713,47.404-5.994\n\t\t\tC271.591,96.703,274.735,100.692,273.283,103.591z M101.481,44.54c-42.334,16.137-81.187,38.956-92.09,58.743\n\t\t\tc-3.88,7.042-10.143,22.905-3.696,43.319c-0.089-0.279-0.188-0.965-0.285-1.837c-0.446-3.989-0.711-9.927-0.182-13.905\n\t\t\tc1.15-8.662,2.444-15.482,7.333-23.376c9.886-15.959,38.718-36.49,85.429-55.219c0.752-0.301,4.408-1.784,5.162-2.081\n\t\t\tC102.123,48.443,101.625,47.168,101.481,44.54z M235.789,15.959c-15.583-0.025-35.217,2.462-56.404,6.835\n\t\t\tc0.858,0.69,2.004,2.132,1.76,4.812c21.139-4.514,40.632-7.022,56.269-6.997c16.325,0.026,32.385,3.661,38.959,8.397\n\t\t\tc2.862,2.062,6.771,6.064,8.179,9.197c-0.546-1.213-0.441-2.314-0.498-2.954C283.141,25.023,267.1,16.009,235.789,15.959z"/>\n\t</g>\n</g>\n<g id="Layer_2">\n\t<g opacity="0.7">\n\t\t<defs>\n\t\t\t\n\t\t\t\t<rect id="SVGID_8_" x="112.559" y="3.607" transform="matrix(0.1079 -0.9942 0.9942 0.1079 82.6225 182.4761)" opacity="0.7" width="60.856" height="83.188"/>\n\t\t</defs>\n\t\t<clipPath id="SVGID_9_">\n\t\t\t<use xlink:href="#SVGID_8_" overflow="visible"/>\n\t\t</clipPath>\n\t\t<g clip-path="url(#SVGID_9_)">\n\t\t\t<g>\n\t\t\t\t<defs>\n\t\t\t\t\t\n\t\t\t\t\t\t<rect id="SVGID_10_" x="112.559" y="3.607" transform="matrix(0.1079 -0.9942 0.9942 0.1079 82.6225 182.4761)" width="60.856" height="83.188"/>\n\t\t\t\t</defs>\n\t\t\t\t<clipPath id="SVGID_11_">\n\t\t\t\t\t<use xlink:href="#SVGID_10_" overflow="visible"/>\n\t\t\t\t</clipPath>\n\t\t\t\t<g transform="matrix(1 0 7.450581e-09 1 -7.629395e-06 0)" clip-path="url(#SVGID_11_)">\n\t\t\t\t\t\n\t\t\t\t\t\t<image overflow="visible" enable-background="new " width="636" height="465" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnwAAAHRCAYAAADwh2T7AAAACXBIWXMAAAsSAAALEgHS3X78AAAA\nGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAyOdJREFUeNrsvQmYJddVJnhuRLwt\nX26VSlWpnC4ttiTLwrIMwiC7PcYG3MYbiw0NxgZ6eub7hvVjuoH5mOlvtp6mu5mmm8GAaRpk424w\ntpFNgxdZNjZehCRbaClbaLNcUqmcVapSKisrt5dviYiJGxXnvT/OuxEvsyqztjz/p9B7GW+tFxH3\n/vc/5/yHSKFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKh\nUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQ\nKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAo\nFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgU\nCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQK\nhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqF\nQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVC\noVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKh\nUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQ\nKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUik0gjmNj\nt628ZmJi0ktuvEaj4We77OvtPj/bvGzfdnw/n7dOp+u1Ox0vDENvs9/bPqfX6xl4ncfvF0WRr2eA\nQqFQKBSKSx4JiTJ228RTzf79+71rr72OiV0QBJWA7ydbJdmq2VbJ9vmOLSWLb33rD3o/+3O/4I36\n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\nX4m2Sibqakbo8W26c7doKZ0/f3/pF3/pV0ovv/Kqn7wev9/vexx1nFKIAgAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCz+fwEGABq0\nIfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 10.4696)">\n\t\t\t\t\t</image>\n\t\t\t\t</g>\n\t\t\t</g>\n\t\t</g>\n\t</g>\n\t<g>\n\t\t<path fill="#ED1C24" d="M174.957,30.203c-0.284-0.646-1.032-1.349-2.281-1.388c-0.213-0.007-0.435,0.007-0.667,0.04\n\t\t\tc-0.904,0.135-1.788,0.676-2.397,1.515c-0.402-0.719-1.081-1.196-1.905-1.321c-0.113-0.015-0.225-0.023-0.335-0.027\n\t\t\tc-0.035-0.001-0.07-0.002-0.105-0.002c0.172-0.292,0.28-0.589,0.333-0.87c0.131-0.693-0.072-1.291-0.545-1.601\n\t\t\tc-0.191-0.125-0.416-0.196-0.65-0.203c-0.414-0.013-0.742,0.159-1.09,0.342c-0.158,0.083-0.322,0.169-0.491,0.236\n\t\t\tc-0.302,0.121-0.62,0.221-0.948,0.31c-0.029-0.454-0.146-0.885-0.436-1.223c-0.197-0.229-0.553-0.506-1.131-0.524\n\t\t\tc-0.063-0.002-0.128-0.001-0.194,0.004c-0.966,0.063-1.745,0.958-2.372,2.727c-0.002-0.19-0.031-0.381-0.09-0.567\n\t\t\tc-0.244-0.763-0.938-1.273-1.766-1.299c-0.319-0.01-0.649,0.055-0.953,0.188c-1.049,0.458-1.616,1.61-1.291,2.623\n\t\t\tc0.025,0.077,0.057,0.15,0.091,0.222c-1.238,0.182-2.105,1.065-2.674,1.944c-0.238-0.137-0.515-0.227-0.835-0.237\n\t\t\tc-0.169-0.005-0.339,0.014-0.506,0.058c-0.744,0.195-1.028,0.664-1.142,1.25c-0.255-0.728-0.738-1.205-1.626-1.278\n\t\t\tc-0.04-0.003-0.08-0.006-0.119-0.007c-0.921-0.029-2.08,0.433-2.367,2.796c-0.036,0.299-0.063,0.607-0.082,0.909\n\t\t\tc-0.185-0.607-0.511-1.198-1.091-1.689c-0.646-0.547-1.254-0.676-1.651-0.689c-0.637-0.02-1.129,0.236-1.377,0.481\n\t\t\tc-0.597,0.589-0.39,1.317-0.29,1.724c0.101,0.407,0.175,0.841,0.148,1.094c-0.193-0.645-0.454-1.168-0.971-1.624\n\t\t\tc-0.483-0.427-1.119-0.664-1.84-0.686c-0.187-0.006-0.378,0.003-0.569,0.027c-1.897,0.236-3.379,1.794-4.103,4.067\n\t\t\tc-0.137-0.23-0.291-0.438-0.46-0.621c-0.752-0.814-1.642-1.242-2.643-1.273c-0.282-0.009-0.576,0.014-0.874,0.068l-0.035,0.007\n\t\t\tc-0.416,0.089-1.162,0.321-1.482,0.869c-0.247,0.423-0.376,1.01,0.169,1.614c-0.218-0.108-0.428-0.184-0.624-0.236\n\t\t\tc-0.283-0.076-0.568-0.119-0.846-0.128c-0.847-0.026-1.578,0.258-1.956,0.761c-0.202,0.269-0.366,0.639-0.279,1.093\n\t\t\tc-0.423-0.205-0.899-0.324-1.389-0.34c-0.248-0.008-0.501,0.011-0.752,0.055c-1.608,0.242-2.789,1.427-3.544,3.038\n\t\t\tc-0.073-0.026-0.149-0.046-0.227-0.059l-0.102-0.013l-0.051-0.002c-0.585-0.018-0.94,0.353-1.176,0.599\n\t\t\tc-0.035,0.036-0.07,0.073-0.108,0.111c-0.072-0.797-0.11-1.449-0.109-2.219c0.002-1.13,0.277-1.776,0.46-2.081l0.108-0.037\n\t\t\tc0.742-0.252,1.458-0.494,2.075-0.713c1.449-0.513,2.455-0.881,3.21-1.315c1.468-0.844,2.565-2.057,2.934-3.245\n\t\t\tc0.274-0.882,0.244-1.625-0.086-2.15c-0.22-0.35-0.557-0.574-0.947-0.631l-0.09-0.012l-0.063-0.002\n\t\t\tc-0.458-0.014-0.795,0.195-1.15,0.417c-0.257,0.16-0.576,0.359-1.07,0.584c-1.027,0.468-2.291,0.943-4.226,1.588\n\t\t\tc-2.061,0.687-4.653,1.655-6.419,3.049c-1.906,1.505-2.48,3.077-2.625,4.121c-0.222,1.504,0.493,1.941,0.939,2.068\n\t\t\tc0.108,0.03,0.218,0.048,0.329,0.051c0.725,0.023,1.146-0.487,1.453-0.86l0.116-0.139c0.058-0.068,0.217-0.242,0.521-0.483\n\t\t\tc-0.311,1.478-0.287,3.07-0.178,4.325c-0.914,0.725-1.319,1.77-1.384,2.545c-0.083,1.003,0.31,1.736,1.028,1.915l0.123,0.029\n\t\t\tl0.115,0.004c0.321,0.01,0.567-0.108,0.757-0.244c0.609,4.554,0.717,8.077,0.29,9.801l-0.016,0.064\n\t\t\tc-0.387,1.52,0.233,2.055,0.822,2.236l0.046,0.014l0.047,0.01c0.123,0.026,0.251,0.042,0.379,0.046\n\t\t\tc1.267,0.04,2.568-0.992,3.313-2.627c0.805-1.768,0.616-5.234,0.038-9.882c0.532,3.639,2.059,5.666,4.39,5.738\n\t\t\tc0.124,0.004,0.251,0.001,0.368-0.009c0.849-0.062,1.602-0.463,2.178-1.159c0.355-0.43,0.617-0.941,0.809-1.457\n\t\t\tc0.11,0.087,0.225,0.168,0.344,0.243c0.554,0.365,1.192,0.568,1.845,0.588c1.091,0.034,2.317-0.442,2.439-1.389\n\t\t\tc0.013-0.096,0.022-0.263-0.018-0.454c1.075-0.184,2.154-1.507,2.94-3.632c0.244-0.61,0.524-1.38,0.754-2.37\n\t\t\tc0.905,1.882,2.357,2.659,3.709,2.702c0.195,0.006,0.395-0.002,0.594-0.025c1.006-0.116,1.957-0.705,2.679-1.659\n\t\t\tc0.437-0.578,0.776-1.268,1.008-2.029c0.451,0.709,1.149,1.203,2.224,1.267l0.046,0.002c1.327,0.023,2.306-0.963,2.955-2.236\n\t\t\tc0.959,1.074,1.995,1.336,2.721,1.359c0.829,0.026,1.462-0.254,1.695-0.376c0.59-0.307,0.946-0.813,0.963-1.342\n\t\t\tc1.498-0.553,1.303-2.42,1.236-3.064c-0.027-0.256-0.048-0.613-0.06-1.022c0.391,3.088,2.039,3.501,2.788,3.524l0,0\n\t\t\tc0.15,0.005,0.304-0.004,0.458-0.026c1.034-0.145,1.704-0.783,1.915-1.46c0.426,0.451,0.991,0.741,1.74,0.764\n\t\t\tc0.067,0.002,0.133,0.002,0.199-0.001c0.842-0.031,1.792-0.53,2.195-1.222c0.463,0.425,1.031,0.713,1.71,0.813\n\t\t\tc0.143,0.021,0.287,0.034,0.429,0.039c1.101,0.034,1.976-0.421,2.642-1.037c0.006,0.012,0.012,0.024,0.018,0.035\n\t\t\tc0.269,0.491,0.752,0.65,0.988,0.699c0.12,0.028,0.256,0.044,0.408,0.049c1.154,0.036,2.81-0.562,3.673-2.358\n\t\t\tc0.97-1.986,0.067-3.915-0.472-5.068c-0.1-0.213-0.194-0.414-0.246-0.554c-0.098-0.265-0.126-0.473-0.126-0.618\n\t\t\tc0.146,0.07,0.336,0.137,0.569,0.144l0,0c0.134,0.004,0.268-0.012,0.4-0.05c0.389-0.113,0.702-0.386,0.881-0.77\n\t\t\tC175.21,31.395,175.199,30.754,174.957,30.203z"/>\n\t\t<g opacity="0.5">\n\t\t\t<g>\n\t\t\t\t<g>\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t<rect id="SVGID_12_" x="122.62" y="13.483" transform="matrix(0.1079 -0.9942 0.9942 0.1079 82.8799 180.6859)" width="38.995" height="61.358"/>\n\t\t\t\t\t</defs>\n\t\t\t\t\t<clipPath id="SVGID_13_">\n\t\t\t\t\t\t<use xlink:href="#SVGID_12_" overflow="visible"/>\n\t\t\t\t\t</clipPath>\n\t\t\t\t\t<path clip-path="url(#SVGID_13_)" fill="#595959" d="M157.669,27.744c0.539-0.235,1.102-0.034,1.257,0.45\n\t\t\t\t\t\tc0.155,0.484-0.156,1.067-0.695,1.302s-1.102,0.034-1.257-0.45C156.819,28.563,157.13,27.98,157.669,27.744z M119.826,43.655\n\t\t\t\t\t\tc-0.307-0.039-0.601,0.927-2.176,1.357c-0.184-1.752-0.28-2.686-0.278-3.95c0.003-1.842,0.643-2.734,0.871-2.994\n\t\t\t\t\t\tc0.889-0.302,1.761-0.595,2.492-0.854c1.426-0.504,2.373-0.855,3.031-1.233c1.285-0.739,2.168-1.752,2.44-2.628\n\t\t\t\t\t\tc0.263-0.848,0.108-1.352-0.159-1.391c-0.268-0.04-0.628,0.384-1.766,0.903c-1.137,0.518-2.508,1.022-4.332,1.63\n\t\t\t\t\t\tc-1.822,0.608-4.417,1.551-6.091,2.872c-1.67,1.319-2.117,2.651-2.225,3.43c-0.095,0.645,0.021,0.83,0.164,0.871\n\t\t\t\t\t\tc0.261,0.074,0.47-0.245,0.779-0.608c0.34-0.4,1.422-1.42,3.907-2.374c-2.038,1.607-1.804,5.732-1.598,7.467\n\t\t\t\t\t\tc-1.159,0.567-1.417,1.691-1.45,2.084c-0.032,0.393,0.058,0.739,0.21,0.777c0.161,0.04,0.533-0.636,1.571-0.962\n\t\t\t\t\t\tc0.69,4.555,1.107,9.428,0.505,11.861c-0.075,0.302-0.256,0.905,0.074,1.007c0.727,0.155,1.8-0.473,2.483-1.972\n\t\t\t\t\t\tc0.704-1.547,0.439-5.103-0.081-9.294c-0.117-0.94-0.224-1.812-0.321-2.628c1.211-0.291,1.874-1.491,2.028-1.952\n\t\t\t\t\t\tC120.088,44.523,120.118,43.702,119.826,43.655z M130.074,51.611c-0.265-0.039-0.868-0.51-1.296-1.466\n\t\t\t\t\t\tc-0.428-0.956-0.667-2.03-0.996-4.399c-0.33-2.376-0.494-2.793-1.161-2.785c-1.585,0.11-1.332,3.047-1.225,4.474\n\t\t\t\t\t\tc-0.121,2.203-0.473,3.913-1.194,3.923c-0.693,0.009-1.276-0.779-1.295-4.642c0.132-5.085,2.759-4.477,3.032-4.377\n\t\t\t\t\t\tc0.26,0.095,0.382,0.213,0.49,0.129c0.164-0.13-0.002-0.695-0.34-1.104s-1.109-0.875-2.144-0.688\n\t\t\t\t\t\tc-2.001,0.292-3.796,3.05-3.633,7.367c0.164,4.356,1.895,6.263,3.668,6.12c2.348-0.172,2.497-4.137,2.494-4.163\n\t\t\t\t\t\tc0.1,0.365,0.627,1.421,1.498,1.957c1.252,0.833,2.599,0.21,2.629-0.029C130.633,51.688,130.339,51.65,130.074,51.611z\n\t\t\t\t\t\t M131.157,36.977c-0.397,0.085-0.709,0.243-0.775,0.358c-0.29,0.497,0.606,0.526,1.43,1.498\n\t\t\t\t\t\tc0.597,0.704,1.088,1.814,1.094,4.28c0.007,2.777-0.854,4.389-0.854,4.389s-0.213-3.202-0.935-5.373\n\t\t\t\t\t\tc-0.606-1.823-1.491-2.673-2.404-2.919c-0.85-0.228-1.487,0.01-1.658,0.238s-0.076,0.389,0.168,0.665\n\t\t\t\t\t\tc0.244,0.276,1.377,1.501,2.216,4.524c0.789,2.842,0.893,3.765,1.024,4.472s0.258,1.386,0.905,1.443\n\t\t\t\t\t\tc0.46,0.04,1.424-0.8,2.219-2.96c0.423-1.054,0.808-2.278,1.011-3.944c0.381-3.08-0.149-4.973-0.91-5.796\n\t\t\t\t\t\tC133.158,37.278,132.392,36.753,131.157,36.977z M139.529,47.213c1.948-0.224,3.569-3.052,2.982-6.673\n\t\t\t\t\t\tc-0.106-0.653-0.375-1.867-0.943-2.583c-0.426-0.538-0.973-0.891-1.403-0.615c-0.26,0.236-0.128,0.378,0.164,1.215\n\t\t\t\t\t\tc0.292,0.836,0.412,1.987,0.38,3.117c-0.039,1.394-0.291,2.961-1.279,2.961c-1.021,0-1.49-1.887-1.492-3.975\n\t\t\t\t\t\tc-0.002-2.093,0.829-4.31,2.061-4.3c0.628,0.012,0.855,0.441,1.052,0.375c0.272-0.091,0.413-0.952-0.313-1.592\n\t\t\t\t\t\tc-0.413-0.365-1.001-0.466-1.56-0.397c-2.419,0.301-3.811,3.434-3.624,6.951C135.752,45.425,137.38,47.46,139.529,47.213z\n\t\t\t\t\t\t M145.628,44.787c1.515,0.026,2.403-2.327,2.68-3.779c0.203,0.594,0.482,1.172,0.864,1.664c1.306,1.69,2.804,1.247,3.31,0.984\n\t\t\t\t\t\tc0.268-0.139,0.403-0.329,0.379-0.45c-0.014-0.073-0.086-0.121-0.221-0.12c-0.761-0.005-1.35-0.307-1.926-1.249\n\t\t\t\t\t\tc-0.545-0.911-0.744-3.102-0.662-6.233c0.076-2.898-0.336-3.145-0.888-3.191c-0.947-0.078-1.215,0.941-1.324,1.842\n\t\t\t\t\t\tc-0.15,1.235-0.122,2.681-0.105,3.1c0.01,0.243,0.023,0.688,0.077,1.236c-0.174,1.228-0.597,3.492-1.341,3.448\n\t\t\t\t\t\tc-0.899-0.054-0.589-3.584-0.614-4.841c-0.02-1.043-0.045-2.252-0.962-3.028c-0.822-0.696-1.46-0.372-1.57-0.263\n\t\t\t\t\t\tc-0.175,0.173-0.065,0.431,0.043,0.857c0.12,0.474,0.2,2.01,0.238,4.057C143.646,40.891,143.24,44.643,145.628,44.787z\n\t\t\t\t\t\t M157.653,33.034c-1.42-0.098-1.575,2.98-1.534,4.971c0.052,2.5,0.824,3.789,2.097,3.61c0.758-0.106,1.073-0.619,1.056-0.869\n\t\t\t\t\t\tc-0.025-0.362-0.44-0.311-0.717-1.207c-0.34-1.504-0.41-2.85-0.249-4.672C158.452,33.225,158.059,33.062,157.653,33.034z\n\t\t\t\t\t\t M159.146,31.495c0.26,0.093,0.283-0.215,1.269-0.659c0.037-0.016,0.075-0.029,0.111-0.043\n\t\t\t\t\t\tc-0.167,0.823-0.362,2.163-0.43,4.646c-0.122,4.802,1.093,5.506,2.084,5.469c0.708-0.026,1.348-0.566,1.35-0.83\n\t\t\t\t\t\tc0.003-0.321-0.308-0.301-0.523-0.704c-0.487-0.802-0.629-2.096-0.625-4.917c0.044-1.726,0.21-3.044,0.374-4.116\n\t\t\t\t\t\tc0.462-0.075,1.018-0.172,1.714-0.317c2.379-0.495,2.569-2.178,2.294-2.358c-0.195-0.128-0.631,0.233-1.238,0.475\n\t\t\t\t\t\tc-0.829,0.331-1.742,0.524-2.532,0.685c0.024-0.163,0.046-0.321,0.064-0.473c0.165-1.38-0.145-1.597-0.572-1.57\n\t\t\t\t\t\tc-0.738,0.048-1.35,1.713-1.615,2.592c-0.501,0.186-0.913,0.419-1.261,0.725C159.065,30.582,158.878,31.4,159.146,31.495z\n\t\t\t\t\t\t M169.767,37.669c-0.163,0.581-1.266,3.171-3.484,2.843c-2.028-0.3-2.627-3.201-2.293-5.576\n\t\t\t\t\t\tc0.252-1.79,1.569-4.898,3.883-4.603c1.266,0.193,1.987,1.876,0.644,4.281c-0.739,1.323-1.79,2.002-2.322,2.279\n\t\t\t\t\t\tc0.213,0.858,0.64,1.375,1.301,1.421c0.713,0.049,1.354-0.274,1.843-0.843c0.154-0.18,0.277-0.33,0.393-0.312\n\t\t\t\t\t\tC169.872,37.181,169.841,37.405,169.767,37.669z M166.053,35.928c0.386-0.343,1.023-1.013,1.459-2.014\n\t\t\t\t\t\tc0.637-1.461,0.445-2.312,0.018-2.358c-0.569-0.061-1.407,1.512-1.485,3.318C166.029,35.25,166.031,35.602,166.053,35.928z\n\t\t\t\t\t\t M174.271,30.85c-0.17-0.386-0.72-0.87-1.799-0.714c-1.189,0.178-2.432,1.418-2.263,3.34c0.164,1.861,0.986,2.894,1.051,4.055\n\t\t\t\t\t\tc0.06,1.08-0.326,1.672-0.87,2.138c-0.257,0.219-0.283,0.328-0.229,0.428c0.054,0.099,0.193,0.148,0.274,0.163\n\t\t\t\t\t\tc0.317,0.085,2.019,0.054,2.875-1.728c0.914-1.871-0.402-3.806-0.759-4.771c-0.391-1.049-0.161-1.942,0.416-2.143\n\t\t\t\t\t\tc0.642-0.224,0.869,0.281,1.138,0.203C174.391,31.739,174.445,31.245,174.271,30.85z M153.379,42.311\n\t\t\t\t\t\tc0.913-0.181,0.801-1.27,0.726-1.99c-0.097-0.932-0.125-3.023,0.072-4.446c0.223-1.611,0.891-3.178,2.191-3.604\n\t\t\t\t\t\tc1.146-0.376,1.619,0.165,1.894-0.117c0.232-0.238-0.183-1.484-1.721-1.509c-1.773-0.029-2.703,2.153-2.97,2.93\n\t\t\t\t\t\tc0,0-0.437-1.385-1.277-1.166c-0.465,0.122-0.385,0.411-0.432,2.009c-0.047,1.596-0.18,3.627,0.031,5.384\n\t\t\t\t\t\tC152.104,41.557,152.467,42.492,153.379,42.311z"/>\n\t\t\t\t</g>\n\t\t\t</g>\n\t\t</g>\n\t\t<path fill="#FFF200" d="M157.366,27.533c0.539-0.235,1.102-0.034,1.257,0.45c0.155,0.484-0.156,1.067-0.695,1.302\n\t\t\tc-0.539,0.236-1.102,0.034-1.257-0.45C156.515,28.351,156.827,27.768,157.366,27.533z M119.523,43.443\n\t\t\tc-0.307-0.039-0.601,0.927-2.176,1.357c-0.184-1.752-0.28-2.686-0.278-3.95c0.003-1.842,0.643-2.734,0.871-2.994\n\t\t\tc0.889-0.302,1.761-0.595,2.492-0.854c1.426-0.504,2.373-0.854,3.031-1.233c1.285-0.739,2.168-1.752,2.44-2.628\n\t\t\tc0.263-0.848,0.108-1.352-0.159-1.391c-0.268-0.04-0.628,0.384-1.766,0.902c-1.137,0.518-2.508,1.022-4.332,1.63\n\t\t\tc-1.822,0.608-4.417,1.551-6.091,2.872c-1.67,1.319-2.117,2.651-2.225,3.43c-0.095,0.645,0.021,0.83,0.164,0.871\n\t\t\tc0.261,0.074,0.47-0.245,0.779-0.608c0.34-0.4,1.422-1.42,3.907-2.374c-2.038,1.607-1.804,5.732-1.598,7.467\n\t\t\tc-1.159,0.567-1.417,1.691-1.45,2.084c-0.032,0.393,0.058,0.739,0.21,0.777c0.161,0.04,0.533-0.636,1.571-0.962\n\t\t\tc0.69,4.555,1.107,9.428,0.505,11.861c-0.075,0.302-0.256,0.905,0.074,1.007c0.727,0.155,1.8-0.473,2.483-1.972\n\t\t\tc0.704-1.547,0.439-5.103-0.081-9.294c-0.117-0.94-0.224-1.812-0.321-2.628c1.211-0.291,1.874-1.491,2.028-1.952\n\t\t\tC119.785,44.311,119.815,43.491,119.523,43.443z M129.771,51.4c-0.265-0.039-0.868-0.51-1.296-1.466\n\t\t\tc-0.428-0.956-0.666-2.03-0.996-4.399c-0.33-2.376-0.494-2.793-1.161-2.785c-1.585,0.11-1.332,3.047-1.225,4.474\n\t\t\tc-0.121,2.203-0.473,3.913-1.194,3.923c-0.693,0.009-1.276-0.779-1.295-4.642c0.132-5.085,2.759-4.477,3.032-4.377\n\t\t\tc0.26,0.094,0.382,0.213,0.49,0.129c0.164-0.13-0.002-0.695-0.34-1.104s-1.109-0.875-2.144-0.688\n\t\t\tc-2.001,0.292-3.796,3.05-3.633,7.367c0.164,4.356,1.895,6.263,3.668,6.12c2.348-0.172,2.497-4.137,2.494-4.163\n\t\t\tc0.1,0.365,0.627,1.421,1.498,1.957c1.252,0.833,2.599,0.21,2.629-0.029C130.33,51.477,130.036,51.439,129.771,51.4z\n\t\t\t M130.853,36.765c-0.397,0.085-0.709,0.243-0.775,0.358c-0.29,0.497,0.606,0.526,1.43,1.498c0.597,0.704,1.088,1.814,1.094,4.28\n\t\t\tc0.007,2.777-0.854,4.389-0.854,4.389s-0.213-3.202-0.935-5.373c-0.606-1.823-1.491-2.673-2.404-2.919\n\t\t\tc-0.85-0.228-1.487,0.01-1.658,0.238s-0.076,0.389,0.168,0.665c0.244,0.276,1.377,1.501,2.216,4.524\n\t\t\tc0.789,2.842,0.893,3.765,1.024,4.472c0.131,0.706,0.258,1.386,0.905,1.443c0.46,0.04,1.424-0.8,2.219-2.96\n\t\t\tc0.423-1.054,0.808-2.278,1.011-3.944c0.381-3.08-0.149-4.973-0.91-5.796C132.854,37.066,132.088,36.542,130.853,36.765z\n\t\t\t M139.225,47.001c1.948-0.224,3.569-3.052,2.982-6.673c-0.106-0.653-0.375-1.867-0.943-2.583\n\t\t\tc-0.426-0.538-0.973-0.891-1.403-0.615c-0.26,0.236-0.128,0.378,0.164,1.215c0.292,0.836,0.412,1.987,0.38,3.117\n\t\t\tc-0.039,1.394-0.291,2.961-1.279,2.961c-1.021,0-1.49-1.887-1.492-3.975c-0.002-2.093,0.829-4.31,2.061-4.3\n\t\t\tc0.628,0.012,0.855,0.441,1.052,0.375c0.272-0.091,0.412-0.951-0.313-1.592c-0.413-0.365-1.001-0.466-1.56-0.397\n\t\t\tc-2.419,0.301-3.811,3.434-3.624,6.951C135.449,45.214,137.077,47.248,139.225,47.001z M145.325,44.575\n\t\t\tc1.515,0.026,2.403-2.327,2.68-3.779c0.203,0.594,0.482,1.172,0.864,1.664c1.306,1.69,2.804,1.247,3.31,0.984\n\t\t\tc0.268-0.139,0.403-0.329,0.379-0.451c-0.014-0.073-0.086-0.121-0.221-0.12c-0.761-0.005-1.35-0.307-1.926-1.249\n\t\t\tc-0.545-0.911-0.744-3.102-0.662-6.232c0.076-2.898-0.336-3.145-0.888-3.191c-0.947-0.078-1.215,0.941-1.324,1.842\n\t\t\tc-0.15,1.235-0.122,2.68-0.105,3.1c0.01,0.243,0.023,0.688,0.077,1.236c-0.174,1.228-0.597,3.492-1.341,3.448\n\t\t\tc-0.899-0.053-0.589-3.584-0.614-4.841c-0.02-1.043-0.045-2.252-0.962-3.028c-0.822-0.696-1.46-0.372-1.57-0.263\n\t\t\tc-0.175,0.173-0.065,0.431,0.043,0.857c0.12,0.474,0.2,2.01,0.238,4.057C143.342,40.679,142.937,44.431,145.325,44.575z\n\t\t\t M157.349,32.822c-1.42-0.098-1.575,2.98-1.534,4.971c0.052,2.5,0.824,3.789,2.097,3.61c0.757-0.106,1.073-0.619,1.056-0.869\n\t\t\tc-0.025-0.362-0.44-0.311-0.717-1.207c-0.34-1.504-0.41-2.85-0.249-4.672C158.149,33.014,157.756,32.85,157.349,32.822z\n\t\t\t M158.843,31.284c0.26,0.093,0.283-0.215,1.269-0.659c0.037-0.016,0.074-0.029,0.111-0.043c-0.167,0.823-0.362,2.163-0.43,4.646\n\t\t\tc-0.122,4.802,1.093,5.506,2.084,5.469c0.708-0.026,1.348-0.566,1.35-0.83c0.003-0.321-0.308-0.301-0.523-0.704\n\t\t\tc-0.487-0.802-0.629-2.096-0.625-4.917c0.044-1.726,0.21-3.044,0.374-4.116c0.462-0.075,1.018-0.172,1.715-0.317\n\t\t\tc2.379-0.495,2.569-2.178,2.294-2.358c-0.195-0.128-0.631,0.233-1.238,0.475c-0.829,0.331-1.742,0.524-2.532,0.685\n\t\t\tc0.024-0.163,0.046-0.321,0.064-0.473c0.165-1.38-0.145-1.597-0.572-1.57c-0.738,0.048-1.35,1.713-1.615,2.592\n\t\t\tc-0.501,0.186-0.914,0.419-1.261,0.725C158.762,30.371,158.575,31.188,158.843,31.284z M169.464,37.457\n\t\t\tc-0.163,0.581-1.266,3.171-3.484,2.843c-2.028-0.3-2.627-3.201-2.293-5.576c0.252-1.79,1.569-4.898,3.883-4.603\n\t\t\tc1.266,0.193,1.987,1.876,0.644,4.281c-0.739,1.323-1.79,2.002-2.322,2.279c0.213,0.858,0.64,1.375,1.301,1.421\n\t\t\tc0.713,0.049,1.354-0.274,1.843-0.843c0.154-0.18,0.277-0.33,0.393-0.312C169.569,36.97,169.538,37.194,169.464,37.457z\n\t\t\t M165.75,35.716c0.386-0.343,1.023-1.013,1.459-2.014c0.637-1.461,0.445-2.312,0.018-2.358c-0.569-0.061-1.407,1.512-1.485,3.318\n\t\t\tC165.725,35.038,165.728,35.391,165.75,35.716z M173.968,30.638c-0.17-0.386-0.72-0.87-1.799-0.714\n\t\t\tc-1.189,0.178-2.432,1.418-2.263,3.34c0.164,1.861,0.986,2.894,1.051,4.055c0.06,1.08-0.326,1.672-0.87,2.138\n\t\t\tc-0.257,0.219-0.283,0.328-0.228,0.428c0.054,0.099,0.193,0.148,0.274,0.163c0.317,0.085,2.019,0.054,2.875-1.728\n\t\t\tc0.914-1.871-0.402-3.805-0.759-4.77c-0.391-1.049-0.161-1.943,0.416-2.143c0.642-0.224,0.869,0.281,1.138,0.203\n\t\t\tC174.087,31.527,174.141,31.033,173.968,30.638z M153.075,42.099c0.913-0.181,0.801-1.27,0.726-1.99\n\t\t\tc-0.097-0.932-0.125-3.023,0.072-4.446c0.223-1.611,0.891-3.178,2.191-3.604c1.146-0.376,1.619,0.165,1.894-0.117\n\t\t\tc0.232-0.238-0.183-1.484-1.721-1.509c-1.773-0.029-2.703,2.153-2.97,2.93c0,0-0.437-1.385-1.277-1.166\n\t\t\tc-0.465,0.122-0.385,0.411-0.432,2.009c-0.047,1.596-0.18,3.627,0.031,5.384C151.801,41.345,152.163,42.28,153.075,42.099z"/>\n\t</g>\n\t\n\t\t<linearGradient id="cadbury_logo_2_" gradientUnits="userSpaceOnUse" x1="151.1472" y1="251.8356" x2="178.1811" y2="232.0889" gradientTransform="matrix(0.99 0.1407 0.1407 -0.99 -56.0405 236.3141)">\n\t\t<stop offset="0" style="stop-color:#986E3A"/>\n\t\t<stop offset="0.511" style="stop-color:#D6B37C"/>\n\t\t<stop offset="1" style="stop-color:#9A673B"/>\n\t</linearGradient>\n\t<path id="cadbury_logo_1_" fill="url(#cadbury_logo_2_)" d="M160.872,15.197c0.086-0.372,0.157-0.937-0.174-1.216\n\t\tc-0.116-0.072-0.243-0.08-0.381-0.036c-0.196,0.076-0.326,0.259-0.39,0.459c-0.353,0.937-0.622,1.924-1.184,2.793\n\t\tc-0.168,0.259-0.395,0.583-0.658,0.576c-0.065-0.004-0.117-0.039-0.155-0.17c-0.175-0.763,0.2-1.636,0.454-2.383\n\t\tc0.091-0.22,0.15-0.53,0.046-0.738c-0.059-0.109-0.167-0.174-0.284-0.184c-0.334-0.017-0.534,0.258-0.7,0.522\n\t\tc-0.606,1.125-1.099,2.418-1.915,3.445c-0.122,0.126-0.242,0.298-0.432,0.28c-0.082-0.012-0.148-0.077-0.178-0.183\n\t\tc-0.106-0.462,0.035-1.152,0.243-1.692c0.152-0.393,0.327-0.638,0.402-1.033c0.03-0.212-0.035-0.402-0.231-0.509\n\t\tc-0.105-0.045-0.209-0.066-0.358,0.006c-0.282,0.153-0.53,0.382-0.862,0.444c0.066-0.236,0.151-0.459,0.136-0.708\n\t\tc-0.02-0.211-0.089-0.449-0.284-0.531c-0.189-0.069-0.423-0.018-0.597,0.134c-0.499,0.5-0.529,1.315-0.303,1.961\n\t\tc-0.157,0.821-0.547,1.604-0.992,2.3c-0.166,0.224-0.328,0.479-0.608,0.514c-0.188,0.001-0.279-0.133-0.327-0.364\n\t\tc0.275-0.536,0.607-1.127,0.758-1.694c0.119-0.441,0.282-1.121,0.01-1.539c-0.058-0.102-0.194-0.172-0.338-0.161\n\t\tc-0.27,0.011-0.47,0.209-0.628,0.407c-0.595,0.865-0.739,1.875-0.754,2.904c-0.107,0.328-0.283,0.666-0.545,0.914\n\t\tc-0.124,0.123-0.334,0.24-0.5,0.161c-0.094-0.062-0.15-0.161-0.169-0.275c-0.096-0.637,0.147-1.258,0.35-1.852\n\t\tc0.362-1.059,0.739-1.311,0.551-1.759c-0.073-0.165-0.239-0.27-0.407-0.277c-0.219-0.021-0.469,0.105-0.604,0.312\n\t\tc-0.295,0.49-0.602,1.004-1.025,1.409c-0.249,0.222-0.459,0.429-0.829,0.589c-0.023-0.205-0.069-0.415-0.131-0.603\n\t\tc-0.197-0.605-0.578-1.196-1.284-1.15c-0.245,0.015-0.485,0.143-0.651,0.244c0.09-0.875,0.321-1.735,0.74-2.5\n\t\tc0.255-0.467,0.664-0.939,0.713-1.334c0.026-0.212-0.065-0.419-0.243-0.524c-0.186-0.096-0.374-0.096-0.583,0.004\n\t\tc-0.423,0.242-0.674,0.708-0.888,1.135c-0.402,0.443-1.005,0.643-1.614,0.777c-0.808,0.21-1.324-0.023-1.864-0.518\n\t\tc-0.147-0.116-0.328-0.243-0.541-0.226c-0.222-0.002-0.444,0.199-0.531,0.354c-0.114,0.182-0.118,0.435-0.006,0.61\n\t\tc0.457,0.663,1.038,1.173,1.296,2.062c0.059,0.206,0.106,0.411,0.107,0.626c-1.579,0.918-2.489,2.841-2.42,4.606\n\t\tc-0.157,0.514-0.311,1.399-0.913,1.365c-0.304-0.063-0.729-1.071,0.118-4.043c0.044-0.447,0.176-0.92-0.058-1.35\n\t\tc-0.134-0.242-0.449-0.288-0.698-0.28c-1.978,0.201-3.175,2.511-4.069,4.116c-1.125,1.8-2.473,2.883-3.843,3.561\n\t\tc-3.361,1.665-7.159,1.041-7.425-2.664c-0.255-3.531,1.91-7.598,6.584-9.522c3.61-1.485,5.994-0.295,5.953,1.836\n\t\tc-0.02,1.037-0.719,4.227-5.229,5.846c-0.775,0.278-2.187,0.391-2.762-0.277c-0.902-1.064-0.583-2.368-0.007-3.289\n\t\tc1.005-1.489,2.717-2.402,4.498-2.85c0.146-0.029,0.267-0.096,0.342-0.259c0.044-0.111,0.042-0.214-0.014-0.355\n\t\tc-0.096-0.19-0.278-0.234-0.459-0.215c-1.623,0.229-3.108,0.916-4.264,1.891c-1.366,1.243-2.38,2.854-2.253,4.68\n\t\tc0.092,1.191,0.898,2.265,2.078,2.571c1.308,0.292,3.093-0.317,4.279-0.927c2.478-1.401,4.552-3.835,4.883-6.584\n\t\tc0.121-1.23-0.477-2.475-1.557-3.129c-1.735-0.995-5.294-0.958-8.865,1.322c-1.286,0.823-3.225,2.255-4.59,4.855\n\t\tc-1.364,2.601-1.449,6.171,0.654,8.159c1.531,1.447,4.03,1.905,6.552,1.207c1.826-0.506,3.653-1.959,5.125-3.85\n\t\tc-0.081,1.148,0.661,1.663,1.375,1.677c1.581,0.02,2.267-1.975,2.267-1.975c0.19,0.575,0.264,0.837,0.872,0.994\n\t\tc1.026,0.261,1.476-0.572,1.657-1.215c0.175,0.408,0.636,0.79,1.117,0.739c0.759-0.073,1.291-0.769,1.577-1.373\n\t\tc1.009-2.136,1.002-4.585,0.396-6.807c0.431-0.025,0.712-0.134,1.084-0.257c0.21-0.068,0.373-0.122,0.579-0.205\n\t\tc-0.345,1.389-0.567,2.831-0.558,4.315c0.044,0.98,0.096,2.118,0.788,2.783c0.298,0.306,0.729,0.407,1.152,0.268\n\t\tc0.539-0.158,0.988-0.897,1.171-1.439c0.132-0.331,0.325-1.121,0.373-1.659c0.214-0.151,0.435-0.286,0.641-0.451\n\t\tc0.085-0.069,0.13-0.101,0.212-0.169c-0.101,0.607-0.207,1.302-0.064,1.912c0.091,0.424,0.355,0.799,0.773,0.9\n\t\tc0.688,0.142,1.395-0.759,1.801-1.273c0.137,0.243,0.307,0.499,0.589,0.593c0.332,0.109,0.784-0.029,1.067-0.36\n\t\tc0.826-0.967,1.176-2.288,1.596-3.486l0.045-0.125c0.215-0.056,0.397-0.136,0.595-0.257c-0.181,0.503-0.33,1.025-0.396,1.563\n\t\tc-0.089,0.655,0.013,1.49,0.571,1.83c0.286,0.15,0.666-0.028,0.87-0.193c0.658-0.565,1.088-1.383,1.492-2.119l0.031-0.05\n\t\tc-0.014,0.404,0.055,0.946,0.254,1.288c0.114,0.201,0.361,0.368,0.583,0.35c0.677-0.078,1.008-0.707,1.391-1.23\n\t\tc0.066-0.09,0.136-0.209,0.177-0.266c-0.169,0.857-0.485,1.799-0.675,2.663c-0.049,0.22-0.204,0.705-0.125,0.998\n\t\tc0.089,0.332,0.34,0.563,0.83,0.614c0.091,0.008,0.139-0.037,0.148-0.106c-0.116-0.546,0.002-0.992,0.22-1.791\n\t\tC160.065,18.438,160.489,16.803,160.872,15.197z M137.211,19.107c-0.455,1.511-1.221,3.579-1.733,4.151\n\t\tc-0.694,0.776-1.06-0.081-0.88-0.598c0.272-1.31,0.914-3.001,1.948-3.999c0.137-0.115,0.473-0.4,0.664-0.182\n\t\tC137.279,18.616,137.261,18.942,137.211,19.107z M141.501,20.641c-0.125,0.378-0.278,0.806-0.557,1.127\n\t\tc-0.081,0.099-0.235,0.216-0.368,0.117c-0.328-0.263-0.291-0.978-0.222-1.421c0.131-0.847,0.558-1.744,1.347-2.201l0.043-0.022\n\t\tC141.852,19.053,141.705,19.865,141.501,20.641z M145.322,20.76c-0.086,0.025-0.165,0.006-0.233-0.034\n\t\tc-0.314-0.245-0.397-0.973-0.422-1.517c-0.02-0.431,0.041-1.236,0.425-1.577c0.242-0.179,0.531-0.126,0.629,0.136\n\t\tc0.209,0.505,0.213,1.379,0.116,1.958C145.779,20.072,145.676,20.676,145.322,20.76z"/>\n</g>\n</svg>\n\n')}brandSvg(t,e){const i=t.toSVG(2),n=t.getBoundingBox(),A=n.x2-n.x1,a=t.toPathData(3),[r,o,s]=eo(e);if(!r)return"";const c=$r("defs");r.appendChild(c),io(r,c,e);const l=.23*o,g=.94*s,h=.04*s,d=.53*o,u=$r("g");r.appendChild(u),u.setAttribute("transform",`translate(${h} ${d}) rotate(-21)`);const w=_r(l,g);w.setAttribute("opacity","0"),u.appendChild(w);const B=$r("g");u.appendChild(B);const p=(()=>{const t=$r("g"),e=$r("defs");t.appendChild(e),e.appendChild(no(3,7,4,"shadow"));const n=$r("g");t.appendChild(n),n.setAttribute("filter","url(#shadow)"),n.innerHTML=i;const a=$r("g");t.appendChild(a),a.setAttribute("fill","red"),a.setAttribute("stroke","red"),a.setAttribute("stroke-width","9"),a.innerHTML=i;const r=$r("g");t.appendChild(r),r.setAttribute("fill","#9d2621"),r.setAttribute("transform","translate(1,1)"),r.innerHTML=i;const o=$r("g");t.appendChild(o),o.setAttribute("fill","yellow"),o.innerHTML=i;return new so(t).transform((([t,e])=>[t,e+(A/2-t)**2/(2.9*A)])),t})();B.appendChild(p);return ao(B,b(I)(a),l,g),Ao(r.outerHTML)}}function go(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class ho extends Zr{constructor(t,e){super(),go(this,"moduleName","Maltesers"),go(this,"shortLength",5),go(this,"backgroundSvg",void 0),go(this,"backgroundShortSvg",void 0),go(this,"indicator",(t=>t?1:0)),this.backgroundSvg=t,this.backgroundShortSvg=e}svgPreview(t){return this.svg(t)}svgPrint(t){return this.svg(t)}svg(t){const e=cn("data:application/octet-stream;base64,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ZWxmIE1ha2VyIDIuMy41AABNAGEAbAB0AGUAcwBlAHIAcwBSAGUAZwB1AGwAYQByAABNYWx0ZXNlcnNSZWd1bGFyAABNAGEAbAB0AGUAcwBlAHIAcwAATWFsdGVzZXJzAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAAAAAAACAAAAAAAA/4MAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAAABAAIBAgEDAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQCsAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAljb250cm9sTEYJY29udHJvbENSB0FwLmxpZ2EHQWoubGlnYQdFdC5saWdhB0VmLmxpZ2EHRWoubGlnYQdFay5saWdhB0VsLmxpZ2EHRWIubGlnYQdGdC5saWdhB0ZoLmxpZ2EHRmsubGlnYQdGbC5saWdhB0ZiLmxpZ2EHSHQubGlnYQdIZi5saWdhB0l0LmxpZ2EHSXAubGlnYQdJZi5saWdhB0lqLmxpZ2EHSWwubGlnYQdJYi5saWdhB0p0LmxpZ2EHSmYubGlnYQdKaC5saWdhB0prLmxpZ2EHSmwubGlnYQdKYi5saWdhB0t0LmxpZ2EHS3AubGlnYQdLeS5saWdhB0xqLmxpZ2EHTWoubGlnYQdNaC5saWdhB01mLmxpZ2EHTnQubGlnYQdOZi5saWdhB09mLmxpZ2EHT3oubGlnYQdQcS5saWdhB1B3LmxpZ2EHUHIubGlnYQdQdC5saWdhB1B5LmxpZ2EHUHUubGlnYQdQaS5saWdhB1BmLmxpZ2EHUGgubGlnYQdQai5saWdhB1BrLmxpZ2EHUGwubGlnYQdQei5saWdhB1B4LmxpZ2EHUHYubGlnYQdQYi5saWdhB1BuLmxpZ2EHUG0ubGlnYQdScC5saWdhB1JmLmxpZ2EHUmoubGlnYQdUdC5saWdhB1RmLmxpZ2EHVGgubGlnYQdUay5saWdhB1RsLmxpZ2EHVGIubGlnYQdVdC5saWdhB1VzLmxpZ2EHVWYubGlnYQdWdC5saWdhB1ZzLmxpZ2EHVmYubGlnYQdWbC5saWdhB1d0LmxpZ2EHV2YubGlnYQdYcC5saWdhB1l0LmxpZ2EHWWkubGlnYQdZZi5saWdhB1loLmxpZ2EHWWwubGlnYQdZay5saWdhB1liLmxpZ2EHQWYubGlnYQdDeS5saWdhB0VoLmxpZ2EHR3IubGlnYQdPcC5saWdhB2J0LmxpZ2EHYnIubGlnYQdiZi5saWdhB2JqLmxpZ2EHYnoubGlnYQdkdC5saWdhB2VmLmxpZ2EHZnQubGlnYQdmaC5saWdhB2ZiLmxpZ2EHZmsubGlnYQdnai5saWdhB2pqLmxpZ2EHeWoubGlnYQd0dC5saWdhB3RmLmxpZ2EHdGgubGlnYQd0aS5saWdhB3RrLmxpZ2EHdGwubGlnYQh0dGgubGlnYQhlZmYubGlnYQhlZmIubGlnYQdmZi5saWdhB2ZpLmxpZ2EHZmwubGlnYQAAAAAAAAH//wACAAEAAAAMAAAAHAAAAAIAAgADADoAAQA7AKsAAgAEAAAAAgAAAAEAAAAKAB4ALAABbGF0bgAIAAQAAAAA//8AAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQQIAB0AQABaAGQAngDIANIA5AEWAUgBYgFsAYYBmAGyAkQCXgKQAqoCzALeAugDIgNMA1YDdAOuA7gDwgP+AAMACAAOABQAjQACACUAPAACACkAOwACAC8AAQAEAI4AAgA4AAcAEAAWABwAIgAoAC4ANACPAAIAJwBCAAIAIQBBAAIAKwBAAAIAKgA/AAIAKQA+AAIAJQA9AAIAMwAFAAwAEgAYAB4AJABHAAIAIQBGAAIAKwBFAAIAKgBEAAIAJwBDAAIAMwABAAQAkAACADEAAgAGAAwASQACACUASAACADMABgAOABQAGgAgACYALABPAAIAIQBOAAIAKwBNAAIAKQBMAAIAJQBLAAIALwBKAAIAMwAGAA4AFAAaACAAJgAsAFUAAgAhAFQAAgArAFMAAgAqAFIAAgAnAFEAAgAlAFAAAgAzAAMACAAOABQAWAACADgAVwACAC8AVgACADMAAQAEAFkAAgApAAMACAAOABQAXAACACUAWwACACcAWgACACkAAgAGAAwAXgACACUAXQACADMAAwAIAA4AFACRAAIALwBgAAIAOQBfAAIAJQASACYALAAyADgAPgBEAEoAUABWAFwAYgBoAG4AdAB6AIAAhgCMAHIAAgAsAHEAAgAtAHAAAgAhAG8AAgA1AG4AAgA3AG0AAgA5AGwAAgArAGsAAgAqAGoAAgApAGkAAgAnAGgAAgAlAGcAAgAoAGYAAgA0AGUAAgA4AGQAAgAzAGMAAgAxAGIAAgA2AGEAAgAwAAMACAAOABQAdQACACkAdAACACUAcwACAC8ABgAOABQAGgAgACYALAB7AAIAIQB6AAIAKwB5AAIAKgB4AAIAJwB3AAIAJQB2AAIAMwADAAgADgAUAH4AAgAlAH0AAgAyAHwAAgAzAAQACgAQABYAHACCAAIAKwCBAAIAJQCAAAIAMgB/AAIAMwACAAYADACEAAIAJQCDAAIAMwABAAQAhQACAC8ABwAQABYAHAAiACgALgA0AIwAAgAhAIsAAgAqAIoAAgArAIkAAgAnAIgAAgAlAIcAAgAoAIYAAgAzAAUADAASABgAHgAkAJYAAgA5AJUAAgApAJQAAgAlAJMAAgAxAJIAAgAzAAEABACXAAIAMwADAAgAEAAYAKgAAwAlACEApwADACUAJQCYAAIAJQAHABAAFgAcACIAKAAuADQAqwACACsAqgACACgAqQACACUAnAACACoAmwACACEAmgACACcAmQACADMAAQAEAJ0AAgApAAEABACeAAIAKQAHABAAGAAeACQAKgAwADYApgADADMAJwClAAIAKwCkAAIAKgCjAAIAKACiAAIAJwChAAIAJQCgAAIAMwABAAQAnwACACkAAQAdAAYACAAKAAsADAANAA4ADwAQABEAEgATABQAFQAXABkAGgAbABwAHQAeACEAIwAkACUAJgApADMAOAAAAAEAAAAKAB4ALAABbGF0bgAIAAQAAAAA//8AAQAAAAFrZXJuAAgAAAABAAAAAQAEAAIAAAABAAgAAQPGAAQAAABEAJIAnADSAOABIgEoATYBPAFKAVABXgFkAW4BfAGKAawBsgHAAcYB1AHiAewB/gIIAhYCSAJiAnAChgKcAqoCvALKAtAC6gL0AvoDAAMKAxADGgMgAyYDLAMyAzgDOAMyAz4DRANOAz4DVANaA2ADIANmA2wDcgN4A34DiAOOA5gDngOkA7IDvAACAC7//AA3//IADQAl/+oAKP/8ACn/9AAq//AAK//6ACz//gAt//4AMf/qADP//AA0//wANf/+ADb/+AA5//QAAwAt//wALv/8ADb//AAQACT//AAl/+wAJv/6ACf//AAp/+wAKv/0ACv/+gAs//gALf/8AC//7gAx//gAMv/0ADT/9gA3/+oAOP/6ADn/5AABADf/+gADADX//AA3/+gAOf/6AAEALv/2AAMAKP/8ACn/6AAy/+QAAQAu//IAAwAo/+4AL//2ADX/5gABACT/8AACABgAAgAoAAQAAwAo//4ALv/wADL/+AADACf/9gAv/+4Ao//sAAgAKf/qACv/9AAu//wAL//uADH/7gAy//IAN//mAJX/9AABADYADgADACAABAAjAAQAM//4AAEAMv/8AAMAJv/+ACr/+AA3//4AAwAo//gALv/0AJn/7AACACMAAgAl/+wABAAk//wAL//8ADT/9AA4//4AAgAt//IAq//iAAMAJf/sACb/+AA3//wADAAk//wAJv/+ACj/+gAp/+AAK//+ACz/9gAt//wAL//qADH/7AAy//IAN//cAKP/4gAGACQAAgAl/9oAK//yAC//4gAx/+gAMv/8AAMAKQB+ADL/7ACeAIgABQAg//wAIv/4ACb//AAu//YANQAEAAUAKf/0ACr/+AAv//QAM//mAKP/3gADACEAHAAkAAIALv/4AAQAJf/0AC3//gAv//wAmf/8AAMAJP/wACf/+AAp/+4AAQAk//oABgAg//QAIf/wACj/9gAu/+wAL//0ADP/9AACACH//gA3//IAAQApAEIAAQAnACgAAgAzADQAqgAoAAEAMwA0AAIAMwAyAKEARgABADL/6gABADMALAABACkANAABAJoAGAABADMAMgABACkAOAABADMAMAACACUAEgAzAC4AAQApAHgAAQApADYAAQAzAC4AAQAzADgAAQAzAEIAAQAzAEwAAQAz//IAAQAnAEgAAgAl/+4Amv/oAAEAKQBiAAIAKQBaAJ4AUAABACkAVgABAKEARAADADMANgCaABIAogBKAAIAJwAsAKEARgACAC3/8gA3/+oAAQBEAAYABwAIAAkACgAMABEAFAAVABgAHQAgACEAIgAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOQA8AD0APgBIAEkASwBMAE0AUABRAFkAWgBcAF4AXwBhAGgAagB+AIEAhACIAI0AkQCYAJoAnQCeAJ8AoAChAKkAqgAAAAAAAQAAAADUGBYRAAAAANfpcqUAAAAA1+lypQ=="),i=""!==t?(n=t).charAt(0).toUpperCase()+n.substr(1).toLowerCase():"";var n;const A=e.getPath(i,0,72,72),a=t.length<this.shortLength,r=a?this.backgroundShortSvg:this.backgroundSvg;return this.brandSvg(A,r,a)}brandSvg(t,e,i){const n=t.toSVG(2),A=t.getBoundingBox(),a=A.y2-A.y1,r=A.x2-A.x1,o=t.toPathData(3),[s,c,l]=eo(e);if(!s)return"";const g=$r("defs");let h,d,u,w;s.appendChild(g),io(s,g,e),i?(h=.275*c,d=l/2*1.1,u=.22*l,w=.32*c):(h=.22*c*1.1,d=.8*l,u=.067*l,w=.33*c);const B=$r("g");s.appendChild(B),B.setAttribute("transform",`translate(${u} ${w}) rotate(-10)`);const p=_r(h,d);p.setAttribute("opacity","0"),B.appendChild(p);const m=$r("g");B.appendChild(m);const E=(()=>{const t=$r("g"),e=$r("g");t.appendChild(e),e.setAttribute("stroke","#5C1A0D"),e.setAttribute("stroke-width","4"),e.setAttribute("transform","translate(1,1)"),e.innerHTML=n;const i=$r("g");t.appendChild(i),i.setAttribute("fill","#FFE386"),i.setAttribute("transform","translate(1,1)"),i.innerHTML=n;const A=$r("g");t.appendChild(A),A.setAttribute("fill","white"),A.innerHTML=n;const o=new so(t);return o.transform((([t,e])=>[t,e+((r-t)*e)**2/(5e4*r)])),o.transform((([t,e])=>[t,e+(r/3-t)**2/r*this.indicator(t<r/3)])),o.transform((([t,e])=>[t-(a-e)*(r-t)/800,e])),t})();m.appendChild(E);return ao(m,b(I)(o),h,d),s.outerHTML}}function uo(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class wo extends Zr{constructor(...t){super(...t),uo(this,"moduleName","Vegemite")}svgPreview(t,e){return this.svgElement(t,e)}svgPrint(t,e){return this.svgElement(t,e)}svgElement(t,e){const i=cn("data:application/octet-stream;base64,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DOYNZA3mDlQOyg88D54QEBCGEQARchHsEmIS1BOWFAwUghTwFWIV1BaiFxQXkhgEGMYZdBomGtQbfhwYHL4dYB3+HpgfPh/oIJYhPCHmIpQjRiPsJJolSCXuJpQnQifoKJIpRAAmAAn/8QAK//sADP/7AA3/+wAO//sAD//7ABD/+wAR//sAEv/7ABP/+wAU//sAFf/xABb/8QAZ//sAHf/2AB7/+wAf//sAIP/xACH/+wAi//sAI//7ACT/+wAl//EAJv/2ACf/8QAo//sAKf/2ACr/+wAr//sALP/sAC3/7AAu/+IAL//dADD/9gAx/+wAMv/7ADP/+wA0//YAKwAG//EACP/nAAn/4gAK/9MAC//iAAz/9gAN/+IADv/sAA//4gAQ/9gAEf/iABL/1QAT//EAFP/nABX/8QAW/9gAMf/TADL/pgAz//MANP/nADX/8QA2//EAN//7ADj/7gA5//YAOv/7ADv/2AA8//EAPf/2AD7/9gA///EAQP/sAEH/+wBC/+wAQ//xAET/7ABF/+wARv/2AEf/3QBI/90ASf/EAEr/zgBL//YAKwAG//YAB//2AAn/3QAL/+wADP/sAA3/8QAO//YAD//sABD/8QAR/+wAEv/iABP/5wAU/+wAFf/dABb/7AAX/78AMf/YADL/sAAz/+IANP/iADX/8QA2/+cAN//xADj/3QA5/+wAOv/2ADv/4gA8//EAPf/xAD7/8QA///YAQP/YAEH/9gBC/+cAQ//sAET/7ABF/+wARv/xAEf/zgBI/9MASf/OAEr/zgBL/+wAKgAG//YAB//iAAj/4gAK/+IADP/dAA3/ugAO/+IAD//iABD/5wAR/+IAEv/dABP/yQAU/90AFf+mABb/0wAx/5gAMv/YADP/4gA0/9MANf/xADb/7AA3/+wAOP/iADn/7AA6//EAO//dADz/5wA9/+wAPv/sAD//5wBA/9gAQf/sAEL/zgBD/+wARP/YAEX/tQBG/90AR/+hAEj/oQBJ/8QASv+DAEv/7AAqAAb/8QAH/90ACP/YAAn/oQAL/8kADP/iAA3/sAAO/+cAD//YABD/4gAR/90AEv/bABP/4gAU/+IAFf/TABb/5wAg/+QAMf/nADL/3AAz//QANP/rADX/9AA2//IAN//4ADj/8AA5//QAOv/1ADv/7AA8/+oAPf/7AD7/9wA///IAQP/tAEH/+wBC/+IAQ//2AET/4wBF/7YARv/vAEf/pgBK/6MAS//yACYAB//TAAj/8QAK/84ADP/dAA3/9gAO//EAD//dABD/pgAR/8kAEv+6ABP/7AAU/90AFf/OADH/xAAy/5IAM//sADT/3QA1/+cANv/xADf/9gA4/90AO/9WADz/5wA9//EAPv/sAD//5wBA/84AQf/dAEL/0wBD/+cARP/nAEX/5wBG/+cAR//dAEj/2ABJ/7oASv/JAEv/4gAsAAb/+wAH//sACP/xAAn/zgAK/+cAC//dAAz/9gAN/9gADv/tAA//7AAQ/+kAEf/rABL/3QAT/90AFP/hABX/3QAW/90AMf/nADL/vwAz/+cANP/nADX/8QA2//EAN//sADj/5wA5//YAOv/2ADv/4gA8//EAPf/2AD7/+wA///sAQP/2AEH/+wBC/+wAQ//7AET/7ABF/9MARv/7AEf/yQBI/84ASf+wAEr/xABL/+cADgAG//sACf/xAAv/7AAN//sADv/7AA8AAAAR//EAEv/0ABP/9gAU//EAFf/xABb/7AAx//YAQP/2ACkABv/7AAf/9gAI//sACf/iAAr/5wAL/+wADP/vAA3/3QAO//sAD//qABD/8QAR/+wAEv/nABP/8QAU/+cAFf/iABb/7AAx/+cAMv/vADP//AA0/+cANf/7ADb//gA4//EAOf/8ADr//AA7/+kAPP/6AD3//QA+//4AP//7AEL/6gBD//0ARP/2AEX/7ABG//EAR//YAEj/4gBJ/+wASv/LAEv//AAsAAb/+wAH//EACP/2AAn/0wAK/+IAC//JAAz/5wAN/90ADv/iAA//7AAQ/+cAEf/sABL/3QAT/9MAFP/iABX/zgAW/+cAMf/YADL/xAAz/+wANP/dADX/6AA2//EAN//xADj/4wA5//EAOv/2ADv/7AA8/+wAPf/sAD7/9gA//+wAQP/iAEH/8QBC/90AQ//nAET/5wBF/8QARv/mAEf/xABI/8kASf+1AEr/rQBL/+IALAAG//sAB//7AAj/9gAJ/9MACv/2AAv/ugAM/+kADf/dAA7/9gAP/+wAEP/2ABH/8AAS//EAE//2ABT/5wAV/9gAFv/sADH/vwAy/9UAM//eADT/3wA1//EANv/xADf/9gA4/+IAOf/xADr/9gA7/+wAPP/xAD3/9gA+//EAP//2AED/2ABB//EAQv/nAEP/9gBE/+cARf/TAEb/8QBH/9gASP/YAEn/xgBK/78AS//xACsABv/7AAf/9gAI/+wACf/TAAr/5wAL/90ADP/lAA3/zgAO/90AD//dABD/7AAR/+IAEv/iABP/2AAU/+IAFf/JABb/5wAx/90AMv/EADP/6wA0/+EANf/wADb/8AA4/9wAOf/dADr/7AA7/9gAPP/sAD3/5wA+/+wAP//iAED/0wBB/+IAQv/YAEP/4gBE/84ARf/JAEb/4gBH/8kASP/OAEn/vwBK/8kAS//TACwABv/7AAf/3wAI/+cACf+wAAr/4wAL/8kADP/dAA3/xwAO/+cAD//dABD/7AAR/+cAEv/iABP/yQAU/9cAFf+/ABb/4gAa/+kAMf/YADL/uwAz/+EANP/dADb/6wA3//MAOP/lADn/8QA6//IAO//eADz/5wA9/+4APv/zAD//8ABA/+IAQf/2AEL/6gBD//YARP/kAEX/zABG/+8AR/+0AEj/uwBJ/64ASv+vAEv/5QAsAAb/+wAH/90ACP/nAAn/4gAK/9MAC//nAAz/3QAN//YADv/eAA//3QAQ/7AAEf/OABL/sAAT//sAFP/dABX/0wAW/9MAMf/iADL/iAAz//YANP/OADX/9gA2//EAN//xADj/0wA5//YAOv/zADv/gAA8//EAPf/7AD7/+wA///YAQP/OAEH/7gBC/84AQ//2AET/2ABF//sARv/2AEf/5wBI/+cASf/TAEr/4gBL/+wALAAG//sAB//2AAj/8QAJ/9gACv/nAAv/3QAM/+IADf/dAA7/4gAP/+IAEP/nABH/5wAS/9gAE//YABT/3QAV/84AFv/sADH/5wAy/78AM//nADT/2AA1/+cANv/nADf/7AA4/90AOf/sADr/7AA7/+cAPP/sAD3/8QA+/+wAP//xAED/4gBB//EAQv/dAEP/5wBE/+IARf/YAEb/5wBH/78ASP/HAEn/sABK/7UAS//dACsABv/xAAf/8QAI/+IACf/dAAr/0wAL/+IADP/iAA3/3QAO/+cAD//dABD/zgAR/9MAEv/EABP/0wAU/84AFv/dADH/4gAy/6EAM//jADT/3QA1/+wANv/sADf/5wA4/90AOf/nADr/8QA7/78APP/xAD3/9gA+/+wAP//nAED/3QBB/+cAQv/nAEP/5wBE/+IARf/OAEb/3QBH/8QASP/JAEn/lwBK/7oAS//YACkABv/sAAf/0wAI/90ACf/OAAr/3QAM/90ADf/EAA7/5wAP/9gAEP/YABH/3QAS/9MAE//YABT/4gAV/90AMf/sADL/wAAz/+8ANP/kADX/6wA2//AAN//2ADj/5AA5//EAOv/uADv/1gA8//QAPf/2AD7/8QA///AAQP/dAEH/7ABD/+gARP/YAEX/1QBG/+wAR/+3AEj/wwBJ/7UASv+wAEv/5gAeAAf/zgAi/+4AI//5ACT/7wAy/9AAM//pADT/sQA1/+sANv/nADf/5gA4/7oAOf/vADr/9wA7/9AAPP/sAD3/6wA+/+YAP//sAED/uwBB/+kAQv+7AEP/5ABE/9QARf+6AEb/0ABH/34ASP+SAEn/zQBK/5sAS//nABwAF//RACT//wAy/9EAM//uADT/5wA1/+8ANv/3ADf/7gA4/+gAOf/3ADr/+wA7/9oAPP/vAD3/9wA+/+4AP//vAED/4QBB//cAQv/nAEP/7wBE/+4ARf/QAEb/9wBH/8EASP/MAEn/wwBK/7sAS//nABwAF//QABv/+QAy/8EAM//zADT/6wA1//sANv/zADf/+wA4/+8AOf/zADr//gA7/+EAPP/vAD3/9wA+//kAP//3AED/4gBB//kAQv/jAEP/8wBE/+YARf/VAEb/+QBH/84ASP/JAEn/twBK/8EAS//rAB8ABv/7ABL/3wAX/8kAJf/5ACv/7wAy/7oAM//zADT/6wA1/+8ANv/uADf/8wA4/+oAOf/vADr/7wA7/9QAPP/5AD3//gA+//EAP//vAED/4wBB//MAQv/mAEP/7gBE/+cARf/XAEb/6wBH/8kASP/JAEn/twBK/7cAS//nACAABv/7ACQAAgAl/+8AJ//5AC3//gAv//4AMv/oADP//QA0/+sANf/7ADb/+gA3//sAOP/jADn/9wA6//oAO//kADz//wA9//0APv/+AD8AAABA/+gAQf/7AEL/6ABD//sARP/sAEX/8QBG//sAR//qAEj/6wBJ/+cASv/qAEv/+QAbAAb/+wAl/+8AMv+5ADP/+wA0/+8ANf/7ADb/+wA3//0AOP/vADn/+wA6AAAAO/+7ADz//gA9//4APv/7AED/7ABB//4AQv/nAEP/+QBE//kARf/7AEb/+QBH//MASP/rAEn/4gBK/+8AS//7AB0ABv/2ABf/zgAl/+8AMv+3ADP/9wA0/+sANf/3ADb/8QA3//kAOP/uADn/8wA6//sAO//YADz/8wA9/+4APv/3AD//8wBA/+MAQf/3AEL/6QBD/+8ARP/nAEX/1ABG/+8AR//JAEj/zABJ/6YASv/JAEv/3AAcAAb/+wAX//MAJf/7ADL/6wAz//4ANP/uADX/+wA2//4AN//+ADj/8wA5//0AOv/+ADv/7gA8//4APf/+AD7/+wA///4AQP/uAEL/9wBD//4ARP/+AEX/+QBG//4AR//uAEj/9wBJ/+4ASv/zAEv//gAYAAb/+wAx//YAMv/rADP//wA0//MANf//ADYAAQA3//8AOP/zADv/6AA8//4APf/+AD4AAQBA/+4AQf//AEL/8wBD//4ARP/4AEX//QBH/+wASP/3AEn/7ABK//EASwABABwABv/2ABf/4QAy/8oAM//9ADT/+QA1//4ANv/7ADf//gA4//MAOf/+ADr//wA7/+EAPP/7AD3//gA+//4AP//+AED/7wBB//4AQv/zAEP//gBE//sARf/7AEb//gBH/+8ASP/5AEn/2gBK//oAS//+AB0ABv/nABf/5wAx/7AAMv/hADP/7gA0/7QANf/rADb/5wA3/+4AOP+sADn/6wA6//kAO/+3ADz/6gA9/+8APv/nAD//5wBA/6wAQf/uAEL/rgBD/+cARP+8AEX/3ABG/9oAR//cAEj/0QBJ/9oASv/RAEv/7wAeAAb/9gAX//cAI//9ADH/vwAy/+4AM//5ADT/2gA1//4ANv/3ADf/+wA4/9oAOf/3ADr/+wA7/+cAPP/7AD3/+QA+//cAP//5AED/1ABB//sAQv/cAEP/9wBE/+8ARf/JAEb/6wBH/8QASP++AEn/5wBK/8EAS//+ABwAF//7ADH/7AAy/+QAM//+ADT/7gA1//4ANgAAADf//QA4//cAOf/7ADr//gA7/+4APP/+AD3//gA+//0AP//7AED/7wBB//4AQv/uAEP//gBE//cARf/7AEb/+QBH/+gASP/vAEn/6wBK/+gAS//+AB4ABv/7ABf/8wAa//4AHf/3ACX/9wAq//4AMf/2ADL/5AAz//0ANP/zADX/+wA2//4AN//+ADj/+QA7/+4APf/+AD7/+wA///4AQP/2AEH/+gBC/+4AQ//7AET/+QBF//sARv/+AEf/8wBI/+8ASf/zAEr/6wBL//4AHQAG//EAJP/3ADH/7AAy/7sAM//sADT/4wA1/+8ANv/vADf/9wA4/+QAOf/qADr/9wA7/98APP/vAD3/9wA+/+sAP//uAED/4wBB/+4AQv/mAEP/7wBE/+IARf/VAEb/7gBH/8MASP/GAEn/uwBK/7oAS//fABwABv/sACT//gAy/54AM//rADT/6gA1//EANv/rADf/9wA4/+MAOf/oADr/9wA7/64APP/sAD3/8QA+/+wAP//sAED/4QBB//MAQv/oAEP/5ABE/9gARf/kAEb/7gBH/9EASP/QAEn/uwBK/8QAS//zADAAF//3ABj//wAZ/+kAGv//ABv//QAc//4AHf/pAB7/+wAf//8AIP/iACH//gAi//8AI//+ACT//wAl/+IAJ//uACj//gAp/+cAKv/hACv/+QAs/8MALf/QAC7/5AAv/8wAMP//ADL/4QAz//4ANP/jADX/9wA3//kAOP/fADn/9wA7/+IAPP/5AD3/+gA+//EAP//6AED/2gBB/+8AQv/aAET/7wBF/9cARv/qAEf/xgBI/7sASf/qAEr/tABL//sAHQAG/+cAF//oACT/+gAy/+IAM//xADT/zAA1/+8ANv/sADf/+gA4/8wAOf/3ADr/8wA7/8kAPP/uAD3/7wA+/+wAP//rAED/yQBB//cAQv/MAEP/+ABE/9QARf/KAEb/2gBH/8EASP/EAEn/4gBK/7cAS//vAB0ABv/xABv/+QAl/+4AMv+8ADP/7wA0/9wANf/zADb/6AA3//cAOP/hADn/5gA6//MAO//aADz/6QA9//MAPv/pAD//6wBA/+MAQf/3AEL/2gBD/+kARP/rAEX/1ABG/+kAR//JAEj/zABJ/7QASv+7AEv/5wAbAAb/9gAy/6YAM//9ADT/0wA1//oANv/+ADf//QA4/9UAOf/3ADr//wA7/7kAPP/6AD3//gA+//sAP//7AED/0ABB//oAQv/XAEP/+QBE/+IARf/zAEb/9wBH/+8ASP/vAEn/6gBK/+cAS//6ABwABv/7ACQAAgAy/9UAM//7ADT/7wA1//cANv/9ADf//wA4/+4AOf/7ADr//wA7/+sAPP/+AD3//gA+//0AP//6AED/7gBB//sAQv/sAEP/+wBE/+8ARf/7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ABX/3QAx//YAMv+5ADP/+AA0/+MANf/3ADb/+AA3//kAOP/iADn/+gA6//0AO//OADz//QA9//4APv/5AD///ABA/+YAQv/jAEP/9wBE/+YARf/vAEb//gBH/+cASP/vAEn/0QBK/+YAS//9ACgAB//2AAj/4gAJ/90ACv/sAAv/4gAM/+gADf/iAA7/9QAP/+gAEP/dABH/4AAS/+YAE//OABT/4gAV/90AJP/7ADH/9gAy/8EAM//vADT/3wA2//QAN//4ADj/4wA5/+kAOv/6ADv/0QA8/+YAPf/zAD7/6QA///EAQP/qAEL/3ABD/+gARP/fAEb/+ABH/7sASP+7AEn/rwBK/68AS//jACcACP/xAAn/7AAK//gADP/2AA7/9wAP//YAEP/xABH/5wAS/+cAE//xABT/7AAV/+UAMf/2ADL/6AAz//kANP/qADX/+wA2//oAN//7ADj/6wA5//cAOv//ADv/4wA8//sAPf/+AD7/+wA///oAQP/sAEH/+gBC/+MAQ//5AET/7wBF/+oARv/7AEf/4wBI/+wASf/jAEr/6gBL//4AJgAH//sACP/7AAn/5wAK//oADP/2AA7/9gAP//YAEP/xABH/8QAS//IAE//xABT/5wAV//EAMv/nADP/+wA0//EANf/9ADb//gA3//4AOP/uADn/+wA6//4AO//oAD0AAAA+//sAP//+AED/7wBB//4AQv/qAEP//wBE//EARf/3AEb/+wBH/+YASP/3AEn/2gBK/+QAS//7ACkAB//2AAj/9gAJ/90ACv/yAAz/8QAO//EAD//wABD/6gAR/+wAEv/mABP/9AAU/+wAFf/rABf/zgAx//YAMv/OADP/7wA0/+oANf/5ADb//gA3//0AOP/oADn/+QA6//0AO//YADz//gA9//8APv/6AD//+QBA/+4AQf/5AEL/4wBD//gARP/qAEX/+QBG//oAR//pAEj/6QBJ/9UASv/rAEv/+gAqAAf/sgAI/8kACf+wAAr/ugAL/7UADP+1AA3/3QAO/+QAD/+6ABD/sgAR/7UAEv+xABP/4gAU/6sAFf+mADH/lwAy/9oAM//jADT/qwA1/+IANv/iADf/4wA4/5oAOf/XADr/7gA7/7QAPP/kAD3/6wA+/+4AP//mAED/rQBB/+8AQv+qAEP/6gBE/74ARf/XAEb/2gBH/9AASP/SAEn/1QBK/80AS//qACsAB//nAAj/8QAJ/6YACv/sAAv/nAAM/90ADf+6AA7/9gAP/+IAEP/sABH/3QAS/9oAE//sABT/3QAV/8QAJP/+ADH/pgAy/+sAM//vADT/ygA1//0ANv/zADf/+wA4/9MAOf/vADr/+wA7/9gAPP/3AD3/9wA+//EAP//7AED/1QBB//cAQv/PAEP/8wBE/+YARf+7AEb/5wBH/7UASP/JAEn/2gBK/6UAS//zACkAB//2AAn/7AAK//kAC//sAAz/9gAO//oAD//2ABD/7AAR/+cAEv/vABP/9gAU//EAFf/sABcAAQAx/+YAMv/pADP/+QA0/+oANf/zADb/+wA3//oAOP/nADn/9wA6//4AO//uADz/+QA9//oAPv/7AD//+QBA/+8AQf/3AEL/6QBD//oARP/sAEX/8wBG//gAR//pAEj/6QBJ/+MASv/nAEv//QAqAAf/9gAI//sACf/sAAr/9wAL/+wADP/7AA7/+gAP//EAEP/2ABH/7AAS//EAE//2ABT/9gAV/+QAFwABADH/8QAy/+kAM//3ADT/6QA1//kANv/5ADf/+QA4/+8AOf/6ADr//gA7/+8APP/7AD3/+gA+//oAP//4AED/7wBB//sAQv/rAEP//QBE/+8ARf/3AEb/+gBH/+4ASP/rAEn/4QBK/+wAS//5ACsAB//xAAj/4gAJ/9gACv/sAAv/2AAM//YADf/iAA7/8QAP/90AEP/iABH/0wAS/+IAE//JABT/4gAV/94AJP/7ADH/3QAy/7QAM//pADT/4QA1/+wANv/vADf/6gA4/+IAOf/qADr/+gA7/9oAPP/pAD3/6wA+/+wAP//pAED/4QBB/+sAQv/cAEP/6wBE/+IARf/JAEb/7gBH/7wASP/BAEn/pgBK/7UAS//kACwAB//iAAj/5wAJ/+IACv/OAAv/2AAM/+cADf/nAA7/8AAP/90AEP+6ABH/xAAS/9cAE//XABT/2AAV/9gAG//3ACT/+wAx/+IAMv+gADP/6QA0/+MANf/mADb/7wA3/+sAOP/aADn/6AA6//YAO/+xADz/6wA9/+4APv/oAD//7wBA/9oAQf/oAEL/1wBD/+MARP/aAEX/2ABG/+cAR//PAEj/yQBJ/7kASv/BAEv/6AApAAf/8QAI/+wACf/OAAr/6gAL/84ADP/nAA3/2AAO//YAD//fABD/4gAR/9gAEv/lABP/5wAU/+IAFf/YADH/4gAy/+cAM//3ADT/2gA1//gANv/5ADf/+wA4/9wAOf/3ADr//gA7/+MAPP/3AD3//QA+//cAP//3AED/1QBC/9UAQ//9AET/6QBF/+EARv/pAEf/ugBI/8QASf/aAEr/wgBL//sAKwAH/8kACP/YAAn/xAAK/9MAC/+/AAz/yQAN/9gADv/nAA//xAAQ/7oAEf+1ABL/wQAT/9gAFP+6ABX/vwAk//sAMf+/ADL/2gAz/+gANP/KADX/6QA2/+kAN//oADj/xgA5/+QAOv/nADv/uQA8/+wAPf/uAD7/6QA//+cAQP/GAEH/7ABC/8kAQ//mAET/2ABF/84ARv/VAEf/wQBI/7wASf/GAEr/tABL/+8AKwAH//EACP/2AAn/yQAK/+oAC//TAAz/3QAN/+cADv/sAA//4gAQ/+IAEf/YABL/3wAT/90AFP/dABX/2AAk//sAMf/nADL/xgAz//MANP/iADX/7wA2/+4AN//3ADj/4wA5/+kAOv/vADv/1wA8/+4APf/zAD7/6gA//+0AQP/kAEH/9wBC/98AQ//qAET/5wBF/9AARv/vAEf/yQBI/9AASf/PAEr/xABL/+8AKQAH/+cACP/sAAn/5wAK/+kAC//dAAz/2AAO/+wAD//XABD/qwAR/8kAEv/AABP/9gAU/9MAFf/OADH/2AAy/7AAM//5ADT/2gA1//0ANv/6ADf//gA4/98AOf/3ADr//QA7/8YAPP/7AD3//gA+//gAP//4AED/1QBB//0AQv/VAEP/+ABE/+MARf/zAEb/+QBH/+4ASP/zAEn/4gBK/+cAS//zACkACP/2AAn/5wAK//QAC//sAAz/+wAN//4ADv/2AA//5QAQ/+wAEf/nABL/8wAT//EAFP/nABX/3QAx/+QAMv/KADP/+QA0/+wANf/6ADb/+gA3//sAOP/vADn/+gA6AAAAO//hADz//wA9//0APv/5AD///gBA/+wAQf/7AEL/7ABD//sARP/vAEX/9wBG//sAR//zAEj/6gBJ/+EASv/jAEv/+wArAAf/zgAI/84ACf/YAAr/ygAL/9gADP/JAA3/+wAO/9kAD//JABD/ogAR/7oAEv+5ABP/5wAU/8QAFf+9ACT/+wAx/7oAMv+FADP/+wA0/7sANf/qADb/6wA3/+wAOP++ADn/5gA6/+8AO/+iADz/6AA9/+oAPv/sAD//7wBA/8MAQf/mAEL/uwBD/+YARP/KAEX/6QBG/+8AR//jAEj/3wBJ/9MASv/hAEv/6wApAAf/zgAI/84ACf/TAAv/2AAM/84ADv/eAA//xAAQ/7AAEf/TABL/sQAT/+wAFP/FABX/yQAk//sAMf/JADL/lQAz//MANP/BADX/+QA2//MAN//3ADj/xgA5//sAOv/3ADv/pQA8/+8APf/+AD7/7gA//+oAQP/DAEH/7gBC/8QAQ//vAET/0ABF/+4ARv/uAEf/6QBI/+QASf/aAEr/5gBL//cAKgAH/8QACP/OAAn/pgAL/7oADP+rAA3/3QAO/+cAD/+5ABD/twAR/8QAEv+zABP/0wAU/7AAFf+cACT/+wAx/6EAMv/aADP/4wA0/7cANf/4ADb/4wA3//0AOP+3ADn/7gA6/+8AO/+7ADz/7gA9//EAPv/jAD//6ABA/7oAQf/zAEL/uQBD/+sARP/OAEX/3wBG/+EAR//aAEj/2ABJ/9gASv/MAEv/7gAsAAf/yQAI/84ACf/JAAr/wgAL/8kADP/JAA3//gAO/8kAD/+6ABD/jQAR/7oAEv+gABP/4gAU/7UAFf+6AB7/8QAk//sAMf+1ADL/lwAz/+8ANP+7ADX/5gA2/+4AN//uADj/uQA5/+gAOv/3ADv/hAA8/+8APf/sAD7/7AA//+oAQP+6AEH/7ABC/7kAQ//pAET/ygBF/+8ARv/vAEf/6ABI/+kASf/fAEr/5ABL//EAJgAH//YACf/iAAr/7AAL/+cADP/iAA3//wAO//UAD//nABD/7AAR/+IAEv/gABP/7AAU/90AFf/TADH/4gAy/+sAM//+ADT/6AA1//4ANgAEADf//wA4/9wAOf/6ADv/5gA8//8APf//AD///QBA/+MAQf//AEMAAABE/+8ARf/4AEb/+wBH//cASP/rAEn/6QBK/+kAS//9AAIAAQAGAEsAAAAAAAAAAQAAAADUGBYRAAAAANmXsTQAAAAA2ZexNA=="),n=""!==t?(A=t).charAt(0).toUpperCase()+A.substr(1).toLowerCase():"";var A;const a=i.getPath(n,0,72,72),r=a.toSVG(2),o=a.getBoundingBox(),s=o.x2-o.x1,c=a.toPathData(3),l=$r("g");l.className.baseVal="module-root";const g=$r("defs");l.appendChild(g);const h=$r("g");h.className.baseVal="module-bounds",l.appendChild(h);const d=_r(e.height,e.width);d.setAttribute("opacity","0"),h.appendChild(d);const u=$r("g");u.className.baseVal="module-text-enclosure",l.appendChild(u);const w=(()=>{const t=$r("g");t.className.baseVal="module-text-group";const e=$r("defs");t.appendChild(e),e.appendChild(no(0,2,2,"shadow"));const i=$r("path");i.setAttribute("d",c),i.setAttribute("stroke","black"),i.setAttribute("stroke-width","3"),e.appendChild(i);const n=$r("g");n.className.baseVal="module-layer0",t.appendChild(n),n.setAttribute("filter","url(#shadow)"),n.innerHTML=i.outerHTML;const A=$r("g");A.className.baseVal="module-layer1",t.appendChild(A),A.setAttribute("stroke-width","3"),A.setAttribute("stroke","rgb(45,41,38)"),A.setAttribute("fill","rgb(45,41,38)"),A.setAttribute("transform","translate(0.5,0)"),A.innerHTML=r;const a=$r("g");a.className.baseVal="module-layer2",t.appendChild(a),a.setAttribute("fill","rgb(255,209,0)"),a.setAttribute("transform","translate(1,-0.1)"),a.innerHTML=r;const o=$r("g");o.className.baseVal="module-layer3",t.appendChild(o),o.setAttribute("fill","white"),o.innerHTML=r;return new so(t).transform((([t,e])=>[t,e+(s/2-t)**2/(6*s)])),t})();u.appendChild(w);return ao(u,b(I)(c),e.height,e.width,.35,.65),Ao(l.outerHTML)}}async function Bo(t){if("Favourites"===t)return new lo;if("Maltesers"===t){const t=Xi("https://assets.spiff.com.au/public/modules/img/MaltesersBackground.svg"),e=Xi("https://assets.spiff.com.au/public/modules/img/MaltesersBackgroundShort.svg"),i=await Promise.all([t,e]);return new ho(i[0],i[1])}if("Vegemite"===t)return new wo;throw new ra(`Failed to resolve Module, Module ${t} not found`)}const po=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],mo=async(t,e,i)=>{const n=e.data,A=i.data.baseUrl,a=n.assetUrl.replace("localhost","localstack"),r="http"===A.slice(0,4)?"":"https://",o=new URL(r+A);o.searchParams.append("video",$i(JSON.stringify([{href:a}]))),o.pathname=o.pathname+("/"===o.pathname.slice(-1)?"":"/");const s=o.toString(),c=`data:image/svg+xml;base64,${$i(await(0,y.toString)(s,{type:"svg"}))}`,l=e=>{const i=t.find((t=>t.panelId===e.panelId));if(!i)throw new ea(e);const n=Te();return new rA({id:n,src:c,type:ze.Image,y:e.top,x:e.left,width:e.width,height:e.height,rotation:0},i)},g=i.data.regions;try{return g.map(l)}catch(t){return console.error(t),[]}},Eo=async(t,e,i,n)=>{const A=i.data,a=A.assetUrl,r=await UA(a);try{const i=kA(A,n.option);i&&(e[n.stepName]={selectedVariants:[i]});const a=async e=>{const a=await YA(e||{width:1,height:1},i?.asset?.fileLink),o=await RA(a),s=Te(),c=t.find((t=>t.panelId===e.panelId));if(!c)throw new ea(e);const l=HA(r,o,{scale:A.scale,left:A.x,top:A.y});return[new rA({id:s,path:o.path,dataWidth:o.width,dataHeight:o.height,type:ze.Frame,focalBlur:n.data.focalBlur,focalBlurStrength:n.data.focalBlurStrength,focalBlurRadius:n.data.focalBlurRadius,forceImageCover:n.data.forceImageCover,x:e.left,y:e.top,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,rotation:e.rotation,scaleX:e.width/o.width,scaleY:e.height/o.height,pattern:void 0},c),new wA(s,r,l)]};return(await Promise.all(n.data.regions.map((t=>a(t))))).flat()}catch(t){return console.error(t),[]}},fo=async(t,e,i,n)=>{const A=i.data,a=n.option;if(!a)return console.error(`No option for step ${n.stepName}.`),[];const r=a.variants?.find((t=>t.id===A.illustrationVariantId))||bA(a);if(!r)return console.error(`No variant with ID: ${A.illustrationVariantId}`),[];if(!r.asset)return console.error(`No asset for variant with ID: ${A.illustrationVariantId}`),[];e[n.stepName]={selectedVariants:[r]};const o=r.asset?.fileLink;if(!o)return console.error(`No asset link for variant with ID: ${A.illustrationVariantId}`),[];const s=(await Xi(o)).match(/<svg.*?<\/svg>/s)||[],c=s?.length>0?s[0]:"",l=Ki().parseFromString(c,"image/svg+xml").firstElementChild;if(!l)return console.error("Failed to read SVG."),[];Gn(l);const g={};Un(l,(t=>{po.includes(t.tagName)&&!t.attributes.getNamedItem("fill")&&t.setAttribute("fill","#000000");const e=t.attributes.getNamedItem("fill");if(e&&"none"!==e.value){const i=e.value,n=`spiff-fill-${i.replace(/\W/g,"")}`;t.classList.add(n),g[n]={browserValue:i}}const i=t.attributes.getNamedItem("stroke");if(i&&"none"!==i.value){const e=i.value,n=`spiff-stroke-${e.replace(/\W/g,"")}`;t.classList.add(n),g[n]={browserValue:e}}}));const h=Zi().serializeToString(l),d=A.colors;if(d)for(const[t,e]of Object.entries(g))for(const i of Object.keys(d))if(e.browserValue===i){g[t]={browserValue:d[i]};break}const u=e=>{const i=t.find((t=>t.panelId===e.panelId));if(!i)throw new ea(e);const n=Te();return new rA({colors:g,id:n,svg:h,type:ze.Illustration,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,immutable:e.immutable},i)},w=n.data.regions;try{return w.map(u)}catch(t){return console.error(t),[]}},Co=async(t,e,i)=>{const n=await Bo(i.data.module),A=e.data,a=i.data.regions;try{return a.map((e=>((e,i)=>{const n=t.find((t=>t.panelId===i.panelId));if(!n)throw new ea(i);const A=Te();return new rA({colors:{},id:A,svg:e,type:ze.Illustration,y:i.top,x:i.left,rotation:i.rotation,width:i.width,height:i.height,layer:i.layer,layerIndex:i.layerIndex},n)})(n.svgPrint(A.text,e),e)))}catch(t){return console.error(t),[]}},Qo=async(t,e,i,n)=>{const A=i.data,a=n.option;if(!a)return console.error(`No option for step ${n.stepName}.`),[];const r=a.variants?.find((t=>t.id===A.pictureVariantId))||bA(a);if(!r)return console.error(`No variant with ID: ${A.pictureVariantId}`),[];if(!r.asset)return console.error(`No asset for variant with ID: ${A.pictureVariantId}`),[];e[n.stepName]={selectedVariants:[r]};const o=r.asset?.fileLink;if(!o)return console.error(`No asset link for variant with ID: ${A.pictureVariantId}`),[];const s=e=>{const i=t.find((t=>t.panelId===e.panelId));if(!i)throw new ea(e);const n=Te();return new rA({id:n,src:o,type:ze.Image,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,immutable:e.immutable,preserveAspectRatio:"none"},i)},c=n.data.regions;try{return c.map(s)}catch(t){return console.error(t),[]}},yo=async(t,e,i,n)=>{const A=i.data,a=n.option;if(!a)return console.error(`No option for step ${n.stepName}.`),[];const r=a.variants?.find((t=>t.id===A.colorVariantId))||bA(a);if(!r)return console.error(`No variant with ID: ${A.colorVariantId}`),[];e[n.stepName]={selectedVariants:[r]};const o=e=>{const i=t.find((t=>t.panelId===e.panelId));if(!i)throw new ea(e);const n=`\n <svg\n xmlns="http://www.w3.org/2000/svg"\n xmlnsXlink="http://www.w3.org/1999/xlink"\n xmlSpace="preserve"\n preserveAspectRatio="none"\n version="1.1"\n width="1"\n height="1"\n viewBox="0 0 1 1"\n >\n <rect\n x="0"\n y="0"\n width="1"\n height="1"\n class="spiff-fill-shape"\n fill="${r?.color}"\n />\n </svg>\n `,A={"spiff-fill-shape":{browserValue:r.color||"#000000"}},a=Te();return new rA({colors:A,id:a,svg:n,type:ze.Illustration,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,immutable:e.immutable},i)},s=n.data.regions;try{return s.map(o)}catch(t){return console.error(t),[]}},Io=async(t,e,i)=>{const n=[],A=e.type===oi.ProductOverlay?i||e.data.asset?.fileLink||"":e.data.asset?.fileLink||"",a=A.endsWith(".jpeg")||A.endsWith(".jpg")||A.endsWith(".png")?ze.Image:(A.endsWith(".svg"),ze.Illustration),r=e.data.regions;if("image"===a)try{r.forEach((i=>{const r=t.find((t=>t.panelId===i.panelId));if(!r)throw new ea(i);const o={id:Te(),src:A,type:a,y:i.top,x:i.left,width:i.width,height:i.height,layer:i.layer,layerIndex:i.layerIndex,productOverlay:e.type===oi.ProductOverlay||void 0,scaleX:1,scaleY:1,rotation:i.rotation,excludeFromExport:e.data.excludeFromPrint,preserveAspectRatio:"none"};n.push(new rA(o,r))}))}catch(t){console.error(t)}else{console.log(`fetching ${A}`);const i=await Xi(A),o=t=>{const e=t.match(/<svg.*?<\/svg>/s)||[],i=e?.length>0?e[0]:"",n=Ki().parseFromString(i,"image/svg+xml").firstElementChild;if(!n)throw new oa("Failed to read SVG.");Gn(n);return Zi().serializeToString(n)};r.forEach((r=>{const s=t.find((t=>t.panelId===r.panelId));if(!s)throw new ea(r);const c={id:Te(),src:A,asset_key:A,svg:o(i),colors:{},type:a,y:r.top,x:r.left,width:r.width,height:r.height,layer:r.layer,layerIndex:r.layerIndex,scaleX:1,scaleY:1,rotation:r.rotation,productOverlay:e.type===oi.ProductOverlay||void 0,excludeFromExport:e.data.excludeFromPrint};n.push(new rA(c,s))}))}return n},Do=async(t,e,i,n)=>{const A=[],a=i.data,r=await(async()=>{const t=(()=>{const t=n.option;if(!t)return;const i=t.variants?.find((t=>t.id===a.fontVariantId))||bA(t);if(!i)return;if(!i.asset)return;e[n.stepName]={selectedVariants:[i]};return i.asset.fileLink||void 0})();if(!t)return;console.log(`fetching ${t}`);const i=await Wi(t),A=await tn(i),r=cn(A);await qi(r,t);return{assetUrl:t,name:r.names.fullName.en}})(),o=n.data.replaceableText?n.data.replaceableText.replace("{{}}",a.text):a.text,s=yn(o,{vertical:n.data.vertical,uppercase:n.data.uppercase}),c=a.color||await(async t=>{const e=t.colorOption;if(!e)return;return Ja.getDefaultVariant(e)?.color})(n.data),l=n.data.regions;for(const e of l){const o=t.find((t=>t.panelId===e.panelId));if(!o)continue;const l={stepName:i.name,id:Te(),align:(g=n.data,g.vertical?"center":g.textAlign||"center"),curved:n.data.curved,fill:a.color||c||"#000000",fontData:r,fontSize:n.data.size||30,height:e.height,layer:e.layer,layerIndex:e.layerIndex,paths:n.data.paths,rotation:e.rotation,text:s,type:ze.Textbox,vertical:n.data.vertical,verticalAlign:n.data.verticalAlign||"middle",width:e.width,x:e.left,y:e.top};if(r){const[t,i]=LA(n.data.size||30,r,e,[yn(s,{vertical:n.data.vertical,uppercase:n.data.uppercase})],{size:n.data.size,minSize:n.data.minSize,maxSize:n.data.maxSize});A.push(new rA({...l,fontSize:t,text:l.curved?l.text:(i||[]).join("\n")},o))}else A.push(new rA(l,o))}var g;return A},xo=(t,e)=>!t.conditions||t.conditions.every((t=>{const i=e[t.targetStepName];if(i&&i.selectedVariants){const e=i.selectedVariants;return t.requiredVariantSelections.some((t=>void 0!==e.find((e=>e.id===t))))}return!1})),vo=async(t,e,i,n)=>{const A=[],a={};for(const n of t){const t=e.steps.find((t=>t.stepName===n.name));if(t)switch(t.type){case oi.DigitalContent:A.push(...await mo(i,n,t));break;case oi.Frame:case oi.Photo:A.push(...await Eo(i,a,n,t));break;case oi.Illustration:A.push(...await fo(i,a,n,t));break;case oi.Module:A.push(...await Co(i,n,t));break;case oi.Picture:A.push(...await Qo(i,a,n,t));break;case oi.Shape:A.push(...await yo(i,a,n,t));break;case oi.Text:A.push(...await Do(i,a,n,t))}}for(const t of e.steps)t.type!==oi.SilentIllustration&&t.type!==oi.ProductOverlay||xo(t,a)&&A.push(...await Io(i,t,n));return A};function Mo(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class So{constructor(t){Mo(this,"layouts",void 0),Mo(this,"handleCompleteRender",void 0),this.handleCompleteRender=null;const e=new Map;t.forEach((t=>e.set(t.id,new Fo(t.id,t.name,this)))),this.layouts=e}setCompleteRenderCallback(t){this.handleCompleteRender=t,t(Array.from(this.layouts.values()))}onCompleteRender(){this.handleCompleteRender&&this.handleCompleteRender(Array.from(this.layouts.values()))}getAll(){return this.layouts}}let bo;class Fo{constructor(t,e,i){Mo(this,"hasSetStaticContext",!1),Mo(this,"id",void 0),Mo(this,"name",void 0),Mo(this,"service",void 0),Mo(this,"interactiveDirty",!1),Mo(this,"textureCtx",void 0),Mo(this,"staticCtxDirty",!1),Mo(this,"lastRequestedRenderArguments",void 0),Mo(this,"lastCompletedStaticRender",void 0),Mo(this,"lastModificationID",void 0),Mo(this,"renderQueue",new Xr(2)),this.id=t,this.name=e,this.service=i}getID(){return this.id}getName(){return this.name}getStaticContext(){return this.textureCtx}setStaticContext(t){if(this.textureCtx=t,this.lastRequestedRenderArguments){const{workflow:t,layouts:e,variationRecord:i,productOverlayImageUrl:n}=this.lastRequestedRenderArguments;this.render(t,e,i,n)}}getStaticContextDirty(){return this.staticCtxDirty}setStaticContextDirty(t){this.staticCtxDirty=t}getInteractiveCanvasDirty(){return this.interactiveDirty}setInteractiveCanvasDirty(t){this.interactiveDirty=t}markLastCompletedStaticRender(){this.lastCompletedStaticRender=Date.now(),this.service.onCompleteRender()}getLastCompletedStaticRender(){return this.lastCompletedStaticRender}getLastModificationID(){return this.lastModificationID}async render(t,i,n,A){const a=b(e)(i);this.lastRequestedRenderArguments={workflow:t,layouts:a,variationRecord:n,productOverlayImageUrl:A};const r=this.getStaticContext();if(!r)return this.markLastCompletedStaticRender(),void this.setStaticContextDirty(!1);this.renderQueue.enqueue(new Po(this.getID(),r,(()=>{if(void 0!==bo)return bo;const t=document.createElement("canvas").getContext("webgl2");return bo=!!t,bo})(),(()=>{this.markLastCompletedStaticRender(),this.setStaticContextDirty(!0)}),t,a,n,A))}}class Po extends Wr{constructor(t,e,i,n,A,a,r,o){super(),Mo(this,"layoutId",void 0),Mo(this,"ctx",void 0),Mo(this,"nonPOTSupport",void 0),Mo(this,"onRender",void 0),Mo(this,"workflow",void 0),Mo(this,"layouts",void 0),Mo(this,"variationRecord",void 0),Mo(this,"productOverlayImageUrl",void 0),this.layoutId=t,this.ctx=e,this.nonPOTSupport=i,this.onRender=n,this.workflow=A,this.layouts=a,this.variationRecord=r,this.productOverlayImageUrl=o}getDynamicTextureResolution(){return this.getIsMobile()||!this.offscreenRenderingSupported()?{width:1024,height:1024}:{width:2048,height:2048}}getIsMobile(){return window.innerWidth<=480}offscreenRenderingSupported(){return!navigator.userAgent.includes("SamsungBrowser")&&(!!window.Worker&&!!window.OffscreenCanvas)}resizeFit(t,e=4096){const i=e/t.width,n=e/t.height,A=Math.min(i,n);return A>1?t:{width:t.width*A,height:t.height*A}}async execute(){const t=this.layouts.find((t=>t.layoutState.layout.id===this.layoutId));if(!t)return;const e=t.layoutState.elements||[];if(this.variationRecord){const i=this.variationRecord.values.map((t=>({stepName:t.stepName,stepAspectType:t.aspect,value:t.value}))),n=await No(Yo(i,this.workflow),this.workflow,this.layouts.map((t=>t.layoutState.layout)),this.productOverlayImageUrl),A=n?.layouts[t.layoutState.layout.id];(A?.elements||[]).forEach((t=>{const i=e.find((e=>e.stepName===t.stepName));i&&i.type===ze.Textbox?(i.text=t.text,i.fontSize=t.fontSize):e.push(t)})),Vn(e)}const i=t.layoutState.layout.width,n=t.layoutState.layout.height,A=this.getDynamicTextureResolution().width,a=this.getDynamicTextureResolution().height;let r,o;if(this.nonPOTSupport){i/n<A/a?(r=A,o=n*(A/i)):(r=i*(a/n),o=a);const t=this.resizeFit({width:r,height:o});r=t.width,o=t.height}else r=this.getDynamicTextureResolution().width,o=this.getDynamicTextureResolution().height;const s=jn(t.layoutState.layout,e,{renderingConfiguration:{purpose:Ve.ThreeD}}),c=b(Q).renderToStaticMarkup(s),l=await Re.from(this.ctx,c,{anonymousCrossOrigin:!0,ignoreDimensions:!this.nonPOTSupport,ignoreAnimation:!0,ignoreClear:!0,ignoreMouse:!0,enableRedraw:!1});l.resize(r,o),await l.render(),this.onRender()}}const Yo=(t,e)=>{const i=[];return t.forEach((t=>{const n=e.steps.find((e=>e.stepName===t.stepName));n?.type===oi.Text&&"Text"===t.stepAspectType&&i.push({name:n.stepName,data:{text:t.value}})})),i},No=async(t,e,i,n)=>{let A={serializableWorkflow:{steps:[]},layouts:{}};A=new nA(i.map((t=>new AA(t)))).apply(A);const a=await vo(t,e,i,n);return new nA(a).apply(A)},ko=()=>{const t=window.chrome,e=window.navigator,i=e.vendor,n=void 0!==window.opr;return!e.userAgent.match("CriOS")&&(null!=t&&"Google Inc."===i&&!1===n)},Ro=({isMobile:t,color:e,outlineColor:A,editorRef:a,zoomableElementRef:r,interactionElementRef:o,guidelines:s,isMakingAdjustments:c,outlineArea:l,visibleLayoutId:g,xTranslation:h,yTranslation:d,targetedElements:u,borderRadius:w,canvasFilter:B,children:p,handleContextMenu:m,onMouseMove:E,onContextMenuHandlePointerDown:f,handleKeyDown:C,handleKeyUp:Q,handlePointerMove:y,handlePointerPressedBackground:I,handlePointerReleased:D,handleScroll:x,onSequenceStart:v,setElementEvent:M,onElementSelected:S,variationRecord:b,workflow:F})=>{const{state:P}=tr(),[Y,N]=(0,n.useState)([]),{getLayoutById:k,getAllLayouts:R}=ja(),H=(0,n.useMemo)((()=>k(g)),[k,g]),U=(0,n.useCallback)((t=>{if(l){const e={left:l.x||0,top:l.y||0,width:l.width||1,height:l.height||1,panelId:"",rotation:0};return C(t,e)}return C(t)}),[C,l]),G=(0,n.useCallback)((t=>{if(l){const e={left:l.x||0,top:l.y||0,width:l.width||1,height:l.height||1,panelId:"",rotation:0};return y(t,e)}return y(t)}),[y,l]),T=(0,n.useMemo)((()=>({justifyContent:"center",position:"relative",height:"100%",width:"100%",scrollbarWidth:"none",outline:ko()?"none":void 0})),[]),O=(0,n.useMemo)((()=>({height:"100%",transform:`scale(${P.zoom}) translate(${h}px, ${d}px)`,display:"flex",justifyContent:"center",alignItems:"center",filter:B||"drop-shadow(0px 0px 5px rgba(0, 0, 0, 0.2))",overflow:"visible"})),[P.zoom,B,h,d]),J=10/P.zoom,L=H.layoutState.layout.width,z=H.layoutState.layout.height,j=r.current?.offsetHeight||1024,V=r.current?.offsetWidth||1024,K=J*(Math.sqrt(L*z)/1e3)*(100/Math.sqrt(j*V))*Math.sqrt((W=V/j,Math.exp(Math.abs(Math.log(W)))));var W;return(0,n.useEffect)((()=>{(async()=>{const t=R(),e=H.layoutState.elements||[];N(await(async(t,e)=>{if(!b)return t;const i=[...t],n=b.values.map((t=>({stepName:t.stepName,stepAspectType:t.aspect,value:t.value}))),A=await No(Yo(n,F),F,e.map((t=>t.layoutState.layout)),void 0),a=A?.layouts[H.layoutState.layout.id];return(a?.elements||[]).forEach((t=>{const e=i.find((e=>e.stepName===t.stepName));e&&e.type===ze.Textbox&&(e.text=t.text,e.fontSize=t.fontSize)})),Vn(i),i})(e,t))})()}),[c,K,w,A,l,b,g,F,R,H.layoutState.elements,H.layoutState.layout]),(0,i.jsx)("div",{style:T,onContextMenu:m,onKeyDown:U,onKeyUp:Q,onPointerDown:I,onMouseLeave:D,onPointerMoveCapture:G,onPointerUp:D,onWheelCapture:x,ref:o,tabIndex:-1,children:(0,i.jsxs)("div",{ref:r,style:O,children:[p,jn(H.layoutState.layout,Y,{renderingConfiguration:{purpose:Ve.FreeDesign},height:c?"100%":"auto",width:c?"100%":"auto",maxHeight:"100%",maxWidth:"100%",position:"absolute",outlineArea:l?{...l,scale:K}:void 0,borderRadius:w,outlineColor:A}),(0,i.jsx)(Vr,{isMobile:t,primaryColor:e,editorRef:a,elementEvent:P.elementEvent,guidelines:s,layoutHeight:H.layoutState.layout.height,layoutWidth:H.layoutState.layout.width,onElementEvent:M,onSequenceStart:v,onElementSelected:S,scale:K,selectedElement:P.selectedElement,targetedElements:u,onMouseMove:E,onContextMenuHandlePointerDown:f})]})})},Ho=({borderRadius:t,canvasFilter:e,color:A,guidelineColor:a,handleContextMenu:r,hideEditableAreaRect:o,isMobile:s,onContextMenuHandlePointerDown:c,onDragEnd:l,onElementSelected:g,onMouseMove:h,outlineColor:d,variationRecord:u,workflow:w})=>{const{commandDispatcher:B,getLayoutById:p}=ja(),{state:m,uiDispatcher:E}=tr(),f=(0,n.useRef)(null),C=(0,n.useRef)(null),Q=(0,n.useRef)(null),{guidelines:y,handleKeyDown:I,handleKeyUp:D,handlePointerMove:x,handlePointerPressedBackground:v,handlePointerReleased:M,handleScroll:S,handleSequenceStart:b,setElementEvent:F}=zr(f,C,Q,void 0,"advanced",B,s?"mobile":"desktop",a,l),P=(0,n.useMemo)((()=>p(m.layoutId)),[p,m.layoutId]),Y=(0,n.useCallback)(((t,e)=>{g&&g(t,e),E(new _a({selectedElement:t}))}),[E,g]),N=(0,n.useMemo)((()=>{if(P.layoutState.layout.useEditableArea)return{...P.layoutState.layout.editableArea,hidden:o}}),[P.layoutState.layout.useEditableArea,P.layoutState.layout.editableArea,o]);return(0,i.jsx)(Ro,{outlineArea:N,isMobile:s,color:A,outlineColor:d,editorRef:f,interactionElementRef:C,zoomableElementRef:Q,guidelines:y,visibleLayoutId:m.layoutId,xTranslation:m.xTranslation,yTranslation:m.yTranslation,borderRadius:t,canvasFilter:e,handleContextMenu:r,onMouseMove:h,onContextMenuHandlePointerDown:c,handleKeyDown:I,handleKeyUp:D,handlePointerMove:x,handlePointerPressedBackground:v,handlePointerReleased:M,handleScroll:S,onSequenceStart:b,setElementEvent:F,onElementSelected:Y,variationRecord:u,workflow:w})},Uo=t.gql`
142
142
  mutation CreateTransaction(
143
143
  $integrationProductId: String
144
144
  $externalIntegrationId: String
@@ -232,7 +232,7 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
232
232
  }
233
233
  }
234
234
  }
235
- `,Us=t.gql`
235
+ `,Go=t.gql`
236
236
  mutation CreateTransactions($inputs: [TransactionCreateInput]!) {
237
237
  transactionCreateMany(inputs: $inputs) {
238
238
  id
@@ -312,7 +312,7 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
312
312
  }
313
313
  }
314
314
  }
315
- `,Gs=t.gql`
315
+ `,To=t.gql`
316
316
  mutation ClaimTransaction($id: String!) {
317
317
  transactionClaim(id: $id) {
318
318
  id
@@ -392,7 +392,7 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
392
392
  }
393
393
  }
394
394
  }
395
- `,Ts=t.gql`
395
+ `,Oo=t.gql`
396
396
  query ReadTransactions($ids: [String]!) {
397
397
  transactions(ids: $ids) {
398
398
  bulk
@@ -479,25 +479,25 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
479
479
  }
480
480
  }
481
481
  }
482
- `,Os=t.gql`
482
+ `,Jo=t.gql`
483
483
  mutation UpdateTransactionWorkflowState($id: String!, $workflowState: String!) {
484
484
  transactionUpdate(id: $id, workflowState: $workflowState) {
485
485
  id
486
486
  }
487
487
  }
488
- `,Js=t.gql`
488
+ `,Lo=t.gql`
489
489
  mutation UpdateTransactionWorkflowId($id: String!, $workflowId: String!) {
490
490
  transactionUpdate(id: $id, workflowId: $workflowId) {
491
491
  id
492
492
  }
493
493
  }
494
- `,Ls=t.gql`
494
+ `,zo=t.gql`
495
495
  mutation UpdateVariationRecords($transactionId: String!, $updates: [VariationRecordUpdateInput]!) {
496
496
  variationRecordsUpdate(transactionId: $transactionId, updates: $updates) {
497
497
  recordNumber
498
498
  }
499
499
  }
500
- `,zs=(t.gql`
500
+ `,jo=(t.gql`
501
501
  query ReadTransactionForDesignCreation($id: String!) {
502
502
  transactions(ids: [$id]) {
503
503
  id
@@ -556,7 +556,7 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
556
556
  workflowState
557
557
  }
558
558
  }
559
- `),js=t=>{const e=[];for(const i of t.steps)switch(i.type){case si.DigitalContent:i.data.varyUpload&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Upload});break;case si.Frame:const t=i.data;t.varySelection&&i.option&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Selection}),t.varyUpload&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Upload});break;case si.Illustration:const n=i.data;n.varySelection&&i.option&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Selection}),n.varyColors&&n.colorPickerEnabled&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Colors});break;case si.Material:i.data.varySelection&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Selection});break;case si.Model:i.data.varySelection&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Selection});break;case si.Picture:i.data.varySelection&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Selection});break;case si.Question:i.data.varySelections&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Selections});break;case si.Shape:i.data.varySelection&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Selection});break;case si.Text:const A=i.data;A.varyText&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Text}),A.varySelection&&i.option&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Selection}),A.varyColor&&A.colorPickerEnabled&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Color})}return e},Vs=[si.SilentIllustration,si.ProductOverlay],Ks=async(t,e,i)=>{const n=[];t.introduction&&n.push({name:"Introduction",title:t.name,renderableSteps:[{type:si.Introduction,stepName:"Introduction",stepTitle:t.name,helpText:t.introduction,data:{},conditions:[]}],silentSteps:[]});for(const i of t.steps){if(e.bulkScene){let t=!1;switch(i.type){case si.DigitalContent:i.data.varyUpload&&(t=!0);break;case si.Frame:{const e=i.data;!e.varyUpload||!e.varySelection&&i.option||(t=!0)}break;case si.Illustration:{const e=i.data;!e.varySelection&&i.option&&1!==(i.option.variants||[]).length||!e.varyColors&&e.colorPickerEnabled||(t=!0)}break;case si.Material:i.data.varySelection&&(t=!0);break;case si.Model:i.data.varySelection&&(t=!0);break;case si.Picture:i.data.varySelection&&(t=!0);break;case si.Question:i.data.varySelections&&(t=!0);break;case si.Shape:i.data.varySelection&&(t=!0);break;case si.Text:{const e=i.data;!e.varySelection&&i.option&&1!==(i.option.variants||[]).length||!e.varyColor&&e.colorPickerEnabled&&e.colorOption||!e.varyText||(t=!0)}}if(t)continue}const A=Ws(i.stepName,t.stepGroups);if(A){const t=n.find((t=>t.name===A.name));t?Vs.includes(i.type)?t.silentSteps.push(i):t.renderableSteps.push(i):n.push({name:A.name,title:A.name,renderableSteps:Vs.includes(i.type)?[]:[i],silentSteps:Vs.includes(i.type)?[i]:[]})}else n.push({name:i.stepName,title:i.stepTitle,renderableSteps:Vs.includes(i.type)?[]:[i],silentSteps:Vs.includes(i.type)?[i]:[]})}if(e.bulkScene){const A=i?.product?.bulkConfiguration;n.push({name:"Bulk",title:A?.sceneTitle??e.bulkSceneTitle,renderableSteps:[{type:si.Bulk,stepName:"Bulk",stepTitle:A?.stepTitle??e.bulkSceneTitle,helpText:A?.helpText,data:{aspects:js(t)},conditions:[]}],silentSteps:[]})}return e.finishScene&&n.push({name:"Finish",title:e.finishSceneTitle,renderableSteps:[{type:si.Finish,stepName:"Finish",stepTitle:e.finishSceneTitle,helpText:"",data:{modelAnimation:t.finalizeStepConfig?t.finalizeStepConfig.modelAnimation:void 0,lookAtAnimation:t.finalizeStepConfig?t.finalizeStepConfig.lookAtAnimation:void 0},conditions:[]}],silentSteps:[]}),n},Ws=(t,e)=>e.find((e=>e.stepNames.includes(t))),Xs=(t,e)=>(t.conditions||[]).every((t=>{const i=e[t.targetStepName];if(i&&i.selectedVariants){const e=i.selectedVariants;return t.requiredVariantSelections.some((t=>void 0!==e.find((e=>e.id===t))))}return!1})),qs=(t,e)=>t.map((t=>((t,e)=>{const i={name:t.name,title:t.title,renderableSteps:t.renderableSteps.filter((t=>Xs(t,e))),silentSteps:t.silentSteps.filter((t=>Xs(t,e)))};return 0===i.silentSteps.length&&0===i.renderableSteps.length?null:i})(t,e))).filter((t=>null!==t)),Zs=async(t,e)=>{const i=qs(t,e),n=[];for(const t of i)for(const e of t.renderableSteps)if(e.type===si.Model||e.type===si.Material||e.type===si.Picture||e.type===si.Shape){const t=(e.option?.variants||[]).length;t&&t>1&&n.push(e.stepName)}else n.push(e.stepName);const A=i.filter((t=>t.renderableSteps.filter((t=>n.includes(t.stepName))).length>0));for(const t of A)t.renderableSteps=t.renderableSteps.filter((t=>n.includes(t.stepName)));return A};function $s(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function _s(t,e,i,n){const A=i.width*t.zoom,a=i.height*t.zoom;if(n){const n=t,A=Math.max(e.width/i.width,e.height/i.height);n.zoom=Math.max(A,t.zoom);const a=i.width*n.zoom,r=i.height*n.zoom;return n.x=to(t.x,e.width-a,0),n.y=to(t.y,e.height-r,0),n}const r=t;return r.x=to(r.x,-A,e.width),r.y=to(r.y,-a,e.height),r}function to(t,e,i){return Math.min(Math.max(t,e),i)}class eo{constructor(t){$s(this,"offsets",void 0),$s(this,"forceImageCover",void 0),$s(this,"targetElements",void 0),$s(this,"imageData",void 0),$s(this,"frameData",void 0),$s(this,"_debouncedUpdateFrameOffsets",void 0),$s(this,"minZoomScale",[.03]),$s(this,"maxZoomScale",[20]),$s(this,"onFrameDataChangeListeners",void 0),$s(this,"onZoomChangeListeners",void 0),$s(this,"workflowManager",void 0),$s(this,"stepName",void 0),this._debouncedUpdateFrameOffsets=b(D)(this.updateFrameOffsets,200),this.targetElements=[],this.onFrameDataChangeListeners=[],this.onZoomChangeListeners=[],this.forceImageCover=t}connectWorkflowManager(t,e){e&&t.addStepSpecificStorageCallback((async t=>{if(t){const e=t;if(e.currentFrameSources){let t=!1;for(let i=0;i<e.currentFrameSources.length;i++){const n=e.currentFrameSources[i],A=await RA(n);b(C)(A,this.frameData)||(this.frameData||(this.frameData=new Array(e.currentFrameSources.length)),this.frameData[i]=A,t=!0)}t&&(this.onFrameDataChangeListeners.forEach((t=>t(this.frameData))),this.frameData&&this.imageData&&(this.recalculateOffsets(this.imageData),this.updateOffsets(this.offsets),this.recalculateZoomLimits(this.imageData,this.frameData)))}}}),e),this.workflowManager=t,this.stepName=e}setTargetElements(t){this.targetElements=t}getFrameData(){return this.frameData}setFrameData(t){t?t.forEach(((e,i)=>{const n=PA.get(e);n&&(this.frameData||(this.frameData=new Array(t.length)),this.frameData[i]=n)})):this.frameData=void 0}getImageData(){return this.imageData}getOffsets(){return this.offsets}setOffsets(t){this.offsets=t}setZoom(t,e,i,n){if(this.imageData&&this.offsets&&this.frameData){this.offsets&&this.offsets.length===this.frameData.length||(this.offsets=new Array(this.frameData.length));const A=this.frameData.map(((n,A)=>{const a=(e[A]-this.offsets[A].x)/this.offsets[A].zoom,r=(i[A]-this.offsets[A].y)/this.offsets[A].zoom;return{x:e[A]-a*t[A],y:i[A]-r*t[A],zoom:this.imageData.width*t[A]/this.imageData.width}}));this.updateOffsets(A,n),this.onZoomChangeListeners.forEach((e=>e(t)))}}setPatternData(t){this.imageData=t,t&&this.frameData&&(this.recalculateOffsets(t),this.updateOffsets(this.offsets,void 0,!0)),this.imageData&&this.frameData&&this.recalculateZoomLimits(this.imageData,this.frameData)}updateOffsets(t,e,i){const n=this.imageData;if(!n||!this.frameData)return;if(this.frameData.length!==t.length)throw new ra("Frame data and offsets are not the same length. This is a bug. Please report it.");this.offsets.some(((e,i)=>t[i].x!==e.x||t[i].y!==e.y||t[i].zoom!==e.zoom))||i?(this.offsets&&this.offsets.length===this.frameData.length||(this.offsets=new Array(this.frameData.length)),this.frameData.forEach(((e,i)=>{this.offsets[i]=_s(t[i],e,this.imageData,this.forceImageCover)})),this._debouncedUpdateFrameOffsets(this.offsets,n,this.frameData,this.targetElements,e)):e&&e()}onFrameDataChanged(t){t(this.frameData),this.onFrameDataChangeListeners.push(t)}onZoom(t){this.onZoomChangeListeners.push(t)}updateFrameOffsets(t,e,i,n,A){if(!i||0===i.length||i.some((t=>!t)))throw new ra("Frame data not set. This is a bug");if(!this.workflowManager)throw new ra("No workflow manager set, cannot update offsets.");const a=this.workflowManager.getCommandDispatcher();n.forEach(((i,n)=>{a(new wA(i,e,t[n]))})),this.stepName&&this.workflowManager.updateStorage(this.stepName,{frameOffsetsList:t}),A&&A()}recalculateZoomLimits(t,e){this.minZoomScale.length===e.length&&this.maxZoomScale.length===e.length||(this.minZoomScale=new Array(e.length),this.maxZoomScale=new Array(e.length)),e.forEach(((e,i)=>{const n=Math.max(e.width/t.width,e.height/t.height);this.forceImageCover?(this.minZoomScale[i]=n,this.maxZoomScale[i]=2.5*n):(this.minZoomScale[i]=n/10,this.maxZoomScale[i]=2.5*n)}))}recalculateOffsets(t){this.frameData&&(this.offsets&&this.offsets.length===this.frameData.length||(this.offsets=new Array(this.frameData.length)),this.frameData.forEach(((e,i)=>{this.offsets[i]=HA(t,e)})),this._debouncedUpdateFrameOffsets(this.offsets,t,this.frameData,this.targetElements))}}function io(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class no{constructor(t,e,i){io(this,"configuration",void 0),io(this,"layouts",void 0),io(this,"product",void 0),io(this,"processRegion",(async t=>{const e=this.layouts.find((e=>e.panelId===t.panelId));if(!e)throw new ea(t);let i="";if(this.configuration.type===si.ProductOverlay){let t="";if(this.product?.overlayImageUrl&&(t=this.product.overlayImageUrl),i=t,!t)throw new Aa(this.configuration,"Couldn't find an asset for product overlay step")}const n=this.evaluateAssetType();if(n===ze.Image){const i=this.configuration.type===si.SilentIllustration?this.configuration.data.asset?.fileLink:this.product?.overlayImageUrl;if(!i)throw new Error("Undefined raster silent step source");const A={stepName:this.configuration.stepName,id:Te(),src:i,type:n,y:t.top,x:t.left,width:t.width,height:t.height,layer:t.layer,layerIndex:t.layerIndex,immutable:t.immutable,productOverlay:this.configuration.type===si.ProductOverlay||void 0,rotation:t.rotation,excludeFromExport:this.configuration.data.excludeFromPrint,preserveAspectRatio:"none"};return{regionElement:{id:A.id,region:t},command:new rA(A,e)}}{const A=this.configuration.type===si.SilentIllustration?this.configuration.data.asset?.fileLink:i,a=async()=>new Promise(((t,e)=>{A?Xi(A).then((e=>{t(e)})).catch((t=>console.error(t))):e("Undefined vector silent step source")})),r=await On(await a()),s={stepName:this.configuration.stepName,id:Te(),cachedObjectURL:await WA(r.svg),src:A,svg:r.svg,colors:r.colors,type:n,y:t.top,x:t.left,width:t.width,height:t.height,layer:t.layer,layerIndex:t.layerIndex,rotation:t.rotation,immutable:t.immutable,productOverlay:this.configuration.type===si.ProductOverlay||void 0,excludeFromExport:this.configuration.data.excludeFromPrint};return{regionElement:{id:s.id,region:t},command:new rA(s,e)}}})),this.configuration=t,this.layouts=e,this.product=i||void 0}async trigger(){if(!this.configuration.data.regions)throw new Aa(this.configuration,"Missing regions.");if(this.configuration.type===si.SilentIllustration){const t=this.configuration.data.regions.map(this.processRegion);return Promise.all(t)}return this.configuration.type===si.ProductOverlay?Promise.all(this.configuration.data.regions.map((t=>{if(!this.layouts.find((e=>t.panelId===e.panelId)))throw new ea(t);return this.processRegion(t)}))):Promise.reject("Unknown silent step. This is a bug")}evaluateAssetType(){const t=this.configuration.type===si.ProductOverlay&&this.product?.overlayImageUrl?this.product.overlayImageUrl.toLowerCase():this.configuration.data.asset?.fileLink?.toLowerCase().split("?")[0];return t?.startsWith("data:image/png")||t?.endsWith(".jpeg")||t?.endsWith(".jpg")||t?.endsWith(".png")?ze.Image:(t?.endsWith(".svg")||t?.startsWith("image/svg+xml"),ze.Illustration)}}const Ao=async t=>{const e=`${wa.getServicesApiUrl()}/shortener`;try{const i=await fetch(e,{method:"POST",body:JSON.stringify({longUrl:t}),headers:{"Content-Type":"application/json"}});return(await i.json()).shortUrl}catch(t){throw console.error(t),new ca("Failed to shorten URL, see console.")}};function ao(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class ro{async poll(){try{if(await this.predicate())return this.onSuccess(),void(this.pollingId>-1&&window.clearInterval(this.pollingId))}catch(t){}this.attempts+=1,this.attempts<this.maxAttempts?this.pollingId=window.setTimeout(this.poll.bind(this),this.interval):this.onFailure()}constructor(t,e,i,n=3e3,A=10){ao(this,"pollingId",void 0),ao(this,"attempts",void 0),ao(this,"interval",void 0),ao(this,"maxAttempts",void 0),ao(this,"predicate",void 0),ao(this,"onSuccess",void 0),ao(this,"onFailure",void 0),this.onSuccess=e,this.onFailure=i,this.predicate=t,this.attempts=0,this.pollingId=-1,this.interval=n,this.maxAttempts=A,this.poll()}}const so=new class{async init(t,e,i){return i&&await this.reload(t,e,i),null}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)).map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[],A,(async()=>{const i=n?.storage?.videoShortUrl,A=n?.storage?.videoUrl;e.updateStorage(t.stepName,{videoShortUrl:i,videoUrl:A})}))}async regenerateQRCode(t,e,i,n,A,a,r,s,o){if(e||""===i||""!==n)o(!1);else{const e=async()=>{const t=(await Pa([i]))[0],e=t?.versions?.find((t=>"mpeg4"===t.name))?.link;return{asset:t,link:e}},c=await new Promise(((t,i)=>{new ro((async()=>!!(await e()).link),(async()=>{const i=await e();if(!i.link||!i.link)throw new na(i.asset);t({rel:"mpeg4",href:i.link})}),(()=>{i("Poller timed out with 40 attempts @ 3 second interval")}),3e3,40)}));t.forEach((t=>s(new sA(t.id))));const l="http"===a.data.baseUrl.slice(0,4)?"":"https://",g=new URL(l+a.data.baseUrl);g.searchParams.append("video",btoa(JSON.stringify([c]))),g.pathname=g.pathname+("/"===g.pathname.slice(-1)?"":"/");const h=g.toString();if(h.length>=2e3)throw new ca("Cannot create QR code, URL too long.");const d=await Ao(h);if(r(d),!a.data||!a.data.regions)throw new Aa(a,"Missing regions.");const u=await this.regionElements(a),w=await this.command(d,u,A,a.stepName);w&&(w.command&&A.getCommandDispatcher()(w.command),w.followup&&await w.followup()),await A.setSelectionsAndElements(a.stepName,[],u,(async()=>{A.updateStorage(a.stepName,{videoShortUrl:d,videoUrl:n}),o(!1)}))}}async regionElements(t){return t.data.regions.map((t=>({id:Te(),region:t})))}async command(t,e,i,n){const A=i.getLayouts(),a=`data:image/svg+xml;base64,${btoa(await(0,y.toString)(t,{type:"svg"}))}`,r=e.map((t=>{const e=t.region,i=A.find((t=>t.panelId===e?.panelId));if(!i&&e)throw new ea(e);if(i&&!e)throw new Error("Region not found");if(!i||!e)throw new Error("Neither a region or layout found!");return new rA({stepRegion:e,stepName:n,id:t.id,src:a,type:ze.Image,y:e.top,x:e.left,width:e.width,height:e.height,rotation:0},i)}));return{command:new nA(r),followup:async()=>{}}}};function oo(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const co=new class{constructor(){oo(this,"frameSourceSvg",(async(t,e)=>{if(!t)return NA(e);const i=t.asset;if(!i)throw new ia(t);const n=i.fileLink;if(n)return Xi(n);throw new na(i)}))}async init(t,e,i){if(i)return await this.reload(t,e,i),null;if(e.setMandatoryFulfilled(t.stepName,!1),e.markStepsAsInitialised([t.stepName]),t.option&&t.option.variants&&t.option.variants.length>0){const i=t.option,n=Ja.getDefaultVariant(i);return n?this.selectVariantCommand(t,n,[],e,void 0,t.data.placeholderImageUrl):null}return this.selectVariantCommand(t,void 0,[],e,void 0,t.data.placeholderImageUrl)}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)).map((t=>({id:t.id,region:t.stepRegion})));if(!t.option||0===(t.option.variants||[]).length){const i=t.data.regions.map((t=>NA(t)));e.updateStorage(t.stepName,{currentFrameSources:i})}if(n){const i=async()=>{const i=n.storage?.framePatternSrc,A=n.storage?.frameOffsetsList;if(e.updateMetadata(t.stepName,{frameOffsetsList:A,framePatternSrc:i}),i){const n=e.getStepSpecificServices(t.stepName)?.frameService;if(!n)throw new Error("Frame service unavailable, cannot load pattern!");await this.loadPatternFromString(i,n),e.updateMetadata(t.stepName,{image:i}),e.updateStorage(t.stepName,{framePatternSrc:i})}if(A?.some((t=>t.zoom))){const i=e.getStepSpecificServices(t.stepName)?.frameService;if(!i)throw new Error("Frame service unavailable, cannot load pattern!");i.updateOffsets(A)}e.setMandatoryFulfilled(t.stepName,!0)};if(n.selectedVariants&&n.selectedVariants.length>0){const a=n.selectedVariants[0].id;if(t.option&&a){const n=t.option.variants?.find((t=>t.id===a));n&&await e.setSelectionsAndElements(t.stepName,[n],A,(async()=>{const A=await Promise.all(t.data.regions.map((t=>this.frameSourceSvg(n,t))));e.updateStorage(t.stepName,{currentFrameSources:A}),await i()}))}}else await e.setSelectionsAndElements(t.stepName,[],A,i)}}selectImage(t,e,i){i.setEditedStatus(t.stepName,!0);(e.fileLink||"").endsWith("pdf")?i.addPoller(new ro((async()=>{const t=(await ka.getLocalOrFromServer(e.key||"")).versions?.find((t=>"svg"===t.name));if(!t)return!1;return 200===(await fetch(t.link)).status}),(()=>{ka.getLocalOrFromServer(e.key||"").then((e=>{this.loadPatternFromAsset(e,t,i)}))}),(()=>{throw new ca("Failed to resolve transcoded PDF")}))):this.loadPatternFromAsset(e,t,i)}async selectVariant(t,e,i,n,A){const a=await this.selectVariantCommand(t,e,i,n,A);a&&(a.command&&n.getCommandDispatcher()(a.command),a.followup&&await a.followup())}getCreateElementCommand(t,e,i,n){return new rA({id:t,type:ze.Frame,x:e.left,y:e.top,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,rotation:e.rotation,scaleX:e.width/n.frameData.width,scaleY:e.height/n.frameData.height,path:n.frameData.path,dataWidth:n.frameData.width,dataHeight:n.frameData.height,stepRegion:e,stepName:n.stepName,disablePlaceholder:n.disablePlaceholder,focalBlur:n.focalBlur,focalBlurStrength:n.focalBlurStrength,focalBlurRadius:n.focalBlurRadius,pattern:n.pattern,immutable:e.immutable},i)}async loadPatternFromString(t,e){if(t.endsWith("svg")){const i=await GA(t),n=i.width,A=i.height,a={src:t,width:n,height:A,aspect:n/A};FA.set(t,a),e.setPatternData(a)}else{const i=await Wi(t),n=await SA(i),A={src:t,width:n.width,height:n.height,aspect:n.width/n.height};FA.set(t,A),e.setPatternData(A)}}async selectVariantCommand(t,e,i,n,A,a){const r=n.getStepSpecificServices(t.stepName)?.frameService;if(!r)throw new Error("Frame service unavailable, cannot load pattern!");const s=await Promise.all(t.data.regions.map((t=>this.frameSourceSvg(e,t))));A&&A(!0);const o=await Promise.all(t.data.regions.map((async(e,A)=>{const a=await RA(s[A]),o=r.getImageData(),c=i.map((t=>new sA(t.id))),l=o?HA(o,a):void 0,g=o?{id:Te(),src:o.src,x:l?.x||0,y:l?.y||0,width:o.width,height:o.height,scaleX:l?.zoom||1,scaleY:l?.zoom||1,rotation:0}:void 0,h=Te(),d=n.getLayouts().find((t=>t.panelId===e.panelId));if(!d)throw new ea(e);return{command:this.getCreateElementCommand(h,e,d,{frameData:a,pattern:g,disablePlaceholder:t.data.disablePlaceholder,focalBlur:t.data.focalBlur,focalBlurStrength:t.data.focalBlurStrength,focalBlurRadius:t.data.focalBlurRadius,stepName:t.stepName}),regionEl:{id:h,region:e},removeExistingCommands:c}}))),c=o.map((t=>t.command)),l=o.map((t=>t.removeExistingCommands)).flat();return{command:new nA([...c,...l]),followup:async()=>{A&&A(!1),await n.setSelectionsAndElements(t.stepName,e?[e]:[],[...o.map((t=>t.regionEl))],(async()=>{if(n.updateStorage(t.stepName,{currentFrameSources:s}),a){const e=n.getStepSpecificServices(t.stepName)?.frameService;if(!e)throw new Error("Frame service unavailable, cannot load pattern!");await this.loadPatternFromString(a,e)}}))}}}patternSource(t){const e=t.versions?.find((t=>"svg"===t.name));if(e)return e.link;const i=t.fileLink;if(i)return i;throw new na(t)}async loadPatternFromAsset(t,e,i){const n=this.patternSource(t),A=i.markUpdatePending(),a=i.getStepSpecificServices(e.stepName)?.frameService;if(!a)throw new Error("Frame service unavailable, cannot load pattern!");await this.loadPatternFromString(n,a),i.updateMetadata(e.stepName,{image:n}),i.updateStorage(e.stepName,{framePatternSrc:n}),i.markUpdateCompleted(A)}};const lo=new class{async getIllustrationBody(t){return new Promise((e=>{Xi(t).then((t=>{e(t)})).catch((t=>console.error(t)))}))}getCreateElementCommand(t,e,i,n){return new rA({stepRegion:e,stepName:n.stepName,colors:n.svg.colors,id:t,src:n.src,svg:n.svg.svg,cachedObjectURL:n.objectURL,type:ze.Illustration,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,immutable:e.immutable},i)}getColors(t,e){const i=e.getRegionElements(t.stepName)||[];if(0===i.length)return[];try{return Wn(i[0].id,e.getAllLayoutData()).colors}catch(t){return[]}}async init(t,e,i){const n=t.option;if(!n)return null;if(i)return this.reload(t,e,i);{const i=Ja.getDefaultVariant(n);if(i)return await this.selectVariantCommand(t,i,[],(()=>{}),e)}return null}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=t.option;if(n?.selectedVariants){const i=n.selectedVariants[0].id;if(!a||!i)throw new Error("Required illustration variant no longer available");{const r=a.variants?.find((t=>t.id===i));if(r){const i=A.map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[r],i,(async()=>{e.updateMetadata(t.stepName,{colors:n.storage?.colors}),e.setMandatoryFulfilled(t.stepName,!0)}))}}}return null}async availableColors(t,e){const i=t.data.colorOption;return i&&i?i.variants?.map((t=>({fill:t.color,stroke:t.color,variant:t}))):[]}async changeColorsCommand(t,e,i,n,A){const a={};for(const[t,e]of A.entries())a[t]={browserValue:e,spotColor:a[t]?.spotColor};const r=Tn(t,e,i,a),s=await WA(r),o=[];for(const t of n){for(const[e,i]of A.entries())o.push(new pA(t,e,i));o.push(new mA(t,r,s))}return new nA(o)}async changeColors(t,e,i,n,A){if(0===e.length)return;const a=Wn(e[0].id,n().map((t=>t.layoutState))),r={...a.colors},s={};Object.entries(r).forEach((([t,e])=>{const i={browserValue:e.browserValue},n=e.spotColor;n&&(i.spotColor={profileName:n.profileName,namedColor:n.namedColor}),s[t]=i}));for(const[t,e]of A.entries())r[t]={browserValue:e,spotColor:r[t]?.spotColor},s[t]={browserValue:e};let o=Array.from(Object.values(r)).map((t=>t.browserValue));const c=t.data.colorOption;c&&c.variants?.forEach((t=>{o=o.map((e=>e.toLowerCase()===t.color?.toLowerCase()?t.name:e))})),i.updateMetadata(t.stepName,{colors:o});const l=new Map;if(Object.entries(r).forEach((([t,e])=>{l.set(t,e.browserValue)})),!a.svg)throw new Error("Colors changed before SVG loaded. This should never happen!");const g=await this.changeColorsCommand(a.svg,a.width,a.height,e.map((t=>t.id)),l);i.updateStorage(t.stepName,{colors:s}),i.getCommandDispatcher()(g)}async selectVariant(t,e,i,n,A){const a=await this.selectVariantCommand(t,e,i,n,A);a&&(a.command&&A.getCommandDispatcher()(a.command),a.followup&&await a.followup())}async selectVariantCommand(t,e,i,n,A){if(!t.data||!t.data.regions)throw new Aa(t,"Missing regions.");n(!0);const a=i.map((t=>new sA(t.id)));A.setMandatoryFulfilled(t.stepName,!1);const r=e.asset;if(!r)throw new ia(e);const s=r.fileLink;if(!s)throw new na(r);const o=await On(await this.getIllustrationBody(s)),c=await WA(o.svg),l=t.data.regions.map((e=>{const i=A.getLayouts().find((t=>t.panelId===e.panelId));if(!i)throw new ea(e);const n=Te();return{regionElement:{id:n,region:e},command:this.getCreateElementCommand(n,e,i,{stepName:t.stepName,src:s,objectURL:c,svg:o})}})),g=[...l.map((t=>t.command)),...a];let h=Array.from(Object.values(o.colors)).map((t=>t.browserValue));const d=t.data.colorOption;return d&&d.variants?.forEach((t=>{h=h.map((e=>e.toLowerCase()===t.color?.toLowerCase()?t.name:e))})),A.updateMetadata(t.stepName,{colors:h}),{command:new nA(g),followup:async()=>{await A.setSelectionsAndElements(t.stepName,[e],l.map((t=>t.regionElement)),(async()=>{A.setMandatoryFulfilled(t.stepName,!0),n(!1)}))}}}};const go=new class{async init(t,e,i){const n=t.option;if(!n)throw new ta(t);if(i)await this.reload(t,e,i);else{const i=Ja.getDefaultVariant(n);if(i)return await this.selectVariantLambda(t,i,e,(()=>{}))}return null}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=t.option;if(!a)throw new ta(t);if(n?.selectedVariants){const i=n.selectedVariants[0].id;if(i){const n=a.variants?.find((t=>t.id===i));if(n){const i=n.material,r=A.map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[n],r,(async()=>{const n=e.getModelContainer();if(n){const A=t.data.targetMaterials.map((t=>n.applyMaterialVariant(t,a.id||"",i||{})));Promise.all(A).then((()=>e.setMandatoryFulfilled(t.stepName,!0)))}}))}}}}async selectVariant(t,e,i,n){const A=await this.selectVariantLambda(t,e,i,n);A&&(A.command&&i.getCommandDispatcher()(A.command),A.followup&&await A.followup())}async selectVariantLambda(t,e,i,n){const A=i.getModelContainer();n(!0);const a=e.material;if(!a)throw n(!1),new ia(e);return{command:void 0,followup:async()=>{await i.setSelectionsAndElements(t.stepName,[e],[],(async()=>{try{A&&t.data.targetMaterials.forEach((e=>{t.option&&A.applyMaterialVariant(e,t.option.id||"",a)})),i.setMandatoryFulfilled(t.stepName,!0)}finally{n(!1)}}))}}}};const ho=new class{async init(t,e,i){const n=t.option;if(!n)throw new ta(t);if(i)await this.reload(t,e,i);else{const i=Ja.getDefaultVariant(n);if(i)return await this.selectVariantLambda(t,i,e,(()=>{}))}return null}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=t.option;if(n?.selectedVariants){const i=n.selectedVariants[0].id;if(a&&i){const n=a.variants?.find((t=>t.id===i));if(n){const i=A.map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[n],i,(async()=>{const i=e.getModelContainer();if(i&&t.option){const A=n.asset?.fileLink;if(!A)throw new ia(n);await i.applyModelVariant(t.option.id||"",{model:A,contextService:e.getLayoutPreviewService()},t.data.replaceProductModel||!1),e.setMandatoryFulfilled(t.stepName,!0)}}))}}}}async selectVariant(t,e,i,n){const A=await this.selectVariantLambda(t,e,i,n);A&&(A.command&&i.getCommandDispatcher()(A.command),A.followup&&await A.followup())}async selectVariantLambda(t,e,i,n){n(!0);const A=e.asset?.fileLink;if(!A)throw new ia(e);return{command:void 0,followup:async()=>{await i.setSelectionsAndElements(t.stepName,[e],[],(async()=>{try{const e=i.getModelContainer();e&&t.option&&e.applyModelVariant(t.option.id||"",{model:A,contextService:i.getLayoutPreviewService()},t.data.replaceProductModel||!1),i.setMandatoryFulfilled(t.stepName,!0)}finally{n(!1)}}))}}}};const uo=new class{async init(t,e,i){return i?(await this.reload(t,e,i),null):(e.updateMetadata(t.stepName,{text:""}),this.changeTextCommand(t,"",e,"",(()=>{})))}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)).map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[],A,(async()=>{e.updateStorage(t.stepName,{text:n?.storage?.text}),e.setMandatoryFulfilled(t.stepName,""!==n?.storage?.text)}))}async changeText(t,e,i,n,A){const a=await this.changeTextCommand(t,e,i,n,A);a&&(a.command&&i.getCommandDispatcher()(a.command),a.followup&&await a.followup())}async changeTextCommand(t,e,i,n,A){const a=i.getRegionElements(t.stepName),r=i.getStepSpecificServices(t.stepName)?.module;if(!r)return console.error("Missing module."),null;const s=i.getProfanities();if(!this.validateInput(t,e,s,A))return i.setMandatoryFulfilled(t.stepName,!1),console.error(n),null;if(i.setMandatoryFulfilled(t.stepName,""!==e),!t.data||!t.data.regions||t.data.regions.length<=0)return console.error("Missing configuration."),null;i.updateStorage(t.stepName,{text:e});const o=(e,n,A)=>{const a=A||Te(),r=i.getLayouts().find((t=>t.panelId===n.panelId));if(!r)return console.error(`Can not find layout for region: ${n.panelId}`),null;const s=[];return A&&s.push(new sA(a)),s.push(new rA({stepRegion:n,stepName:t.stepName,colors:{},id:a,svg:e,type:ze.Illustration,y:n.top,x:n.left,rotation:n.rotation,width:n.width,height:n.height,layer:n.layer,layerIndex:n.layerIndex,immutable:n.immutable},r)),{id:a,region:n,command:new nA(s)}};if(a.length>0){const t=a.map((t=>{if(!t.region)return null;const i=r.svgPrint(e,t.region);return o(i,t.region,t.id)})).filter((t=>!!t)).filter((t=>!!t)).map((t=>t&&t.command));return{command:new nA(t),followup:async()=>{}}}{const n=t.data.regions.map((t=>o(r.svgPrint(e,t),t))),A=n.filter((t=>!!t)).map((t=>t&&t.command));return{command:new nA(A),followup:async()=>{const e=n.filter((t=>t)).map((t=>t&&{id:t.id,region:t.region}));await i.setSelectionsAndElements(t.stepName,[],e)}}}}validateInput(t,e,i,n){if(t.data&&t.data.maxLength){const i=t.data.maxLength;if(e.length>i)return n("Too many characters."),!1}if(!/^$|^[a-zA-Z0-9 ]+$/.test(e))return n("Unsupported characters."),!1;const A=(0,x.split)(e.toLowerCase());for(const t of A)for(const e in i){if(t===i[e].toLowerCase().replace(/\s/g,""))return n("Blocked profanity."),!1}return n(""),!0}};const wo=new class{async init(t,e,i){const n=t.option;if(!n)return null;if(i)await this.reload(t,e,i);else if(n.defaultVariant)return e.markStepsAsInitialised([t.stepName]),this.selectVariantCommand(t,n.defaultVariant,e,(()=>{}));return e.markStepsAsInitialised([t.stepName]),null}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=t.option;if(n?.selectedVariants){const i=n.selectedVariants[0].id;if(a&&i){const n=a.variants?.find((t=>t.id===i));if(n){const i=A.map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[n],i,(async()=>{e.setMandatoryFulfilled(t.stepName,!0)}))}}}}async selectVariant(t,e,i,n){const A=await this.selectVariantCommand(t,e,i,n);A&&(A.command&&i.getCommandDispatcher()(A.command),A.followup&&await A.followup())}async selectVariantCommand(t,e,i,n){const A=e.asset;if(!A)throw new ia(e);const a=A?.fileLink;if(!a)return console.error("No URL for picture!"),null;n(!0),i.setMandatoryFulfilled(t.stepName,!1);const r=i.getRegionElements(t.stepName).map((t=>new sA(t.id))),s=t.data.regions.map((e=>{const n=i.getLayouts().find((t=>t.panelId===e.panelId));if(!n)throw new ea(e);const A=Te();return{regionElement:{id:A,region:e},command:new rA({stepName:t.stepName,stepRegion:e,id:A,src:a,type:ze.Image,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,immutable:e.immutable,preserveAspectRatio:"none"},n)}}));return{command:new nA([...r,...s.map((t=>t.command))]),followup:async()=>{await i.setSelectionsAndElements(t.stepName,[e],s.map((t=>t.regionElement)),(async()=>{i.setMandatoryFulfilled(t.stepName,!0),n(!1)}))}}}};const Bo=new class{async init(t,e,i){const n=t.option;if(!n)return null;if(i)await this.reload(t,e,i);else{const i=n.variants;if(Ja.getDefaultVariant(n)){const A=i?.find((t=>t.id===n.defaultVariant?.id));return this.selectVariantLambda(t,A?.id||"",e)}}return null}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=t.option;if(n?.selectedVariants){const i=n.selectedVariants[0].id;if(A&&i){const n=A.variants?.find((t=>t.id===i));n&&await e.setSelectionsAndElements(t.stepName,[n],[])}}}async selectVariant(t,e,i){await i.getInitializationPromise();const n=await this.selectVariantLambda(t,e,i);n&&(n.command&&i.getCommandDispatcher()(n.command),n.followup&&await n.followup())}async selectVariantLambda(t,e,i){const n=t.option;if(!n)return null;const A=n.variants;if(!A)return null;const a=A.length>1?A.find((t=>t.id===e)):A[0];if(!a)throw new Error("Failed to find selected variant in step variants, this should never happen!");return{command:void 0,followup:async()=>{await i.setSelectionsAndElements(t.stepName,[a],[],(async()=>{i.setMandatoryFulfilled(t.stepName,!0)}))}}}};function po(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const mo=new class{constructor(){po(this,"shapeFillId","spiff-fill-shape")}async availableColours(t){const e=t.option;return e&&e.variants?.map((t=>({fill:t.color,stroke:t.color,variant:t})))||[]}setCustomColor(t,e,i){const n=i.getLayouts(),A=(i.getRegionElements(e.stepName)||[]).map((e=>{const i=e.region;if(!n.find((t=>t.panelId===i?.panelId)))throw new ea(i);return new pA(e.id,this.shapeFillId,t)})).filter((t=>!!t));i.getCommandDispatcher()(new nA(A)),i.updateStorage(e.stepName,{colour:t})}async init(t,e,i){const n=t.option;if(!n)throw new ta(t);if(!i){const i=Ja.getDefaultVariant(n);return i?this.selectVariantCommand(t,{fill:i.color,stroke:i.color,variant:i},[],e):null}return await this.reload(t,e,i),null}async selectVariant(t,e,i,n){const A=await this.selectVariantCommand(t,e,i,n);A&&(A.command&&n.getCommandDispatcher()(A.command),A.followup&&await A.followup())}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=t.option;if(n?.selectedVariants){const i=n.selectedVariants[0].id;if(a&&i){const r=a.variants?.find((t=>t.id===i));if(r){const i=A.map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[r],i,(async()=>{e.updateStorage(t.stepName,{colour:n?.storage?.colour||""}),e.setMandatoryFulfilled(t.stepName,!0)}))}}}}async selectVariantCommand(t,e,i,n){const A=n.getLayouts(),a=n.getStepStorage(t.stepName)?.colour,r=()=>{if("#custom"===e.variant?.color)return a||"#FFFFFF";if(e.variant?.color)return e.variant.color;throw new Error("Failed to resolve color for shape step.")};if(i.length>0){const a=t=>{const e=t.region;if(!A.find((t=>t.panelId===e?.panelId)))throw new ea(e);const i=r();return new pA(t.id,this.shapeFillId,i)},s=i.map(a).filter((t=>!!t));return{command:new nA(s),followup:async()=>{await n.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],i),n.updateStorage(t.stepName,{colour:r()})}}}{const i=e=>{const i=A.find((t=>t.panelId===e.panelId));if(!i)throw new ea(e);const n=r(),a=`\n <svg\n xmlns="http://www.w3.org/2000/svg"\n xmlnsXlink="http://www.w3.org/1999/xlink"\n xmlSpace="preserve"\n preserveAspectRatio="none"\n version="1.1"\n width="1"\n height="1"\n viewBox="0 0 1 1"\n >\n <rect\n x="0"\n y="0"\n width="1"\n height="1"\n class="${this.shapeFillId}"\n fill="${n}"\n />\n </svg>\n `,s={};s[this.shapeFillId]={browserValue:n};const o=Te();return{id:o,region:e,command:new rA({stepRegion:e,stepName:t.stepName,colors:s,id:o,svg:a,type:ze.Illustration,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,immutable:e.immutable,excludeFromExport:t.data.excludeFromPrint},i)}},a=t.data.regions.map(i),s=a.filter((t=>!!t)).map((t=>t?.command)),o=a.filter((t=>!!t)).map((t=>({id:t.id,region:t.region})));return{command:new nA(s),followup:async()=>{await n.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],o,(async()=>{n.updateStorage(t.stepName,{colour:r()})}))}}}}};function Eo(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class fo extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=fo.name}}const Co=["‘","’","“","”","\n"];class Qo extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=Qo.name}}const yo=new class{constructor(){Eo(this,"cachedColors",new Map),Eo(this,"filterUnsupportedCharacters",((t,e)=>{let i=t.replace(/(\r\n|\r|(\u00a9|\u00ae|[\u2000-\u2017]|[\u201E-\u3300]]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]))/gm,"");const n=[],A=e?ln(e.assetUrl):void 0;if(A){const t=i.split("").filter((t=>!Co.includes(t))).join(""),e=t.split("").map((t=>A.getFont().charToGlyph(t)));for(let i=0;i<e.length;i++){".notdef"===e[i].name&&n.push(String.fromCharCode(t.charCodeAt(i)))}}for(let t=0;t<n.length;t++)i=i.replaceAll(n[t],"");return i})),Eo(this,"textAlign",(t=>t.vertical?"center":t.textAlign||"center")),Eo(this,"getErrorsForText",((t,e,i)=>{const n=[];e.data&&e.data.maxLength&&t.length>e.data.maxLength&&n.push({localizationKey:"workflow.steps.text.characterLimit"});const A=i.getProfanities(),a=(0,x.split)(t.toLowerCase());for(const t of a)for(const e in A){if(t===A[e].toLowerCase().replace(/\s/g,"")){n.push({localizationKey:"workflow.steps.text.blockedProfanity"});break}}return!e.data.allowNewlines&&(t.includes("\n")||t.includes("\r"))&&n.push({localizationKey:"workflow.steps.text.multipleLines"}),n}))}async init(t,e,i){const n=t.option;if(!n)return null;if(i)await this.reload(t,e,i);else{const i=this.getDefaultImageFillVariant(t.data),A=i?.asset?.fileLink,a=A?await UA(A):void 0,r=a?{src:a.src,height:a.height,width:a.width,scale:t.data.imageFillScale||1}:void 0;e.updateStorage(t.stepName,{inputText:t.data.defaultText||"",color:(await this.getDefaultColorVariant(t.data))?.color||await this.getDefaultColor(t.data),fillImage:r}),e.updateMetadata(t.stepName,{text:t.data.defaultText||"",color:(await this.getDefaultColorVariant(t.data))?.name||await this.getDefaultColor(t.data),fillImage:i?.name});const s=Ja.getDefaultVariant(n);if(s)return this.selectVariantCommand(t,s,{},[],e,(()=>{}),(()=>{}),r)}return null}findLayoutElements(t,e){return t.getRegionElements(e.stepName).map((e=>Wn(e.id,t.getAllLayoutData())))}availableFillColors(t){const e=this.cachedColors.get(t.stepName);if(e)return e;const i=t.data.colorOption;if(i){const e=i.variants?.map((t=>({fill:t.color,stroke:t.color,variant:t})))||[];return this.cachedColors.set(t.stepName,e),e}return[]}async changeFillColor(t,e,i,n){if(!t.data||!t.data.regions)return;const A=n.getCommandDispatcher();e.variant?n.updateMetadata(t.stepName,{color:e.variant.name}):n.updateMetadata(t.stepName,{color:e.fill});const a=t.data.colorOption,r=a?this.createTextFillSpotColor(a,e.variant):void 0;a?n.updateStorage(t.stepName,{color:e.fill,colorProfileAssetKey:a.colorProfile?.key}):n.updateStorage(t.stepName,{color:e.fill});for(const t of i){if(!e.fill)throw new Error("Fill not set on new color selection!");A(new cA(t.id,e.fill,r))}}async availableFillImages(t){const e=t.data.imageFillOption;if(e){const i=e.variants?.map((t=>t.asset?.fileLink))?.filter((t=>!!t))||[];return Promise.all(i.map((async e=>{const i=await UA(e);return{src:e,width:i.width,height:i.height,scale:t.data.imageFillScale||1}})))}return Promise.resolve([])}async changeFillImage(t,e,i,n){if(!t.data||!t.data.regions)return;const A=n.getCommandDispatcher(),a=t.option?.variants?.find((t=>t.asset?.fileLink===e.src));n.updateMetadata(t.stepName,{fillImage:a?.name}),n.updateStorage(t.stepName,{fillImage:e});for(const t of i){A(new lA(t.id,e))}}getProcessedInput(t,e,i){const n=i?t:this.injectReplaceableText(t,e);return yn(n,{vertical:e.vertical,uppercase:e.uppercase})}updateInputText(t,e,i,n){const A=n.getStepStorage(i.stepName),a=this.getProcessedInput(t,i.data,!!A.customiseAllText),r={command:void 0,helperText:"",errors:this.getErrorsForText(t,i,n)};if(r.errors.length>0)return r.helperText=r.errors[0].localizationKey,r;const s=(i.data.maxLength-a.length).toString();r.helperText=`${s} characters remaining`;const o=n.getTransaction().bulk&&i.data.varyText||!1,c=[],l=new Map,g=new Map;for(const t of e){if(!t.fontData)throw new ra("Failed to resolve font data for text.");const[e,n]=LA(t.fontSize,t.fontData,{left:t.x,top:t.y,width:t.width,height:t.height,rotation:t.rotation,panelId:""},[a],{size:i.data.size,minSize:i.data.minSize,maxSize:i.data.maxSize});l.set(t.id,e),g.set(t.id,n);const A=i.data.curved?a:(n||[]).join("\n");c.push(this.generateTextChangeCommandsForRegion(e,i.data,t.id,A,o))}if(!i.data.curved&&e.length>0){if(!Array.from(g.values()).every((t=>t)))return r.errors.push({localizationKey:"workflow.steps.text.doesNotFit"}),r}return n.updateStorage(i.stepName,{text:t}),n.updateMetadata(i.stepName,{text:a}),A.defaultCleared&&n.setMandatoryFulfilled(i.stepName,!0),r.command=new nA(c),r.command.varying=o,r}async selectVariant(t,e,i,n,A){const a=await this.selectVariantCommand(t,e,i.getStepStorage(t.stepName)||{},i.getRegionElements(t.stepName),i,n,A);a&&(a.command&&i.getCommandDispatcher()(a.command),a.followup&&await a.followup())}createTextFillSpotColor(t,e){const i=t.colorProfile;if(i){const t=(i.name||"").replace(/\s/g,"-"),n=t.lastIndexOf("/"),A=t.slice(n+1).slice(0,-4);if(!e.namedColor)throw new Error("variant named color not set!");return{profileName:A,namedColor:e.namedColor}}}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=t.option;if(n?.selectedVariants){const i=n.selectedVariants[0].id;if(a&&i){const r=a.variants?.find((t=>t.id===i));if(r){const i=await this.fontDataFromVariant(r),a=A.map((t=>({id:t.id,region:t.stepRegion}))),s=n.storage?.color,o=n.storage?.text;await e.setSelectionsAndElements(t.stepName,[r],a,(async()=>{e.updateMetadata(t.stepName,{color:s,text:o}),e.updateStorage(t.stepName,{text:o,inputText:o});const n=A.map((t=>new dA(t.id,i))),a=new nA(n);e.getCommandDispatcher()(a),e.setMandatoryFulfilled(t.stepName,!0)}));const{command:c}=yo.updateInputText(o||"",A,t,e);c&&e.getCommandDispatcher()(c)}}}}async getDefaultColorVariant(t){const e=t.colorOption;if(e)return Ja.getDefaultVariant(e)}async getDefaultColor(t){const e=t.colorOption;if(!e)return;return Ja.getDefaultVariant(e)?.color}getDefaultImageFillVariant(t){const e=t.imageFillOption;if(e)return Ja.getDefaultVariant(e)}async fontDataFromVariant(t){const e=t.asset;if(!e)throw new ia(t);const i=e.fileLink;if(!i)throw new na(e);return{assetUrl:i,name:(await on(i)).names.fullName.en}}async selectVariantCommand(t,e,i,n,A,a,r,s){const o=A.markUpdatePending(),c=await this.fontDataFromVariant(e);if(n.length>0){const l=n.map((t=>new dA(t.id,c)));if(s){const t=n.map((t=>new lA(t.id,s)));l.push(...t)}const g=await this.changeInputTextWithRegion(t,t.data.size||30,c,i.text||"",i,A,!!i.customiseAllText,a,r);g&&l.push(g);return{command:new nA(l),followup:async()=>{A.markUpdateCompleted(o),await A.setSelectionsAndElements(t.stepName,[e],n)}}}{const n=await this.createTextboxRegions(t.stepName,e,t.data,c,i,A),l=await this.changeInputTextWithRegion(t,t.data.size||30,c,n[0]?.newElement.input||i.text||t.data.defaultText||"",i,A,!!i.customiseAllText,a,r),g=n.flatMap((t=>t.commands));if(s){const t=n.map((t=>new lA(t.regionElement.id,s)));g.push(...t)}l&&g.push(l);return{command:new nA(g),followup:async()=>{A.markUpdateCompleted(o)}}}}injectReplaceableText(t,e){return e.replaceableText?e.replaceableText.replace("{{}}",t):t}async createTextboxRegions(t,e,i,n,A,a){if(!i||!i.regions)throw new Error("Step data not supplied");const r=a.getTransaction().bulk&&i.varyText||!1,s=r?"":A.text||i.defaultText||"",o=this.getProcessedInput(s,i,!1),c=await Promise.all(i.regions.map((async e=>{const c=a.getLayouts().find((t=>t.panelId===e.panelId)),l=Te();try{if(!c)throw new Qo("Failed to find layout for region: "+e.panelId);const g=i.colorOption;let h;if(g&&g.variants){const e=g.variants.find((t=>t.id===g.defaultVariant?.id))||g.variants[0];h=this.createTextFillSpotColor(g,e),a.updateStorage(t,{colorProfileAssetKey:g.colorProfile?.key})}const d=await this.getDefaultColor(i),u=d||"#000000",w={stepRegion:e,stepName:t,align:this.textAlign(i),fill:A.color?A.color:u,fontSize:i.size||30,fontData:n,id:l,layer:e.layer,layerIndex:e.layerIndex,rotation:e.rotation,text:o,input:s,type:ze.Textbox,vertical:i.vertical,x:e.left,y:e.top,height:e.height,width:e.width,immutable:e.immutable,verticalAlign:i.verticalAlign||"middle",curved:i.curved,paths:i.paths,fillSpotColorDefinition:h},B=[],p=new Map,m=new Map;if(!w.fontData)throw new ra("Failed to resolve font data for text.");const[E,f]=LA(w.fontSize,w.fontData,{left:w.x,top:w.y,width:w.width,height:w.height,rotation:w.rotation,panelId:""},[o],{size:i.size,minSize:i.minSize,maxSize:i.maxSize});p.set(w.id,E),m.set(w.id,f);const C=i.curved||i.vertical?o:(f||[]).join("\n");B.push(this.generateTextChangeCommandsForRegion(E,i,w.id,C,r));const Q=new rA(w,c);return Q.varying=r,{regionElement:{id:l,region:e},commands:[Q,...B],newElement:w,fontData:n}}catch(t){throw console.log(t),new fo("Error adding font to region")}}))).catch((t=>{throw t instanceof fo?(wr.setLatestToast("Failed to load font.",Do.Error),t):t instanceof Qo?t:new Error(t)}));return await a.setSelectionsAndElements(t,[e],c.map((t=>t.regionElement)),(async()=>{a.updateMetadata(t,{text:s}),a.updateStorage(t,{text:s})})),c}generateTextChangeCommandsForRegion(t,e,i,n,A){const a=[],r=new BA(i,n);if(r.varying=A,a.push(r),!e.size){const e=new gA(i,t);e.varying=A,a.push(e)}const s=new nA(a);return s.varying=A,s}async changeInputTextWithRegion(t,e,i,n,A,a,r,s,o,c){const l=(n||"").replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,""),g=this.getProcessedInput(l,t.data,r),h=a.getRegionElements(t.stepName),d=new Map,u=new Map;for(const n of h)if(n.region){const[A,a]=LA(e,i,n.region,[g],{size:t.data.size,minSize:t.data.minSize,maxSize:t.data.maxSize});d.set(n.id,A),u.set(n.id,a)}const w=(()=>{if(t.data&&t.data.maxLength&&g.length>t.data.maxLength)return c&&c(!0),{info:"0"};const e=a.getProfanities(),i=(0,x.split)(g.toLowerCase());for(const t of i)for(const i in e){if(t===e[i].toLowerCase().replace(/\s/g,""))return s(!0),{error:"Blocked profanity."}}if(!t.data.vertical&&!t.data.allowNewlines&&(g.includes("\n")||g.includes("\r")))return s(!0),{error:"Cannot span multiple lines."};if(!t.data.curved){if(!Array.from(u.values()).every((t=>t)))return s(!0),{error:"Does not fit."}}return s(!1),{info:(t.data.maxLength-g.length).toString()}})();if(w.error)return void o(w.error);if(o(`${w.info} characters remaining`||""),c)return;a.updateStorage(t.stepName,{text:l}),a.updateMetadata(t.stepName,{text:this.injectReplaceableText(l,t.data)});const B=a.getTransaction().bulk&&t.data.varyText||!1;A.defaultCleared&&a.setMandatoryFulfilled(t.stepName,!0);const p=[];for(const e of h){const i=t.data.curved?g:(u.get(e.id)||[]).join("\n");p.push(this.generateTextChangeCommandsForRegion(d.get(e.id)||1,t.data,e.id,i,B))}const m=new nA(p);return m.varying=B,m}};function Io(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}let Do;var xo;(xo=Do||(Do={})).Error="Error",xo.Warning="Warning",xo.Info="Info";class vo extends Wr{constructor(t){super(),Io(this,"update",void 0),Io(this,"createdAt",new Date),this.update=t}async execute(){await this.update(),await new Promise((t=>{window.setTimeout((()=>{t()}),1e3)}))}}class Mo{constructor(t,e,i,n,A,a,r,s,o,c,l=!1,g,h=!1){Io(this,"reloadedState",void 0),Io(this,"transaction",void 0),Io(this,"ownerCustomer",void 0),Io(this,"updateTransaction",void 0),Io(this,"confirmedDesign",void 0),Io(this,"editedSteps",void 0),Io(this,"informationResults",void 0),Io(this,"layouts",void 0),Io(this,"mandatorySteps",void 0),Io(this,"pendingUpdates",void 0),Io(this,"selectionCost",void 0),Io(this,"workflow",void 0),Io(this,"stepSpecificServices",void 0),Io(this,"previewService",void 0),Io(this,"profanityFilter",void 0),Io(this,"pollers",void 0),Io(this,"commandContext",void 0),Io(this,"stepElements",void 0),Io(this,"stepInitialised",void 0),Io(this,"stepMetadata",void 0),Io(this,"stepSelections",void 0),Io(this,"storage",void 0),Io(this,"confirmCallbacks",void 0),Io(this,"editedCallbacks",void 0),Io(this,"elementsCallbacks",void 0),Io(this,"informationResultCallbacks",void 0),Io(this,"initCallbacks",void 0),Io(this,"makingAdjustmentsCallback",void 0),Io(this,"mandatoryCallbacks",void 0),Io(this,"metadataCallbacks",void 0),Io(this,"selectionCallbacks",void 0),Io(this,"stepSpecificStorageCallbacks",void 0),Io(this,"storageCallbacks",void 0),Io(this,"currentVariationRecordCallbacks",void 0),Io(this,"variationRecordCallbacks",void 0),Io(this,"allScenes",void 0),Io(this,"product",void 0),Io(this,"invalidModelVariants",void 0),Io(this,"currentAdjustingStepId",void 0),Io(this,"renderableContextService",void 0),Io(this,"workflowStatePromiseQueue",new Xr(1)),Io(this,"variationRecords",[]),Io(this,"currentVariationRecord",void 0),Io(this,"initializationPromise",void 0),Io(this,"initialized",!1),Io(this,"readOnly",!1),Io(this,"modelContainer",void 0),Io(this,"isReloadedTransaction",!1),Io(this,"render3DScene",(()=>{if(!this.previewService)return;const t=this.getCommandContext().getAllLayouts(),e=this.getLayoutPreviewService()?.getAll();if(e)for(const[,i]of e)i.render(this.getWorkflow(),t,this.getCurrentVariationRecord(),this.getProduct().overlayImageUrl)})),this.updateTransaction=A,this.commandContext=n,this.reloadedState=c,this.transaction=a,this.readOnly=l,this.confirmedDesign=!1,this.editedSteps={},this.informationResults=[],this.mandatorySteps={},this.pendingUpdates=[],this.selectionCost=0,this.workflow=t,this.stepSpecificServices={},this.profanityFilter=e,this.pollers=[],this.allScenes=[],this.layouts=i,this.product=r,this.previewService=s,this.modelContainer=g,this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},this.confirmCallbacks=[],this.editedCallbacks=[],this.elementsCallbacks=[],this.informationResultCallbacks=[],this.initCallbacks=[],this.mandatoryCallbacks=[],this.makingAdjustmentsCallback=[],this.metadataCallbacks=[],this.selectionCallbacks=[],this.stepSpecificStorageCallbacks={},this.storageCallbacks=[],this.currentVariationRecordCallbacks=[],this.variationRecordCallbacks=[],this.invalidModelVariants=[],this.currentAdjustingStepId="",this.renderableContextService=o,this.currentVariationRecord=null,this.isReloadedTransaction=h,this.initializationPromise=this.initializeDefaultWorkflowState(t,a),this.initializationPromise.then((()=>{this.initialized=!0})),this.initializationPromise.catch((t=>{throw console.error(t),this.initialized=!1,new Error("Workflow initialization failed due to an error. See console.")})),this.initializationPromise.finally((()=>this.getCommandContext().registerStateCallback((()=>{this.updateStateWithServer(),this.render3DScene()}))))}async initializeDefaultWorkflowState(t,e){this.reloadedState&&this.reloadedState.serializableWorkflow.steps.forEach((t=>{this.storage[t.stepName]=t.storage||{}})),this.allScenes=await Ks(t,{bulkScene:e.bulk||!1,bulkSceneTitle:"workflow.steps.bulk.title",finishScene:!0,finishSceneTitle:"workflow.steps.finish.confirmDesign"},e);const i=qs(this.allScenes,this.stepSelections).map((t=>t.silentSteps)).flat(),{stepElements:n,commands:A}=await this.stepElementsForIntroducedSilentSteps(i,!!this.reloadedState);this.commandContext.apply(new nA(A),!0),this.stepElements={...this.stepElements,...n},await this.ensureStepsAreLoaded(),!this.isReloadedTransaction&&this.updateStateWithServer(),this.render3DScene(),this.reloadedState&&(()=>{const t=this.workflow.finalizeStepConfig;if(!t)return;const e=t.lookAtAnimation,i=t.modelAnimation;e&&this.previewService?.executeCameraAnimation(e),i&&this.modelContainer?.executeAnimation(i)})()}getProduct(){return this.product}getInitializationPromise(){return this.initializationPromise}isInitialized(){return this.initialized}addVariationRecord(t){const e={...t,recordNumber:this.variationRecords.reduce(((t,e)=>e.recordNumber>t?e.recordNumber:t),0)+1};return this.variationRecords.push(e),this.onVariationRecordsChange(),e}removeVariationRecord(t){if(this.variationRecords=this.variationRecords.filter((e=>e.recordNumber!==t)),this.variationRecords.forEach(((t,e)=>t.recordNumber=e+1)),this.currentVariationRecord&&this.currentVariationRecord.recordNumber===t){const t=this.currentVariationRecord.recordNumber,e=t>1?this.variationRecords[t-2]:this.variationRecords[0];this.setCurrentVariationRecord(e||null)}return this.onVariationRecordsChange(),this.variationRecords}setVariationRecords(t){this.variationRecords=t,this.onVariationRecordsChange(),0===t.length?this.setCurrentVariationRecord(null):this.setCurrentVariationRecord(t[0])}setCurrentVariationRecord(t){if(this.currentVariationRecord=t,this.onCurrentVariationRecordChange(),t){const e=this.variationRecords.find((e=>e.recordNumber===t.recordNumber));e&&(e.values=t.values,this.onVariationRecordsChange())}}addConfirmCallback(t){t(this.confirmedDesign),this.confirmCallbacks.push(t)}addEditedCallback(t){t(this.editedSteps),this.editedCallbacks.push(t)}addElementsCallback(t){t(this.stepElements),this.elementsCallbacks.push(t)}addInformationResultCallback(t){t(this.informationResults),this.informationResultCallbacks.push(t)}addInitCallback(t){t(this.stepInitialised),this.initCallbacks.push(t)}addMandatoryCallback(t){t(this.mandatorySteps),this.mandatoryCallbacks.push(t)}addMetadataCallback(t){t(this.stepMetadata),this.metadataCallbacks.push(t)}async addSelectionCallback(t){t({invalidModelVariants:this.invalidModelVariants,selectionCost:this.selectionCost,selections:this.stepSelections,traversableScenes:await this.traversableScenes()}),this.selectionCallbacks.push(t)}addStepSpecificStorageCallback(t,e){Object.keys(this.storage).includes(e)||(this.storage[e]={}),t(this.storage[e]),Object.keys(this.stepSpecificStorageCallbacks).includes(e)||(this.stepSpecificStorageCallbacks[e]=[]),this.stepSpecificStorageCallbacks[e].push(t)}addStorageCallback(t){t(this.storage),this.storageCallbacks.push(t)}addMakingAdjustmentsCallback(t){t(this.currentAdjustingStepId),this.makingAdjustmentsCallback.push(t)}addCurrentVariationCallback(t){t(this.currentVariationRecord),this.currentVariationRecordCallbacks.push(t)}addVariationRecordsCallback(t){t(this.variationRecords),this.variationRecordCallbacks.push(t)}addPoller(t){this.pollers.push(t)}getLayouts(){return this.layouts}getAllLayoutData(){return this.commandContext.getAllLayouts().map((t=>t.layoutState))}getLayoutPreviewService(){return this.renderableContextService}getInformationResults(){return this.informationResults}getPreviewService(){return this.previewService}getProfanities(){return this.profanityFilter}getCommandContext(){return this.commandContext}getRegionElements(t){return this.stepElements[t]||[]}getStepSpecificServices(t){return this.stepSpecificServices[t]}getTransaction(){return this.transaction}getTransactionCustomer(){return this.ownerCustomer}setTransactionCustomer(t){this.ownerCustomer=t}setTransactionCustomerDetails(t){this.ownerCustomer={...this.ownerCustomer,emailAddress:t.email}}getModelContainer(){return this.modelContainer}setModelContainer(t){(!t||this.previewService&&this.previewService.getAllModels().includes(t))&&(this.modelContainer=t,t.metadata&&t.metadata instanceof Map&&this.modelContainer.metadata.set("workflowManager",this))}setTransaction(t){this.transaction=t}getWorkflow(){return this.workflow}getCommandDispatcher(){return t=>this.commandContext.apply(t,!this.initialized)}getWorkflowSelections(){const t={};return this.workflow.steps.forEach((e=>{const i=this.stepSelections[e.stepName];i&&i.selectedVariants&&i.selectedVariants.length>0&&(t[e.stepName]={selections:i.selectedVariants})})),t}markStepsAsInitialised(t){const e={...this.stepInitialised};t.forEach((t=>{e[t]=!0})),this.stepInitialised=e,this.onInitChange()}getUpdatesPending(){return this.pendingUpdates.length>0}markUpdateCompleted(t){this.pendingUpdates=this.pendingUpdates.filter((e=>e!==t))}markUpdatePending(){const t=Te();return this.pendingUpdates=[...this.pendingUpdates,t],t}setEditedStatus(t,e){this.editedSteps={...this.editedSteps,[t]:e},this.onEditedChange()}setInformationResults(t){this.informationResults=[...t],this.onInformationResultChange()}setCurrentAdjustingStepId(t){this.currentAdjustingStepId=t,this.onMakingAdjustmentsChange()}setMandatoryFulfilled(t,e){this.mandatorySteps[t]!==e&&(this.mandatorySteps={...this.mandatorySteps,[t]:e},this.onMandatoryChange())}toggleDesignConfirmed(){this.confirmedDesign=!this.confirmedDesign,this.onConfirmChange()}toggleMakingAdjustmentsCallback(t){t(this.mandatorySteps),this.mandatoryCallbacks.push(t)}async injectIntoPreviewService(t){if(this.modelContainer)throw new Error("You must eject from the preview service before injecting again.");if(this.previewService=t,!this.getProduct().modelUrl||!this.previewService)return;const e=t.loadModel({model:this.getProduct().modelUrl,contextService:this.getLayoutPreviewService()});this.setModelContainer(e),await e.getInitializationPromise(),this.render3DScene()}ejectFromPreviewService(){if(this.modelContainer){if(!this.modelContainer.dispose)throw new Error("This feature is not supported in the current preview service.");this.modelContainer.dispose(),this.modelContainer=void 0}this.previewService=void 0}updateStorage(t,e){const i={...this.storage,[t]:{...this.storage[t],...e}};if(!b(C)(i,this.storage)){this.storage=i;const e=new _n(this.constructSerializableWorkflow());this.commandContext.apply(e,!0),this.onStepSpecificStorageChange(t),this.onStorageChange()}}constructSerializableWorkflow(){const t=[];return this.allScenes.forEach((e=>{e.renderableSteps.forEach((e=>{const i={stepName:e.stepName};i.storage=this.storage[e.stepName],i.selectedVariants=this.stepSelections[e.stepName]?.selectedVariants?.map((t=>({id:t.id,priceModifier:t.priceModifier}))),t.push(i)}))})),{steps:t}}updateStateWithServer(){if(this.readOnly)return;const t=this.serialize();this.workflowStatePromiseQueue.enqueue(new vo((async()=>{await this.updateTransaction({variables:{id:this.transaction.id,workflowState:t.transaction}})})))}async updateStateWithServerImmediate(){if(this.readOnly)return;const t=this.serialize();return new vo((async()=>{await this.updateTransaction({variables:{id:this.transaction.id,workflowState:t.transaction}})})).execute()}serialize(){const t=this.getCommandContext().getState();if(!t)throw new ra("Attempted to serialize state before it was initialized.");const i=JSON.stringify(this.dehydrateState(b(e)(t.transaction))),n=t.variation;if(!n)return{transaction:i};const A={layouts:{},serializableWorkflow:{steps:[]},...b(e)(n)||{}};return{transaction:i,variation:JSON.stringify(this.dehydrateState(A))}}dehydrateState(t){for(const e of Object.values(t.layouts).map((t=>t.elements)).flat())"illustration"===e.type&&(delete e.cachedObjectURL,e.src&&delete e.svg);return t}async outstandingRequestsPromise(){return this.workflowStatePromiseQueue.finalize()}updateMetadata(t,e){this.stepMetadata={...this.stepMetadata,[t]:{...this.stepMetadata[t],...e}},this.onMetadataChange()}removeElements(t){this.stepElements=((t,e)=>Object.keys(t).reduce(((i,n)=>{const A=[...t[n]||[]];return e.forEach((t=>{const e=A.findIndex((e=>e.id===t.id));e>-1&&A.splice(e,1)})),i[n]=A,i}),{}))(this.stepElements,t)}getInvalidCanvasRegions(){return this.workflow.steps.reduce(((t,e)=>(Xs(e,this.stepSelections)||this.stepElements[e.stepName]&&this.stepElements[e.stepName].forEach((e=>t.push(e))),t)),[])}getInvalidModelVariants(){return this.workflow.steps.reduce(((t,e)=>("Model"===e.type&&e.option?.id&&!Xs(e,this.stepSelections)&&t.push(e.option.id),t)),[])}async stepElementsForIntroducedSilentSteps(t,e){const i=this.product;if(!i)return Promise.resolve({stepElements:{},commands:[]});const n=async(t,e,i)=>{if(t.type===si.SilentIllustration){return{step:t,results:await new no(t,e).trigger()}}if(t.type===si.ProductOverlay){return{step:t,results:await new no(t,e,i).trigger()}}return Promise.reject("Unknown silent step. This is a bug")},A=t.filter((t=>!this.stepInitialised[t.stepName])),a={stepElements:{},commands:[]},r=[];for(const t of A)this.markStepsAsInitialised([t.stepName]),e||r.push(n(t,this.layouts,i));const s=await Promise.all(r);for(const t of s)a.stepElements[t.step.stepName]=t.results.map((t=>t.regionElement)),a.commands=[...a.commands,...t.results.map((t=>t.command))];return a}getStepStorage(t){return this.storage[t]}getMetadata(t){return this.stepMetadata[t]}getWorkflowMetadata(){return this.stepMetadata}getSerializedStep(t,e){return e.find((e=>e.stepName===t))}getCurrentVariationRecord(){return this.currentVariationRecord||void 0}getVariationRecords(){return this.variationRecords}async reset(){this.commandContext.getAllLayouts().forEach((t=>t.layoutState.elements.forEach((t=>{this.getCommandDispatcher()(new sA(t.id))})))),this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},this.currentVariationRecord=null,await this.ensureStepsAreLoaded()}async setSelectionsAndElements(t,e,i,n){const A=this.stepSelections;this.stepSelections={...this.stepSelections,[t]:{selectedVariants:e}},this.selectionCost=Object.values(this.stepSelections).reduce(((t,e)=>t+e.selectedVariants.map((t=>t.priceModifier||0)).reduce(((t,e)=>t+e),0)),0),this.workflow.steps.forEach((t=>{Xs(t,this.stepSelections)||(this.stepInitialised[t.stepName]=!1,delete this.stepMetadata[t.stepName],delete this.stepSelections[t.stepName],delete this.storage[t.stepName])}));const a=this.allScenes,r=qs(a,A),s=qs(a,this.stepSelections),o=r.map((t=>t.silentSteps)).flat(),c=s.map((t=>t.silentSteps)).flat().filter((t=>!o.some((e=>e.stepName===t.stepName))));o.forEach((t=>{Xs(t,this.stepSelections)||(this.stepInitialised[t.stepName]=!1)})),this.invalidModelVariants=this.getInvalidModelVariants();const l=this.getInvalidCanvasRegions(),{stepElements:g,commands:h}=await this.stepElementsForIntroducedSilentSteps(c,!1);this.stepElements={...this.stepElements,...g,[t]:i},this.removeElements(l);if(this.workflow.steps.find((e=>e.stepName===t))?.type===si.Frame){this.getStepSpecificServices(t)?.frameService?.setTargetElements(i.map((t=>t.id)))}const d=[...h,...l.map((t=>new sA(t.id))),new _n(this.constructSerializableWorkflow())];d.length>0&&this.commandContext.apply(new nA(d),!0),await this.ensureStepsAreLoaded(),this.onElementsChange(),await this.onSelectionChange(),n&&await n()}async ensureStepsAreLoaded(){const t=[],e=qs(this.allScenes,this.stepSelections).map((t=>t.renderableSteps)).flat();for(const i of e)if(!this.stepInitialised[i.stepName])switch(this.stepInitialised[i.stepName]=!0,i.type){case si.Bulk:this.updateStorage("Bulk",this.reloadedState?.serializableWorkflow.steps.find((t=>"Bulk"===t.stepName))?.storage||{});break;case si.DigitalContent:t.push(so.init(i,this,this.reloadedState));break;case si.Frame:case si.Photo:{const e=new eo(i.data.forceImageCover);e.connectWorkflowManager(this,i.stepName),this.stepSpecificServices[i.stepName]={frameService:e},t.push(co.init(i,this,this.reloadedState))}break;case si.Illustration:t.push(lo.init(i,this,this.reloadedState));break;case si.Material:t.push(go.init(i,this,this.reloadedState));break;case si.Model:t.push(ho.init(i,this,this.reloadedState));break;case si.Module:this.stepSpecificServices[i.stepName]={module:await ws(i.data.module)},t.push(uo.init(i,this,this.reloadedState));break;case si.Picture:t.push(wo.init(i,this,this.reloadedState));break;case si.Question:t.push(Bo.init(i,this,this.reloadedState));break;case si.Shape:t.push(mo.init(i,this,this.reloadedState));break;case si.Text:t.push(yo.init(i,this,this.reloadedState))}const i=(await Promise.allSettled(t)).map((t=>{if("rejected"===t.status)throw new Error(`Step initialization failed: ${t.reason}`);return t.value})),n=i.filter((t=>!!t&&!!t.command)).map((t=>t.command)),A=i.filter((t=>!!t&&!!t.followup)).map((t=>t.followup));n&&n.length>0&&this.commandContext.apply(new nA(n),!0);for(const t of A)await t();A.length>0&&await this.ensureStepsAreLoaded(),this.onInitChange()}onConfirmChange(){this.confirmCallbacks.forEach((t=>t(this.confirmedDesign)))}onEditedChange(){this.editedCallbacks.forEach((t=>t(this.editedSteps)))}onElementsChange(){this.elementsCallbacks.forEach((t=>t(this.stepElements)))}onInformationResultChange(){this.informationResultCallbacks.forEach((t=>t(this.informationResults)))}onInitChange(){this.initCallbacks.forEach((t=>t(this.stepInitialised)))}onMakingAdjustmentsChange(){this.makingAdjustmentsCallback.forEach((t=>{t(this.currentAdjustingStepId)}))}onMandatoryChange(){this.mandatoryCallbacks.forEach((t=>t(this.mandatorySteps)))}onMetadataChange(){this.metadataCallbacks.forEach((t=>{t(this.stepMetadata)}))}async onSelectionChange(){const t=await this.traversableScenes();for(const e of this.selectionCallbacks)e({invalidModelVariants:this.invalidModelVariants,selectionCost:this.selectionCost,selections:this.stepSelections,traversableScenes:t})}onStepSpecificStorageChange(t){Object.keys(this.stepSpecificStorageCallbacks).includes(t)||(this.stepSpecificStorageCallbacks[t]=[]),this.stepSpecificStorageCallbacks[t].forEach((e=>e(this.storage[t])))}onStorageChange(){this.storageCallbacks.forEach((t=>t(this.storage)))}onCurrentVariationRecordChange(){this.currentVariationRecordCallbacks.forEach((t=>{t(this.currentVariationRecord)}))}onVariationRecordsChange(){this.variationRecordCallbacks.forEach((t=>{t(this.variationRecords)})),this.render3DScene()}traversableScenes(){return Zs(this.allScenes,this.stepSelections)}}function So(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class bo{constructor(t){So(this,"variantData",void 0),this.variantData=t}getType(){return this.variantData.asset?.type}getId(){return this.variantData.id}getName(){return this.variantData.name}getPriceFormatted(t,e){return this.variantData.priceModifier.toLocaleString(t||"en-US",{style:"currency",currency:"USD",...e})}getPrice(){return this.variantData.priceModifier}getAsset(){return this.variantData.asset?.versions?.find((t=>"cdn"===t.name))?.link}getAssetResource(){return this.variantData.asset}getThumbnail(){const t=this.variantData.thumbnail?.versions?.find((t=>"thumbnail"===t.name));return t?t.link:this.variantData.asset?.versions?.find((t=>"thumbnail"===t.name))?.link}getDisplayImage(){return this.variantData.displayImage?.versions?.find((t=>"medium"===t.name))?.link}getColor(){return this.variantData.color}isDefault(){return!!this.variantData.default}getResource(){return this.variantData}isEnabled(){return this.variantData.enabled}}function Fo(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Po{constructor(t,e){Fo(this,"manager",void 0),Fo(this,"step",void 0),this.manager=t,this.step=e}setUpdateState(t){Po.updateState.set(this.step.stepName,t)}getUpdateState(){return!!Po.updateState.get(this.step.stepName)}getCurrentVariant(){const t=this.manager.getWorkflowSelections()[this.step.stepName]?.selections[0];if(t)return new bo(t)}getAvailableVariants(){return(this.step.option?.variants?.filter((t=>t.enabled))||[]).map((t=>new bo(t)))}getAllVariants(){return(this.step.option?.variants||[]).map((t=>new bo(t)))}getId(){return this.step.stepName}getName(){return this.step.stepTitle}getHelpText(){return this.step.helpText}getType(){return this.step.type}getRaw(){return this.step}getTags(){return this.step.tags||[]}hasTag(t){return this.step.tags?.includes(t)||!1}executeAnimations(){const t=this.manager.getPreviewService(),e=this.manager.getModelContainer(),i=this.step.data.modelAnimation,n=this.step.data.lookAtAnimation;t&&n&&t.executeCameraAnimation(n),e&&i&&e.executeAnimation(i)}}function Yo(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}Fo(Po,"updateState",new Map);const No=t.gql`
559
+ `),Vo=t=>{const e=[];for(const i of t.steps)switch(i.type){case oi.DigitalContent:i.data.varyUpload&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Upload});break;case oi.Frame:const t=i.data;t.varySelection&&i.option&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Selection}),t.varyUpload&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Upload});break;case oi.Illustration:const n=i.data;n.varySelection&&i.option&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Selection}),n.varyColors&&n.colorPickerEnabled&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Colors});break;case oi.Material:i.data.varySelection&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Selection});break;case oi.Model:i.data.varySelection&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Selection});break;case oi.Picture:i.data.varySelection&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Selection});break;case oi.Question:i.data.varySelections&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Selections});break;case oi.Shape:i.data.varySelection&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Selection});break;case oi.Text:const A=i.data;A.varyText&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Text}),A.varySelection&&i.option&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Selection}),A.varyColor&&A.colorPickerEnabled&&e.push({stepName:i.stepName,stepType:i.type,aspectType:ci.Color})}return e},Ko=[oi.SilentIllustration,oi.ProductOverlay],Wo=async(t,e,i)=>{const n=[];t.introduction&&n.push({name:"Introduction",title:t.name,renderableSteps:[{type:oi.Introduction,stepName:"Introduction",stepTitle:t.name,helpText:t.introduction,data:{},conditions:[]}],silentSteps:[]});for(const i of t.steps){if(e.bulkScene){let t=!1;switch(i.type){case oi.DigitalContent:i.data.varyUpload&&(t=!0);break;case oi.Frame:{const e=i.data;!e.varyUpload||!e.varySelection&&i.option||(t=!0)}break;case oi.Illustration:{const e=i.data;!e.varySelection&&i.option&&1!==(i.option.variants||[]).length||!e.varyColors&&e.colorPickerEnabled||(t=!0)}break;case oi.Material:i.data.varySelection&&(t=!0);break;case oi.Model:i.data.varySelection&&(t=!0);break;case oi.Picture:i.data.varySelection&&(t=!0);break;case oi.Question:i.data.varySelections&&(t=!0);break;case oi.Shape:i.data.varySelection&&(t=!0);break;case oi.Text:{const e=i.data;!e.varySelection&&i.option&&1!==(i.option.variants||[]).length||!e.varyColor&&e.colorPickerEnabled&&e.colorOption||!e.varyText||(t=!0)}}if(t)continue}const A=Xo(i.stepName,t.stepGroups);if(A){const t=n.find((t=>t.name===A.name));t?Ko.includes(i.type)?t.silentSteps.push(i):t.renderableSteps.push(i):n.push({name:A.name,title:A.name,renderableSteps:Ko.includes(i.type)?[]:[i],silentSteps:Ko.includes(i.type)?[i]:[]})}else n.push({name:i.stepName,title:i.stepTitle,renderableSteps:Ko.includes(i.type)?[]:[i],silentSteps:Ko.includes(i.type)?[i]:[]})}if(e.bulkScene){const A=i?.product?.bulkConfiguration;n.push({name:"Bulk",title:A?.sceneTitle??e.bulkSceneTitle,renderableSteps:[{type:oi.Bulk,stepName:"Bulk",stepTitle:A?.stepTitle??e.bulkSceneTitle,helpText:A?.helpText,data:{aspects:Vo(t)},conditions:[]}],silentSteps:[]})}return e.finishScene&&n.push({name:"Finish",title:e.finishSceneTitle,renderableSteps:[{type:oi.Finish,stepName:"Finish",stepTitle:e.finishSceneTitle,helpText:"",data:{modelAnimation:t.finalizeStepConfig?t.finalizeStepConfig.modelAnimation:void 0,lookAtAnimation:t.finalizeStepConfig?t.finalizeStepConfig.lookAtAnimation:void 0},conditions:[]}],silentSteps:[]}),n},Xo=(t,e)=>e.find((e=>e.stepNames.includes(t))),qo=(t,e)=>(t.conditions||[]).every((t=>{const i=e[t.targetStepName];if(i&&i.selectedVariants){const e=i.selectedVariants;return t.requiredVariantSelections.some((t=>void 0!==e.find((e=>e.id===t))))}return!1})),Zo=(t,e)=>t.map((t=>((t,e)=>{const i={name:t.name,title:t.title,renderableSteps:t.renderableSteps.filter((t=>qo(t,e))),silentSteps:t.silentSteps.filter((t=>qo(t,e)))};return 0===i.silentSteps.length&&0===i.renderableSteps.length?null:i})(t,e))).filter((t=>null!==t)),$o=async(t,e)=>{const i=Zo(t,e),n=[];for(const t of i)for(const e of t.renderableSteps)if(e.type===oi.Model||e.type===oi.Material||e.type===oi.Picture||e.type===oi.Shape){const t=(e.option?.variants||[]).length;t&&t>1&&n.push(e.stepName)}else n.push(e.stepName);const A=i.filter((t=>t.renderableSteps.filter((t=>n.includes(t.stepName))).length>0));for(const t of A)t.renderableSteps=t.renderableSteps.filter((t=>n.includes(t.stepName)));return A};function _o(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function ts(t,e,i,n){const A=i.width*t.zoom,a=i.height*t.zoom;if(n){const n=t,A=Math.max(e.width/i.width,e.height/i.height);n.zoom=Math.max(A,t.zoom);const a=i.width*n.zoom,r=i.height*n.zoom;return n.x=es(t.x,e.width-a,0),n.y=es(t.y,e.height-r,0),n}const r=t;return r.x=es(r.x,-A,e.width),r.y=es(r.y,-a,e.height),r}function es(t,e,i){return Math.min(Math.max(t,e),i)}class is{constructor(t){_o(this,"offsets",void 0),_o(this,"forceImageCover",void 0),_o(this,"targetElements",void 0),_o(this,"imageData",void 0),_o(this,"frameData",void 0),_o(this,"_debouncedUpdateFrameOffsets",void 0),_o(this,"minZoomScale",[.03]),_o(this,"maxZoomScale",[20]),_o(this,"onFrameDataChangeListeners",void 0),_o(this,"onZoomChangeListeners",void 0),_o(this,"workflowManager",void 0),_o(this,"stepName",void 0),this._debouncedUpdateFrameOffsets=b(D)(this.updateFrameOffsets,200),this.targetElements=[],this.onFrameDataChangeListeners=[],this.onZoomChangeListeners=[],this.forceImageCover=t}connectWorkflowManager(t,e){e&&t.addStepSpecificStorageCallback((async t=>{if(t){const e=t;if(e.currentFrameSources){let t=!1;for(let i=0;i<e.currentFrameSources.length;i++){const n=e.currentFrameSources[i],A=await RA(n);b(C)(A,this.frameData)||(this.frameData||(this.frameData=new Array(e.currentFrameSources.length)),this.frameData[i]=A,t=!0)}t&&(this.onFrameDataChangeListeners.forEach((t=>t(this.frameData))),this.frameData&&this.imageData&&(this.recalculateOffsets(this.imageData),this.updateOffsets(this.offsets),this.recalculateZoomLimits(this.imageData,this.frameData)))}}}),e),this.workflowManager=t,this.stepName=e}setTargetElements(t){this.targetElements=t}getFrameData(){return this.frameData}setFrameData(t){t?t.forEach(((e,i)=>{const n=PA.get(e);n&&(this.frameData||(this.frameData=new Array(t.length)),this.frameData[i]=n)})):this.frameData=void 0}getImageData(){return this.imageData}getOffsets(){return this.offsets}setOffsets(t){this.offsets=t}setZoom(t,e,i,n){if(this.imageData&&this.offsets&&this.frameData){this.offsets&&this.offsets.length===this.frameData.length||(this.offsets=new Array(this.frameData.length));const A=this.frameData.map(((n,A)=>{const a=(e[A]-this.offsets[A].x)/this.offsets[A].zoom,r=(i[A]-this.offsets[A].y)/this.offsets[A].zoom;return{x:e[A]-a*t[A],y:i[A]-r*t[A],zoom:this.imageData.width*t[A]/this.imageData.width}}));this.updateOffsets(A,n),this.onZoomChangeListeners.forEach((e=>e(t)))}}setPatternData(t){this.imageData=t,t&&this.frameData&&(this.recalculateOffsets(t),this.updateOffsets(this.offsets,void 0,!0)),this.imageData&&this.frameData&&this.recalculateZoomLimits(this.imageData,this.frameData)}updateOffsets(t,e,i){const n=this.imageData;if(!n||!this.frameData)return;if(this.frameData.length!==t.length)throw new ra("Frame data and offsets are not the same length. This is a bug. Please report it.");this.offsets.some(((e,i)=>t[i].x!==e.x||t[i].y!==e.y||t[i].zoom!==e.zoom))||i?(this.offsets&&this.offsets.length===this.frameData.length||(this.offsets=new Array(this.frameData.length)),this.frameData.forEach(((e,i)=>{this.offsets[i]=ts(t[i],e,this.imageData,this.forceImageCover)})),this._debouncedUpdateFrameOffsets(this.offsets,n,this.frameData,this.targetElements,e)):e&&e()}onFrameDataChanged(t){t(this.frameData),this.onFrameDataChangeListeners.push(t)}onZoom(t){this.onZoomChangeListeners.push(t)}updateFrameOffsets(t,e,i,n,A){if(!i||0===i.length||i.some((t=>!t)))throw new ra("Frame data not set. This is a bug");if(!this.workflowManager)throw new ra("No workflow manager set, cannot update offsets.");const a=this.workflowManager.getCommandDispatcher();n.forEach(((i,n)=>{a(new wA(i,e,t[n]))})),this.stepName&&this.workflowManager.updateStorage(this.stepName,{frameOffsetsList:t}),A&&A()}recalculateZoomLimits(t,e){this.minZoomScale.length===e.length&&this.maxZoomScale.length===e.length||(this.minZoomScale=new Array(e.length),this.maxZoomScale=new Array(e.length)),e.forEach(((e,i)=>{const n=Math.max(e.width/t.width,e.height/t.height);this.forceImageCover?(this.minZoomScale[i]=n,this.maxZoomScale[i]=2.5*n):(this.minZoomScale[i]=n/10,this.maxZoomScale[i]=2.5*n)}))}recalculateOffsets(t){this.frameData&&(this.offsets&&this.offsets.length===this.frameData.length||(this.offsets=new Array(this.frameData.length)),this.frameData.forEach(((e,i)=>{this.offsets[i]=HA(t,e)})),this._debouncedUpdateFrameOffsets(this.offsets,t,this.frameData,this.targetElements))}}function ns(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class As{constructor(t,e,i){ns(this,"configuration",void 0),ns(this,"layouts",void 0),ns(this,"product",void 0),ns(this,"processRegion",(async t=>{const e=this.layouts.find((e=>e.panelId===t.panelId));if(!e)throw new ea(t);let i="";if(this.configuration.type===oi.ProductOverlay){let t="";if(this.product?.overlayImageUrl&&(t=this.product.overlayImageUrl),i=t,!t)throw new Aa(this.configuration,"Couldn't find an asset for product overlay step")}const n=this.evaluateAssetType();if(n===ze.Image){const i=this.configuration.type===oi.SilentIllustration?this.configuration.data.asset?.fileLink:this.product?.overlayImageUrl;if(!i)throw new Error("Undefined raster silent step source");const A={stepName:this.configuration.stepName,id:Te(),src:i,type:n,y:t.top,x:t.left,width:t.width,height:t.height,layer:t.layer,layerIndex:t.layerIndex,immutable:t.immutable,productOverlay:this.configuration.type===oi.ProductOverlay||void 0,rotation:t.rotation,excludeFromExport:this.configuration.data.excludeFromPrint,preserveAspectRatio:"none"};return{regionElement:{id:A.id,region:t},command:new rA(A,e)}}{const A=this.configuration.type===oi.SilentIllustration?this.configuration.data.asset?.fileLink:i,a=async()=>new Promise(((t,e)=>{A?Xi(A).then((e=>{t(e)})).catch((t=>console.error(t))):e("Undefined vector silent step source")})),r=await On(await a()),o={stepName:this.configuration.stepName,id:Te(),cachedObjectURL:await WA(r.svg),src:A,svg:r.svg,colors:r.colors,type:n,y:t.top,x:t.left,width:t.width,height:t.height,layer:t.layer,layerIndex:t.layerIndex,rotation:t.rotation,immutable:t.immutable,productOverlay:this.configuration.type===oi.ProductOverlay||void 0,excludeFromExport:this.configuration.data.excludeFromPrint};return{regionElement:{id:o.id,region:t},command:new rA(o,e)}}})),this.configuration=t,this.layouts=e,this.product=i||void 0}async trigger(){if(!this.configuration.data.regions)throw new Aa(this.configuration,"Missing regions.");if(this.configuration.type===oi.SilentIllustration){const t=this.configuration.data.regions.map(this.processRegion);return Promise.all(t)}return this.configuration.type===oi.ProductOverlay?Promise.all(this.configuration.data.regions.map((t=>{if(!this.layouts.find((e=>t.panelId===e.panelId)))throw new ea(t);return this.processRegion(t)}))):Promise.reject("Unknown silent step. This is a bug")}evaluateAssetType(){const t=this.configuration.type===oi.ProductOverlay&&this.product?.overlayImageUrl?this.product.overlayImageUrl.toLowerCase():this.configuration.data.asset?.fileLink?.toLowerCase().split("?")[0];return t?.startsWith("data:image/png")||t?.endsWith(".jpeg")||t?.endsWith(".jpg")||t?.endsWith(".png")?ze.Image:(t?.endsWith(".svg")||t?.startsWith("image/svg+xml"),ze.Illustration)}}const as=async t=>{const e=`${wa.getServicesApiUrl()}/shortener`;try{const i=await fetch(e,{method:"POST",body:JSON.stringify({longUrl:t}),headers:{"Content-Type":"application/json"}});return(await i.json()).shortUrl}catch(t){throw console.error(t),new ca("Failed to shorten URL, see console.")}};function rs(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class os{async poll(){try{if(await this.predicate())return this.onSuccess(),void(this.pollingId>-1&&window.clearInterval(this.pollingId))}catch(t){}this.attempts+=1,this.attempts<this.maxAttempts?this.pollingId=window.setTimeout(this.poll.bind(this),this.interval):this.onFailure()}constructor(t,e,i,n=3e3,A=10){rs(this,"pollingId",void 0),rs(this,"attempts",void 0),rs(this,"interval",void 0),rs(this,"maxAttempts",void 0),rs(this,"predicate",void 0),rs(this,"onSuccess",void 0),rs(this,"onFailure",void 0),this.onSuccess=e,this.onFailure=i,this.predicate=t,this.attempts=0,this.pollingId=-1,this.interval=n,this.maxAttempts=A,this.poll()}}const ss=new class{async init(t,e,i){return i&&await this.reload(t,e,i),null}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)).map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[],A,(async()=>{const i=n?.storage?.videoShortUrl,A=n?.storage?.videoUrl;e.updateStorage(t.stepName,{videoShortUrl:i,videoUrl:A})}))}async regenerateQRCode(t,e,i,n,A,a,r,o,s){if(e||""===i||""!==n)s(!1);else{const e=async()=>{const t=(await Pa([i]))[0],e=t?.versions?.find((t=>"mpeg4"===t.name))?.link;return{asset:t,link:e}},c=await new Promise(((t,i)=>{new os((async()=>!!(await e()).link),(async()=>{const i=await e();if(!i.link||!i.link)throw new na(i.asset);t({rel:"mpeg4",href:i.link})}),(()=>{i("Poller timed out with 40 attempts @ 3 second interval")}),3e3,40)}));t.forEach((t=>o(new oA(t.id))));const l="http"===a.data.baseUrl.slice(0,4)?"":"https://",g=new URL(l+a.data.baseUrl);g.searchParams.append("video",btoa(JSON.stringify([c]))),g.pathname=g.pathname+("/"===g.pathname.slice(-1)?"":"/");const h=g.toString();if(h.length>=2e3)throw new ca("Cannot create QR code, URL too long.");const d=await as(h);if(r(d),!a.data||!a.data.regions)throw new Aa(a,"Missing regions.");const u=await this.regionElements(a),w=await this.command(d,u,A,a.stepName);w&&(w.command&&A.getCommandDispatcher()(w.command),w.followup&&await w.followup()),await A.setSelectionsAndElements(a.stepName,[],u,(async()=>{A.updateStorage(a.stepName,{videoShortUrl:d,videoUrl:n}),s(!1)}))}}async regionElements(t){return t.data.regions.map((t=>({id:Te(),region:t})))}async command(t,e,i,n){const A=i.getLayouts(),a=`data:image/svg+xml;base64,${btoa(await(0,y.toString)(t,{type:"svg"}))}`,r=e.map((t=>{const e=t.region,i=A.find((t=>t.panelId===e?.panelId));if(!i&&e)throw new ea(e);if(i&&!e)throw new Error("Region not found");if(!i||!e)throw new Error("Neither a region or layout found!");return new rA({stepRegion:e,stepName:n,id:t.id,src:a,type:ze.Image,y:e.top,x:e.left,width:e.width,height:e.height,rotation:0},i)}));return{command:new nA(r),followup:async()=>{}}}};function cs(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const ls=new class{constructor(){cs(this,"frameSourceSvg",(async(t,e)=>{if(!t)return NA(e);const i=t.asset;if(!i)throw new ia(t);const n=i.fileLink;if(n)return Xi(n);throw new na(i)}))}async init(t,e,i){if(i)return await this.reload(t,e,i),null;if(e.setMandatoryFulfilled(t.stepName,!1),e.markStepsAsInitialised([t.stepName]),t.option&&t.option.variants&&t.option.variants.length>0){const i=t.option,n=Ja.getDefaultVariant(i);return n?this.selectVariantCommand(t,n,[],e,void 0,t.data.placeholderImageUrl):null}return this.selectVariantCommand(t,void 0,[],e,void 0,t.data.placeholderImageUrl)}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)).map((t=>({id:t.id,region:t.stepRegion})));if(!t.option||0===(t.option.variants||[]).length){const i=t.data.regions.map((t=>NA(t)));e.updateStorage(t.stepName,{currentFrameSources:i})}if(n){const i=async()=>{const i=n.storage?.framePatternSrc,A=n.storage?.frameOffsetsList;if(e.updateMetadata(t.stepName,{frameOffsetsList:A,framePatternSrc:i}),i){const n=e.getStepSpecificServices(t.stepName)?.frameService;if(!n)throw new Error("Frame service unavailable, cannot load pattern!");await this.loadPatternFromString(i,n),e.updateMetadata(t.stepName,{image:i}),e.updateStorage(t.stepName,{framePatternSrc:i})}if(A?.some((t=>t.zoom))){const i=e.getStepSpecificServices(t.stepName)?.frameService;if(!i)throw new Error("Frame service unavailable, cannot load pattern!");i.updateOffsets(A)}e.setMandatoryFulfilled(t.stepName,!0)};if(n.selectedVariants&&n.selectedVariants.length>0){const a=n.selectedVariants[0].id;if(t.option&&a){const n=t.option.variants?.find((t=>t.id===a));n&&await e.setSelectionsAndElements(t.stepName,[n],A,(async()=>{const A=await Promise.all(t.data.regions.map((t=>this.frameSourceSvg(n,t))));e.updateStorage(t.stepName,{currentFrameSources:A}),await i()}))}}else await e.setSelectionsAndElements(t.stepName,[],A,i)}}selectImage(t,e,i){i.setEditedStatus(t.stepName,!0);(e.fileLink||"").endsWith("pdf")?i.addPoller(new os((async()=>{const t=(await ka.getLocalOrFromServer(e.key||"")).versions?.find((t=>"svg"===t.name));if(!t)return!1;return 200===(await fetch(t.link)).status}),(()=>{ka.getLocalOrFromServer(e.key||"").then((e=>{this.loadPatternFromAsset(e,t,i)}))}),(()=>{throw new ca("Failed to resolve transcoded PDF")}))):this.loadPatternFromAsset(e,t,i)}async selectVariant(t,e,i,n,A){const a=await this.selectVariantCommand(t,e,i,n,A);a&&(a.command&&n.getCommandDispatcher()(a.command),a.followup&&await a.followup())}getCreateElementCommand(t,e,i,n){return new rA({id:t,type:ze.Frame,x:e.left,y:e.top,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,rotation:e.rotation,scaleX:e.width/n.frameData.width,scaleY:e.height/n.frameData.height,path:n.frameData.path,dataWidth:n.frameData.width,dataHeight:n.frameData.height,stepRegion:e,stepName:n.stepName,disablePlaceholder:n.disablePlaceholder,focalBlur:n.focalBlur,focalBlurStrength:n.focalBlurStrength,focalBlurRadius:n.focalBlurRadius,pattern:n.pattern,immutable:e.immutable},i)}async loadPatternFromString(t,e){if(t.endsWith("svg")){const i=await GA(t),n=i.width,A=i.height,a={src:t,width:n,height:A,aspect:n/A};FA.set(t,a),e.setPatternData(a)}else{const i=await Wi(t),n=await SA(i),A={src:t,width:n.width,height:n.height,aspect:n.width/n.height};FA.set(t,A),e.setPatternData(A)}}async selectVariantCommand(t,e,i,n,A,a){const r=n.getStepSpecificServices(t.stepName)?.frameService;if(!r)throw new Error("Frame service unavailable, cannot load pattern!");const o=await Promise.all(t.data.regions.map((t=>this.frameSourceSvg(e,t))));A&&A(!0);const s=await Promise.all(t.data.regions.map((async(e,A)=>{const a=await RA(o[A]),s=r.getImageData(),c=i.map((t=>new oA(t.id))),l=s?HA(s,a):void 0,g=s?{id:Te(),src:s.src,x:l?.x||0,y:l?.y||0,width:s.width,height:s.height,scaleX:l?.zoom||1,scaleY:l?.zoom||1,rotation:0}:void 0,h=Te(),d=n.getLayouts().find((t=>t.panelId===e.panelId));if(!d)throw new ea(e);return{command:this.getCreateElementCommand(h,e,d,{frameData:a,pattern:g,disablePlaceholder:t.data.disablePlaceholder,focalBlur:t.data.focalBlur,focalBlurStrength:t.data.focalBlurStrength,focalBlurRadius:t.data.focalBlurRadius,stepName:t.stepName}),regionEl:{id:h,region:e},removeExistingCommands:c}}))),c=s.map((t=>t.command)),l=s.map((t=>t.removeExistingCommands)).flat();return{command:new nA([...c,...l]),followup:async()=>{A&&A(!1),await n.setSelectionsAndElements(t.stepName,e?[e]:[],[...s.map((t=>t.regionEl))],(async()=>{if(n.updateStorage(t.stepName,{currentFrameSources:o}),a){const e=n.getStepSpecificServices(t.stepName)?.frameService;if(!e)throw new Error("Frame service unavailable, cannot load pattern!");await this.loadPatternFromString(a,e)}}))}}}patternSource(t){const e=t.versions?.find((t=>"svg"===t.name));if(e)return e.link;const i=t.fileLink;if(i)return i;throw new na(t)}async loadPatternFromAsset(t,e,i){const n=this.patternSource(t),A=i.markUpdatePending(),a=i.getStepSpecificServices(e.stepName)?.frameService;if(!a)throw new Error("Frame service unavailable, cannot load pattern!");await this.loadPatternFromString(n,a),i.updateMetadata(e.stepName,{image:n}),i.updateStorage(e.stepName,{framePatternSrc:n}),i.markUpdateCompleted(A)}};const gs=new class{async getIllustrationBody(t){return new Promise((e=>{Xi(t).then((t=>{e(t)})).catch((t=>console.error(t)))}))}getCreateElementCommand(t,e,i,n){return new rA({stepRegion:e,stepName:n.stepName,colors:n.svg.colors,id:t,src:n.src,svg:n.svg.svg,cachedObjectURL:n.objectURL,type:ze.Illustration,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,immutable:e.immutable},i)}getColors(t,e){const i=e.getRegionElements(t.stepName)||[];if(0===i.length)return[];try{return Wn(i[0].id,e.getAllLayoutData()).colors}catch(t){return[]}}async init(t,e,i){const n=t.option;if(!n)return null;if(i)return this.reload(t,e,i);{const i=Ja.getDefaultVariant(n);if(i)return await this.selectVariantCommand(t,i,[],(()=>{}),e)}return null}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=t.option;if(n?.selectedVariants){const i=n.selectedVariants[0].id;if(!a||!i)throw new Error("Required illustration variant no longer available");{const r=a.variants?.find((t=>t.id===i));if(r){const i=A.map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[r],i,(async()=>{e.updateMetadata(t.stepName,{colors:n.storage?.colors}),e.setMandatoryFulfilled(t.stepName,!0)}))}}}return null}async availableColors(t,e){const i=t.data.colorOption;return i&&i?i.variants?.map((t=>({fill:t.color,stroke:t.color,variant:t}))):[]}async changeColorsCommand(t,e,i,n,A){const a={};for(const[t,e]of A.entries())a[t]={browserValue:e,spotColor:a[t]?.spotColor};const r=Tn(t,e,i,a),o=await WA(r),s=[];for(const t of n){for(const[e,i]of A.entries())s.push(new pA(t,e,i));s.push(new mA(t,r,o))}return new nA(s)}async changeColors(t,e,i,n,A){if(0===e.length)return;const a=Wn(e[0].id,n().map((t=>t.layoutState))),r={...a.colors},o={};Object.entries(r).forEach((([t,e])=>{const i={browserValue:e.browserValue},n=e.spotColor;n&&(i.spotColor={profileName:n.profileName,namedColor:n.namedColor}),o[t]=i}));for(const[t,e]of A.entries())r[t]={browserValue:e,spotColor:r[t]?.spotColor},o[t]={browserValue:e};let s=Array.from(Object.values(r)).map((t=>t.browserValue));const c=t.data.colorOption;c&&c.variants?.forEach((t=>{s=s.map((e=>e.toLowerCase()===t.color?.toLowerCase()?t.name:e))})),i.updateMetadata(t.stepName,{colors:s});const l=new Map;if(Object.entries(r).forEach((([t,e])=>{l.set(t,e.browserValue)})),!a.svg)throw new Error("Colors changed before SVG loaded. This should never happen!");const g=await this.changeColorsCommand(a.svg,a.width,a.height,e.map((t=>t.id)),l);i.updateStorage(t.stepName,{colors:o}),i.getCommandDispatcher()(g)}async selectVariant(t,e,i,n,A){const a=await this.selectVariantCommand(t,e,i,n,A);a&&(a.command&&A.getCommandDispatcher()(a.command),a.followup&&await a.followup())}async selectVariantCommand(t,e,i,n,A){if(!t.data||!t.data.regions)throw new Aa(t,"Missing regions.");n(!0);const a=i.map((t=>new oA(t.id)));A.setMandatoryFulfilled(t.stepName,!1);const r=e.asset;if(!r)throw new ia(e);const o=r.fileLink;if(!o)throw new na(r);const s=await On(await this.getIllustrationBody(o)),c=await WA(s.svg),l=t.data.regions.map((e=>{const i=A.getLayouts().find((t=>t.panelId===e.panelId));if(!i)throw new ea(e);const n=Te();return{regionElement:{id:n,region:e},command:this.getCreateElementCommand(n,e,i,{stepName:t.stepName,src:o,objectURL:c,svg:s})}})),g=[...l.map((t=>t.command)),...a];let h=Array.from(Object.values(s.colors)).map((t=>t.browserValue));const d=t.data.colorOption;return d&&d.variants?.forEach((t=>{h=h.map((e=>e.toLowerCase()===t.color?.toLowerCase()?t.name:e))})),A.updateMetadata(t.stepName,{colors:h}),{command:new nA(g),followup:async()=>{await A.setSelectionsAndElements(t.stepName,[e],l.map((t=>t.regionElement)),(async()=>{A.setMandatoryFulfilled(t.stepName,!0),n(!1)}))}}}};const hs=new class{async init(t,e,i){const n=t.option;if(!n)throw new ta(t);if(i)await this.reload(t,e,i);else{const i=Ja.getDefaultVariant(n);if(i)return await this.selectVariantLambda(t,i,e,(()=>{}))}return null}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=t.option;if(!a)throw new ta(t);if(n?.selectedVariants){const i=n.selectedVariants[0].id;if(i){const n=a.variants?.find((t=>t.id===i));if(n){const i=n.material,r=A.map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[n],r,(async()=>{const n=e.getModelContainer();if(n){const A=t.data.targetMaterials.map((t=>n.applyMaterialVariant(t,a.id||"",i||{})));Promise.all(A).then((()=>e.setMandatoryFulfilled(t.stepName,!0)))}}))}}}}async selectVariant(t,e,i,n){const A=await this.selectVariantLambda(t,e,i,n);A&&(A.command&&i.getCommandDispatcher()(A.command),A.followup&&await A.followup())}async selectVariantLambda(t,e,i,n){const A=i.getModelContainer();n(!0);const a=e.material;if(!a)throw n(!1),new ia(e);return{command:void 0,followup:async()=>{await i.setSelectionsAndElements(t.stepName,[e],[],(async()=>{try{A&&t.data.targetMaterials.forEach((e=>{t.option&&A.applyMaterialVariant(e,t.option.id||"",a)})),i.setMandatoryFulfilled(t.stepName,!0)}finally{n(!1)}}))}}}};const ds=new class{async init(t,e,i){const n=t.option;if(!n)throw new ta(t);if(i)await this.reload(t,e,i);else{const i=Ja.getDefaultVariant(n);if(i)return await this.selectVariantLambda(t,i,e,(()=>{}))}return null}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=t.option;if(n?.selectedVariants){const i=n.selectedVariants[0].id;if(a&&i){const n=a.variants?.find((t=>t.id===i));if(n){const i=A.map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[n],i,(async()=>{const i=e.getModelContainer();if(i&&t.option){const A=n.asset?.fileLink;if(!A)throw new ia(n);await i.applyModelVariant(t.option.id||"",{model:A,contextService:e.getLayoutPreviewService()},t.data.replaceProductModel||!1),e.setMandatoryFulfilled(t.stepName,!0)}}))}}}}async selectVariant(t,e,i,n){const A=await this.selectVariantLambda(t,e,i,n);A&&(A.command&&i.getCommandDispatcher()(A.command),A.followup&&await A.followup())}async selectVariantLambda(t,e,i,n){n(!0);const A=e.asset?.fileLink;if(!A)throw new ia(e);return{command:void 0,followup:async()=>{await i.setSelectionsAndElements(t.stepName,[e],[],(async()=>{try{const e=i.getModelContainer();e&&t.option&&e.applyModelVariant(t.option.id||"",{model:A,contextService:i.getLayoutPreviewService()},t.data.replaceProductModel||!1),i.setMandatoryFulfilled(t.stepName,!0)}finally{n(!1)}}))}}}};const us=new class{async init(t,e,i){return i?(await this.reload(t,e,i),null):(e.updateMetadata(t.stepName,{text:""}),this.changeTextCommand(t,"",e,"",(()=>{})))}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)).map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[],A,(async()=>{e.updateStorage(t.stepName,{text:n?.storage?.text}),e.setMandatoryFulfilled(t.stepName,""!==n?.storage?.text)}))}async changeText(t,e,i,n,A){const a=await this.changeTextCommand(t,e,i,n,A);a&&(a.command&&i.getCommandDispatcher()(a.command),a.followup&&await a.followup())}async changeTextCommand(t,e,i,n,A){const a=i.getRegionElements(t.stepName),r=i.getStepSpecificServices(t.stepName)?.module;if(!r)return console.error("Missing module."),null;const o=i.getProfanities();if(!this.validateInput(t,e,o,A))return i.setMandatoryFulfilled(t.stepName,!1),console.error(n),null;if(i.setMandatoryFulfilled(t.stepName,""!==e),!t.data||!t.data.regions||t.data.regions.length<=0)return console.error("Missing configuration."),null;i.updateStorage(t.stepName,{text:e});const s=(e,n,A)=>{const a=A||Te(),r=i.getLayouts().find((t=>t.panelId===n.panelId));if(!r)return console.error(`Can not find layout for region: ${n.panelId}`),null;const o=[];return A&&o.push(new oA(a)),o.push(new rA({stepRegion:n,stepName:t.stepName,colors:{},id:a,svg:e,type:ze.Illustration,y:n.top,x:n.left,rotation:n.rotation,width:n.width,height:n.height,layer:n.layer,layerIndex:n.layerIndex,immutable:n.immutable},r)),{id:a,region:n,command:new nA(o)}};if(a.length>0){const t=a.map((t=>{if(!t.region)return null;const i=r.svgPrint(e,t.region);return s(i,t.region,t.id)})).filter((t=>!!t)).filter((t=>!!t)).map((t=>t&&t.command));return{command:new nA(t),followup:async()=>{}}}{const n=t.data.regions.map((t=>s(r.svgPrint(e,t),t))),A=n.filter((t=>!!t)).map((t=>t&&t.command));return{command:new nA(A),followup:async()=>{const e=n.filter((t=>t)).map((t=>t&&{id:t.id,region:t.region}));await i.setSelectionsAndElements(t.stepName,[],e)}}}}validateInput(t,e,i,n){if(t.data&&t.data.maxLength){const i=t.data.maxLength;if(e.length>i)return n("Too many characters."),!1}if(!/^$|^[a-zA-Z0-9 ]+$/.test(e))return n("Unsupported characters."),!1;const A=(0,x.split)(e.toLowerCase());for(const t of A)for(const e in i){if(t===i[e].toLowerCase().replace(/\s/g,""))return n("Blocked profanity."),!1}return n(""),!0}};const ws=new class{async init(t,e,i){const n=t.option;if(!n)return null;if(i)await this.reload(t,e,i);else if(n.defaultVariant)return e.markStepsAsInitialised([t.stepName]),this.selectVariantCommand(t,n.defaultVariant,e,(()=>{}));return e.markStepsAsInitialised([t.stepName]),null}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=t.option;if(n?.selectedVariants){const i=n.selectedVariants[0].id;if(a&&i){const n=a.variants?.find((t=>t.id===i));if(n){const i=A.map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[n],i,(async()=>{e.setMandatoryFulfilled(t.stepName,!0)}))}}}}async selectVariant(t,e,i,n){const A=await this.selectVariantCommand(t,e,i,n);A&&(A.command&&i.getCommandDispatcher()(A.command),A.followup&&await A.followup())}async selectVariantCommand(t,e,i,n){const A=e.asset;if(!A)throw new ia(e);const a=A?.fileLink;if(!a)return console.error("No URL for picture!"),null;n(!0),i.setMandatoryFulfilled(t.stepName,!1);const r=i.getRegionElements(t.stepName).map((t=>new oA(t.id))),o=t.data.regions.map((e=>{const n=i.getLayouts().find((t=>t.panelId===e.panelId));if(!n)throw new ea(e);const A=Te();return{regionElement:{id:A,region:e},command:new rA({stepName:t.stepName,stepRegion:e,id:A,src:a,type:ze.Image,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,immutable:e.immutable,preserveAspectRatio:"none"},n)}}));return{command:new nA([...r,...o.map((t=>t.command))]),followup:async()=>{await i.setSelectionsAndElements(t.stepName,[e],o.map((t=>t.regionElement)),(async()=>{i.setMandatoryFulfilled(t.stepName,!0),n(!1)}))}}}};const Bs=new class{async init(t,e,i){const n=t.option;if(!n)return null;if(i)await this.reload(t,e,i);else{const i=n.variants;if(Ja.getDefaultVariant(n)){const A=i?.find((t=>t.id===n.defaultVariant?.id));return this.selectVariantLambda(t,A?.id||"",e)}}return null}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=t.option;if(n?.selectedVariants){const i=n.selectedVariants[0].id;if(A&&i){const n=A.variants?.find((t=>t.id===i));n&&await e.setSelectionsAndElements(t.stepName,[n],[])}}}async selectVariant(t,e,i){await i.getInitializationPromise();const n=await this.selectVariantLambda(t,e,i);n&&(n.command&&i.getCommandDispatcher()(n.command),n.followup&&await n.followup())}async selectVariantLambda(t,e,i){const n=t.option;if(!n)return null;const A=n.variants;if(!A)return null;const a=A.length>1?A.find((t=>t.id===e)):A[0];if(!a)throw new Error("Failed to find selected variant in step variants, this should never happen!");return{command:void 0,followup:async()=>{await i.setSelectionsAndElements(t.stepName,[a],[],(async()=>{i.setMandatoryFulfilled(t.stepName,!0)}))}}}};function ps(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const ms=new class{constructor(){ps(this,"shapeFillId","spiff-fill-shape")}async availableColours(t){const e=t.option;return e&&e.variants?.map((t=>({fill:t.color,stroke:t.color,variant:t})))||[]}setCustomColor(t,e,i){const n=i.getLayouts(),A=(i.getRegionElements(e.stepName)||[]).map((e=>{const i=e.region;if(!n.find((t=>t.panelId===i?.panelId)))throw new ea(i);return new pA(e.id,this.shapeFillId,t)})).filter((t=>!!t));i.getCommandDispatcher()(new nA(A)),i.updateStorage(e.stepName,{colour:t})}async init(t,e,i){const n=t.option;if(!n)throw new ta(t);if(!i){const i=Ja.getDefaultVariant(n);return i?this.selectVariantCommand(t,{fill:i.color,stroke:i.color,variant:i},[],e):null}return await this.reload(t,e,i),null}async selectVariant(t,e,i,n){const A=await this.selectVariantCommand(t,e,i,n);A&&(A.command&&n.getCommandDispatcher()(A.command),A.followup&&await A.followup())}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=t.option;if(n?.selectedVariants){const i=n.selectedVariants[0].id;if(a&&i){const r=a.variants?.find((t=>t.id===i));if(r){const i=A.map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[r],i,(async()=>{e.updateStorage(t.stepName,{colour:n?.storage?.colour||""}),e.setMandatoryFulfilled(t.stepName,!0)}))}}}}async selectVariantCommand(t,e,i,n){const A=n.getLayouts(),a=n.getStepStorage(t.stepName)?.colour,r=()=>{if("#custom"===e.variant?.color)return a||"#FFFFFF";if(e.variant?.color)return e.variant.color;throw new Error("Failed to resolve color for shape step.")};if(i.length>0){const a=t=>{const e=t.region;if(!A.find((t=>t.panelId===e?.panelId)))throw new ea(e);const i=r();return new pA(t.id,this.shapeFillId,i)},o=i.map(a).filter((t=>!!t));return{command:new nA(o),followup:async()=>{await n.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],i),n.updateStorage(t.stepName,{colour:r()})}}}{const i=e=>{const i=A.find((t=>t.panelId===e.panelId));if(!i)throw new ea(e);const n=r(),a=`\n <svg\n xmlns="http://www.w3.org/2000/svg"\n xmlnsXlink="http://www.w3.org/1999/xlink"\n xmlSpace="preserve"\n preserveAspectRatio="none"\n version="1.1"\n width="1"\n height="1"\n viewBox="0 0 1 1"\n >\n <rect\n x="0"\n y="0"\n width="1"\n height="1"\n class="${this.shapeFillId}"\n fill="${n}"\n />\n </svg>\n `,o={};o[this.shapeFillId]={browserValue:n};const s=Te();return{id:s,region:e,command:new rA({stepRegion:e,stepName:t.stepName,colors:o,id:s,svg:a,type:ze.Illustration,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,immutable:e.immutable,excludeFromExport:t.data.excludeFromPrint},i)}},a=t.data.regions.map(i),o=a.filter((t=>!!t)).map((t=>t?.command)),s=a.filter((t=>!!t)).map((t=>({id:t.id,region:t.region})));return{command:new nA(o),followup:async()=>{await n.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],s,(async()=>{n.updateStorage(t.stepName,{colour:r()})}))}}}}};function Es(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class fs extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=fs.name}}const Cs=["‘","’","“","”","\n"];class Qs extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=Qs.name}}const ys=new class{constructor(){Es(this,"cachedColors",new Map),Es(this,"filterUnsupportedCharacters",((t,e)=>{let i=t.replace(/(\r\n|\r|(\u00a9|\u00ae|[\u2000-\u2017]|[\u201E-\u3300]]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]))/gm,"");const n=[],A=e?ln(e.assetUrl):void 0;if(A){const t=i.split("").filter((t=>!Cs.includes(t))).join(""),e=t.split("").map((t=>A.getFont().charToGlyph(t)));for(let i=0;i<e.length;i++){".notdef"===e[i].name&&n.push(String.fromCharCode(t.charCodeAt(i)))}}for(let t=0;t<n.length;t++)i=i.replaceAll(n[t],"");return i})),Es(this,"textAlign",(t=>t.vertical?"center":t.textAlign||"center")),Es(this,"getErrorsForText",((t,e,i)=>{const n=[];e.data&&e.data.maxLength&&t.length>e.data.maxLength&&n.push({localizationKey:"workflow.steps.text.characterLimit"});const A=i.getProfanities(),a=(0,x.split)(t.toLowerCase());for(const t of a)for(const e in A){if(t===A[e].toLowerCase().replace(/\s/g,"")){n.push({localizationKey:"workflow.steps.text.blockedProfanity"});break}}return!e.data.allowNewlines&&(t.includes("\n")||t.includes("\r"))&&n.push({localizationKey:"workflow.steps.text.multipleLines"}),n}))}async init(t,e,i){const n=t.option;if(!n)return null;if(i)await this.reload(t,e,i);else{const i=this.getDefaultImageFillVariant(t.data),A=i?.asset?.fileLink,a=A?await UA(A):void 0,r=a?{src:a.src,height:a.height,width:a.width,scale:t.data.imageFillScale||1}:void 0;e.updateStorage(t.stepName,{inputText:t.data.defaultText||"",color:(await this.getDefaultColorVariant(t.data))?.color||await this.getDefaultColor(t.data),fillImage:r}),e.updateMetadata(t.stepName,{text:t.data.defaultText||"",color:(await this.getDefaultColorVariant(t.data))?.name||await this.getDefaultColor(t.data),fillImage:i?.name});const o=Ja.getDefaultVariant(n);if(o)return this.selectVariantCommand(t,o,{},[],e,(()=>{}),(()=>{}),r)}return null}findLayoutElements(t,e){return t.getRegionElements(e.stepName).map((e=>Wn(e.id,t.getAllLayoutData())))}availableFillColors(t){const e=this.cachedColors.get(t.stepName);if(e)return e;const i=t.data.colorOption;if(i){const e=i.variants?.map((t=>({fill:t.color,stroke:t.color,variant:t})))||[];return this.cachedColors.set(t.stepName,e),e}return[]}async changeFillColor(t,e,i,n){if(!t.data||!t.data.regions)return;const A=n.getCommandDispatcher();e.variant?n.updateMetadata(t.stepName,{color:e.variant.name}):n.updateMetadata(t.stepName,{color:e.fill});const a=t.data.colorOption,r=a?this.createTextFillSpotColor(a,e.variant):void 0;a?n.updateStorage(t.stepName,{color:e.fill,colorProfileAssetKey:a.colorProfile?.key}):n.updateStorage(t.stepName,{color:e.fill});for(const t of i){if(!e.fill)throw new Error("Fill not set on new color selection!");A(new cA(t.id,e.fill,r))}}async availableFillImages(t){const e=t.data.imageFillOption;if(e){const i=e.variants?.map((t=>t.asset?.fileLink))?.filter((t=>!!t))||[];return Promise.all(i.map((async e=>{const i=await UA(e);return{src:e,width:i.width,height:i.height,scale:t.data.imageFillScale||1}})))}return Promise.resolve([])}async changeFillImage(t,e,i,n){if(!t.data||!t.data.regions)return;const A=n.getCommandDispatcher(),a=t.option?.variants?.find((t=>t.asset?.fileLink===e.src));n.updateMetadata(t.stepName,{fillImage:a?.name}),n.updateStorage(t.stepName,{fillImage:e});for(const t of i){A(new lA(t.id,e))}}getProcessedInput(t,e,i){const n=i?t:this.injectReplaceableText(t,e);return yn(n,{vertical:e.vertical,uppercase:e.uppercase})}updateInputText(t,e,i,n){const A=n.getStepStorage(i.stepName),a=this.getProcessedInput(t,i.data,!!A.customiseAllText),r={command:void 0,helperText:"",errors:this.getErrorsForText(t,i,n)};if(r.errors.length>0)return r.helperText=r.errors[0].localizationKey,r;const o=(i.data.maxLength-a.length).toString();r.helperText=`${o} characters remaining`;const s=n.getTransaction().bulk&&i.data.varyText||!1,c=[],l=new Map,g=new Map;for(const t of e){if(!t.fontData)throw new ra("Failed to resolve font data for text.");const[e,n]=LA(t.fontSize,t.fontData,{left:t.x,top:t.y,width:t.width,height:t.height,rotation:t.rotation,panelId:""},[a],{size:i.data.size,minSize:i.data.minSize,maxSize:i.data.maxSize});l.set(t.id,e),g.set(t.id,n);const A=i.data.curved?a:(n||[]).join("\n");c.push(this.generateTextChangeCommandsForRegion(e,i.data,t.id,A,s))}if(!i.data.curved&&e.length>0){if(!Array.from(g.values()).every((t=>t)))return r.errors.push({localizationKey:"workflow.steps.text.doesNotFit"}),r}return n.updateStorage(i.stepName,{text:t}),n.updateMetadata(i.stepName,{text:a}),A.defaultCleared&&n.setMandatoryFulfilled(i.stepName,!0),r.command=new nA(c),r.command.varying=s,r}async selectVariant(t,e,i,n,A){const a=await this.selectVariantCommand(t,e,i.getStepStorage(t.stepName)||{},i.getRegionElements(t.stepName),i,n,A);a&&(a.command&&i.getCommandDispatcher()(a.command),a.followup&&await a.followup())}createTextFillSpotColor(t,e){const i=t.colorProfile;if(i){const t=(i.name||"").replace(/\s/g,"-"),n=t.lastIndexOf("/"),A=t.slice(n+1).slice(0,-4);if(!e.namedColor)throw new Error("variant named color not set!");return{profileName:A,namedColor:e.namedColor}}}async reload(t,e,i){const n=e.getSerializedStep(t.stepName,i.serializableWorkflow.steps),A=Object.values(i.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=t.option;if(n?.selectedVariants){const i=n.selectedVariants[0].id;if(a&&i){const r=a.variants?.find((t=>t.id===i));if(r){const i=await this.fontDataFromVariant(r),a=A.map((t=>({id:t.id,region:t.stepRegion}))),o=n.storage?.color,s=n.storage?.text;await e.setSelectionsAndElements(t.stepName,[r],a,(async()=>{e.updateMetadata(t.stepName,{color:o,text:s}),e.updateStorage(t.stepName,{text:s,inputText:s});const n=A.map((t=>new dA(t.id,i))),a=new nA(n);e.getCommandDispatcher()(a),e.setMandatoryFulfilled(t.stepName,!0)}));const{command:c}=ys.updateInputText(s||"",A,t,e);c&&e.getCommandDispatcher()(c)}}}}async getDefaultColorVariant(t){const e=t.colorOption;if(e)return Ja.getDefaultVariant(e)}async getDefaultColor(t){const e=t.colorOption;if(!e)return;return Ja.getDefaultVariant(e)?.color}getDefaultImageFillVariant(t){const e=t.imageFillOption;if(e)return Ja.getDefaultVariant(e)}async fontDataFromVariant(t){const e=t.asset;if(!e)throw new ia(t);const i=e.fileLink;if(!i)throw new na(e);return{assetUrl:i,name:(await sn(i)).names.fullName.en}}async selectVariantCommand(t,e,i,n,A,a,r,o){const s=A.markUpdatePending(),c=await this.fontDataFromVariant(e);if(n.length>0){const l=n.map((t=>new dA(t.id,c)));if(o){const t=n.map((t=>new lA(t.id,o)));l.push(...t)}const g=await this.changeInputTextWithRegion(t,t.data.size||30,c,i.text||"",i,A,!!i.customiseAllText,a,r);g&&l.push(g);return{command:new nA(l),followup:async()=>{A.markUpdateCompleted(s),await A.setSelectionsAndElements(t.stepName,[e],n)}}}{const n=await this.createTextboxRegions(t.stepName,e,t.data,c,i,A),l=await this.changeInputTextWithRegion(t,t.data.size||30,c,n[0]?.newElement.input||i.text||t.data.defaultText||"",i,A,!!i.customiseAllText,a,r),g=n.flatMap((t=>t.commands));if(o){const t=n.map((t=>new lA(t.regionElement.id,o)));g.push(...t)}l&&g.push(l);return{command:new nA(g),followup:async()=>{A.markUpdateCompleted(s)}}}}injectReplaceableText(t,e){return e.replaceableText?e.replaceableText.replace("{{}}",t):t}async createTextboxRegions(t,e,i,n,A,a){if(!i||!i.regions)throw new Error("Step data not supplied");const r=a.getTransaction().bulk&&i.varyText||!1,o=r?"":A.text||i.defaultText||"",s=this.getProcessedInput(o,i,!1),c=await Promise.all(i.regions.map((async e=>{const c=a.getLayouts().find((t=>t.panelId===e.panelId)),l=Te();try{if(!c)throw new Qs("Failed to find layout for region: "+e.panelId);const g=i.colorOption;let h;if(g&&g.variants){const e=g.variants.find((t=>t.id===g.defaultVariant?.id))||g.variants[0];h=this.createTextFillSpotColor(g,e),a.updateStorage(t,{colorProfileAssetKey:g.colorProfile?.key})}const d=await this.getDefaultColor(i),u=d||"#000000",w={stepRegion:e,stepName:t,align:this.textAlign(i),fill:A.color?A.color:u,fontSize:i.size||30,fontData:n,id:l,layer:e.layer,layerIndex:e.layerIndex,rotation:e.rotation,text:s,input:o,type:ze.Textbox,vertical:i.vertical,x:e.left,y:e.top,height:e.height,width:e.width,immutable:e.immutable,verticalAlign:i.verticalAlign||"middle",curved:i.curved,paths:i.paths,fillSpotColorDefinition:h},B=[],p=new Map,m=new Map;if(!w.fontData)throw new ra("Failed to resolve font data for text.");const[E,f]=LA(w.fontSize,w.fontData,{left:w.x,top:w.y,width:w.width,height:w.height,rotation:w.rotation,panelId:""},[s],{size:i.size,minSize:i.minSize,maxSize:i.maxSize});p.set(w.id,E),m.set(w.id,f);const C=i.curved||i.vertical?s:(f||[]).join("\n");B.push(this.generateTextChangeCommandsForRegion(E,i,w.id,C,r));const Q=new rA(w,c);return Q.varying=r,{regionElement:{id:l,region:e},commands:[Q,...B],newElement:w,fontData:n}}catch(t){throw console.log(t),new fs("Error adding font to region")}}))).catch((t=>{throw t instanceof fs?(wr.setLatestToast("Failed to load font.",Ds.Error),t):t instanceof Qs?t:new Error(t)}));return await a.setSelectionsAndElements(t,[e],c.map((t=>t.regionElement)),(async()=>{a.updateMetadata(t,{text:o}),a.updateStorage(t,{text:o})})),c}generateTextChangeCommandsForRegion(t,e,i,n,A){const a=[],r=new BA(i,n);if(r.varying=A,a.push(r),!e.size){const e=new gA(i,t);e.varying=A,a.push(e)}const o=new nA(a);return o.varying=A,o}async changeInputTextWithRegion(t,e,i,n,A,a,r,o,s,c){const l=(n||"").replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,""),g=this.getProcessedInput(l,t.data,r),h=a.getRegionElements(t.stepName),d=new Map,u=new Map;for(const n of h)if(n.region){const[A,a]=LA(e,i,n.region,[g],{size:t.data.size,minSize:t.data.minSize,maxSize:t.data.maxSize});d.set(n.id,A),u.set(n.id,a)}const w=(()=>{if(t.data&&t.data.maxLength&&g.length>t.data.maxLength)return c&&c(!0),{info:"0"};const e=a.getProfanities(),i=(0,x.split)(g.toLowerCase());for(const t of i)for(const i in e){if(t===e[i].toLowerCase().replace(/\s/g,""))return o(!0),{error:"Blocked profanity."}}if(!t.data.vertical&&!t.data.allowNewlines&&(g.includes("\n")||g.includes("\r")))return o(!0),{error:"Cannot span multiple lines."};if(!t.data.curved){if(!Array.from(u.values()).every((t=>t)))return o(!0),{error:"Does not fit."}}return o(!1),{info:(t.data.maxLength-g.length).toString()}})();if(w.error)return void s(w.error);if(s(`${w.info} characters remaining`||""),c)return;a.updateStorage(t.stepName,{text:l}),a.updateMetadata(t.stepName,{text:this.injectReplaceableText(l,t.data)});const B=a.getTransaction().bulk&&t.data.varyText||!1;A.defaultCleared&&a.setMandatoryFulfilled(t.stepName,!0);const p=[];for(const e of h){const i=t.data.curved?g:(u.get(e.id)||[]).join("\n");p.push(this.generateTextChangeCommandsForRegion(d.get(e.id)||1,t.data,e.id,i,B))}const m=new nA(p);return m.varying=B,m}};function Is(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}let Ds;var xs;(xs=Ds||(Ds={})).Error="Error",xs.Warning="Warning",xs.Info="Info";class vs extends Wr{constructor(t){super(),Is(this,"update",void 0),Is(this,"createdAt",new Date),this.update=t}async execute(){await this.update(),await new Promise((t=>{window.setTimeout((()=>{t()}),1e3)}))}}class Ms{constructor(t,e,i,n,A,a,r,o,s,c,l=!1,g,h=!1){Is(this,"reloadedState",void 0),Is(this,"transaction",void 0),Is(this,"ownerCustomer",void 0),Is(this,"updateTransaction",void 0),Is(this,"confirmedDesign",void 0),Is(this,"editedSteps",void 0),Is(this,"informationResults",void 0),Is(this,"layouts",void 0),Is(this,"mandatorySteps",void 0),Is(this,"pendingUpdates",void 0),Is(this,"selectionCost",void 0),Is(this,"workflow",void 0),Is(this,"stepSpecificServices",void 0),Is(this,"previewService",void 0),Is(this,"profanityFilter",void 0),Is(this,"pollers",void 0),Is(this,"commandContext",void 0),Is(this,"stepElements",void 0),Is(this,"stepInitialised",void 0),Is(this,"stepMetadata",void 0),Is(this,"stepSelections",void 0),Is(this,"storage",void 0),Is(this,"confirmCallbacks",void 0),Is(this,"editedCallbacks",void 0),Is(this,"elementsCallbacks",void 0),Is(this,"informationResultCallbacks",void 0),Is(this,"initCallbacks",void 0),Is(this,"makingAdjustmentsCallback",void 0),Is(this,"mandatoryCallbacks",void 0),Is(this,"metadataCallbacks",void 0),Is(this,"selectionCallbacks",void 0),Is(this,"stepSpecificStorageCallbacks",void 0),Is(this,"storageCallbacks",void 0),Is(this,"currentVariationRecordCallbacks",void 0),Is(this,"variationRecordCallbacks",void 0),Is(this,"allScenes",void 0),Is(this,"product",void 0),Is(this,"invalidModelVariants",void 0),Is(this,"currentAdjustingStepId",void 0),Is(this,"renderableContextService",void 0),Is(this,"workflowStatePromiseQueue",new Xr(1)),Is(this,"variationRecords",[]),Is(this,"currentVariationRecord",void 0),Is(this,"initializationPromise",void 0),Is(this,"initialized",!1),Is(this,"readOnly",!1),Is(this,"modelContainer",void 0),Is(this,"isReloadedTransaction",!1),Is(this,"render3DScene",(()=>{if(!this.previewService)return;const t=this.getCommandContext().getAllLayouts(),e=this.getLayoutPreviewService()?.getAll();if(e)for(const[,i]of e)i.render(this.getWorkflow(),t,this.getCurrentVariationRecord(),this.getProduct().overlayImageUrl)})),this.updateTransaction=A,this.commandContext=n,this.reloadedState=c,this.transaction=a,this.readOnly=l,this.confirmedDesign=!1,this.editedSteps={},this.informationResults=[],this.mandatorySteps={},this.pendingUpdates=[],this.selectionCost=0,this.workflow=t,this.stepSpecificServices={},this.profanityFilter=e,this.pollers=[],this.allScenes=[],this.layouts=i,this.product=r,this.previewService=o,this.modelContainer=g,this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},this.confirmCallbacks=[],this.editedCallbacks=[],this.elementsCallbacks=[],this.informationResultCallbacks=[],this.initCallbacks=[],this.mandatoryCallbacks=[],this.makingAdjustmentsCallback=[],this.metadataCallbacks=[],this.selectionCallbacks=[],this.stepSpecificStorageCallbacks={},this.storageCallbacks=[],this.currentVariationRecordCallbacks=[],this.variationRecordCallbacks=[],this.invalidModelVariants=[],this.currentAdjustingStepId="",this.renderableContextService=s,this.currentVariationRecord=null,this.isReloadedTransaction=h,this.initializationPromise=this.initializeDefaultWorkflowState(t,a),this.initializationPromise.then((()=>{this.initialized=!0})),this.initializationPromise.catch((t=>{throw console.error(t),this.initialized=!1,new Error("Workflow initialization failed due to an error. See console.")})),this.initializationPromise.finally((()=>this.getCommandContext().registerStateCallback((()=>{this.updateStateWithServer(),this.render3DScene()}))))}async initializeDefaultWorkflowState(t,e){this.reloadedState&&this.reloadedState.serializableWorkflow.steps.forEach((t=>{this.storage[t.stepName]=t.storage||{}})),this.allScenes=await Wo(t,{bulkScene:e.bulk||!1,bulkSceneTitle:"workflow.steps.bulk.title",finishScene:!0,finishSceneTitle:"workflow.steps.finish.confirmDesign"},e);const i=Zo(this.allScenes,this.stepSelections).map((t=>t.silentSteps)).flat(),{stepElements:n,commands:A}=await this.stepElementsForIntroducedSilentSteps(i,!!this.reloadedState);this.commandContext.apply(new nA(A),!0),this.stepElements={...this.stepElements,...n},await this.ensureStepsAreLoaded(),!this.isReloadedTransaction&&this.updateStateWithServer(),this.render3DScene(),this.reloadedState&&(()=>{const t=this.workflow.finalizeStepConfig;if(!t)return;const e=t.lookAtAnimation,i=t.modelAnimation;e&&this.previewService?.executeCameraAnimation(e),i&&this.modelContainer?.executeAnimation(i)})()}getProduct(){return this.product}getInitializationPromise(){return this.initializationPromise}isInitialized(){return this.initialized}addVariationRecord(t){const e={...t,recordNumber:this.variationRecords.reduce(((t,e)=>e.recordNumber>t?e.recordNumber:t),0)+1};return this.variationRecords.push(e),this.onVariationRecordsChange(),e}removeVariationRecord(t){if(this.variationRecords=this.variationRecords.filter((e=>e.recordNumber!==t)),this.variationRecords.forEach(((t,e)=>t.recordNumber=e+1)),this.currentVariationRecord&&this.currentVariationRecord.recordNumber===t){const t=this.currentVariationRecord.recordNumber,e=t>1?this.variationRecords[t-2]:this.variationRecords[0];this.setCurrentVariationRecord(e||null)}return this.onVariationRecordsChange(),this.variationRecords}setVariationRecords(t){this.variationRecords=t,this.onVariationRecordsChange(),0===t.length?this.setCurrentVariationRecord(null):this.setCurrentVariationRecord(t[0])}setCurrentVariationRecord(t){if(this.currentVariationRecord=t,this.onCurrentVariationRecordChange(),t){const e=this.variationRecords.find((e=>e.recordNumber===t.recordNumber));e&&(e.values=t.values,this.onVariationRecordsChange())}}addConfirmCallback(t){t(this.confirmedDesign),this.confirmCallbacks.push(t)}addEditedCallback(t){t(this.editedSteps),this.editedCallbacks.push(t)}addElementsCallback(t){t(this.stepElements),this.elementsCallbacks.push(t)}addInformationResultCallback(t){t(this.informationResults),this.informationResultCallbacks.push(t)}addInitCallback(t){t(this.stepInitialised),this.initCallbacks.push(t)}addMandatoryCallback(t){t(this.mandatorySteps),this.mandatoryCallbacks.push(t)}addMetadataCallback(t){t(this.stepMetadata),this.metadataCallbacks.push(t)}async addSelectionCallback(t){t({invalidModelVariants:this.invalidModelVariants,selectionCost:this.selectionCost,selections:this.stepSelections,traversableScenes:await this.traversableScenes()}),this.selectionCallbacks.push(t)}addStepSpecificStorageCallback(t,e){Object.keys(this.storage).includes(e)||(this.storage[e]={}),t(this.storage[e]),Object.keys(this.stepSpecificStorageCallbacks).includes(e)||(this.stepSpecificStorageCallbacks[e]=[]),this.stepSpecificStorageCallbacks[e].push(t)}addStorageCallback(t){t(this.storage),this.storageCallbacks.push(t)}addMakingAdjustmentsCallback(t){t(this.currentAdjustingStepId),this.makingAdjustmentsCallback.push(t)}addCurrentVariationCallback(t){t(this.currentVariationRecord),this.currentVariationRecordCallbacks.push(t)}addVariationRecordsCallback(t){t(this.variationRecords),this.variationRecordCallbacks.push(t)}addPoller(t){this.pollers.push(t)}getLayouts(){return this.layouts}getAllLayoutData(){return this.commandContext.getAllLayouts().map((t=>t.layoutState))}getLayoutPreviewService(){return this.renderableContextService}getInformationResults(){return this.informationResults}getPreviewService(){return this.previewService}getProfanities(){return this.profanityFilter}getCommandContext(){return this.commandContext}getRegionElements(t){return this.stepElements[t]||[]}getStepSpecificServices(t){return this.stepSpecificServices[t]}getTransaction(){return this.transaction}getTransactionCustomer(){return this.ownerCustomer}setTransactionCustomer(t){this.ownerCustomer=t}setTransactionCustomerDetails(t){this.ownerCustomer={...this.ownerCustomer,emailAddress:t.email}}getModelContainer(){return this.modelContainer}setModelContainer(t){(!t||this.previewService&&this.previewService.getAllModels().includes(t))&&(this.modelContainer=t,t.metadata&&t.metadata instanceof Map&&this.modelContainer.metadata.set("workflowManager",this))}setTransaction(t){this.transaction=t}getWorkflow(){return this.workflow}getCommandDispatcher(){return t=>this.commandContext.apply(t,!this.initialized)}getWorkflowSelections(){const t={};return this.workflow.steps.forEach((e=>{const i=this.stepSelections[e.stepName];i&&i.selectedVariants&&i.selectedVariants.length>0&&(t[e.stepName]={selections:i.selectedVariants})})),t}markStepsAsInitialised(t){const e={...this.stepInitialised};t.forEach((t=>{e[t]=!0})),this.stepInitialised=e,this.onInitChange()}getUpdatesPending(){return this.pendingUpdates.length>0}markUpdateCompleted(t){this.pendingUpdates=this.pendingUpdates.filter((e=>e!==t))}markUpdatePending(){const t=Te();return this.pendingUpdates=[...this.pendingUpdates,t],t}setEditedStatus(t,e){this.editedSteps={...this.editedSteps,[t]:e},this.onEditedChange()}setInformationResults(t){this.informationResults=[...t],this.onInformationResultChange()}setCurrentAdjustingStepId(t){this.currentAdjustingStepId=t,this.onMakingAdjustmentsChange()}setMandatoryFulfilled(t,e){this.mandatorySteps[t]!==e&&(this.mandatorySteps={...this.mandatorySteps,[t]:e},this.onMandatoryChange())}toggleDesignConfirmed(){this.confirmedDesign=!this.confirmedDesign,this.onConfirmChange()}toggleMakingAdjustmentsCallback(t){t(this.mandatorySteps),this.mandatoryCallbacks.push(t)}async injectIntoPreviewService(t){if(this.modelContainer)throw new Error("You must eject from the preview service before injecting again.");if(this.previewService=t,!this.getProduct().modelUrl||!this.previewService)return;const e=t.loadModel({model:this.getProduct().modelUrl,contextService:this.getLayoutPreviewService()});this.setModelContainer(e),await e.getInitializationPromise(),this.render3DScene()}ejectFromPreviewService(){if(this.modelContainer){if(!this.modelContainer.dispose)throw new Error("This feature is not supported in the current preview service.");this.modelContainer.dispose(),this.modelContainer=void 0}this.previewService=void 0}updateStorage(t,e){const i={...this.storage,[t]:{...this.storage[t],...e}};if(!b(C)(i,this.storage)){this.storage=i;const e=new _n(this.constructSerializableWorkflow());this.commandContext.apply(e,!0),this.onStepSpecificStorageChange(t),this.onStorageChange()}}constructSerializableWorkflow(){const t=[];return this.allScenes.forEach((e=>{e.renderableSteps.forEach((e=>{const i={stepName:e.stepName};i.storage=this.storage[e.stepName],i.selectedVariants=this.stepSelections[e.stepName]?.selectedVariants?.map((t=>({id:t.id,priceModifier:t.priceModifier}))),t.push(i)}))})),{steps:t}}updateStateWithServer(){if(this.readOnly)return;const t=this.serialize();this.workflowStatePromiseQueue.enqueue(new vs((async()=>{await this.updateTransaction({variables:{id:this.transaction.id,workflowState:t.transaction}})})))}async updateStateWithServerImmediate(){if(this.readOnly)return;const t=this.serialize();return new vs((async()=>{await this.updateTransaction({variables:{id:this.transaction.id,workflowState:t.transaction}})})).execute()}serialize(){const t=this.getCommandContext().getState();if(!t)throw new ra("Attempted to serialize state before it was initialized.");const i=JSON.stringify(this.dehydrateState(b(e)(t.transaction))),n=t.variation;if(!n)return{transaction:i};const A={layouts:{},serializableWorkflow:{steps:[]},...b(e)(n)||{}};return{transaction:i,variation:JSON.stringify(this.dehydrateState(A))}}dehydrateState(t){for(const e of Object.values(t.layouts).map((t=>t.elements)).flat())"illustration"===e.type&&(delete e.cachedObjectURL,e.src&&delete e.svg);return t}async outstandingRequestsPromise(){return this.workflowStatePromiseQueue.finalize()}updateMetadata(t,e){this.stepMetadata={...this.stepMetadata,[t]:{...this.stepMetadata[t],...e}},this.onMetadataChange()}removeElements(t){this.stepElements=((t,e)=>Object.keys(t).reduce(((i,n)=>{const A=[...t[n]||[]];return e.forEach((t=>{const e=A.findIndex((e=>e.id===t.id));e>-1&&A.splice(e,1)})),i[n]=A,i}),{}))(this.stepElements,t)}getInvalidCanvasRegions(){return this.workflow.steps.reduce(((t,e)=>(qo(e,this.stepSelections)||this.stepElements[e.stepName]&&this.stepElements[e.stepName].forEach((e=>t.push(e))),t)),[])}getInvalidModelVariants(){return this.workflow.steps.reduce(((t,e)=>("Model"===e.type&&e.option?.id&&!qo(e,this.stepSelections)&&t.push(e.option.id),t)),[])}async stepElementsForIntroducedSilentSteps(t,e){const i=this.product;if(!i)return Promise.resolve({stepElements:{},commands:[]});const n=async(t,e,i)=>{if(t.type===oi.SilentIllustration){return{step:t,results:await new As(t,e).trigger()}}if(t.type===oi.ProductOverlay){return{step:t,results:await new As(t,e,i).trigger()}}return Promise.reject("Unknown silent step. This is a bug")},A=t.filter((t=>!this.stepInitialised[t.stepName])),a={stepElements:{},commands:[]},r=[];for(const t of A)this.markStepsAsInitialised([t.stepName]),e||r.push(n(t,this.layouts,i));const o=await Promise.all(r);for(const t of o)a.stepElements[t.step.stepName]=t.results.map((t=>t.regionElement)),a.commands=[...a.commands,...t.results.map((t=>t.command))];return a}getStepStorage(t){return this.storage[t]}getMetadata(t){return this.stepMetadata[t]}getWorkflowMetadata(){return this.stepMetadata}getSerializedStep(t,e){return e.find((e=>e.stepName===t))}getCurrentVariationRecord(){return this.currentVariationRecord||void 0}getVariationRecords(){return this.variationRecords}async reset(){this.commandContext.getAllLayouts().forEach((t=>t.layoutState.elements.forEach((t=>{this.getCommandDispatcher()(new oA(t.id))})))),this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},this.currentVariationRecord=null,await this.ensureStepsAreLoaded()}async setSelectionsAndElements(t,e,i,n){const A=this.stepSelections;this.stepSelections={...this.stepSelections,[t]:{selectedVariants:e}},this.selectionCost=Object.values(this.stepSelections).reduce(((t,e)=>t+e.selectedVariants.map((t=>t.priceModifier||0)).reduce(((t,e)=>t+e),0)),0),this.workflow.steps.forEach((t=>{qo(t,this.stepSelections)||(this.stepInitialised[t.stepName]=!1,delete this.stepMetadata[t.stepName],delete this.stepSelections[t.stepName],delete this.storage[t.stepName])}));const a=this.allScenes,r=Zo(a,A),o=Zo(a,this.stepSelections),s=r.map((t=>t.silentSteps)).flat(),c=o.map((t=>t.silentSteps)).flat().filter((t=>!s.some((e=>e.stepName===t.stepName))));s.forEach((t=>{qo(t,this.stepSelections)||(this.stepInitialised[t.stepName]=!1)})),this.invalidModelVariants=this.getInvalidModelVariants();const l=this.getInvalidCanvasRegions(),{stepElements:g,commands:h}=await this.stepElementsForIntroducedSilentSteps(c,!1);this.stepElements={...this.stepElements,...g,[t]:i},this.removeElements(l);if(this.workflow.steps.find((e=>e.stepName===t))?.type===oi.Frame){this.getStepSpecificServices(t)?.frameService?.setTargetElements(i.map((t=>t.id)))}const d=[...h,...l.map((t=>new oA(t.id))),new _n(this.constructSerializableWorkflow())];d.length>0&&this.commandContext.apply(new nA(d),!0),await this.ensureStepsAreLoaded(),this.onElementsChange(),await this.onSelectionChange(),n&&await n()}async ensureStepsAreLoaded(){const t=[],e=Zo(this.allScenes,this.stepSelections).map((t=>t.renderableSteps)).flat();for(const i of e)if(!this.stepInitialised[i.stepName])switch(this.stepInitialised[i.stepName]=!0,i.type){case oi.Bulk:this.updateStorage("Bulk",this.reloadedState?.serializableWorkflow.steps.find((t=>"Bulk"===t.stepName))?.storage||{});break;case oi.DigitalContent:t.push(ss.init(i,this,this.reloadedState));break;case oi.Frame:case oi.Photo:{const e=new is(i.data.forceImageCover);e.connectWorkflowManager(this,i.stepName),this.stepSpecificServices[i.stepName]={frameService:e},t.push(ls.init(i,this,this.reloadedState))}break;case oi.Illustration:t.push(gs.init(i,this,this.reloadedState));break;case oi.Material:t.push(hs.init(i,this,this.reloadedState));break;case oi.Model:t.push(ds.init(i,this,this.reloadedState));break;case oi.Module:this.stepSpecificServices[i.stepName]={module:await Bo(i.data.module)},t.push(us.init(i,this,this.reloadedState));break;case oi.Picture:t.push(ws.init(i,this,this.reloadedState));break;case oi.Question:t.push(Bs.init(i,this,this.reloadedState));break;case oi.Shape:t.push(ms.init(i,this,this.reloadedState));break;case oi.Text:t.push(ys.init(i,this,this.reloadedState))}const i=(await Promise.allSettled(t)).map((t=>{if("rejected"===t.status)throw new Error(`Step initialization failed: ${t.reason}`);return t.value})),n=i.filter((t=>!!t&&!!t.command)).map((t=>t.command)),A=i.filter((t=>!!t&&!!t.followup)).map((t=>t.followup));n&&n.length>0&&this.commandContext.apply(new nA(n),!0);for(const t of A)await t();A.length>0&&await this.ensureStepsAreLoaded(),this.onInitChange()}onConfirmChange(){this.confirmCallbacks.forEach((t=>t(this.confirmedDesign)))}onEditedChange(){this.editedCallbacks.forEach((t=>t(this.editedSteps)))}onElementsChange(){this.elementsCallbacks.forEach((t=>t(this.stepElements)))}onInformationResultChange(){this.informationResultCallbacks.forEach((t=>t(this.informationResults)))}onInitChange(){this.initCallbacks.forEach((t=>t(this.stepInitialised)))}onMakingAdjustmentsChange(){this.makingAdjustmentsCallback.forEach((t=>{t(this.currentAdjustingStepId)}))}onMandatoryChange(){this.mandatoryCallbacks.forEach((t=>t(this.mandatorySteps)))}onMetadataChange(){this.metadataCallbacks.forEach((t=>{t(this.stepMetadata)}))}async onSelectionChange(){const t=await this.traversableScenes();for(const e of this.selectionCallbacks)e({invalidModelVariants:this.invalidModelVariants,selectionCost:this.selectionCost,selections:this.stepSelections,traversableScenes:t})}onStepSpecificStorageChange(t){Object.keys(this.stepSpecificStorageCallbacks).includes(t)||(this.stepSpecificStorageCallbacks[t]=[]),this.stepSpecificStorageCallbacks[t].forEach((e=>e(this.storage[t])))}onStorageChange(){this.storageCallbacks.forEach((t=>t(this.storage)))}onCurrentVariationRecordChange(){this.currentVariationRecordCallbacks.forEach((t=>{t(this.currentVariationRecord)}))}onVariationRecordsChange(){this.variationRecordCallbacks.forEach((t=>{t(this.variationRecords)})),this.render3DScene()}traversableScenes(){return $o(this.allScenes,this.stepSelections)}}function Ss(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class bs{constructor(t){Ss(this,"variantData",void 0),this.variantData=t}getType(){return this.variantData.asset?.type}getId(){return this.variantData.id}getName(){return this.variantData.name}getPriceFormatted(t,e){return this.variantData.priceModifier.toLocaleString(t||"en-US",{style:"currency",currency:"USD",...e})}getPrice(){return this.variantData.priceModifier}getAsset(){return this.variantData.asset?.versions?.find((t=>"cdn"===t.name))?.link}getAssetResource(){return this.variantData.asset}getThumbnail(){const t=this.variantData.thumbnail?.versions?.find((t=>"thumbnail"===t.name));return t?t.link:this.variantData.asset?.versions?.find((t=>"thumbnail"===t.name))?.link}getDisplayImage(){return this.variantData.displayImage?.versions?.find((t=>"medium"===t.name))?.link}getColor(){return this.variantData.color}isDefault(){return!!this.variantData.default}getResource(){return this.variantData}isEnabled(){return this.variantData.enabled}}function Fs(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Ps{constructor(t,e){Fs(this,"manager",void 0),Fs(this,"step",void 0),this.manager=t,this.step=e}setUpdateState(t){Ps.updateState.set(this.step.stepName,t)}getUpdateState(){return!!Ps.updateState.get(this.step.stepName)}getCurrentVariant(){const t=this.manager.getWorkflowSelections()[this.step.stepName]?.selections[0];if(t)return new bs(t)}getAvailableVariants(){return(this.step.option?.variants?.filter((t=>t.enabled))||[]).map((t=>new bs(t)))}getAllVariants(){return(this.step.option?.variants||[]).map((t=>new bs(t)))}getId(){return this.step.stepName}getName(){return this.step.stepTitle}getHelpText(){return this.step.helpText}getType(){return this.step.type}getRaw(){return this.step}getTags(){return this.step.tags||[]}hasTag(t){return this.step.tags?.includes(t)||!1}executeAnimations(){const t=this.manager.getPreviewService(),e=this.manager.getModelContainer(),i=this.step.data.modelAnimation,n=this.step.data.lookAtAnimation;t&&n&&t.executeCameraAnimation(n),e&&i&&e.executeAnimation(i)}}function Ys(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}Fs(Ps,"updateState",new Map);const Ns=t.gql`
560
560
  mutation AddTransactionStakeholder($id: String!, $type: String!, $details: CustomerDetailsInput!) {
561
561
  transactionAddStakeholder(id: $id, details: $details, type: $type) {
562
562
  id
@@ -570,13 +570,13 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
570
570
  }
571
571
  }
572
572
  }
573
- `,ko=t.gql`
573
+ `,ks=t.gql`
574
574
  mutation UpdateDesignName($transactionId: String!, $designName: String!) {
575
575
  transactionUpdate(id: $transactionId, designName: $designName) {
576
576
  id
577
577
  }
578
578
  }
579
- `;class Ro extends Po{constructor(t,e){super(t,e),Yo(this,"transaction",this.manager.getTransaction())}selectVariant(){throw new Error("Bulk step does not support variants.")}async setDesignName(t){await Ia.getShadowGraphqlClient().mutate({mutation:ko,variables:{transactionId:this.manager.getTransaction().id,designName:t}});const e=this.manager.getTransaction();this.manager.setTransaction({...e,designName:t})}addVariationRecord(){const t=this.manager.addVariationRecord({transactionId:this.transaction.id,values:[]});return this.manager.setCurrentVariationRecord(t),t}updateBulkIsConnected(t){this.manager.updateStorage(this.getId(),{bulkIsConnected:t})}openBulkSourceUrl(){window.open(this.transaction.bulkSourceUrl,"_blank")}async sendGoogleSheetLinkToEmail(t){await Ia.getShadowGraphqlClient().mutate({mutation:No,variables:{id:this.transaction.id,details:{emailAddress:t},type:"Owner"}}),this.openBulkSourceUrl()}deleteVariationRecord(t){this.manager.removeVariationRecord(t)}getAspects(){return this.step.data.aspects}}class Ho extends Po{constructor(t,e){super(t,e)}async selectVariant(t){if(this.getCurrentVariant()!==t)return lo.selectVariant(this.step,t.getResource(),this.manager.getRegionElements(this.step.stepName)||[],(t=>this.setUpdateState(t)),this.manager)}getColors(){const t=this.manager.getRegionElements(this.step.stepName)||[];if(0!==t.length)try{return Wn(t[0].id,this.manager.getAllLayoutData()).colors}catch(t){console.error(t)}}setColor(t,e){const i=new Map;return i.set(t,e),lo.changeColors(this.step,this.manager.getRegionElements(this.step.stepName),this.manager,(()=>this.manager.getCommandContext().getAllLayouts()),i)}async getColorOption(){return this.step.data.colorOption}getAvailableColors(){return this.step.data.colorPickerEnabled?lo.availableColors(this.step,this.manager):Promise.resolve([])}hasVaryingSelection(){return this.step.data.varySelection}hasVaryingColors(){return this.step.data.varyColors}isColorPickerEnabled(){return this.step.data.colorPickerEnabled}}class Uo extends Po{constructor(t,e){super(t,e)}selectVariant(t){return go.selectVariant(this.step,t.getResource(),this.manager,(t=>this.setUpdateState(t)))}}class Go extends Po{constructor(t,e){super(t,e)}selectVariant(t){return ho.selectVariant(this.step,t.getResource(),this.manager,(t=>this.setUpdateState(t)))}}class To extends Po{constructor(t,e){super(t,e)}selectVariant(t){return wo.selectVariant(this.step,t.getResource(),this.manager,(t=>this.setUpdateState(t)))}}class Oo extends Po{constructor(t,e){super(t,e)}async selectVariant(t){if(!t.getId())throw new Error("Unable to select variant with a null ID");await Bo.selectVariant(this.step,t.getId(),this.manager)}getDisplayType(){return this.step.option?.displayType}}class Jo extends Po{constructor(t,e){super(t,e)}selectVariant(t){const e=t.getResource();return mo.selectVariant(this.step,{fill:e.color,stroke:e.color,variant:e},this.manager.getRegionElements(this.step.stepName)||[],this.manager)}setColor(t){return mo.selectVariant(this.step,t,this.manager.getRegionElements(this.step.stepName)||[],this.manager)}getColors(){return mo.availableColours(this.step)}setCustomColor(t){if("#custom"!==this.getCurrentVariant()?.getColor())throw new Error("Custom colors can only be set on a non-custom variant. Please add a custom variant to the step.");return mo.setCustomColor(t,this.step,this.manager)}getCustomColor(){const t=this.manager.getStepStorage(this.step.stepName)?.colour;if("#custom"!==this.getCurrentVariant()?.getColor())throw new Error("Custom colors can only be set on a non-custom variant. Please add a custom variant to the step.");if(!t)throw new Error("Color not available on step. Set a default on the workflow to fix this.");return t}}class Lo extends Po{constructor(t,e){super(t,e)}async selectVariant(t){yo.selectVariant(this.step,t.getResource(),this.manager,(t=>{if(t)this.manager.setInformationResults([...this.manager.getInformationResults(),{message:"An issue has occured with test",messageType:Do.Error,stepID:this.step.stepName}]);else{const t=this.manager.getInformationResults().filter((t=>t.stepID!==this.step.stepName));this.manager.setInformationResults(t)}}),(t=>{}))}getAvailableFillColors(){return this.step.data.colorPickerEnabled?yo.availableFillColors(this.step):[]}async setFillColor(t){const e=this.manager.getRegionElements(this.step.stepName);await yo.changeFillColor(this.step,t,e,this.manager)}getFillColor(){return this.manager.getStepStorage(this.step.stepName)?.color||"#000000"}getAvailableFillImages(){return yo.availableFillImages(this.step)}async setFillImage(t){const e=this.manager.getRegionElements(this.step.stepName);await yo.changeFillImage(this.step,t,e,this.manager)}getFillImage(){return this.manager.getStepStorage(this.step.stepName)?.fillImage}setFullTextCustomization(t){const e=this.manager.getStepStorage(this.step.stepName)?.inputText||"",i=void 0!==this.step.data.replaceableText?this.step.data.replaceableText.replace("{{}}",e):e,n=t?i:this.step.data.defaultText;this.manager.updateStorage(this.step.stepName,{customiseAllText:t,text:n,defaultCleared:!1});return this.setText(n)}setText(t){const e={input:t},i=yo.findLayoutElements(this.manager,this.step),n=yo.filterUnsupportedCharacters(t,i[0]?.fontData);!!this.step.data&&!!this.step.data.maxLength&&n.length>this.step.data.maxLength||(e.input=n);const A=i.length<=0,a=A?{inputText:n,text:n}:{inputText:n};if(this.manager.updateStorage(this.step.stepName,a),this.manager.updateMetadata(this.step.stepName,{text:n}),A)return e;const{command:r,errors:s,helperText:o}=yo.updateInputText(n,i,this.step,this.manager);r&&this.manager.getCommandDispatcher()(r);const c=this.manager.getInformationResults(),l=s[0]?.localizationKey;if(l)this.manager.setInformationResults([...c,{message:`${l} - ${this.step.stepTitle}`,messageType:Do.Error,stepID:this.step.stepName}]);else{const t=c.filter((t=>t.stepID!==this.step.stepName));this.manager.setInformationResults(t)}return e.helperText=l||o,e.errorText=l,e}getText(){const t=this.step.data.defaultText;return this.manager.getStepStorage(this.step.stepName)?.text||t||""}isReplaceable(){return this.step.data.userCanReplaceText}clearDefaultTextIfNecessary(){if(!this.manager.getStepStorage(this.step.stepName)?.defaultCleared&&this.step.data.deleteDefaultOnFocus){const t=this.setText("");return this.manager.updateStorage(this.step.stepName,{defaultCleared:!0,inputText:""}),t}}hasVaryingText(){return this.step.data.varyText}hasVaryingColor(){return this.step.data.varyColor}hasVaryingSelection(){return this.step.data.varySelection}hasColorPicker(){return this.step.data.colorPickerEnabled}getRegions(){return this.step.data.regions}getCharacterLimit(){return this.step.data.maxLength}getCharactersRemaining(){const t=this.step.data.maxLength;if(void 0===t)return;return t-this.getText().length}}class zo extends Po{constructor(t,e){super(t,e)}async selectVariant(){}getContent(){return this.step.data.content}}class jo{static get(t,e){switch(e.type){case si.Information:return new zo(t,e);case si.Question:return new Oo(t,e);case si.Text:return new Lo(t,e);case si.Illustration:return new Ho(t,e);case si.Picture:return new To(t,e);case si.Shape:return new Jo(t,e);case si.Material:return new Uo(t,e);case si.Model:return new Go(t,e);case si.Frame:return new wl(t,e);case si.Bulk:return new Ro(t,e);default:throw new ra(`Step type ${e.type} not yet supported in Core SDK`)}}}function Vo(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const Ko=t.gql`
579
+ `;class Rs extends Ps{constructor(t,e){super(t,e),Ys(this,"transaction",this.manager.getTransaction())}selectVariant(){throw new Error("Bulk step does not support variants.")}async setDesignName(t){await Ia.getShadowGraphqlClient().mutate({mutation:ks,variables:{transactionId:this.manager.getTransaction().id,designName:t}});const e=this.manager.getTransaction();this.manager.setTransaction({...e,designName:t})}addVariationRecord(){const t=this.manager.addVariationRecord({transactionId:this.transaction.id,values:[]});return this.manager.setCurrentVariationRecord(t),t}updateBulkIsConnected(t){this.manager.updateStorage(this.getId(),{bulkIsConnected:t})}openBulkSourceUrl(){window.open(this.transaction.bulkSourceUrl,"_blank")}async sendGoogleSheetLinkToEmail(t){await Ia.getShadowGraphqlClient().mutate({mutation:Ns,variables:{id:this.transaction.id,details:{emailAddress:t},type:"Owner"}}),this.openBulkSourceUrl()}deleteVariationRecord(t){this.manager.removeVariationRecord(t)}getAspects(){return this.step.data.aspects}}class Hs extends Ps{constructor(t,e){super(t,e)}async selectVariant(t){if(this.getCurrentVariant()!==t)return gs.selectVariant(this.step,t.getResource(),this.manager.getRegionElements(this.step.stepName)||[],(t=>this.setUpdateState(t)),this.manager)}getColors(){const t=this.manager.getRegionElements(this.step.stepName)||[];if(0!==t.length)try{return Wn(t[0].id,this.manager.getAllLayoutData()).colors}catch(t){console.error(t)}}setColor(t,e){const i=new Map;return i.set(t,e),gs.changeColors(this.step,this.manager.getRegionElements(this.step.stepName),this.manager,(()=>this.manager.getCommandContext().getAllLayouts()),i)}async getColorOption(){return this.step.data.colorOption}getAvailableColors(){return this.step.data.colorPickerEnabled?gs.availableColors(this.step,this.manager):Promise.resolve([])}hasVaryingSelection(){return this.step.data.varySelection}hasVaryingColors(){return this.step.data.varyColors}isColorPickerEnabled(){return this.step.data.colorPickerEnabled}}class Us extends Ps{constructor(t,e){super(t,e)}selectVariant(t){return hs.selectVariant(this.step,t.getResource(),this.manager,(t=>this.setUpdateState(t)))}}class Gs extends Ps{constructor(t,e){super(t,e)}selectVariant(t){return ds.selectVariant(this.step,t.getResource(),this.manager,(t=>this.setUpdateState(t)))}}class Ts extends Ps{constructor(t,e){super(t,e)}selectVariant(t){return ws.selectVariant(this.step,t.getResource(),this.manager,(t=>this.setUpdateState(t)))}}class Os extends Ps{constructor(t,e){super(t,e)}async selectVariant(t){if(!t.getId())throw new Error("Unable to select variant with a null ID");await Bs.selectVariant(this.step,t.getId(),this.manager)}getDisplayType(){return this.step.option?.displayType}}class Js extends Ps{constructor(t,e){super(t,e)}selectVariant(t){const e=t.getResource();return ms.selectVariant(this.step,{fill:e.color,stroke:e.color,variant:e},this.manager.getRegionElements(this.step.stepName)||[],this.manager)}setColor(t){return ms.selectVariant(this.step,t,this.manager.getRegionElements(this.step.stepName)||[],this.manager)}getColors(){return ms.availableColours(this.step)}setCustomColor(t){if("#custom"!==this.getCurrentVariant()?.getColor())throw new Error("Custom colors can only be set on a non-custom variant. Please add a custom variant to the step.");return ms.setCustomColor(t,this.step,this.manager)}getCustomColor(){const t=this.manager.getStepStorage(this.step.stepName)?.colour;if("#custom"!==this.getCurrentVariant()?.getColor())throw new Error("Custom colors can only be set on a non-custom variant. Please add a custom variant to the step.");if(!t)throw new Error("Color not available on step. Set a default on the workflow to fix this.");return t}}class Ls extends Ps{constructor(t,e){super(t,e)}async selectVariant(t){ys.selectVariant(this.step,t.getResource(),this.manager,(t=>{if(t)this.manager.setInformationResults([...this.manager.getInformationResults(),{message:"An issue has occured with test",messageType:Ds.Error,stepID:this.step.stepName}]);else{const t=this.manager.getInformationResults().filter((t=>t.stepID!==this.step.stepName));this.manager.setInformationResults(t)}}),(t=>{}))}getAvailableFillColors(){return this.step.data.colorPickerEnabled?ys.availableFillColors(this.step):[]}async setFillColor(t){const e=this.manager.getRegionElements(this.step.stepName);await ys.changeFillColor(this.step,t,e,this.manager)}getFillColor(){return this.manager.getStepStorage(this.step.stepName)?.color||"#000000"}getAvailableFillImages(){return ys.availableFillImages(this.step)}async setFillImage(t){const e=this.manager.getRegionElements(this.step.stepName);await ys.changeFillImage(this.step,t,e,this.manager)}getFillImage(){return this.manager.getStepStorage(this.step.stepName)?.fillImage}setFullTextCustomization(t){const e=this.manager.getStepStorage(this.step.stepName)?.inputText||"",i=void 0!==this.step.data.replaceableText?this.step.data.replaceableText.replace("{{}}",e):e,n=t?i:this.step.data.defaultText;this.manager.updateStorage(this.step.stepName,{customiseAllText:t,text:n,defaultCleared:!1});return this.setText(n)}setText(t){const e={input:t},i=ys.findLayoutElements(this.manager,this.step),n=ys.filterUnsupportedCharacters(t,i[0]?.fontData);!!this.step.data&&!!this.step.data.maxLength&&n.length>this.step.data.maxLength||(e.input=n);const A=i.length<=0,a=A?{inputText:n,text:n}:{inputText:n};if(this.manager.updateStorage(this.step.stepName,a),this.manager.updateMetadata(this.step.stepName,{text:n}),A)return e;const{command:r,errors:o,helperText:s}=ys.updateInputText(n,i,this.step,this.manager);r&&this.manager.getCommandDispatcher()(r);const c=this.manager.getInformationResults(),l=o[0]?.localizationKey;if(l)this.manager.setInformationResults([...c,{message:`${l} - ${this.step.stepTitle}`,messageType:Ds.Error,stepID:this.step.stepName}]);else{const t=c.filter((t=>t.stepID!==this.step.stepName));this.manager.setInformationResults(t)}return e.helperText=l||s,e.errorText=l,e}getText(){const t=this.step.data.defaultText;return this.manager.getStepStorage(this.step.stepName)?.text||t||""}isReplaceable(){return this.step.data.userCanReplaceText}clearDefaultTextIfNecessary(){if(!this.manager.getStepStorage(this.step.stepName)?.defaultCleared&&this.step.data.deleteDefaultOnFocus){const t=this.setText("");return this.manager.updateStorage(this.step.stepName,{defaultCleared:!0,inputText:""}),t}}hasVaryingText(){return this.step.data.varyText}hasVaryingColor(){return this.step.data.varyColor}hasVaryingSelection(){return this.step.data.varySelection}hasColorPicker(){return this.step.data.colorPickerEnabled}getRegions(){return this.step.data.regions}getCharacterLimit(){return this.step.data.maxLength}getCharactersRemaining(){const t=this.step.data.maxLength;if(void 0===t)return;return t-this.getText().length}}class zs extends Ps{constructor(t,e){super(t,e)}async selectVariant(){}getContent(){return this.step.data.content}}class js{static get(t,e){switch(e.type){case oi.Information:return new zs(t,e);case oi.Question:return new Os(t,e);case oi.Text:return new Ls(t,e);case oi.Illustration:return new Hs(t,e);case oi.Picture:return new Ts(t,e);case oi.Shape:return new Js(t,e);case oi.Material:return new Us(t,e);case oi.Model:return new Gs(t,e);case oi.Frame:return new wl(t,e);case oi.Bulk:return new Rs(t,e);default:throw new ra(`Step type ${e.type} not yet supported in Core SDK`)}}}function Vs(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const Ks=t.gql`
580
580
  fragment CreateDesignTransaction on Transaction {
581
581
  id
582
582
  designName
@@ -592,8 +592,8 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
592
592
  lastSyncedAt
593
593
  bulkEmailAddress
594
594
  }
595
- `,Wo=t.gql`
596
- ${Ko}
595
+ `,Ws=t.gql`
596
+ ${Ks}
597
597
  mutation CreateDesign(
598
598
  $name: String!
599
599
  $layouts: [LayoutInput]!
@@ -624,8 +624,8 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
624
624
  }
625
625
  }
626
626
  }
627
- `,Xo=t.gql`
628
- ${Ko}
627
+ `,Xs=t.gql`
628
+ ${Ks}
629
629
  mutation CreateDesigns($inputs: [DesignCreateInput]!) {
630
630
  designCreateMany(inputs: $inputs) {
631
631
  id
@@ -638,7 +638,7 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
638
638
  }
639
639
  }
640
640
  }
641
- `,qo=(t,e,i)=>{const n={};return e.steps.forEach((e=>{Object.assign(n,(e=>{const n={};if("Frame"===e.type){const A=t[e.stepName],a=e.data;if(!A||a.hideImageInCart&&i)return n;n[`${e.stepTitle} image`]=A.image}if("Illustration"===e.type){const A=t[e.stepName],a=e.data;if(!A||a.hideColorsInCart&&i||!A.colors)return n;if(A.colors.length>0){const t=A.colors.join(", ").toUpperCase();n[`${e.stepTitle} colors`]=t}}if("Module"===e.type){const A=t[e.stepName],a=e.data;if(!A||a.hideTextInCart&&i)return n;n[`${e.stepTitle} text`]=A.text}if("Text"===e.type){const A=t[e.stepName];if(!A)return n;const a=e.data;a.hideTextInCart&&i||(n[`${e.stepTitle} text`]=A.text),!A.color||a.hideColorInCart&&i||(n[`${e.stepTitle} color`]=A.color)}return n})(e))})),n},Zo=(t,e,i,n,A,a,r,s,o,c)=>{const l=(da.getMap("transactionOwnerIds")||new Map).get(t.id),g={baseCost:i,designProductId:t.externalDesignProductId,designProductVariantId:t.externalDesignProductVariantId,event:"onComplete",exportedData:a,externalCartProductId:t.externalCartProductId,externalCartProductVariantId:t.externalCartProductVariantId,lineItemImageUrl:r||"",optionsCost:n,processExecutionId:c,transactionId:t.id,transactionOwnerId:l,weight:e.weight,workflowViewerLink:t.workflowViewerLink||"",workflowViewerReadOnlyLink:t.workflowViewerReadOnlyLink||""};return A&&(g.metadata=A),s&&(g.selectedVariants=s),o&&(g.sku=o),g},$o=async(t,e,i,n,A,a,r,s)=>{const o=e.basePrice||0,c=t.priceModifierTotal||0,l=((t,e,i,n)=>{const A={};let a;if(i){a=qo(i,e,!1);for(const t of Object.keys(a))A[t]={value:a[t],priceModifier:0}}else if(n){a=n;for(const t of Object.keys(a))A[t]={value:a[t],priceModifier:0}}for(const i of Object.keys(t)){const n=t[i],a=e.steps.find((t=>t.stepTitle===i));if(1===n.length)A[`${a?.stepTitle} selection`]={value:n[0].name,priceModifier:n[0].priceModifier};else if(n.length>1)for(let t=0;t<n.length;t++)A[`${a?.stepTitle} selection ${t+1}`]={value:n[t].name,priceModifier:n[t].priceModifier}}return A})(n,i,void 0,a);return Zo(t,e,o,c,a,l,r,n,A,s)},_o=async(t,e,i,n,A,a,r,s,o)=>{await t.outstandingRequestsPromise();const c=Ia.getShadowGraphqlClient(),l=await c.query({query:zs,variables:{id:A.id},fetchPolicy:"no-cache",errorPolicy:"all"}),g=l.data?.transactions[0].workflowState;!l.errors&&g||(console.warn("State mismatch detected. Uploading known state explicitly"),console.warn("State Object:",JSON.stringify(n())),l.errors&&l.errors.forEach((t=>{l.errors&&console.log("Server Error:",t.message)})),await t.updateStateWithServerImmediate(n),console.log("Server state is undefined @ Workflow completion"));const h=t.getPreviewService(),d=e?.finalizeStepConfig?.lookAtAnimation,u=h&&100===h.getSceneInitializationProgress()&&e.showModelOnFinishStep&&!!d,w=o&&qo(o,e,!0),B=o&&qo(o,e,!1),p=async t=>{const i={};let n=0;if(Object.keys(a).length>0)for(const A of Object.keys(a)){const r=a[A],s=e.steps.find((t=>t.stepName===A));for(let e=0;e<r.selections.length;++e){const A=r.selections[e];if(s&&(!t||s.option&&(s.option.variants||[]).length>1&&!s.data.hideSelectionInCart&&!s.data.hideSelectionsInCart)){const t=s.stepTitle;i[t]?i[t].push({id:A.id||"",name:A.name,priceModifier:A.priceModifier}):i[t]=[{id:A.id||"",name:A.name,priceModifier:A.priceModifier}]}n+=A.priceModifier}}return[i,n]},[m]=await p(!0),E=Object.fromEntries(Object.keys(m).map((t=>[t,m[t].map((t=>t.id))]))),[f]=await p(!1),C=Object.fromEntries(Object.keys(f).map((t=>[t,f[t].map((t=>t.id))]))),Q=await s(u);return{designDetails:(()=>{const t={name:r,layouts:i.map((t=>({index:t.index,panelId:t.panelId}))),workflowId:e.id,transactionId:A.id,useThreeDimPreview:!!u,previewImage:Q};if(B){const e=[];for(const[t,i]of Object.entries(B))e.push({key:t,value:i});t.metadata=e}if(E){const e=[];for(const[t,i]of Object.entries(C))e.push({key:t,ids:i});t.selectedVariants=e}return t})(),cartSelectionsWithPrices:m,cartMetadata:w}},tc=async(t,e,i,n,A,a,r,s,o,c,l,g,h)=>{o("workflow.steps.finish.finalize.buildingLayouts");const{designDetails:d,cartSelectionsWithPrices:u,cartMetadata:w}=await _o(t,e,i,n,a,r,s,g,h);o("workflow.steps.finish.finalize.creatingDesign"),a.bulk&&await c(l);const B=await(async t=>(await Ia.getShadowGraphqlClient().mutate({mutation:Wo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{name:t.name,layouts:t.layouts,workflowId:t.workflowId,transactionId:t.transactionId,previewImage:t.previewImage,useThreeDimPreview:t.useThreeDimPreview,metadata:t.metadata,selectedVariants:t.selectedVariants}})).data?.designCreate)(d),p=B?.transaction?.previewImageLink;if(!B?.transaction)throw new Error("Failed to create design");o("workflow.steps.finish.finalize.updatingTransaction");const m=B.transaction;return a.bulk?((t,e,i,n)=>{const A=(e.basePrice||0)*(t.variationsCount||0),a=t.priceModifierTotal||0,r={items:{value:t.variationsCount?`${t.variationsCount}`:"0",priceModifier:0}};return Zo(t,e,A,a,void 0,r,i,void 0,void 0,n)})(m,A,p,B?.processExecution?.id):await $o(m,A,e,u,B?.sku,w,p,B?.processExecution?.id)},ec=async(t,e)=>{e("workflow.steps.finish.finalize.buildingLayouts");const i=await Promise.all(t.map((async t=>await _o(t.workflowManager,t.workflow,t.layouts,t.getReducerState,t.transaction,t.workflowSelections,t.designName,(()=>Promise.resolve(void 0)),t.workflowMetadata))));e("workflow.steps.finish.finalize.creatingDesign");const n=await(async t=>(await Ia.getShadowGraphqlClient().mutate({mutation:Xo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{inputs:t.map((t=>({name:t.name,layouts:t.layouts,workflowId:t.workflowId,transactionId:t.transactionId,previewImage:t.previewImage,useThreeDimPreview:t.useThreeDimPreview,metadata:t.metadata,selectedVariants:t.selectedVariants})))}})).data?.designCreateMany)(i.map((t=>t.designDetails)));if(!n)throw new Error("Failed to create designs");return e("workflow.steps.finish.finalize.updatingTransaction"),Promise.all(n.map((async(e,n)=>{const A=t[n],a=i[n],r=e.transaction;return await $o(r,A.product,A.workflow,a.cartSelectionsWithPrices,e.sku,a.cartMetadata,void 0,e.processExecution?.id)})))};let ic;var nc;(nc=ic||(ic={})).Local="Local",nc.Remote="Remote";const Ac=new class{constructor(){Vo(this,"localPersistenceKey","designTransactions"),Vo(this,"storageMethod",ic.Local),Vo(this,"designSavedListeners",[])}attachSaveListener(t){this.designSavedListeners.push(t)}detachSaveListener(t){this.designSavedListeners=this.designSavedListeners.filter((e=>e!==t))}async getSavedDesigns(){if(this.storageMethod===ic.Local){const t=da.get(this.localPersistenceKey);return t?JSON.parse(t):[]}throw new ra("Unexpected storage method requested")}async getSavedDesignByTransaction(t){return(await this.getSavedDesigns()).find((e=>e.transactionId===t))}async addDesign(t){const e=(await this.getSavedDesigns()).filter((e=>e.transactionId!==t.transactionId));e.unshift(t),await this.setDesigns(e),this.designSavedListeners.forEach((e=>e(t)))}async renameDesign(t,e){const i=await this.getSavedDesigns(),n=i.find((e=>e.transactionId===t));if(!n)throw new Error(`No saved design for transaction ${t}.`);n.title=e,await this.setDesigns(i)}async removeDesign(t){const e=await this.getSavedDesigns();await this.setDesigns(e.filter((e=>e.transactionId!==t)))}async setDesigns(t){if(this.storageMethod!==ic.Local)throw new ra("Unexpected storage method requested");da.set(this.localPersistenceKey,JSON.stringify(t))}};function ac(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class rc{constructor(t,e){if(ac(this,"client",void 0),ac(this,"commandContext",void 0),ac(this,"workflowManager",void 0),ac(this,"isReadOnly",void 0),ac(this,"renderableScenes",[]),ac(this,"renderableSceneCallbacks",[]),ac(this,"debouncedSavedDesignUpdate",b(D)((async()=>{await Ac.getSavedDesignByTransaction(this.getWorkflowManager().getTransaction().id)&&this.save()}),2500)),ac(this,"getCanvasObjectURLAsync",(async t=>new Promise(((e,i)=>{try{t.toBlob((t=>{if(t){const i=URL.createObjectURL(t);e(i)}}))}catch(t){i(t)}})))),!e.workflow)throw new Error("No Workflow ID provided.");this.client=t;const i=e.layouts;this.commandContext=new Ln,this.commandContext.initialize(i,e.reloadedState),this.isReadOnly=e.transaction.isOrdered||!!e.readOnly,this.workflowManager=new Mo(e.workflow,e.product.profanities?.map((t=>t.word))||[],i,this.commandContext,(t=>{try{this.debouncedSavedDesignUpdate()}catch{console.error("Failed to update saved design details.")}return e.stateMutationFunc(t)}),e.transaction,e.product,e.previewService,e.renderableContextService,e.reloadedState,e.readOnly,e.modelContainer,e.isReloadedTransaction),this.workflowManager.addSelectionCallback((t=>{const e=t.traversableScenes.map((t=>{const e=t.renderableSteps.map((t=>t.stepName));return{id:t.name,title:t.title,renderableSteps:e}}));this.renderableScenes=e,this.renderableSceneCallbacks.forEach((t=>t(e)))}))}getClient(){return this.client}getIsReadOnly(){return this.isReadOnly}getCommandContext(){return this.commandContext}getWorkflowManager(){return this.workflowManager}async updateVariationRecords(t){await Ia.getShadowGraphqlClient().mutate({mutation:Ls,variables:{transactionId:this.workflowManager.getTransaction().id,updates:t.map((t=>({recordNumber:t.recordNumber,values:t.values.map((t=>({aspect:t.aspect,stepName:t.stepName,value:t.value})))})))}})}async createPreviewImage(t,e){const i=this.workflowManager.getWorkflow(),n=i?.finalizeStepConfig?.lookAtAnimation;if(t){if(!n)throw new Error("Failed to generate cart preview image!");return await(this.workflowManager.getPreviewService()?.renderSceneScreenshot(512,n))||""}const A=document.createElement("canvas");let a=2048;e&&e<=2048&&(a=e),A.width=a,A.height=a;const r=this.commandContext.getAllLayouts(),s=i.defaultPreviewPanelIndex||0,o=i.panels[s],c=r.find((t=>t.layoutState?.layout.panelId===o?.name))||r[0],l=c.layoutState.layout.previewRegion?{x:c.layoutState.layout.previewRegion.left,y:c.layoutState.layout.previewRegion.top,width:c.layoutState.layout.previewRegion.width,height:c.layoutState.layout.previewRegion.height}:{x:0,y:0,width:c.layoutState.layout.width,height:c.layoutState.layout.height},g=this.commandContext.getLayoutById(c.layoutState.layout.id),h=A.getContext("2d");if(!h)throw new ca("Failed to obtain 2D context for preview image creation");const d=jn(g.layoutState.layout,g.layoutState.elements,{renderingConfiguration:{purpose:Ve.Print,region:{left:l.x,top:l.y,width:l.width,height:l.height}}}),u=b(Q).renderToStaticMarkup(d),w=await Re.from(h,u,{anonymousCrossOrigin:!0,ignoreDimensions:!1});await w.render();const B=await this.getCanvasObjectURLAsync(A);return A.toDataURL(B)}getStepById(t){const e=this.getWorkflowManager().getWorkflow().steps.find((e=>e.stepName===t));if(e&&this.stepHasHandle(e))return jo.get(this.getWorkflowManager(),e)}getSteps(){return this.getScenes().flatMap((t=>this.getStepsByScene(t)))}getScenes(){return this.getWorkflowManager().getWorkflow().stepGroups.map((t=>({id:t.id,name:t.name,stepIds:t.stepNames})))}getSelectionPriceSubunits(){const t=this.getWorkflowManager().getWorkflowSelections();let e=0;return Object.values(t).forEach((t=>{e+=t.selections.map((t=>t.priceModifier)).reduce(((t,e)=>t+e))})),e}getBasePriceSubunits(){return this.getWorkflowManager().getProduct().basePrice||0}getTotalPriceSubunits(){return this.getBasePriceSubunits()+this.getSelectionPriceSubunits()}getBulkStep(){if(this.getWorkflowManager().getTransaction().bulk){const t=this.getWorkflowManager().getProduct().bulkConfiguration,e={type:si.Bulk,stepName:"Bulk",stepTitle:t?.stepTitle??"workflow.steps.bulk.title",helpText:t?.helpText,data:{aspects:js(this.getWorkflowManager().getWorkflow())},conditions:[]};return jo.get(this.getWorkflowManager(),e)}}getStepByName(t){const e=this.getWorkflowManager().getWorkflow().steps.find((e=>e.stepTitle===t));if(e&&this.stepHasHandle(e))return jo.get(this.getWorkflowManager(),e)}getStepsByType(t){return this.getWorkflowManager().getWorkflow().steps.filter((e=>e.type===t)).map((t=>jo.get(this.getWorkflowManager(),t)))}getStepsByScene(t){if(!this.getWorkflowManager().getWorkflow().stepGroups.find((e=>e.name===t.name)))throw new Error("Given scene is not present on workflow! Be careful when persisting scenes that you only use them with the relevant workflow.");return t.stepIds.map((t=>this.getWorkflowManager().getWorkflow().steps.find((e=>e.stepName===t)))).filter((t=>this.stepHasHandle(t))).map((t=>jo.get(this.getWorkflowManager(),t)))}async attachCustomerDetails(t){return this.assignCustomerDetails({emailAddress:t.email})}async assignCustomerDetails(t){const e=(await Ia.getShadowGraphqlClient().mutate({mutation:No,variables:{id:this.getWorkflowManager().getTransaction().id,details:t,type:"Owner"}})).data?.transactionAddStakeholder?.stakeholders?.find((e=>e.customer?.emailAddress===t.emailAddress));if(e?.customer){this.getWorkflowManager().setTransactionCustomer(e.customer);const t=da.getMap("transactionCustomerIds")||new Map;t.set(this.getWorkflowManager().getTransaction().id,e.customer.id),da.setMap("transactionCustomerIds",t)}}attachRenderableSceneListener(t){this.renderableSceneCallbacks.push(t),t(this.renderableScenes)}detachRenderableSceneListener(t){this.renderableSceneCallbacks=this.renderableSceneCallbacks.filter((e=>e!==t))}async save(t){if(!this.getCommandContext().getState())throw new ra("State undefined!");const e={title:await(async()=>{if(t)return t;const e=this.getWorkflowManager().getTransaction().id,i=(await Ac.getSavedDesigns()).find((t=>t.transactionId===e))?.title;return i||"My design"})(),thumbnail:await this.createPreviewImage(!1,256),transactionId:this.getWorkflowManager().getTransaction().id,productId:this.getWorkflowManager().getProduct().id,integrationProductId:this.getWorkflowManager().getTransaction().integrationProduct.id,workflowName:this.getWorkflowManager().getWorkflow().name,workflowId:this.getWorkflowManager().getWorkflow().id,lastEdited:new Date};return await Ac.addDesign(e),e}async copy(){const t=b(e)(this.getCommandContext().getState());if(!t)throw new ra("Internal state is undefined! Cannot copy experience!");const i=JSON.stringify(t.transaction),n=this.getWorkflowManager().getWorkflow(),A=new cl({}),a=this.getWorkflowManager().getTransaction().integrationProduct?.id;if(!a)throw new ra("Integration product id is undefined!");await A.initFromIntegrationProduct(a);return await A.getWorkflowExperience(n.id,i,void 0)}async onDesignFinished(t,e=!0){return tc(this.workflowManager,this.workflowManager.getWorkflow(),this.workflowManager.getLayouts(),(()=>this.commandContext.getState()),this.workflowManager.getProduct(),this.workflowManager.getTransaction(),this.workflowManager.getWorkflowSelections(),this.workflowManager.getWorkflow().name,t||(()=>{}),(t=>this.updateVariationRecords(t)),this.workflowManager.getVariationRecords(),(t=>e?this.createPreviewImage(t):Promise.resolve(void 0)),this.workflowManager.getWorkflowMetadata())}stepHasHandle(t){return t.type!==si.SilentIllustration&&t.type!==si.ProductOverlay}getExportedData(){const t=new Map,e=this.getWorkflowManager().getWorkflowMetadata(),i=this.getWorkflowManager().getWorkflowSelections();return Object.keys(e).forEach((i=>{const n=this.workflowManager.getWorkflow().steps.find((t=>t.stepName===i));if(!n)return;t.has(n.stepTitle)||t.set(n.stepTitle,{});const A=e[i];Object.keys(A).forEach((e=>{t.get(n.stepTitle)[e]=A[e]}))})),Object.keys(i)?.forEach((e=>{const n=this.workflowManager.getWorkflow().steps.find((t=>t.stepName===e));n&&(t.has(n.stepTitle)||t.set(n.stepTitle,{}),t.get(n.stepTitle).selection=i[e].selections[0].name)})),t}}const sc=v.gql`
641
+ `,qs=(t,e,i)=>{const n={};return e.steps.forEach((e=>{Object.assign(n,(e=>{const n={};if("Frame"===e.type){const A=t[e.stepName],a=e.data;if(!A||a.hideImageInCart&&i)return n;n[`${e.stepTitle} image`]=A.image}if("Illustration"===e.type){const A=t[e.stepName],a=e.data;if(!A||a.hideColorsInCart&&i||!A.colors)return n;if(A.colors.length>0){const t=A.colors.join(", ").toUpperCase();n[`${e.stepTitle} colors`]=t}}if("Module"===e.type){const A=t[e.stepName],a=e.data;if(!A||a.hideTextInCart&&i)return n;n[`${e.stepTitle} text`]=A.text}if("Text"===e.type){const A=t[e.stepName];if(!A)return n;const a=e.data;a.hideTextInCart&&i||(n[`${e.stepTitle} text`]=A.text),!A.color||a.hideColorInCart&&i||(n[`${e.stepTitle} color`]=A.color)}return n})(e))})),n},Zs=(t,e,i,n,A,a,r,o,s,c)=>{const l=(da.getMap("transactionOwnerIds")||new Map).get(t.id),g={baseCost:i,designProductId:t.externalDesignProductId,designProductVariantId:t.externalDesignProductVariantId,event:"onComplete",exportedData:a,externalCartProductId:t.externalCartProductId,externalCartProductVariantId:t.externalCartProductVariantId,lineItemImageUrl:r||"",optionsCost:n,processExecutionId:c,transactionId:t.id,transactionOwnerId:l,weight:e.weight,workflowViewerLink:t.workflowViewerLink||"",workflowViewerReadOnlyLink:t.workflowViewerReadOnlyLink||""};return A&&(g.metadata=A),o&&(g.selectedVariants=o),s&&(g.sku=s),g},$s=async(t,e,i,n,A,a,r,o)=>{const s=e.basePrice||0,c=t.priceModifierTotal||0,l=((t,e,i,n)=>{const A={};let a;if(i){a=qs(i,e,!1);for(const t of Object.keys(a))A[t]={value:a[t],priceModifier:0}}else if(n){a=n;for(const t of Object.keys(a))A[t]={value:a[t],priceModifier:0}}for(const i of Object.keys(t)){const n=t[i],a=e.steps.find((t=>t.stepTitle===i));if(1===n.length)A[`${a?.stepTitle} selection`]={value:n[0].name,priceModifier:n[0].priceModifier};else if(n.length>1)for(let t=0;t<n.length;t++)A[`${a?.stepTitle} selection ${t+1}`]={value:n[t].name,priceModifier:n[t].priceModifier}}return A})(n,i,void 0,a);return Zs(t,e,s,c,a,l,r,n,A,o)},_s=async(t,e,i,n,A,a,r,o,s)=>{await t.outstandingRequestsPromise();const c=Ia.getShadowGraphqlClient(),l=await c.query({query:jo,variables:{id:A.id},fetchPolicy:"no-cache",errorPolicy:"all"}),g=l.data?.transactions[0].workflowState;!l.errors&&g||(console.warn("State mismatch detected. Uploading known state explicitly"),console.warn("State Object:",JSON.stringify(n())),l.errors&&l.errors.forEach((t=>{l.errors&&console.log("Server Error:",t.message)})),await t.updateStateWithServerImmediate(n),console.log("Server state is undefined @ Workflow completion"));const h=t.getPreviewService(),d=e?.finalizeStepConfig?.lookAtAnimation,u=h&&100===h.getSceneInitializationProgress()&&e.showModelOnFinishStep&&!!d,w=s&&qs(s,e,!0),B=s&&qs(s,e,!1),p=async t=>{const i={};let n=0;if(Object.keys(a).length>0)for(const A of Object.keys(a)){const r=a[A],o=e.steps.find((t=>t.stepName===A));for(let e=0;e<r.selections.length;++e){const A=r.selections[e];if(o&&(!t||o.option&&(o.option.variants||[]).length>1&&!o.data.hideSelectionInCart&&!o.data.hideSelectionsInCart)){const t=o.stepTitle;i[t]?i[t].push({id:A.id||"",name:A.name,priceModifier:A.priceModifier}):i[t]=[{id:A.id||"",name:A.name,priceModifier:A.priceModifier}]}n+=A.priceModifier}}return[i,n]},[m]=await p(!0),E=Object.fromEntries(Object.keys(m).map((t=>[t,m[t].map((t=>t.id))]))),[f]=await p(!1),C=Object.fromEntries(Object.keys(f).map((t=>[t,f[t].map((t=>t.id))]))),Q=await o(u);return{designDetails:(()=>{const t={name:r,layouts:i.map((t=>({index:t.index,panelId:t.panelId}))),workflowId:e.id,transactionId:A.id,useThreeDimPreview:!!u,previewImage:Q};if(B){const e=[];for(const[t,i]of Object.entries(B))e.push({key:t,value:i});t.metadata=e}if(E){const e=[];for(const[t,i]of Object.entries(C))e.push({key:t,ids:i});t.selectedVariants=e}return t})(),cartSelectionsWithPrices:m,cartMetadata:w}},tc=async(t,e,i,n,A,a,r,o,s,c,l,g,h)=>{s("workflow.steps.finish.finalize.buildingLayouts");const{designDetails:d,cartSelectionsWithPrices:u,cartMetadata:w}=await _s(t,e,i,n,a,r,o,g,h);s("workflow.steps.finish.finalize.creatingDesign"),a.bulk&&await c(l);const B=await(async t=>(await Ia.getShadowGraphqlClient().mutate({mutation:Ws,errorPolicy:"all",fetchPolicy:"no-cache",variables:{name:t.name,layouts:t.layouts,workflowId:t.workflowId,transactionId:t.transactionId,previewImage:t.previewImage,useThreeDimPreview:t.useThreeDimPreview,metadata:t.metadata,selectedVariants:t.selectedVariants}})).data?.designCreate)(d),p=B?.transaction?.previewImageLink;if(!B?.transaction)throw new Error("Failed to create design");s("workflow.steps.finish.finalize.updatingTransaction");const m=B.transaction;return a.bulk?((t,e,i,n)=>{const A=(e.basePrice||0)*(t.variationsCount||0),a=t.priceModifierTotal||0,r={items:{value:t.variationsCount?`${t.variationsCount}`:"0",priceModifier:0}};return Zs(t,e,A,a,void 0,r,i,void 0,void 0,n)})(m,A,p,B?.processExecution?.id):await $s(m,A,e,u,B?.sku,w,p,B?.processExecution?.id)},ec=async(t,e)=>{e("workflow.steps.finish.finalize.buildingLayouts");const i=await Promise.all(t.map((async t=>await _s(t.workflowManager,t.workflow,t.layouts,t.getReducerState,t.transaction,t.workflowSelections,t.designName,(()=>Promise.resolve(void 0)),t.workflowMetadata))));e("workflow.steps.finish.finalize.creatingDesign");const n=await(async t=>(await Ia.getShadowGraphqlClient().mutate({mutation:Xs,errorPolicy:"all",fetchPolicy:"no-cache",variables:{inputs:t.map((t=>({name:t.name,layouts:t.layouts,workflowId:t.workflowId,transactionId:t.transactionId,previewImage:t.previewImage,useThreeDimPreview:t.useThreeDimPreview,metadata:t.metadata,selectedVariants:t.selectedVariants})))}})).data?.designCreateMany)(i.map((t=>t.designDetails)));if(!n)throw new Error("Failed to create designs");return e("workflow.steps.finish.finalize.updatingTransaction"),Promise.all(n.map((async(e,n)=>{const A=t[n],a=i[n],r=e.transaction;return await $s(r,A.product,A.workflow,a.cartSelectionsWithPrices,e.sku,a.cartMetadata,void 0,e.processExecution?.id)})))};let ic;var nc;(nc=ic||(ic={})).Local="Local",nc.Remote="Remote";const Ac=new class{constructor(){Vs(this,"localPersistenceKey","designTransactions"),Vs(this,"storageMethod",ic.Local),Vs(this,"designSavedListeners",[])}attachSaveListener(t){this.designSavedListeners.push(t)}detachSaveListener(t){this.designSavedListeners=this.designSavedListeners.filter((e=>e!==t))}async getSavedDesigns(){if(this.storageMethod===ic.Local){const t=da.get(this.localPersistenceKey);return t?JSON.parse(t):[]}throw new ra("Unexpected storage method requested")}async getSavedDesignByTransaction(t){return(await this.getSavedDesigns()).find((e=>e.transactionId===t))}async addDesign(t){const e=(await this.getSavedDesigns()).filter((e=>e.transactionId!==t.transactionId));e.unshift(t),await this.setDesigns(e),this.designSavedListeners.forEach((e=>e(t)))}async renameDesign(t,e){const i=await this.getSavedDesigns(),n=i.find((e=>e.transactionId===t));if(!n)throw new Error(`No saved design for transaction ${t}.`);n.title=e,await this.setDesigns(i)}async removeDesign(t){const e=await this.getSavedDesigns();await this.setDesigns(e.filter((e=>e.transactionId!==t)))}async setDesigns(t){if(this.storageMethod!==ic.Local)throw new ra("Unexpected storage method requested");da.set(this.localPersistenceKey,JSON.stringify(t))}};function ac(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class rc{constructor(t,e){if(ac(this,"client",void 0),ac(this,"commandContext",void 0),ac(this,"workflowManager",void 0),ac(this,"isReadOnly",void 0),ac(this,"renderableScenes",[]),ac(this,"renderableSceneCallbacks",[]),ac(this,"debouncedSavedDesignUpdate",b(D)((async()=>{await Ac.getSavedDesignByTransaction(this.getWorkflowManager().getTransaction().id)&&this.save()}),2500)),ac(this,"getCanvasObjectURLAsync",(async t=>new Promise(((e,i)=>{try{t.toBlob((t=>{if(t){const i=URL.createObjectURL(t);e(i)}}))}catch(t){i(t)}})))),!e.workflow)throw new Error("No Workflow ID provided.");this.client=t;const i=e.layouts;this.commandContext=new Ln,this.commandContext.initialize(i,e.reloadedState),this.isReadOnly=e.transaction.isOrdered||!!e.readOnly,this.workflowManager=new Ms(e.workflow,e.product.profanities?.map((t=>t.word))||[],i,this.commandContext,(t=>{try{this.debouncedSavedDesignUpdate()}catch{console.error("Failed to update saved design details.")}return e.stateMutationFunc(t)}),e.transaction,e.product,e.previewService,e.renderableContextService,e.reloadedState,e.readOnly,e.modelContainer,e.isReloadedTransaction),this.workflowManager.addSelectionCallback((t=>{const e=t.traversableScenes.map((t=>{const e=t.renderableSteps.map((t=>t.stepName));return{id:t.name,title:t.title,renderableSteps:e}}));this.renderableScenes=e,this.renderableSceneCallbacks.forEach((t=>t(e)))}))}getClient(){return this.client}getIsReadOnly(){return this.isReadOnly}getCommandContext(){return this.commandContext}getWorkflowManager(){return this.workflowManager}async updateVariationRecords(t){await Ia.getShadowGraphqlClient().mutate({mutation:zo,variables:{transactionId:this.workflowManager.getTransaction().id,updates:t.map((t=>({recordNumber:t.recordNumber,values:t.values.map((t=>({aspect:t.aspect,stepName:t.stepName,value:t.value})))})))}})}async createPreviewImage(t,e){const i=this.workflowManager.getWorkflow(),n=i?.finalizeStepConfig?.lookAtAnimation;if(t){if(!n)throw new Error("Failed to generate cart preview image!");return await(this.workflowManager.getPreviewService()?.renderSceneScreenshot(512,n))||""}const A=document.createElement("canvas");let a=2048;e&&e<=2048&&(a=e),A.width=a,A.height=a;const r=this.commandContext.getAllLayouts(),o=i.defaultPreviewPanelIndex||0,s=i.panels[o],c=r.find((t=>t.layoutState?.layout.panelId===s?.name))||r[0],l=c.layoutState.layout.previewRegion?{x:c.layoutState.layout.previewRegion.left,y:c.layoutState.layout.previewRegion.top,width:c.layoutState.layout.previewRegion.width,height:c.layoutState.layout.previewRegion.height}:{x:0,y:0,width:c.layoutState.layout.width,height:c.layoutState.layout.height},g=this.commandContext.getLayoutById(c.layoutState.layout.id),h=A.getContext("2d");if(!h)throw new ca("Failed to obtain 2D context for preview image creation");const d=jn(g.layoutState.layout,g.layoutState.elements,{renderingConfiguration:{purpose:Ve.Print,region:{left:l.x,top:l.y,width:l.width,height:l.height}}}),u=b(Q).renderToStaticMarkup(d),w=await Re.from(h,u,{anonymousCrossOrigin:!0,ignoreDimensions:!1});await w.render();const B=await this.getCanvasObjectURLAsync(A);return A.toDataURL(B)}getStepById(t){const e=this.getWorkflowManager().getWorkflow().steps.find((e=>e.stepName===t));if(e&&this.stepHasHandle(e))return js.get(this.getWorkflowManager(),e)}getSteps(){return this.getScenes().flatMap((t=>this.getStepsByScene(t)))}getScenes(){return this.getWorkflowManager().getWorkflow().stepGroups.map((t=>({id:t.id,name:t.name,stepIds:t.stepNames})))}getSelectionPriceSubunits(){const t=this.getWorkflowManager().getWorkflowSelections();let e=0;return Object.values(t).forEach((t=>{e+=t.selections.map((t=>t.priceModifier)).reduce(((t,e)=>t+e))})),e}getBasePriceSubunits(){return this.getWorkflowManager().getProduct().basePrice||0}getTotalPriceSubunits(){return this.getBasePriceSubunits()+this.getSelectionPriceSubunits()}getBulkStep(){if(this.getWorkflowManager().getTransaction().bulk){const t=this.getWorkflowManager().getProduct().bulkConfiguration,e={type:oi.Bulk,stepName:"Bulk",stepTitle:t?.stepTitle??"workflow.steps.bulk.title",helpText:t?.helpText,data:{aspects:Vo(this.getWorkflowManager().getWorkflow())},conditions:[]};return js.get(this.getWorkflowManager(),e)}}getStepByName(t){const e=this.getWorkflowManager().getWorkflow().steps.find((e=>e.stepTitle===t));if(e&&this.stepHasHandle(e))return js.get(this.getWorkflowManager(),e)}getStepsByType(t){return this.getWorkflowManager().getWorkflow().steps.filter((e=>e.type===t)).map((t=>js.get(this.getWorkflowManager(),t)))}getStepsByScene(t){if(!this.getWorkflowManager().getWorkflow().stepGroups.find((e=>e.name===t.name)))throw new Error("Given scene is not present on workflow! Be careful when persisting scenes that you only use them with the relevant workflow.");return t.stepIds.map((t=>this.getWorkflowManager().getWorkflow().steps.find((e=>e.stepName===t)))).filter((t=>this.stepHasHandle(t))).map((t=>js.get(this.getWorkflowManager(),t)))}async attachCustomerDetails(t){return this.assignCustomerDetails({emailAddress:t.email})}async assignCustomerDetails(t){const e=(await Ia.getShadowGraphqlClient().mutate({mutation:Ns,variables:{id:this.getWorkflowManager().getTransaction().id,details:t,type:"Owner"}})).data?.transactionAddStakeholder?.stakeholders?.find((e=>e.customer?.emailAddress===t.emailAddress));if(e?.customer){this.getWorkflowManager().setTransactionCustomer(e.customer);const t=da.getMap("transactionCustomerIds")||new Map;t.set(this.getWorkflowManager().getTransaction().id,e.customer.id),da.setMap("transactionCustomerIds",t)}}attachRenderableSceneListener(t){this.renderableSceneCallbacks.push(t),t(this.renderableScenes)}detachRenderableSceneListener(t){this.renderableSceneCallbacks=this.renderableSceneCallbacks.filter((e=>e!==t))}async save(t){if(!this.getCommandContext().getState())throw new ra("State undefined!");const e={title:await(async()=>{if(t)return t;const e=this.getWorkflowManager().getTransaction().id,i=(await Ac.getSavedDesigns()).find((t=>t.transactionId===e))?.title;return i||"My design"})(),thumbnail:await this.createPreviewImage(!1,256),transactionId:this.getWorkflowManager().getTransaction().id,productId:this.getWorkflowManager().getProduct().id,integrationProductId:this.getWorkflowManager().getTransaction().integrationProduct.id,workflowName:this.getWorkflowManager().getWorkflow().name,workflowId:this.getWorkflowManager().getWorkflow().id,lastEdited:new Date};return await Ac.addDesign(e),e}async copy(){const t=b(e)(this.getCommandContext().getState());if(!t)throw new ra("Internal state is undefined! Cannot copy experience!");const i=JSON.stringify(t.transaction),n=this.getWorkflowManager().getWorkflow(),A=new cl({}),a=this.getWorkflowManager().getTransaction().integrationProduct?.id;if(!a)throw new ra("Integration product id is undefined!");await A.initFromIntegrationProduct(a);return await A.getWorkflowExperience(n.id,i,void 0)}async onDesignFinished(t,e=!0){return tc(this.workflowManager,this.workflowManager.getWorkflow(),this.workflowManager.getLayouts(),(()=>this.commandContext.getState()),this.workflowManager.getProduct(),this.workflowManager.getTransaction(),this.workflowManager.getWorkflowSelections(),this.workflowManager.getWorkflow().name,t||(()=>{}),(t=>this.updateVariationRecords(t)),this.workflowManager.getVariationRecords(),(t=>e?this.createPreviewImage(t):Promise.resolve(void 0)),this.workflowManager.getWorkflowMetadata())}stepHasHandle(t){return t.type!==oi.SilentIllustration&&t.type!==oi.ProductOverlay}getExportedData(){const t=new Map,e=this.getWorkflowManager().getWorkflowMetadata(),i=this.getWorkflowManager().getWorkflowSelections();return Object.keys(e).forEach((i=>{const n=this.workflowManager.getWorkflow().steps.find((t=>t.stepName===i));if(!n)return;t.has(n.stepTitle)||t.set(n.stepTitle,{});const A=e[i];Object.keys(A).forEach((e=>{t.get(n.stepTitle)[e]=A[e]}))})),Object.keys(i)?.forEach((e=>{const n=this.workflowManager.getWorkflow().steps.find((t=>t.stepName===e));n&&(t.has(n.stepTitle)||t.set(n.stepTitle,{}),t.get(n.stepTitle).selection=i[e].selections[0].name)})),t}}const oc=v.gql`
642
642
  fragment ProductCollectionProductFields on Product {
643
643
  id
644
644
  basePrice
@@ -673,8 +673,8 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
673
673
  name
674
674
  }
675
675
  }
676
- `,oc=v.gql`
677
- ${sc}
676
+ `,sc=v.gql`
677
+ ${oc}
678
678
  fragment ProductCollectionFields on ProductCollection {
679
679
  id
680
680
  name
@@ -721,7 +721,7 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
721
721
  }
722
722
  }
723
723
  `,cc=v.gql`
724
- ${oc}
724
+ ${sc}
725
725
  query GetBundle($id: String!) {
726
726
  bundles(ids: [$id]) {
727
727
  id
@@ -784,7 +784,7 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
784
784
  }
785
785
  }
786
786
  `,hc=v.gql`
787
- ${oc}
787
+ ${sc}
788
788
  mutation CreateBundle($collectionId: String) {
789
789
  bundleCreate(collectionId: $collectionId) {
790
790
  id
@@ -896,7 +896,7 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
896
896
  id
897
897
  }
898
898
  }
899
- `;function Cc(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Qc{constructor(t){Cc(this,"bundle",void 0),Cc(this,"handleCache",{}),this.bundle=t}async getHandle(t){if(this.handleCache[t.name])return this.handleCache[t.name];const e=await this.createHandle(t);return this.handleCache[t.name]=e,e}async getHandles(){if(!this.bundle.getProductCollection()?.getResource().globalPropertyConfiguration)return[];const t=this.bundle.getProductCollection().getResource().globalPropertyConfiguration;return Promise.all(t.aspects.map((t=>this.getHandle(t))))}applyConditionsFromState(t,e){return e?t.filter((t=>this.aspectConditionsSatisfied(t.getRawProperty(),e))):t}aspectConditionsSatisfied(t,e){return!t.conditions||0===t.conditions.length||t.conditions.some((t=>{const i=e.aspects.find((e=>e.name===t.targetAspectName));return!!i&&t.requiredVariantSelections.some((t=>t===i.value))}))}async createHandle(t){switch(t.type){case ei.FileUpload:return new Ic(this.bundle,t);case ei.Option:{const e=t.entityId?await Ja.getOption(t.entityId):void 0;return"Color"===e?.type?new vc(this.bundle,t,e):new xc(this.bundle,t,e)}case ei.Text:return new Dc(this.bundle,t)}}}class yc{constructor(t,e){Cc(this,"bundle",void 0),Cc(this,"property",void 0),this.bundle=t,this.property=e}getName(){return this.property.name}getTitle(){return this.property.title}getDescription(){return this.property.description}getType(){return this.property.type}getRawProperty(){return this.property}getSharedSteps(t){return(t??this.bundle.getWorkflowExperiences()).flatMap((t=>t.getSteps().filter((t=>t.getRaw().globalPropertyAspectConfigurations?.some((t=>t.globalPropertyConfigurationId===this.bundle.getProductCollection()?.getResource().globalPropertyConfiguration?.id&&t.aspectName===this.property.name))))))}}class Ic extends yc{constructor(t,e){super(t,e)}async selectImage(t){await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t.key),this.applyImageSelection(t)])}async applyGlobalState(t){const e=this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name);if(!e)return Promise.resolve();const i=await ka.getLocalOrFromServer(e);return i?this.applyImageSelection(i,t):Promise.resolve()}async applyImageSelection(t,e){const i=this.getSharedSteps(e).map((e=>e.selectImage(t)));await Promise.all(i)}}class Dc extends yc{constructor(t,e){super(t,e)}getText(){const t=this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name);return t||""}async setText(t){await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t),this.applyTextSelection(t)])}async applyGlobalState(t){const e=this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name);if(!e)return Promise.resolve();await this.applyTextSelection(e,t)}async applyTextSelection(t,e){const i=this.getSharedSteps(e).map((e=>{e.setText(t)}));await Promise.all(i)}}class xc extends yc{constructor(t,e,i){super(t,e),Cc(this,"optionResource",void 0),this.optionResource=i}getCurrentVariant(){if(!this.optionResource)return;const t=this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name);if(!t)return;const e=this.optionResource.variants?.find((e=>e.id===t));return e?new bo(e):void 0}getAvailableVariants(){return(this.optionResource?.variants?.filter((t=>t.enabled))||[]).map((t=>new bo(t)))}getAllVariants(){return(this.optionResource?.variants||[]).map((t=>new bo(t)))}async selectVariant(t){await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t.getId()),this.applyVariantSelection(t)])}async applyGlobalState(t){const e=this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name);if(!e)return Promise.resolve();const i=this.optionResource?.variants?.find((t=>t.id===e));return i?this.applyVariantSelection(new bo(i),t):Promise.resolve()}async applyVariantSelection(t,e){const i=this.getSharedSteps(e).map((e=>e.selectVariant(t)));await Promise.all(i)}}class vc extends xc{constructor(t,e,i){super(t,e,i)}setCustomColor(t){this.getSharedSteps().forEach((e=>e.setCustomColor(t)))}getCustomColor(){return this.getSharedSteps()[0].getCustomColor()}}const Mc=v.gql`
899
+ `;function Cc(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class Qc{constructor(t){Cc(this,"bundle",void 0),Cc(this,"handleCache",{}),this.bundle=t}async getHandle(t){if(this.handleCache[t.name])return this.handleCache[t.name];const e=await this.createHandle(t);return this.handleCache[t.name]=e,e}async getHandles(){if(!this.bundle.getProductCollection()?.getResource().globalPropertyConfiguration)return[];const t=this.bundle.getProductCollection().getResource().globalPropertyConfiguration;return Promise.all(t.aspects.map((t=>this.getHandle(t))))}applyConditionsFromState(t,e){return e?t.filter((t=>this.aspectConditionsSatisfied(t.getRawProperty(),e))):t}aspectConditionsSatisfied(t,e){return!t.conditions||0===t.conditions.length||t.conditions.some((t=>{const i=e.aspects.find((e=>e.name===t.targetAspectName));return!!i&&t.requiredVariantSelections.some((t=>t===i.value))}))}async createHandle(t){switch(t.type){case ei.FileUpload:return new Ic(this.bundle,t);case ei.Option:{const e=t.entityId?await Ja.getOption(t.entityId):void 0;return"Color"===e?.type?new vc(this.bundle,t,e):new xc(this.bundle,t,e)}case ei.Text:return new Dc(this.bundle,t)}}}class yc{constructor(t,e){Cc(this,"bundle",void 0),Cc(this,"property",void 0),this.bundle=t,this.property=e}getName(){return this.property.name}getTitle(){return this.property.title}getDescription(){return this.property.description}getType(){return this.property.type}getRawProperty(){return this.property}getSharedSteps(t){return(t??this.bundle.getWorkflowExperiences()).flatMap((t=>t.getSteps().filter((t=>t.getRaw().globalPropertyAspectConfigurations?.some((t=>t.globalPropertyConfigurationId===this.bundle.getProductCollection()?.getResource().globalPropertyConfiguration?.id&&t.aspectName===this.property.name))))))}}class Ic extends yc{constructor(t,e){super(t,e)}async selectImage(t){await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t.key),this.applyImageSelection(t)])}async applyGlobalState(t){const e=this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name);if(!e)return Promise.resolve();const i=await ka.getLocalOrFromServer(e);return i?this.applyImageSelection(i,t):Promise.resolve()}async applyImageSelection(t,e){const i=this.getSharedSteps(e).map((e=>e.selectImage(t)));await Promise.all(i)}}class Dc extends yc{constructor(t,e){super(t,e)}getText(){const t=this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name);return t||""}async setText(t){await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t),this.applyTextSelection(t)])}async applyGlobalState(t){const e=this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name);if(!e)return Promise.resolve();await this.applyTextSelection(e,t)}async applyTextSelection(t,e){const i=this.getSharedSteps(e).map((e=>{e.setText(t)}));await Promise.all(i)}}class xc extends yc{constructor(t,e,i){super(t,e),Cc(this,"optionResource",void 0),this.optionResource=i}getCurrentVariant(){if(!this.optionResource)return;const t=this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name);if(!t)return;const e=this.optionResource.variants?.find((e=>e.id===t));return e?new bs(e):void 0}getAvailableVariants(){return(this.optionResource?.variants?.filter((t=>t.enabled))||[]).map((t=>new bs(t)))}getAllVariants(){return(this.optionResource?.variants||[]).map((t=>new bs(t)))}async selectVariant(t){await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t.getId()),this.applyVariantSelection(t)])}async applyGlobalState(t){const e=this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name);if(!e)return Promise.resolve();const i=this.optionResource?.variants?.find((t=>t.id===e));return i?this.applyVariantSelection(new bs(i),t):Promise.resolve()}async applyVariantSelection(t,e){const i=this.getSharedSteps(e).map((e=>e.selectVariant(t)));await Promise.all(i)}}class vc extends xc{constructor(t,e,i){super(t,e,i)}setCustomColor(t){this.getSharedSteps().forEach((e=>e.setCustomColor(t)))}getCustomColor(){return this.getSharedSteps()[0].getCustomColor()}}const Mc=v.gql`
900
900
  mutation CreateGlobalPropertyState($bundleId: String!) {
901
901
  globalPropertyStateCreate(bundleId: $bundleId) {
902
902
  id
@@ -936,7 +936,7 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
936
936
  }
937
937
  }
938
938
  }
939
- `;class Jc{async execute(e,i,n){if(!(await Ia.getShadowGraphqlClient().mutate({mutation:Oc,variables:{processFlowId:e,inputs:[...i.map((t=>t.getValueForTransmission()))]}})).data?.processExecutionCreate?.id)throw new Error("Failed to create process execution.");function A(t){return new Promise((e=>{setTimeout(e,t)}))}let a,r=!1,s=0;for(;!r;){if(await A(n?.sleepTime?Math.max(n.sleepTime,500):2e3),a=await Ia.getShadowGraphqlClient().query({query:t.gql`
939
+ `;class Jc{async execute(e,i,n){if(!(await Ia.getShadowGraphqlClient().mutate({mutation:Oc,variables:{processFlowId:e,inputs:[...i.map((t=>t.getValueForTransmission()))]}})).data?.processExecutionCreate?.id)throw new Error("Failed to create process execution.");function A(t){return new Promise((e=>{setTimeout(e,t)}))}let a,r=!1,o=0;for(;!r;){if(await A(n?.sleepTime?Math.max(n.sleepTime,500):2e3),a=await Ia.getShadowGraphqlClient().query({query:t.gql`
940
940
  query getProcessFlowExecution($ids: [String]!) {
941
941
  processExecutions(ids: $ids) {
942
942
  id
@@ -948,7 +948,7 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
948
948
  }
949
949
  }
950
950
  }
951
- `,variables:{ids:[e]}}),!a||!a.data?.getProcessFlowExecution)throw new Error("Failed to retrieve server response for execution.");const i=a.data?.getProcessFlowExecution?.completedAt;if(i){r=!0;break}if(a.data?.getProcessFlowExecution?.failedAt)throw new Error("Execution has failed to complete. See Executions tab in partner account on SpiffCommerce Hub.");if(s+=1,s>=5)throw new Error("Maximum wait time exceeded for execution result.")}return Promise.resolve(a.data?.getProcessFlowExecution)}}class Lc{constructor(t){Tc(this,"value",void 0),this.value=t}getRaw(){return this.value}getValueForTransmission(){const t=this.value;return t.startsWith("[")?JSON.stringify(JSON.parse(t)):JSON.stringify(t)}}let zc;var jc;(jc=zc||(zc={})).Transaction="Transaction",jc.Bundle="Bundle",jc.Product="Product",jc.Variant="Variant",jc.Option="Option",jc.LineItem="LineItem",jc.Asset="Asset";class Vc extends Lc{constructor(t,e){if("Asset"!==e&&!Vc.validUUID(t))throw new Error("Invalid ID, must be a valid v4 UUID. https://www.uuidgenerator.net/");super(`{"isSpiffObject": true, "id": "${t}", "type": "${e}"}`)}static validUUID(t){return t.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i)}}class Kc extends Lc{constructor(t){super(t)}}function Wc(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const Xc=t.gql`
951
+ `,variables:{ids:[e]}}),!a||!a.data?.getProcessFlowExecution)throw new Error("Failed to retrieve server response for execution.");const i=a.data?.getProcessFlowExecution?.completedAt;if(i){r=!0;break}if(a.data?.getProcessFlowExecution?.failedAt)throw new Error("Execution has failed to complete. See Executions tab in partner account on SpiffCommerce Hub.");if(o+=1,o>=5)throw new Error("Maximum wait time exceeded for execution result.")}return Promise.resolve(a.data?.getProcessFlowExecution)}}class Lc{constructor(t){Tc(this,"value",void 0),this.value=t}getRaw(){return this.value}getValueForTransmission(){const t=this.value;return t.startsWith("[")?JSON.stringify(JSON.parse(t)):JSON.stringify(t)}}let zc;var jc;(jc=zc||(zc={})).Transaction="Transaction",jc.Bundle="Bundle",jc.Product="Product",jc.Variant="Variant",jc.Option="Option",jc.LineItem="LineItem",jc.Asset="Asset";class Vc extends Lc{constructor(t,e){if("Asset"!==e&&!Vc.validUUID(t))throw new Error("Invalid ID, must be a valid v4 UUID. https://www.uuidgenerator.net/");super(`{"isSpiffObject": true, "id": "${t}", "type": "${e}"}`)}static validUUID(t){return t.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i)}}class Kc extends Lc{constructor(t){super(t)}}function Wc(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}const Xc=t.gql`
952
952
  fragment RegionFields on Region {
953
953
  width
954
954
  top
@@ -1294,6 +1294,15 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
1294
1294
  }
1295
1295
  data {
1296
1296
  __typename
1297
+ ... on InformationStepData {
1298
+ content
1299
+ lookAtAnimation {
1300
+ ...LookAtAnimationFields
1301
+ }
1302
+ modelAnimation {
1303
+ ...ModelAnimationFields
1304
+ }
1305
+ }
1297
1306
  ... on DigitalContentStepData {
1298
1307
  advancedEditorAnimation {
1299
1308
  x
@@ -1571,5 +1580,5 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),i=require("react/j
1571
1580
  }
1572
1581
  }
1573
1582
  }
1574
- `),errorPolicy:"all",fetchPolicy:"no-cache",variables:{ids:e}});var A;const a=n.data.workflows;if(void 0===a||a.length!==e.length)throw new Error(`Unable to read workflows: ${n.errors??"Length mismatch in response"}`);return a.forEach((t=>{t.steps.forEach((t=>{delete t.data.__typename,t.option?.id&&(t.option.defaultVariant?.asset&&ka.cacheAsset(t.option.defaultVariant.asset),t.option.colorProfile&&ka.cacheAsset(t.option.colorProfile),t.option.variants?.forEach((t=>{t.asset&&ka.cacheAsset(t.asset),t.displayImage&&ka.cacheAsset(t.displayImage),t.thumbnail&&ka.cacheAsset(t.thumbnail),t.material&&ka.cacheMaterial(t.material)})),Ha.set({id:t.option.id},Promise.resolve(t.option)))}))})),a})(A,i),r=A.map((t=>Ha.set({id:t,options:i},(async(t,e)=>{const i=(await e).find((e=>e.id===t));if(!i)throw new Error(`Workflow not found: ${t}`);return i})(t,a)))),s=n.filter((t=>void 0!==t));return await Promise.all(s.concat(r))},sl=async(t,e)=>(await rl([t],e))[0],ol=(t,e)=>{const i=t.workflowState,n=i?JSON.parse(i):void 0;return n?Object.values(n.layouts).map((t=>t.layout)):e.panels.sort(((t,e)=>t.index-e.index)).map((t=>({id:Te(),panelId:t.name,name:t.name,index:t.index,createdAt:new Date,updatedAt:new Date,transparentBackground:t.transparentBackground,height:t.height,width:t.width,previewRegion:t.previewRegion,useEditableArea:t.useEditableArea,editableArea:t.editableArea})))};class cl{constructor(t){var e;Wc(this,"options",void 0),Wc(this,"initialized",void 0),Wc(this,"currencyCode",void 0),Wc(this,"customer",void 0),Wc(this,"experienceOptions",void 0),Wc(this,"updateTransactionState",(async t=>{try{return Ia.getShadowGraphqlClient().mutate({...t,mutation:Os})}catch(t){throw console.error(t),new oa("Critical - Unable to synchronize workflow state with server.")}})),this.initialized=!1,this.options=t,this.options.applicationKey&&(e=this.options.applicationKey,ya=e)}getAssetManager(){return ka}getCurrencyCode(){if(void 0===this.currencyCode)throw new Error("No currency code set.");return this.currencyCode}getFlowService(){if(!this.options.applicationKey)throw new Error("Application key required to use Flow Service.");return new Jc}async authenticateBundleFromLocalStorage(t){const e=da.getMap("bundleOwnerIds");if(e?.has(t)){const i=e.get(t);return fa(i),Promise.resolve({success:!0,stakeholderType:gr.Owner})}const i=da.getMap("bundlePartnerIds")||new Map;if(i.has(t)){const e=i.get(t),n=(da.getMap("partnerCustomerIds")||new Map).get(e);if(n){if(await this.authenticateCustomerId(n)){const e=this.customer?.bundleStakeholders?.find((e=>e.bundle?.id===t));if(e)return Promise.resolve({success:!0,stakeholderType:e.type})}}}return Promise.resolve({success:!1})}async authenticateTransactionFromLocalStorage(t){const e=Ia.getShadowGraphqlClient(),i=await e.query({query:_c,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t}});if(!i.data.transactions||0===i.data.transactions.length)throw new Error(`Transaction not found: ${t}`);const n=i.data.transactions[0],A=n.product?.partner?.id;if(!A)throw new Error(`Unable to read transaction: ${t}`);if(n.isOrdered)return Promise.resolve({success:!1,transactionReadOnly:!0});const a=da.getMap("transactionOwnerIds");if(a?.has(t)){const e=a.get(t);return ma(e),Promise.resolve({success:!0,stakeholderType:gr.Owner})}const r=da.getMap("transactionCustomerIds");if(r?.has(t)){const e=r.get(t);if(e){if(await this.authenticateCustomerId(e)){const e=this.customer?.bundleStakeholders?.find((e=>e.bundle?.transactions?.some((e=>e.id===t))))||this.customer?.stakeholders?.find((e=>e.transaction?.id===t));if(e)return Promise.resolve({success:!0,stakeholderType:e.type})}}}const s=(await e.query({query:tl,errorPolicy:"all",variables:{id:n.workflowId}})).data.workflow;if(!s)throw new Error(`Unable to read workflow: ${n.workflowId}`);return Promise.resolve({success:!1,theme:s.overrideTheme,customLogoLink:n.customLogoLink})}clearCustomer(){this.customer=void 0}clearCustomerForTransaction(t){const e=da.getMap("transactionCustomerIds");e?.has(t)&&(e.delete(t),da.setMap("transactionCustomerIds",e))}getStakeholderTypeForTransaction(t){const e=this.customer?.stakeholders?.find((e=>e.transaction?.id===t));if(e)return e.type}async getOrCreateCustomer(t){this.customer=void 0;const e=Ia.getShadowGraphqlClient(),i=(await e.query({query:el,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t}})).data.customer;if(!i.id){const i=(await e.mutate({mutation:il,errorPolicy:"all",fetchPolicy:"no-cache",variables:{details:{emailAddress:t}}})).data?.customerCreate;if(!i)throw new Error("Unable to create customer.");return this.storeCustomer(i),this.customer=i,{customer:i,isAuthenticated:!1}}this.storeCustomer(i);const n=await this.authenticateCustomerId(i.id);return{customer:this.customer||i,isAuthenticated:n}}async authenticateCustomerId(t){const e=Ia.getShadowGraphqlClient(),i=da.getMap("customerTokens");if(!i?.has(t))return!1;const n=i.get(t);if(!n)return!1;const A=(await e.mutate({mutation:nl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{loginToken:n}})).data?.customerAuthenticate;return!!A&&(this.storeCustomer(A),Qa(n),this.customer=A,!0)}async generateVerificationCode(t){await Ia.getShadowGraphqlClient().mutate({mutation:Al,variables:{emailAddress:t}})}async verifyCode(t,e){const i=(await Ia.getShadowGraphqlClient().mutate({mutation:al,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t,verificationCode:e}})).data?.customerVerifyCode;if(i?.loginToken){if(!i.partner?.id)throw new Error(`Unable to find customer: ${t}`);const e=da.getMap("customerTokens")||new Map;return e.set(i.id,i.loginToken),da.setMap("customerTokens",e),this.storeCustomer(i),Qa(i.loginToken),this.customer={...i,loginToken:void 0},!0}return!1}async getNewBundle(t){const e=(await Ia.getShadowGraphqlClient().mutate({mutation:hc,variables:{collectionId:t},fetchPolicy:"no-cache"})).data?.bundleCreate;if(!e?.id)throw new Error("Unable to create bundle");const i=da.getMap("bundlePartnerIds")||new Map;i.set(e.id,e.partner.id),da.setMap("bundlePartnerIds",i),fa(e.bundleOwnerId);const n=da.getMap("bundleOwnerIds")||new Map;return n.set(e.id,e.bundleOwnerId),da.setMap("bundleOwnerIds",n),new Gc(this,e)}async getExistingBundle(t,e,i){const n=da.getMap("bundleOwnerIds")?.get(t);n&&fa(n);const A=await Ia.getShadowGraphqlClient().query({query:cc,variables:{id:t},fetchPolicy:"no-cache"});if(!A.data?.bundles||0===A.data?.bundles.length||!A.data?.bundles[0])throw new Error(`Unable to find bundle: ${t}`);const a=A.data?.bundles[0],r=da.getMap("bundlePartnerIds")||new Map;r.set(a.id,a.partner.id),da.setMap("bundlePartnerIds",r);const s=new Gc(this,a,e,i);return await s.getInitializationPromise(),s}async getBundleStakeholders(){if(!this.customer)throw new Error("Customer not authenticated.");const t=await Ia.getShadowGraphqlClient().query({query:gc,variables:{id:this.customer.id},fetchPolicy:"no-cache"});if(!t.data?.customers||0===t.data.customers.length)throw new Error("Unable to find customer.");return t.data.customers[0].bundleStakeholders||[]}async getWorkflowExperience(t,e,i,n){if(!n)return await this.getWorkflowExperienceDeprecated(t,e,i);const A=async t=>{for(const e in t.layouts){const i=t.layouts[e].elements.filter((t=>t.type===ze.Illustration));for(let t=0;t<i.length;++t){const e=i[t];e.src&&e.svg&&(e.cachedObjectURL=await WA(e.svg))}const n=t.layouts[e].elements.filter((t=>t.type===ze.Textbox));for(let t=0;t<n.length;++t){const e=n[t];e.fontData?.assetUrl&&on(e.fontData.assetUrl)}}},{transaction:a,workflow:r,readOnly:s}=await(async()=>{const t=Ia.getShadowGraphqlClient();if("transaction"===n.type){const{transactionId:e,readOnly:i}=n,A=await t.query({query:Ts,variables:{ids:[e]},errorPolicy:"all",fetchPolicy:"no-cache"});if(!A.data?.transactions||0===A.data.transactions.length)throw new oa("Existing transaction not found.");const a=A.data?.transactions[0];if(!a.workflowId)throw new oa("Existing transaction has no workflow ID.");const r=await sl(a.workflowId);if(!a.product)throw new oa("Failed to load transaction, product not available.");return{transaction:a,workflow:r,readOnly:i}}if("integration"===n.type||"external"===n.type){const e=async()=>{const e="integration"===n.type?{integrationProductId:n.integrationProductId}:{externalIntegrationId:n.externalIntegrationId,externalProductId:n.externalProductId},i=await t.mutate({mutation:Hs,variables:{...e,bulk:n.bulk,workflowId:n.workflowId,claim:!0},errorPolicy:"all",fetchPolicy:"no-cache",context:this.options.applicationKey?{headers:{"X-Application-Key":this.options.applicationKey}}:void 0});if(!i.data||!i.data.transactionCreate)throw new oa("Failed to create transaction!");const A=i.data.transactionCreate;if(!A.product)throw new oa("Failed to create transaction, product not available.");return A},i=sl(n.workflowId,n?.graphql),[A,a]=await Promise.all([e(),i]);return{transaction:A,workflow:a}}throw new oa("No workflow ID provided.")})();this.currencyCode=a.product.partner?.currencyCode;const o={product:a.product,transaction:a,layouts:[],stateMutationFunc:s?async()=>{throw new ra("State mutation is forbidden in read only mode!")}:async t=>{const e=(da.getMap("transactionOwnerIds")||new Map).get(a.id)||void 0;return this.updateTransactionState({...t,context:{transactionOwnerId:e}})},readOnly:s,workflow:r};if("transaction"===n.type&&a.workflowState){const t=JSON.parse(a.workflowState);o.layouts=Object.values(t.layouts).map((t=>t.layout)),await Zn(t),await A(t),o.reloadedState=t}else if(!s&&n.workflowState){const t=JSON.parse(n.workflowState);o.layouts=Object.values(t.layouts).map((t=>t.layout)),await Zn(t),await A(t),o.reloadedState=t}else o.layouts=ol(o.transaction,o.workflow);if(o.renderableContextService=new Ms(o.layouts),n.previewService?(o.previewService=n.previewService,o.product?.modelUrl&&(o.modelContainer=o.previewService.loadModel({model:o.product.modelUrl,contextService:o.renderableContextService}))):(o.previewService=i&&i(r),o.product?.modelUrl&&(o.previewService?.initialize({model:o.product.modelUrl,contextService:o.renderableContextService}),o.modelContainer=o.previewService?.getAllModels()[0])),"transaction"!==n.type){const t=da.getMap("transactionOwnerIds")||new Map;t.set(a.id,a.transactionOwnerId),ma(a.transactionOwnerId||""),da.setMap("transactionOwnerIds",t)}else{const t=(da.getMap("transactionOwnerIds")||new Map).get(a.id);t&&ma(t),o.isReloadedTransaction=!0}this.initialized=!0,this.experienceOptions=o;const c=new rc(this,o);return await c.getWorkflowManager().getInitializationPromise(),"transaction"!==n.type&&this.customer&&await c.attachCustomerDetails({email:this.customer.emailAddress}),c}async getWorkflowExperiences(t,e){if(0===t.length)throw new oa("No options provided!");const i=Ia.getShadowGraphqlClient(),n=t.map(((t,e)=>({option:t,index:e}))),A=n.filter((t=>"transaction"===t.option.type)),a=n.filter((t=>"integration"===t.option.type||"external"===t.option.type)),r=(await Promise.all([(async()=>{if(0===A.length)return[];const t=A.map((t=>t.option.transactionId)),e=await i.query({query:Ts,variables:{ids:t},errorPolicy:"all",fetchPolicy:"no-cache"}),n=e.data.transactions;if(n.length!==A.length){const t=e.errors?.[0]?.message||"Unknown error";throw new oa(`Not all transactions were found: ${t}`)}return n.map(((t,e)=>({transaction:t,workflowId:t.workflowId,readOnly:A.find((e=>e.option.transactionId===t.id))?.option.readOnly??!1,index:A[e].index})))})(),(async()=>{if(0===a.length)return[];const t=await i.mutate({mutation:Us,variables:{inputs:a.map((t=>({integrationProductId:"integration"===t.option.type?t.option.integrationProductId:void 0,externalIntegrationId:"external"===t.option.type?t.option.externalIntegrationId:void 0,externalProductId:"external"===t.option.type?t.option.externalProductId:void 0,workflowId:t.option.workflowId,bulk:t.option.bulk,claim:!0})))},errorPolicy:"all",fetchPolicy:"no-cache"}),e=t.data?.transactionCreateMany;if(!e||0===e.length){const e=t.errors?.[0]?.message||"Unknown error";throw new oa(`Failed to create transactions: ${e}`)}return e.map(((t,e)=>({transaction:t,workflowId:t.workflowId,readOnly:!1,index:a[e].index})))})()])).flat(),s=[...new Set(r.map((t=>t.workflowId)))],o=await rl(s,e),c=new Map(o.map((t=>[t.id,t]))),l=async t=>{for(const e in t.layouts){const i=t.layouts[e].elements.filter((t=>t.type===ze.Illustration));for(let t=0;t<i.length;++t){const e=i[t];e.src&&e.svg&&(e.cachedObjectURL=await WA(e.svg))}const n=t.layouts[e].elements.filter((t=>t.type===ze.Textbox));for(let t=0;t<n.length;++t){const e=n[t];e.fontData?.assetUrl&&on(e.fontData.assetUrl)}}},g=da.getMap("transactionOwnerIds")||new Map,h=r.map((async e=>{const{transaction:i,workflowId:n,readOnly:A,index:a}=e,r=c.get(n),s=t[a];!g.get(i.id)&&i.transactionOwnerId&&g.set(i.id,i.transactionOwnerId);const o=g.get(i.id)||void 0,h={product:i.product,transaction:i,layouts:[],stateMutationFunc:A?async()=>{throw new ra("State mutation is forbidden in read only mode!")}:async t=>this.updateTransactionState({...t,context:{transactionOwnerId:o}}),readOnly:A,workflow:r,isReloadedTransaction:"transaction"===s.type};if("transaction"===s.type&&i.workflowState){const t=JSON.parse(i.workflowState);h.layouts=Object.values(t.layouts).map((t=>t.layout)),await Zn(t),await l(t),h.reloadedState=t}else if(!A&&s.workflowState){const t=JSON.parse(s.workflowState);h.layouts=Object.values(t.layouts).map((t=>t.layout)),await Zn(t),await l(t),h.reloadedState=t}else h.layouts=ol(h.transaction,h.workflow);return h.renderableContextService=new Ms(h.layouts),this.initialized=!0,this.experienceOptions=h,{experienceOptions:h,index:a,options:s}}));da.setMap("transactionOwnerIds",g);const d=(await Promise.all(h)).sort(((t,e)=>t.index-e.index)).map((async t=>{const{experienceOptions:e,options:i}=t,n=new rc(this,e);return await n.getWorkflowManager().getInitializationPromise(),"transaction"!==i.type&&this.customer&&await n.attachCustomerDetails({email:this.customer.emailAddress}),n}));return await Promise.all(d)}async initFromIntegrationProduct(t){if(""===t)throw new oa("No integration product ID provided.");const e=Ia.getShadowGraphqlClient(),i=await e.mutate({mutation:Hs,variables:{integrationProductId:t,bulk:this.options.bulk||!1,claim:!0},errorPolicy:"all",fetchPolicy:"no-cache",context:this.options.applicationKey?{headers:{"X-Application-Key":this.options.applicationKey}}:void 0});if(!i.data||!i.data.transactionCreate)throw new oa("Failed to create transaction!");const n=i.data.transactionCreate;if(!n.product)throw new oa("Failed to create transaction, product not available.");this.currencyCode=n.product.partner?.currencyCode;const A=da.getMap("transactionOwnerIds")||new Map;A.set(n.id,n.transactionOwnerId),ma(n.transactionOwnerId||""),da.setMap("transactionOwnerIds",A),this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState},this.initialized=!0}async initFromTransaction(t,e=!1){if(""===t)throw new oa("No transaction ID provided.");const i=Ia.getShadowGraphqlClient();if(e)return await(async()=>{const n=(await i.query({query:Ts,variables:{ids:[t]},fetchPolicy:"no-cache",errorPolicy:"all"})).data?.transactions[0];if(!n)throw new oa("Failed to read transaction.");if(!n.product)throw new oa("Failed to load transaction, product not available.");this.currencyCode=n.product.partner?.currencyCode,this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:async()=>{throw new ra("State mutation is forbidden in read only mode!")},readOnly:e},this.initialized=!0})();const n=da.getMap("transactionOwnerIds")||new Map,A=n.get(t);if(A){ma(A);const n=(await i.query({query:Ts,variables:{ids:[t]},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new oa("Failed to read transaction.");if(!n.product)throw new oa("Failed to load transaction, product not available.");return this.currencyCode=n.product.partner?.currencyCode,this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:e},void(this.initialized=!0)}try{const A=(await i.mutate({mutation:Gs,variables:{id:t},errorPolicy:"all"})).data?.transactionClaim;if(!A)throw new oa("Failed to read transaction.");if(!A.product)throw new oa("Failed to load transaction, product not available.");this.currencyCode=A.product.partner?.currencyCode,A.transactionOwnerId&&(n.set(A.id,A.transactionOwnerId),ma(A.transactionOwnerId),da.setMap("transactionOwnerIds",n)),this.experienceOptions={product:A.product,transaction:A,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:e},this.initialized=!0}catch{throw new oa("Attempted to access a transaction that isn't available.")}}async getWorkflowExperienceDeprecated(t,e,i){if(!this.initialized||!this.experienceOptions)throw new oa("Cannot launch experience: Not initialized.");const n=async t=>{for(const e in t.layouts){const i=t.layouts[e].elements.filter((t=>t.type===ze.Illustration));for(let t=0;t<i.length;++t){const e=i[t];e.src&&e.svg&&(e.cachedObjectURL=await WA(e.svg))}const n=t.layouts[e].elements.filter((t=>t.type===ze.Textbox));for(let t=0;t<n.length;++t){const e=n[t];e.fontData?.assetUrl&&on(e.fontData.assetUrl)}}};if(this.experienceOptions.transaction.workflowId){const t=await sl(this.experienceOptions.transaction.workflowId);if(this.experienceOptions.workflow=t,this.experienceOptions.transaction.workflowState){const t=JSON.parse(this.experienceOptions.transaction.workflowState);this.experienceOptions.layouts=Object.values(t.layouts).map((t=>t.layout)),await Zn(t),await n(t),this.experienceOptions.reloadedState=t}this.experienceOptions.previewService=i&&i(t),this.experienceOptions.renderableContextService=new Ms(this.experienceOptions.layouts),this.experienceOptions.product?.modelUrl&&(this.experienceOptions.previewService?.initialize({model:this.experienceOptions.product.modelUrl,contextService:this.experienceOptions.renderableContextService}),this.experienceOptions.modelContainer=this.experienceOptions.previewService?.getAllModels()[0]);const e=new rc(this,this.experienceOptions);return await e.getWorkflowManager().getInitializationPromise(),e}if(t){const A=Ia.getShadowGraphqlClient().mutate({mutation:Js,variables:{workflowId:t,id:this.experienceOptions.transaction.id}}),a=sl(t);if(await Promise.all([A,a]),this.experienceOptions.workflow=await a,e){const t=JSON.parse(e);this.experienceOptions.layouts=Object.values(t.layouts).map((t=>t.layout)),await Zn(t),await n(t),this.experienceOptions.reloadedState=t}else this.experienceOptions.layouts=ol(this.experienceOptions.transaction,this.experienceOptions.workflow);this.experienceOptions.previewService=i&&i(await a),this.experienceOptions.renderableContextService=new Ms(this.experienceOptions.layouts),this.experienceOptions.product?.modelUrl&&(this.experienceOptions.previewService?.initialize({model:this.experienceOptions.product.modelUrl,contextService:this.experienceOptions.renderableContextService}),this.experienceOptions.modelContainer=this.experienceOptions.previewService?.getAllModels()[0]);const r=new rc(this,this.experienceOptions);return await r.getWorkflowManager().getInitializationPromise(),r}throw new oa("No workflow ID provided.")}getPreviewService(){return this.experienceOptions?.previewService}getProduct(){if(!this.initialized||!this.experienceOptions)throw new oa("Cannot get product: Not initialized.");return this.experienceOptions.product}getTransaction(){if(!this.initialized||!this.experienceOptions)throw new oa("Cannot get transaction: Not initialized.");return this.experienceOptions.transaction}storeCustomer(t){const e=da.getMap("partnerCustomerIds")||new Map;e.set(t.partner.id,t.id),da.setMap("partnerCustomerIds",e)}}function ll(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class gl{constructor(){ll(this,"getProduct",void 0),ll(this,"getCommandContext",void 0),ll(this,"getAllLayoutData",void 0),ll(this,"getMetadata",void 0),ll(this,"getWorkflowMetadata",void 0),ll(this,"getStepStorage",void 0),ll(this,"setModelContainer",void 0),ll(this,"getUpdatesPending",void 0)}getInitializationPromise(){return Promise.resolve()}isInitialized(){return!0}getInformationResults(){return[]}getVariationRecords(){return[]}async reset(){}updateStateWithServer(t){}addVariationRecord(t){return{recordNumber:0,transactionId:"",values:[]}}getCurrentVariationRecord(){}removeVariationRecord(t){return[]}async outstandingRequestsPromise(){}async updateStateWithServerImmediate(t){}addPoller(t){}addConfirmCallback(t){}addCurrentVariationCallback(t){}addEditedCallback(t){}addElementsCallback(t){}addInformationResultCallback(t){}addInitCallback(t){}addMakingAdjustmentsCallback(t){}addMandatoryCallback(t){}addMetadataCallback(t){}addSelectionCallback(t){}addStepSpecificStorageCallback(t,e){}addStorageCallback(t){}addVariationRecordsCallback(t){}getCommandDispatcher(){return t=>{}}getLayouts(){return[]}getLayoutPreviewService(){return{getAll:()=>new Map}}getPreviewService(){}getModelContainer(){}getProfanities(){return[]}getRegionElements(t){return[]}getSerializedStep(t,e){}getStepSpecificServices(t){}getTransaction(){return{id:""}}getTransactionCustomer(){}setTransactionCustomer(){}setTransactionCustomerDetails(){}getWorkflow(){return{id:"",name:"",panels:[],steps:[],showModelOnFinishStep:!1,allowProofDownload:!1,introduction:"",stepGroups:[]}}markStepsAsInitialised(t){}markUpdateCompleted(t){}markUpdatePending(){return"123"}getWorkflowSelections(){return{}}setCurrentAdjustingStepId(t){}setCurrentVariationRecord(t){}setEditedStatus(t,e){}setInformationResults(t){}setMandatoryFulfilled(t,e){}async setSelectionsAndElements(t,e,i){}setVariationRecords(t){}toggleDesignConfirmed(){}updateMetadata(t,e){}async updateStorage(t,e){}injectIntoPreviewService(t){return Promise.resolve()}ejectFromPreviewService(){}}function hl(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}let dl;var ul;(ul=dl||(dl={})).SelectFrame="SelectFrame",ul.SelectImage="SelectImage",ul.Position="Position";class wl extends Po{constructor(t,e){super(t,e),hl(this,"frameService",this.manager.getStepSpecificServices(this.getId())?.frameService)}selectVariant(t){const e=this.manager.getRegionElements(this.step.stepName);return co.selectVariant(this.step,t.getResource(),e,this.manager,(t=>this.setUpdateState(t)))}onFrameDataChanged(t){this.frameService&&this.frameService.onFrameDataChanged((e=>{e&&t(e)}))}selectImage(t){return co.selectImage(this.step,t,this.manager)}getImageData(){if(this.frameService)return this.frameService.getImageData()}getCurrentFrameStep(t,e,i,n){return n&&n.length>1&&void 0===t?dl.SelectFrame:e||i||this.getImageData()?dl.Position:dl.SelectImage}getFrameService(){return this.frameService}hasOverlayImageKey(){return this.step.data.overlayImageKey}hasOverlayImageUrl(){return this.step.data.overlayImageUrl}hasVaryingUpload(){return this.step.data.varyUpload}hasVaryingSelection(){return this.step.data.varySelection}}const Bl=t=>{const e=(0,n.useRef)(null),A=(0,n.useRef)(void 0),[a,r]=(0,n.useState)(void 0),{addEvent:s,removeEvent:o,updateEvent:c,eventCache:l}=za(),[g,h]=(0,n.useState)(!1),[d,u]=(0,n.useState)(!1),{state:w,uiDispatcher:B}=tr(),p=(0,n.useCallback)((t=>{const e=t;B(new _a({zoom:Math.max(.1,Math.min(e,w.maxZoom))}))}),[B,w.maxZoom]),m=(0,n.useCallback)((t=>{o(t),1===l.length&&(A.current=void 0),2===l.length&&r(void 0);"touch"===t.pointerType&&l.length>1&&l.length-1==1&&(u(!1),h(!1))}),[o,l.length]),E=(0,n.useCallback)((t=>{s(t);"touch"===t.pointerType&&1===l.length&&(B(new _a({selectedElement:void 0})),u(!0),h(!0))}),[s,l.length,B]),f=(0,n.useCallback)((t=>{c(t);const e=1===l.length&&"touch"!==l[0].pointerType,i=2===l.length&&"touch"===l[0].pointerType;if(g&&i){const[t,e]=l,i=Math.abs(t.clientX-e.clientX),n=a;n&&p(w.zoom-.0055*(n-i)),r(i)}if(d&&(e||i)&&t.isPrimary){const e=(A?.current?.x||t.screenX)-t.screenX,i=(A?.current?.y||t.screenY)-t.screenY;B(new _a({selectedElement:void 0,xTranslation:w.xTranslation-e/w.zoom,yTranslation:w.yTranslation-i/w.zoom}))}t.isPrimary&&(A.current={x:t.screenX,y:t.screenY})}),[c,l,g,d,a,p,w.zoom,w.xTranslation,w.yTranslation,B]),C=(0,n.useCallback)((t=>{g&&p(w.zoom-.035*Math.sign(t.deltaY))}),[p,w.zoom,g]);(0,n.useEffect)((()=>{if(!e.current||0===l.length)return;const t=l[0].pointerId,i=e.current.hasPointerCapture(t);d&&!i&&e.current.setPointerCapture(t),!d&&i&&e.current.releasePointerCapture(t)}),[e,d,l]),jr([" "],(()=>{u(!0),B(new _a({selectedElement:void 0}))}),(()=>u(!1))),jr(["Control"],(()=>h(!0)),(()=>h(!1)));const Q=(0,n.useMemo)((()=>({cursor:d&&0===l.length?"grab":d&&1===l.length?"grabbing":g?"zoom-in":void 0,width:"100%",height:"100%",overflow:"clip"})),[d,g,l]);return(0,i.jsx)("div",{ref:e,className:"transform-wrapper",onWheel:C,onPointerDown:E,onPointerUp:m,onPointerCancel:m,onPointerLeave:m,onPointerMove:f,style:Q,children:t.children})};
1583
+ `),errorPolicy:"all",fetchPolicy:"no-cache",variables:{ids:e}});var A;const a=n.data.workflows;if(void 0===a||a.length!==e.length)throw new Error(`Unable to read workflows: ${n.errors??"Length mismatch in response"}`);return a.forEach((t=>{t.steps.forEach((t=>{delete t.data.__typename,t.option?.id&&(t.option.defaultVariant?.asset&&ka.cacheAsset(t.option.defaultVariant.asset),t.option.colorProfile&&ka.cacheAsset(t.option.colorProfile),t.option.variants?.forEach((t=>{t.asset&&ka.cacheAsset(t.asset),t.displayImage&&ka.cacheAsset(t.displayImage),t.thumbnail&&ka.cacheAsset(t.thumbnail),t.material&&ka.cacheMaterial(t.material)})),Ha.set({id:t.option.id},Promise.resolve(t.option)))}))})),a})(A,i),r=A.map((t=>Ha.set({id:t,options:i},(async(t,e)=>{const i=(await e).find((e=>e.id===t));if(!i)throw new Error(`Workflow not found: ${t}`);return i})(t,a)))),o=n.filter((t=>void 0!==t));return await Promise.all(o.concat(r))},ol=async(t,e)=>(await rl([t],e))[0],sl=(t,e)=>{const i=t.workflowState,n=i?JSON.parse(i):void 0;return n?Object.values(n.layouts).map((t=>t.layout)):e.panels.sort(((t,e)=>t.index-e.index)).map((t=>({id:Te(),panelId:t.name,name:t.name,index:t.index,createdAt:new Date,updatedAt:new Date,transparentBackground:t.transparentBackground,height:t.height,width:t.width,previewRegion:t.previewRegion,useEditableArea:t.useEditableArea,editableArea:t.editableArea})))};class cl{constructor(t){var e;Wc(this,"options",void 0),Wc(this,"initialized",void 0),Wc(this,"currencyCode",void 0),Wc(this,"customer",void 0),Wc(this,"experienceOptions",void 0),Wc(this,"updateTransactionState",(async t=>{try{return Ia.getShadowGraphqlClient().mutate({...t,mutation:Jo})}catch(t){throw console.error(t),new sa("Critical - Unable to synchronize workflow state with server.")}})),this.initialized=!1,this.options=t,this.options.applicationKey&&(e=this.options.applicationKey,ya=e)}getAssetManager(){return ka}getCurrencyCode(){if(void 0===this.currencyCode)throw new Error("No currency code set.");return this.currencyCode}getFlowService(){if(!this.options.applicationKey)throw new Error("Application key required to use Flow Service.");return new Jc}async authenticateBundleFromLocalStorage(t){const e=da.getMap("bundleOwnerIds");if(e?.has(t)){const i=e.get(t);return fa(i),Promise.resolve({success:!0,stakeholderType:gr.Owner})}const i=da.getMap("bundlePartnerIds")||new Map;if(i.has(t)){const e=i.get(t),n=(da.getMap("partnerCustomerIds")||new Map).get(e);if(n){if(await this.authenticateCustomerId(n)){const e=this.customer?.bundleStakeholders?.find((e=>e.bundle?.id===t));if(e)return Promise.resolve({success:!0,stakeholderType:e.type})}}}return Promise.resolve({success:!1})}async authenticateTransactionFromLocalStorage(t){const e=Ia.getShadowGraphqlClient(),i=await e.query({query:_c,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t}});if(!i.data.transactions||0===i.data.transactions.length)throw new Error(`Transaction not found: ${t}`);const n=i.data.transactions[0],A=n.product?.partner?.id;if(!A)throw new Error(`Unable to read transaction: ${t}`);if(n.isOrdered)return Promise.resolve({success:!1,transactionReadOnly:!0});const a=da.getMap("transactionOwnerIds");if(a?.has(t)){const e=a.get(t);return ma(e),Promise.resolve({success:!0,stakeholderType:gr.Owner})}const r=da.getMap("transactionCustomerIds");if(r?.has(t)){const e=r.get(t);if(e){if(await this.authenticateCustomerId(e)){const e=this.customer?.bundleStakeholders?.find((e=>e.bundle?.transactions?.some((e=>e.id===t))))||this.customer?.stakeholders?.find((e=>e.transaction?.id===t));if(e)return Promise.resolve({success:!0,stakeholderType:e.type})}}}const o=(await e.query({query:tl,errorPolicy:"all",variables:{id:n.workflowId}})).data.workflow;if(!o)throw new Error(`Unable to read workflow: ${n.workflowId}`);return Promise.resolve({success:!1,theme:o.overrideTheme,customLogoLink:n.customLogoLink})}clearCustomer(){this.customer=void 0}clearCustomerForTransaction(t){const e=da.getMap("transactionCustomerIds");e?.has(t)&&(e.delete(t),da.setMap("transactionCustomerIds",e))}getStakeholderTypeForTransaction(t){const e=this.customer?.stakeholders?.find((e=>e.transaction?.id===t));if(e)return e.type}async getOrCreateCustomer(t){this.customer=void 0;const e=Ia.getShadowGraphqlClient(),i=(await e.query({query:el,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t}})).data.customer;if(!i.id){const i=(await e.mutate({mutation:il,errorPolicy:"all",fetchPolicy:"no-cache",variables:{details:{emailAddress:t}}})).data?.customerCreate;if(!i)throw new Error("Unable to create customer.");return this.storeCustomer(i),this.customer=i,{customer:i,isAuthenticated:!1}}this.storeCustomer(i);const n=await this.authenticateCustomerId(i.id);return{customer:this.customer||i,isAuthenticated:n}}async authenticateCustomerId(t){const e=Ia.getShadowGraphqlClient(),i=da.getMap("customerTokens");if(!i?.has(t))return!1;const n=i.get(t);if(!n)return!1;const A=(await e.mutate({mutation:nl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{loginToken:n}})).data?.customerAuthenticate;return!!A&&(this.storeCustomer(A),Qa(n),this.customer=A,!0)}async generateVerificationCode(t){await Ia.getShadowGraphqlClient().mutate({mutation:Al,variables:{emailAddress:t}})}async verifyCode(t,e){const i=(await Ia.getShadowGraphqlClient().mutate({mutation:al,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t,verificationCode:e}})).data?.customerVerifyCode;if(i?.loginToken){if(!i.partner?.id)throw new Error(`Unable to find customer: ${t}`);const e=da.getMap("customerTokens")||new Map;return e.set(i.id,i.loginToken),da.setMap("customerTokens",e),this.storeCustomer(i),Qa(i.loginToken),this.customer={...i,loginToken:void 0},!0}return!1}async getNewBundle(t){const e=(await Ia.getShadowGraphqlClient().mutate({mutation:hc,variables:{collectionId:t},fetchPolicy:"no-cache"})).data?.bundleCreate;if(!e?.id)throw new Error("Unable to create bundle");const i=da.getMap("bundlePartnerIds")||new Map;i.set(e.id,e.partner.id),da.setMap("bundlePartnerIds",i),fa(e.bundleOwnerId);const n=da.getMap("bundleOwnerIds")||new Map;return n.set(e.id,e.bundleOwnerId),da.setMap("bundleOwnerIds",n),new Gc(this,e)}async getExistingBundle(t,e,i){const n=da.getMap("bundleOwnerIds")?.get(t);n&&fa(n);const A=await Ia.getShadowGraphqlClient().query({query:cc,variables:{id:t},fetchPolicy:"no-cache"});if(!A.data?.bundles||0===A.data?.bundles.length||!A.data?.bundles[0])throw new Error(`Unable to find bundle: ${t}`);const a=A.data?.bundles[0],r=da.getMap("bundlePartnerIds")||new Map;r.set(a.id,a.partner.id),da.setMap("bundlePartnerIds",r);const o=new Gc(this,a,e,i);return await o.getInitializationPromise(),o}async getBundleStakeholders(){if(!this.customer)throw new Error("Customer not authenticated.");const t=await Ia.getShadowGraphqlClient().query({query:gc,variables:{id:this.customer.id},fetchPolicy:"no-cache"});if(!t.data?.customers||0===t.data.customers.length)throw new Error("Unable to find customer.");return t.data.customers[0].bundleStakeholders||[]}async getWorkflowExperience(t,e,i,n){if(!n)return await this.getWorkflowExperienceDeprecated(t,e,i);const A=async t=>{for(const e in t.layouts){const i=t.layouts[e].elements.filter((t=>t.type===ze.Illustration));for(let t=0;t<i.length;++t){const e=i[t];e.src&&e.svg&&(e.cachedObjectURL=await WA(e.svg))}const n=t.layouts[e].elements.filter((t=>t.type===ze.Textbox));for(let t=0;t<n.length;++t){const e=n[t];e.fontData?.assetUrl&&sn(e.fontData.assetUrl)}}},{transaction:a,workflow:r,readOnly:o}=await(async()=>{const t=Ia.getShadowGraphqlClient();if("transaction"===n.type){const{transactionId:e,readOnly:i}=n,A=await t.query({query:Oo,variables:{ids:[e]},errorPolicy:"all",fetchPolicy:"no-cache"});if(!A.data?.transactions||0===A.data.transactions.length)throw new sa("Existing transaction not found.");const a=A.data?.transactions[0];if(!a.workflowId)throw new sa("Existing transaction has no workflow ID.");const r=await ol(a.workflowId);if(!a.product)throw new sa("Failed to load transaction, product not available.");return{transaction:a,workflow:r,readOnly:i}}if("integration"===n.type||"external"===n.type){const e=async()=>{const e="integration"===n.type?{integrationProductId:n.integrationProductId}:{externalIntegrationId:n.externalIntegrationId,externalProductId:n.externalProductId},i=await t.mutate({mutation:Uo,variables:{...e,bulk:n.bulk,workflowId:n.workflowId,claim:!0},errorPolicy:"all",fetchPolicy:"no-cache",context:this.options.applicationKey?{headers:{"X-Application-Key":this.options.applicationKey}}:void 0});if(!i.data||!i.data.transactionCreate)throw new sa("Failed to create transaction!");const A=i.data.transactionCreate;if(!A.product)throw new sa("Failed to create transaction, product not available.");return A},i=ol(n.workflowId,n?.graphql),[A,a]=await Promise.all([e(),i]);return{transaction:A,workflow:a}}throw new sa("No workflow ID provided.")})();this.currencyCode=a.product.partner?.currencyCode;const s={product:a.product,transaction:a,layouts:[],stateMutationFunc:o?async()=>{throw new ra("State mutation is forbidden in read only mode!")}:async t=>{const e=(da.getMap("transactionOwnerIds")||new Map).get(a.id)||void 0;return this.updateTransactionState({...t,context:{transactionOwnerId:e}})},readOnly:o,workflow:r};if("transaction"===n.type&&a.workflowState){const t=JSON.parse(a.workflowState);s.layouts=Object.values(t.layouts).map((t=>t.layout)),await Zn(t),await A(t),s.reloadedState=t}else if(!o&&n.workflowState){const t=JSON.parse(n.workflowState);s.layouts=Object.values(t.layouts).map((t=>t.layout)),await Zn(t),await A(t),s.reloadedState=t}else s.layouts=sl(s.transaction,s.workflow);if(s.renderableContextService=new So(s.layouts),n.previewService?(s.previewService=n.previewService,s.product?.modelUrl&&(s.modelContainer=s.previewService.loadModel({model:s.product.modelUrl,contextService:s.renderableContextService}))):(s.previewService=i&&i(r),s.product?.modelUrl&&(s.previewService?.initialize({model:s.product.modelUrl,contextService:s.renderableContextService}),s.modelContainer=s.previewService?.getAllModels()[0])),"transaction"!==n.type){const t=da.getMap("transactionOwnerIds")||new Map;t.set(a.id,a.transactionOwnerId),ma(a.transactionOwnerId||""),da.setMap("transactionOwnerIds",t)}else{const t=(da.getMap("transactionOwnerIds")||new Map).get(a.id);t&&ma(t),s.isReloadedTransaction=!0}this.initialized=!0,this.experienceOptions=s;const c=new rc(this,s);return await c.getWorkflowManager().getInitializationPromise(),"transaction"!==n.type&&this.customer&&await c.attachCustomerDetails({email:this.customer.emailAddress}),c}async getWorkflowExperiences(t,e){if(0===t.length)throw new sa("No options provided!");const i=Ia.getShadowGraphqlClient(),n=t.map(((t,e)=>({option:t,index:e}))),A=n.filter((t=>"transaction"===t.option.type)),a=n.filter((t=>"integration"===t.option.type||"external"===t.option.type)),r=(await Promise.all([(async()=>{if(0===A.length)return[];const t=A.map((t=>t.option.transactionId)),e=await i.query({query:Oo,variables:{ids:t},errorPolicy:"all",fetchPolicy:"no-cache"}),n=e.data.transactions;if(n.length!==A.length){const t=e.errors?.[0]?.message||"Unknown error";throw new sa(`Not all transactions were found: ${t}`)}return n.map(((t,e)=>({transaction:t,workflowId:t.workflowId,readOnly:A.find((e=>e.option.transactionId===t.id))?.option.readOnly??!1,index:A[e].index})))})(),(async()=>{if(0===a.length)return[];const t=await i.mutate({mutation:Go,variables:{inputs:a.map((t=>({integrationProductId:"integration"===t.option.type?t.option.integrationProductId:void 0,externalIntegrationId:"external"===t.option.type?t.option.externalIntegrationId:void 0,externalProductId:"external"===t.option.type?t.option.externalProductId:void 0,workflowId:t.option.workflowId,bulk:t.option.bulk,claim:!0})))},errorPolicy:"all",fetchPolicy:"no-cache"}),e=t.data?.transactionCreateMany;if(!e||0===e.length){const e=t.errors?.[0]?.message||"Unknown error";throw new sa(`Failed to create transactions: ${e}`)}return e.map(((t,e)=>({transaction:t,workflowId:t.workflowId,readOnly:!1,index:a[e].index})))})()])).flat(),o=[...new Set(r.map((t=>t.workflowId)))],s=await rl(o,e),c=new Map(s.map((t=>[t.id,t]))),l=async t=>{for(const e in t.layouts){const i=t.layouts[e].elements.filter((t=>t.type===ze.Illustration));for(let t=0;t<i.length;++t){const e=i[t];e.src&&e.svg&&(e.cachedObjectURL=await WA(e.svg))}const n=t.layouts[e].elements.filter((t=>t.type===ze.Textbox));for(let t=0;t<n.length;++t){const e=n[t];e.fontData?.assetUrl&&sn(e.fontData.assetUrl)}}},g=da.getMap("transactionOwnerIds")||new Map,h=r.map((async e=>{const{transaction:i,workflowId:n,readOnly:A,index:a}=e,r=c.get(n),o=t[a];!g.get(i.id)&&i.transactionOwnerId&&g.set(i.id,i.transactionOwnerId);const s=g.get(i.id)||void 0,h={product:i.product,transaction:i,layouts:[],stateMutationFunc:A?async()=>{throw new ra("State mutation is forbidden in read only mode!")}:async t=>this.updateTransactionState({...t,context:{transactionOwnerId:s}}),readOnly:A,workflow:r,isReloadedTransaction:"transaction"===o.type};if("transaction"===o.type&&i.workflowState){const t=JSON.parse(i.workflowState);h.layouts=Object.values(t.layouts).map((t=>t.layout)),await Zn(t),await l(t),h.reloadedState=t}else if(!A&&o.workflowState){const t=JSON.parse(o.workflowState);h.layouts=Object.values(t.layouts).map((t=>t.layout)),await Zn(t),await l(t),h.reloadedState=t}else h.layouts=sl(h.transaction,h.workflow);return h.renderableContextService=new So(h.layouts),this.initialized=!0,this.experienceOptions=h,{experienceOptions:h,index:a,options:o}}));da.setMap("transactionOwnerIds",g);const d=(await Promise.all(h)).sort(((t,e)=>t.index-e.index)).map((async t=>{const{experienceOptions:e,options:i}=t,n=new rc(this,e);return await n.getWorkflowManager().getInitializationPromise(),"transaction"!==i.type&&this.customer&&await n.attachCustomerDetails({email:this.customer.emailAddress}),n}));return await Promise.all(d)}async initFromIntegrationProduct(t){if(""===t)throw new sa("No integration product ID provided.");const e=Ia.getShadowGraphqlClient(),i=await e.mutate({mutation:Uo,variables:{integrationProductId:t,bulk:this.options.bulk||!1,claim:!0},errorPolicy:"all",fetchPolicy:"no-cache",context:this.options.applicationKey?{headers:{"X-Application-Key":this.options.applicationKey}}:void 0});if(!i.data||!i.data.transactionCreate)throw new sa("Failed to create transaction!");const n=i.data.transactionCreate;if(!n.product)throw new sa("Failed to create transaction, product not available.");this.currencyCode=n.product.partner?.currencyCode;const A=da.getMap("transactionOwnerIds")||new Map;A.set(n.id,n.transactionOwnerId),ma(n.transactionOwnerId||""),da.setMap("transactionOwnerIds",A),this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState},this.initialized=!0}async initFromTransaction(t,e=!1){if(""===t)throw new sa("No transaction ID provided.");const i=Ia.getShadowGraphqlClient();if(e)return await(async()=>{const n=(await i.query({query:Oo,variables:{ids:[t]},fetchPolicy:"no-cache",errorPolicy:"all"})).data?.transactions[0];if(!n)throw new sa("Failed to read transaction.");if(!n.product)throw new sa("Failed to load transaction, product not available.");this.currencyCode=n.product.partner?.currencyCode,this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:async()=>{throw new ra("State mutation is forbidden in read only mode!")},readOnly:e},this.initialized=!0})();const n=da.getMap("transactionOwnerIds")||new Map,A=n.get(t);if(A){ma(A);const n=(await i.query({query:Oo,variables:{ids:[t]},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new sa("Failed to read transaction.");if(!n.product)throw new sa("Failed to load transaction, product not available.");return this.currencyCode=n.product.partner?.currencyCode,this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:e},void(this.initialized=!0)}try{const A=(await i.mutate({mutation:To,variables:{id:t},errorPolicy:"all"})).data?.transactionClaim;if(!A)throw new sa("Failed to read transaction.");if(!A.product)throw new sa("Failed to load transaction, product not available.");this.currencyCode=A.product.partner?.currencyCode,A.transactionOwnerId&&(n.set(A.id,A.transactionOwnerId),ma(A.transactionOwnerId),da.setMap("transactionOwnerIds",n)),this.experienceOptions={product:A.product,transaction:A,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:e},this.initialized=!0}catch{throw new sa("Attempted to access a transaction that isn't available.")}}async getWorkflowExperienceDeprecated(t,e,i){if(!this.initialized||!this.experienceOptions)throw new sa("Cannot launch experience: Not initialized.");const n=async t=>{for(const e in t.layouts){const i=t.layouts[e].elements.filter((t=>t.type===ze.Illustration));for(let t=0;t<i.length;++t){const e=i[t];e.src&&e.svg&&(e.cachedObjectURL=await WA(e.svg))}const n=t.layouts[e].elements.filter((t=>t.type===ze.Textbox));for(let t=0;t<n.length;++t){const e=n[t];e.fontData?.assetUrl&&sn(e.fontData.assetUrl)}}};if(this.experienceOptions.transaction.workflowId){const t=await ol(this.experienceOptions.transaction.workflowId);if(this.experienceOptions.workflow=t,this.experienceOptions.transaction.workflowState){const t=JSON.parse(this.experienceOptions.transaction.workflowState);this.experienceOptions.layouts=Object.values(t.layouts).map((t=>t.layout)),await Zn(t),await n(t),this.experienceOptions.reloadedState=t}this.experienceOptions.previewService=i&&i(t),this.experienceOptions.renderableContextService=new So(this.experienceOptions.layouts),this.experienceOptions.product?.modelUrl&&(this.experienceOptions.previewService?.initialize({model:this.experienceOptions.product.modelUrl,contextService:this.experienceOptions.renderableContextService}),this.experienceOptions.modelContainer=this.experienceOptions.previewService?.getAllModels()[0]);const e=new rc(this,this.experienceOptions);return await e.getWorkflowManager().getInitializationPromise(),e}if(t){const A=Ia.getShadowGraphqlClient().mutate({mutation:Lo,variables:{workflowId:t,id:this.experienceOptions.transaction.id}}),a=ol(t);if(await Promise.all([A,a]),this.experienceOptions.workflow=await a,e){const t=JSON.parse(e);this.experienceOptions.layouts=Object.values(t.layouts).map((t=>t.layout)),await Zn(t),await n(t),this.experienceOptions.reloadedState=t}else this.experienceOptions.layouts=sl(this.experienceOptions.transaction,this.experienceOptions.workflow);this.experienceOptions.previewService=i&&i(await a),this.experienceOptions.renderableContextService=new So(this.experienceOptions.layouts),this.experienceOptions.product?.modelUrl&&(this.experienceOptions.previewService?.initialize({model:this.experienceOptions.product.modelUrl,contextService:this.experienceOptions.renderableContextService}),this.experienceOptions.modelContainer=this.experienceOptions.previewService?.getAllModels()[0]);const r=new rc(this,this.experienceOptions);return await r.getWorkflowManager().getInitializationPromise(),r}throw new sa("No workflow ID provided.")}getPreviewService(){return this.experienceOptions?.previewService}getProduct(){if(!this.initialized||!this.experienceOptions)throw new sa("Cannot get product: Not initialized.");return this.experienceOptions.product}getTransaction(){if(!this.initialized||!this.experienceOptions)throw new sa("Cannot get transaction: Not initialized.");return this.experienceOptions.transaction}storeCustomer(t){const e=da.getMap("partnerCustomerIds")||new Map;e.set(t.partner.id,t.id),da.setMap("partnerCustomerIds",e)}}function ll(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class gl{constructor(){ll(this,"getProduct",void 0),ll(this,"getCommandContext",void 0),ll(this,"getAllLayoutData",void 0),ll(this,"getMetadata",void 0),ll(this,"getWorkflowMetadata",void 0),ll(this,"getStepStorage",void 0),ll(this,"setModelContainer",void 0),ll(this,"getUpdatesPending",void 0)}getInitializationPromise(){return Promise.resolve()}isInitialized(){return!0}getInformationResults(){return[]}getVariationRecords(){return[]}async reset(){}updateStateWithServer(t){}addVariationRecord(t){return{recordNumber:0,transactionId:"",values:[]}}getCurrentVariationRecord(){}removeVariationRecord(t){return[]}async outstandingRequestsPromise(){}async updateStateWithServerImmediate(t){}addPoller(t){}addConfirmCallback(t){}addCurrentVariationCallback(t){}addEditedCallback(t){}addElementsCallback(t){}addInformationResultCallback(t){}addInitCallback(t){}addMakingAdjustmentsCallback(t){}addMandatoryCallback(t){}addMetadataCallback(t){}addSelectionCallback(t){}addStepSpecificStorageCallback(t,e){}addStorageCallback(t){}addVariationRecordsCallback(t){}getCommandDispatcher(){return t=>{}}getLayouts(){return[]}getLayoutPreviewService(){return{getAll:()=>new Map}}getPreviewService(){}getModelContainer(){}getProfanities(){return[]}getRegionElements(t){return[]}getSerializedStep(t,e){}getStepSpecificServices(t){}getTransaction(){return{id:""}}getTransactionCustomer(){}setTransactionCustomer(){}setTransactionCustomerDetails(){}getWorkflow(){return{id:"",name:"",panels:[],steps:[],showModelOnFinishStep:!1,allowProofDownload:!1,introduction:"",stepGroups:[]}}markStepsAsInitialised(t){}markUpdateCompleted(t){}markUpdatePending(){return"123"}getWorkflowSelections(){return{}}setCurrentAdjustingStepId(t){}setCurrentVariationRecord(t){}setEditedStatus(t,e){}setInformationResults(t){}setMandatoryFulfilled(t,e){}async setSelectionsAndElements(t,e,i){}setVariationRecords(t){}toggleDesignConfirmed(){}updateMetadata(t,e){}async updateStorage(t,e){}injectIntoPreviewService(t){return Promise.resolve()}ejectFromPreviewService(){}}function hl(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}let dl;var ul;(ul=dl||(dl={})).SelectFrame="SelectFrame",ul.SelectImage="SelectImage",ul.Position="Position";class wl extends Ps{constructor(t,e){super(t,e),hl(this,"frameService",this.manager.getStepSpecificServices(this.getId())?.frameService)}selectVariant(t){const e=this.manager.getRegionElements(this.step.stepName);return ls.selectVariant(this.step,t.getResource(),e,this.manager,(t=>this.setUpdateState(t)))}onFrameDataChanged(t){this.frameService&&this.frameService.onFrameDataChanged((e=>{e&&t(e)}))}selectImage(t){return ls.selectImage(this.step,t,this.manager)}getImageData(){if(this.frameService)return this.frameService.getImageData()}getCurrentFrameStep(t,e,i,n){return n&&n.length>1&&void 0===t?dl.SelectFrame:e||i||this.getImageData()?dl.Position:dl.SelectImage}getFrameService(){return this.frameService}hasOverlayImageKey(){return this.step.data.overlayImageKey}hasOverlayImageUrl(){return this.step.data.overlayImageUrl}hasVaryingUpload(){return this.step.data.varyUpload}hasVaryingSelection(){return this.step.data.varySelection}}const Bl=t=>{const e=(0,n.useRef)(null),A=(0,n.useRef)(void 0),[a,r]=(0,n.useState)(void 0),{addEvent:o,removeEvent:s,updateEvent:c,eventCache:l}=za(),[g,h]=(0,n.useState)(!1),[d,u]=(0,n.useState)(!1),{state:w,uiDispatcher:B}=tr(),p=(0,n.useCallback)((t=>{const e=t;B(new _a({zoom:Math.max(.1,Math.min(e,w.maxZoom))}))}),[B,w.maxZoom]),m=(0,n.useCallback)((t=>{s(t),1===l.length&&(A.current=void 0),2===l.length&&r(void 0);"touch"===t.pointerType&&l.length>1&&l.length-1==1&&(u(!1),h(!1))}),[s,l.length]),E=(0,n.useCallback)((t=>{o(t);"touch"===t.pointerType&&1===l.length&&(B(new _a({selectedElement:void 0})),u(!0),h(!0))}),[o,l.length,B]),f=(0,n.useCallback)((t=>{c(t);const e=1===l.length&&"touch"!==l[0].pointerType,i=2===l.length&&"touch"===l[0].pointerType;if(g&&i){const[t,e]=l,i=Math.abs(t.clientX-e.clientX),n=a;n&&p(w.zoom-.0055*(n-i)),r(i)}if(d&&(e||i)&&t.isPrimary){const e=(A?.current?.x||t.screenX)-t.screenX,i=(A?.current?.y||t.screenY)-t.screenY;B(new _a({selectedElement:void 0,xTranslation:w.xTranslation-e/w.zoom,yTranslation:w.yTranslation-i/w.zoom}))}t.isPrimary&&(A.current={x:t.screenX,y:t.screenY})}),[c,l,g,d,a,p,w.zoom,w.xTranslation,w.yTranslation,B]),C=(0,n.useCallback)((t=>{g&&p(w.zoom-.035*Math.sign(t.deltaY))}),[p,w.zoom,g]);(0,n.useEffect)((()=>{if(!e.current||0===l.length)return;const t=l[0].pointerId,i=e.current.hasPointerCapture(t);d&&!i&&e.current.setPointerCapture(t),!d&&i&&e.current.releasePointerCapture(t)}),[e,d,l]),jr([" "],(()=>{u(!0),B(new _a({selectedElement:void 0}))}),(()=>u(!1))),jr(["Control"],(()=>h(!0)),(()=>h(!1)));const Q=(0,n.useMemo)((()=>({cursor:d&&0===l.length?"grab":d&&1===l.length?"grabbing":g?"zoom-in":void 0,width:"100%",height:"100%",overflow:"clip"})),[d,g,l]);return(0,i.jsx)("div",{ref:e,className:"transform-wrapper",onWheel:C,onPointerDown:E,onPointerUp:m,onPointerCancel:m,onPointerLeave:m,onPointerMove:f,style:Q,children:t.children})};
1575
1584
  //# sourceMappingURL=main.js.map