daiquiri-ui 2025.12.5__py3-none-any.whl → 2026.2.0__py3-none-any.whl

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.
Files changed (143) hide show
  1. daiquiri_ui/__init__.py +0 -1
  2. daiquiri_ui/static/assets/Anchor-0b4a3d33.js +1 -0
  3. daiquiri_ui/static/assets/AutoscaleOption-3cb99678.js +1 -0
  4. daiquiri_ui/static/assets/{BPMVideoStream-5e8c0121.js → BPMVideoStream-c3e09e8b.js} +1 -1
  5. daiquiri_ui/static/assets/{CanvasEnhancer-abaa5025.js → CanvasEnhancer-dd82c090.js} +1 -1
  6. daiquiri_ui/static/assets/ColorMap-be59ad21.js +1 -0
  7. daiquiri_ui/static/assets/CompositeMap-c93f5466.js +1 -0
  8. daiquiri_ui/static/assets/{ConnectUtils-bd734a4a.js → ConnectUtils-3923fa2f.js} +1 -1
  9. daiquiri_ui/static/assets/{Console-4f2397f7.js → Console-d0028912.js} +1 -1
  10. daiquiri_ui/static/assets/{Cross-80ee2b29.js → Cross-d5df0df3.js} +1 -1
  11. daiquiri_ui/static/assets/{CrossMarker-cc495eca.js → CrossMarker-71cd11cf.js} +2 -2
  12. daiquiri_ui/static/assets/DraggableRect-25d91c7d.js +1 -0
  13. daiquiri_ui/static/assets/DropdownButton-29cc265b.js +1 -0
  14. daiquiri_ui/static/assets/DropdownDetector-5016908a.js +1 -0
  15. daiquiri_ui/static/assets/{Editor-b897e35a.js → Editor-7b500b85.js} +9 -9
  16. daiquiri_ui/static/assets/EditorTree-7fc000d8.js +1 -0
  17. daiquiri_ui/static/assets/H5Viewer-d1305c58.js +1 -0
  18. daiquiri_ui/static/assets/{H5WebCurvePlot-acd3b964.js → H5WebCurvePlot-61b08211.js} +1 -1
  19. daiquiri_ui/static/assets/HSegment-8d2c001e.js +43 -0
  20. daiquiri_ui/static/assets/HardwareButton-af41c610.js +1 -0
  21. daiquiri_ui/static/assets/Hdf5Plot-bbffc65f.js +1 -0
  22. daiquiri_ui/static/assets/{HistogramDomainSlider-9c6d3e2d.js → HistogramDomainSlider-304bdab4.js} +1 -1
  23. daiquiri_ui/static/assets/Image-ee61818a.js +1 -0
  24. daiquiri_ui/static/assets/Label-9d8979b3.js +1 -0
  25. daiquiri_ui/static/assets/{LoadingMessage-072bb4e8.js → LoadingMessage-03b4fa4f.js} +1 -1
  26. daiquiri_ui/static/assets/NewScanButton-0051d220.js +1 -0
  27. daiquiri_ui/static/assets/NewScanButton-57cf0c17.js +1 -0
  28. daiquiri_ui/static/assets/OptionsProcess-da629bfb.js +1 -0
  29. daiquiri_ui/static/assets/ParametersList-2d01832f.js +1 -0
  30. daiquiri_ui/static/assets/RectRoi-3693cc65.js +1 -0
  31. daiquiri_ui/static/assets/RectRuler-1fee3fd8.js +543 -0
  32. daiquiri_ui/static/assets/RulerButton-a95a6035.js +139 -0
  33. daiquiri_ui/static/assets/SampleDCList-dce0bd2b.js +1 -0
  34. daiquiri_ui/static/assets/SampleRegistration-544aa4bd.js +1 -0
  35. daiquiri_ui/static/assets/SavingButton-c3efc92c.js +1 -0
  36. daiquiri_ui/static/assets/ScanDataService-16f29ecd.js +1 -0
  37. daiquiri_ui/static/assets/ScanPlot0d-67c76bfe.js +1 -0
  38. daiquiri_ui/static/assets/ScanPlot0dValue-c0dd01b5.js +1 -0
  39. daiquiri_ui/static/assets/ScanPlot1d-3c930b95.js +1 -0
  40. daiquiri_ui/static/assets/ScanPlot1d-ee33c98b.js +1 -0
  41. daiquiri_ui/static/assets/{ScanPlot2d-c857bbd7.js → ScanPlot2d-af57d8ad.js} +1 -1
  42. daiquiri_ui/static/assets/{ScanTable-11f74702.js → ScanTable-bc13760e.js} +1 -1
  43. daiquiri_ui/static/assets/ScanValue-00aab91b.js +1 -0
  44. daiquiri_ui/static/assets/SceneScale-e2a42af2.js +1 -0
  45. daiquiri_ui/static/assets/SchemaForm-7d897a32.js +1 -0
  46. daiquiri_ui/static/assets/{ScreenScale-fdd43179.js → ScreenScale-b2417934.js} +1 -1
  47. daiquiri_ui/static/assets/{SelectionPoint-7fbd4e1f.js → SelectionPoint-a2cb4dfc.js} +1 -1
  48. daiquiri_ui/static/assets/{StackedNameState-94be4a7b.js → StackedNameState-4e8dc742.js} +1 -1
  49. daiquiri_ui/static/assets/Statistics.worker-54a0d965.js +46 -0
  50. daiquiri_ui/static/assets/{Synoptic-d291a77a.js → Synoptic-8a3c67f3.js} +5 -5
  51. daiquiri_ui/static/assets/TomoAlign-b80a68c3.js +7 -0
  52. daiquiri_ui/static/assets/TomoBeamShaping-65a115e9.js +1 -0
  53. daiquiri_ui/static/assets/TomoDetector-500d46af.js +1 -0
  54. daiquiri_ui/static/assets/TomoDetector-e04a5a8b.js +1 -0
  55. daiquiri_ui/static/assets/TomoDetectorView-952499e6.js +64 -0
  56. daiquiri_ui/static/assets/TomoHolo-db2c8449.js +1 -0
  57. daiquiri_ui/static/assets/TomoPusherView-a50e2acd.js +1 -0
  58. daiquiri_ui/static/assets/TomoReconstructedSinogram-deee0779.js +191 -0
  59. daiquiri_ui/static/assets/TomoScanInfo-972a690b.js +1 -0
  60. daiquiri_ui/static/assets/{TomoScanList-66ecaec4.js → TomoScanList-ede05c2a.js} +1 -1
  61. daiquiri_ui/static/assets/TomoService-e9741d6a.js +1 -0
  62. daiquiri_ui/static/assets/TomoSinogram-dce5808e.js +1 -0
  63. daiquiri_ui/static/assets/TomoTiling-04701bb7.js +69 -0
  64. daiquiri_ui/static/assets/TwoD-fee9523f.js +3 -0
  65. daiquiri_ui/static/assets/TwoDObject-2f30deac.js +1 -0
  66. daiquiri_ui/static/assets/TwoDObjectList-458e4824.js +1 -0
  67. daiquiri_ui/static/assets/{UseMouseModeInteraction-9b6c111c.js → UseMouseModeInteraction-51c6269c.js} +1 -1
  68. daiquiri_ui/static/assets/VLineRoi-b38fe841.js +1 -0
  69. daiquiri_ui/static/assets/{VSegment-5d77576e.js → VSegment-f0d42c9a.js} +2 -2
  70. daiquiri_ui/static/assets/VSegmentRoi-d5e035cc.js +1 -0
  71. daiquiri_ui/static/assets/{VideoStream-b33f5afc.js → VideoStream-a5200b21.js} +1 -1
  72. daiquiri_ui/static/assets/{VisViewpointRestore-3a80fbce.js → VisViewpointRestore-4aa338ea.js} +3 -3
  73. daiquiri_ui/static/assets/{WorldScale-862ee5ba.js → WorldScale-23bd1dfb.js} +1 -1
  74. daiquiri_ui/static/assets/{ZoomPanCanvas-1365066d.js → ZoomPanCanvas-23b61dbb.js} +1 -1
  75. daiquiri_ui/static/assets/{colormap-0981f7dc.js → colormap-6e43299c.js} +1 -1
  76. daiquiri_ui/static/assets/fontawesomemore-webfont-6ae56ae3.woff2 +0 -0
  77. daiquiri_ui/static/assets/{geometry-252a228f.js → geometry-cd448ec1.js} +1 -1
  78. daiquiri_ui/static/assets/hooks-171c0765.js +1 -0
  79. daiquiri_ui/static/assets/{hooks-e8b12550.js → hooks-e0d9229c.js} +1 -1
  80. daiquiri_ui/static/assets/index-779a56ef.css +9 -0
  81. daiquiri_ui/static/assets/{index-19c84627.js → index-a9bb7636.js} +7 -7
  82. daiquiri_ui/static/assets/index-b3c0133a.js +3576 -0
  83. daiquiri_ui/static/assets/{plotly-basic-4f8b68a8.js → plotly-basic-ccc5794d.js} +1 -1
  84. daiquiri_ui/static/assets/{plotly-gl2d-14b9dcce.js → plotly-gl2d-345cb34a.js} +1 -1
  85. daiquiri_ui/static/assets/store-5d136a2c.js +1 -0
  86. daiquiri_ui/static/assets/{types-0be7083b.js → types-c366a377.js} +1 -1
  87. daiquiri_ui/static/index.html +2 -2
  88. daiquiri_ui/static/meta.json +1 -1
  89. {daiquiri_ui-2025.12.5.dist-info → daiquiri_ui-2026.2.0.dist-info}/METADATA +1 -1
  90. daiquiri_ui-2026.2.0.dist-info/RECORD +134 -0
  91. {daiquiri_ui-2025.12.5.dist-info → daiquiri_ui-2026.2.0.dist-info}/WHEEL +1 -1
  92. daiquiri_ui/static/assets/Anchor-f3716b7b.js +0 -1
  93. daiquiri_ui/static/assets/AutoscaleOption-e2ee098d.js +0 -1
  94. daiquiri_ui/static/assets/DraggableRect-8e897252.js +0 -1
  95. daiquiri_ui/static/assets/DropdownButton-9a594aef.js +0 -1
  96. daiquiri_ui/static/assets/DropdownDetector-705d3a9d.js +0 -1
  97. daiquiri_ui/static/assets/EditorTree-792b2d33.js +0 -1
  98. daiquiri_ui/static/assets/H5Viewer-6c3d85e4.js +0 -1
  99. daiquiri_ui/static/assets/HSegment-26c3fd51.js +0 -43
  100. daiquiri_ui/static/assets/HardwareButton-905ce384.js +0 -1
  101. daiquiri_ui/static/assets/Hdf5Plot-7b8f8e0f.js +0 -1
  102. daiquiri_ui/static/assets/Image-c1578ac2.js +0 -1
  103. daiquiri_ui/static/assets/Label-7daca8b6.js +0 -1
  104. daiquiri_ui/static/assets/NewScanButton-3ccc3031.js +0 -1
  105. daiquiri_ui/static/assets/NewScanButton-ed1679d8.js +0 -1
  106. daiquiri_ui/static/assets/OptionsProcess-9e8d1dd6.js +0 -1
  107. daiquiri_ui/static/assets/ParametersList-39837f0d.js +0 -1
  108. daiquiri_ui/static/assets/RectRoi-a627d206.js +0 -1
  109. daiquiri_ui/static/assets/RulerButton-ebbb7ca3.js +0 -139
  110. daiquiri_ui/static/assets/SampleDCList-03813f5f.js +0 -1
  111. daiquiri_ui/static/assets/SampleRegistration-6fad78fb.js +0 -1
  112. daiquiri_ui/static/assets/SavingButton-a220fa1e.js +0 -1
  113. daiquiri_ui/static/assets/ScanPlot0d-c78ff27c.js +0 -1
  114. daiquiri_ui/static/assets/ScanPlot0dValue-daa69216.js +0 -1
  115. daiquiri_ui/static/assets/ScanPlot1d-bdb2fdb1.js +0 -1
  116. daiquiri_ui/static/assets/ScanPlot1d-c0e49d26.js +0 -1
  117. daiquiri_ui/static/assets/ScanValue-a38a2ca1.js +0 -1
  118. daiquiri_ui/static/assets/SceneScale-47e8e288.js +0 -1
  119. daiquiri_ui/static/assets/SchemaForm-4a3d737e.js +0 -1
  120. daiquiri_ui/static/assets/TomoAlign-19546c0c.js +0 -5
  121. daiquiri_ui/static/assets/TomoBeamShaping-303f1af7.js +0 -1
  122. daiquiri_ui/static/assets/TomoDetector-42a6e14c.js +0 -1
  123. daiquiri_ui/static/assets/TomoDetectorView-bc556465.js +0 -64
  124. daiquiri_ui/static/assets/TomoHolo-dc83668f.js +0 -1
  125. daiquiri_ui/static/assets/TomoReconstructedSinogram-3aba7e83.js +0 -191
  126. daiquiri_ui/static/assets/TomoScanInfo-7235514b.js +0 -1
  127. daiquiri_ui/static/assets/TomoSinogram-3202ac53.js +0 -1
  128. daiquiri_ui/static/assets/TomoTiling-42ab8b24.js +0 -69
  129. daiquiri_ui/static/assets/TwoD-a488b0f5.js +0 -3
  130. daiquiri_ui/static/assets/TwoDObject-fbaffc6f.js +0 -1
  131. daiquiri_ui/static/assets/TwoDObjectList-7de7fa1d.js +0 -1
  132. daiquiri_ui/static/assets/VLineRoi-75cfdd39.js +0 -1
  133. daiquiri_ui/static/assets/colors-5bf0897d.js +0 -1
  134. daiquiri_ui/static/assets/fontawesomemore-webfont-97d0220a.woff2 +0 -0
  135. daiquiri_ui/static/assets/hooks-e7539055.js +0 -1
  136. daiquiri_ui/static/assets/index-4cf586ed.js +0 -3576
  137. daiquiri_ui/static/assets/index-f085dfca.css +0 -9
  138. daiquiri_ui/static/assets/store-2462c975.js +0 -1
  139. daiquiri_ui/static/resources/shaders/compare.frag.glsl +0 -386
  140. daiquiri_ui/static/resources/shaders/compare.vert.glsl +0 -11
  141. daiquiri_ui-2025.12.5.dist-info/RECORD +0 -128
  142. {daiquiri_ui-2025.12.5.dist-info → daiquiri_ui-2026.2.0.dist-info}/licenses/LICENSE +0 -0
  143. {daiquiri_ui-2025.12.5.dist-info → daiquiri_ui-2026.2.0.dist-info}/top_level.txt +0 -0
daiquiri_ui/__init__.py CHANGED
@@ -1 +0,0 @@
1
- __version__ = "2025.12.5"
@@ -0,0 +1 @@
1
+ import{r as I,j as e}from"./index-b3c0133a.js";import{S as x}from"./ScreenScale-b2417934.js";import{D as S,c as r,S as l,d as f,a as m}from"./DraggableRect-25d91c7d.js";function b(t){const{geometry:a,color:d="blue",opacity:h=1,zIndex:n=1,visible:g=!0,pointer:j="pointer",readOnly:u=t.onGeometryChanged===void 0}=t,[s,i]=I.useState(!1);return g?e.jsxs("group",{position:[a.x,a.y,n],children:[e.jsx(x,{children:e.jsx(S,{pos:[a.x,a.y],size:[r+l,r+l],pointer:j,zIndex:n+f,enabled:!u,onPositionChanged:(o,y)=>{var c;(c=t.onGeometryChanged)==null||c.call(t,{x:o[0],y:o[1]},y)},onEnter:()=>{i(!0)},onLeave:()=>{i(!1)}})}),e.jsx("group",{children:e.jsx(x,{children:e.jsxs("mesh",{children:[e.jsx("ambientLight",{}),e.jsx("planeGeometry",{attach:"geometry",args:[r+(s?m:0),r+(s?m:0),1,1]}),e.jsx("meshBasicMaterial",{attach:"material",transparent:!0,color:d,opacity:h})]})})})]}):e.jsx(e.Fragment,{})}export{b as A};
@@ -0,0 +1 @@
1
+ import{r as u,aw as d,j as t,B as f}from"./index-b3c0133a.js";import{r as l,a as i}from"./index-a9bb7636.js";import{N as x,d as g}from"./hooks-171c0765.js";import{A as m}from"./colormap-6e43299c.js";import{I as h}from"./Image-ee61818a.js";function v(e,s,a){const n=e-a.position[0],c=s-a.position[1],o=Math.round(n/a.scale[0]+a.size.width*.5-.5),r=Math.round(c/a.scale[1]+a.size.height*.5-.5);if(!(o<0||o>=a.size.width)&&!(r<0||r>=a.size.width))return[r,o]}const I=u.forwardRef((e,s)=>{const{values:a}=e;if(u.useImperativeHandle(s,()=>({pick:(n,c)=>{const o=v(n,c,e);if(o!==void 0)return a.get(...o)}}),[e.position,e.scale,a,e.size]),a instanceof x){const n=d(a.data,a.shape);return t.jsx(l,{...e,values:n,domain:[0,255],scaleType:i.Linear})}if(a instanceof g){const n=d(a.data,a.shape);return t.jsx(l,{...e,values:n})}return t.jsx(l,{...e,values:a})}),b=I,y={[i.Linear]:"fam-norm-linear",[i.Log]:"fam-norm-log",[i.Sqrt]:"fam-norm-sqrt",[i.Gamma]:"fam-norm-gamma",[i.SymLog]:"fam-norm-arcsinh"},j={[m.Minmax]:["fam-scale-auto-minmax","Min-max"],[m.StdDev3]:["fam-scale-auto-3std","3 × stddev"],[m.None]:["","Manual"]},w={Greys:"gray",Viridis:"viridis",Cividis:"cividis",Magma:"magma",Inferno:"inferno",Plasma:"plasma"};function z(e){const a=`resources/icons/lut/${w[e.name]??"unknown"}.png`;return t.jsx(h,{className:"border",src:a,rounded:!0,width:16,height:16,title:e.name})}function L(e){const s=e.scale.replace(/^\w/,n=>n.toUpperCase()),a=y[e.scale];return t.jsx("i",{className:`fad ${a} fa-lg fa-fw`,title:s})}function k(e){const[s,a]=j[e.autoscale];return s===""?t.jsx(t.Fragment,{}):t.jsx("i",{className:`fad ${s} fa-lg fa-fw`,title:a})}function $(e){const{disabled:s,autoscale:a,autoscaleMode:n,setAutoscale:c}=e;return t.jsx(f,{title:"Enable/disable auto scale on colormap",variant:a?"primary":"secondary",disabled:s,onClick:()=>{c(o=>!o)},children:t.jsx("i",{className:"fa-solid fa-circle-half-stroke fa-fw fa-lg"})})}export{$ as A,b as I,z as L,L as S,k as a};
@@ -1 +1 @@
1
- import{r as n,a8 as j,aa as v,j as e,p as h,A as f,a1 as p,av as k,aw as N,dA as y,q as O}from"./index-4cf586ed.js";import{Z as E}from"./ZoomPanCanvas-1365066d.js";import"./CanvasEnhancer-abaa5025.js";function S(a){const[g,s]=n.useState(0),[o,i]=n.useState(""),[l,c]=n.useState(""),r=n.useRef(),m=j.create({...a.proxy?v.getOptions():null}),u=n.useCallback(()=>{m.get(a.url).then(t=>{c(t.data.jpegData),r.current&&clearTimeout(r.current),r.current=setTimeout(()=>{u()},a.interval??500)}).catch(t=>{var d;console.log("Couldnt load image"),i((d=t.response.data)==null?void 0:d.error)})},[a.url,c]);return n.useEffect(()=>(u(),()=>{r.current&&clearTimeout(r.current)}),[u]),e.jsxs("div",{className:"plot2d-container",children:[e.jsxs("div",{children:[a.title&&e.jsx("h3",{children:a.title}),e.jsx("div",{className:"message"}),e.jsxs("div",{className:"zoom",children:["Zoom:",(g*100).toFixed(0),"%"]})]}),e.jsx(h,{children:e.jsx(E,{className:"scanimage",url:l&&`data:image/jpg;base64,${l}`,onZoomChange:t=>s(t),onLoadProgress:t=>{},onError:(t,d,x)=>i(x),maxZoom:4,markings:a.markings,children:e.jsx("div",{className:"plot-error",children:o&&e.jsxs(f,{variant:"danger",children:["Error loading image: ",o]})})})})]})}function C(a){const{providers:g,yamlNode:s,url:o,interval:i,proxy:l,markings:c,...r}=a;return p(s,"url",o),k(s,"interval",i),N(s,"proxy",l),y(s,"markings",c,m=>"x"in m&&"y"in m,"Marking"),O(s,r),e.jsx(S,{url:o,interval:i,proxy:l,markings:c})}export{C as default};
1
+ import{r as n,ah as j,aj as h,j as e,G as v,A as f,ad as p,aE as k,aF as N,dK as y,H as E}from"./index-b3c0133a.js";import{Z as O}from"./ZoomPanCanvas-23b61dbb.js";import"./CanvasEnhancer-dd82c090.js";function S(a){const[g,s]=n.useState(0),[o,i]=n.useState(""),[l,c]=n.useState(""),r=n.useRef(),m=j.create({...a.proxy?h.getOptions():null}),u=n.useCallback(()=>{m.get(a.url).then(t=>{c(t.data.jpegData),r.current&&clearTimeout(r.current),r.current=setTimeout(()=>{u()},a.interval??500)}).catch(t=>{var d;console.log("Couldnt load image"),i((d=t.response.data)==null?void 0:d.error)})},[a.url,c]);return n.useEffect(()=>(u(),()=>{r.current&&clearTimeout(r.current)}),[u]),e.jsxs("div",{className:"plot2d-container",children:[e.jsxs("div",{children:[a.title&&e.jsx("h3",{children:a.title}),e.jsx("div",{className:"message"}),e.jsxs("div",{className:"zoom",children:["Zoom:",(g*100).toFixed(0),"%"]})]}),e.jsx(v,{children:e.jsx(O,{className:"scanimage",url:l&&`data:image/jpg;base64,${l}`,onZoomChange:t=>s(t),onLoadProgress:t=>{},onError:(t,d,x)=>i(x),maxZoom:4,markings:a.markings,children:e.jsx("div",{className:"plot-error",children:o&&e.jsxs(f,{variant:"danger",children:["Error loading image: ",o]})})})})]})}function C(a){const{providers:g,yamlNode:s,url:o,interval:i,proxy:l,markings:c,...r}=a;return p(s,"url",o),k(s,"interval",i),N(s,"proxy",l),y(s,"markings",c,m=>"x"in m&&"y"in m,"Marking"),E(s,r),e.jsx(S,{url:o,interval:i,proxy:l,markings:c})}export{C as default};
@@ -1,4 +1,4 @@
1
- var yt=Object.defineProperty;var Ct=(G,d,et)=>d in G?yt(G,d,{enumerable:!0,configurable:!0,writable:!0,value:et}):G[d]=et;var gt=(G,d,et)=>(Ct(G,typeof d!="symbol"?d+"":d,et),et);import{dB as ct,r as ut,P as ft,j as mt}from"./index-4cf586ed.js";var dt={};(function(G){/*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */var d=d||{version:"3.6.6"};if(G.fabric=d,typeof document<"u"&&typeof window<"u")document instanceof(typeof HTMLDocument<"u"?HTMLDocument:Document)?d.document=document:d.document=document.implementation.createHTMLDocument(""),d.window=window;else{var et=ct,at=new et.JSDOM(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;d.document=at.document,d.jsdomImplForWrapper=ct.implForWrapper,d.nodeCanvas=ct.Canvas,d.window=at,DOMParser=d.window.DOMParser}d.isTouchSupported="ontouchstart"in d.window||"ontouchstart"in d.document||d.window&&d.window.navigator&&d.window.navigator.maxTouchPoints>0,d.isLikelyNode=typeof Buffer<"u"&&typeof window>"u",d.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],d.DPI=96,d.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",d.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/ig,d.reNonWord=/[ \n\.,;!\?\-]/,d.fontPaths={},d.iMatrix=[1,0,0,1,0,0],d.svgNS="http://www.w3.org/2000/svg",d.perfLimitSizeTotal=2097152,d.maxCacheSideLimit=4096,d.minCacheSideLimit=256,d.charWidthsCache={},d.textureSize=2048,d.disableStyleCopyPaste=!1,d.enableGLFiltering=!0,d.devicePixelRatio=d.window.devicePixelRatio||d.window.webkitDevicePixelRatio||d.window.mozDevicePixelRatio||1,d.browserShadowBlurConstant=1,d.arcToSegmentsCache={},d.boundsOfCurveCache={},d.cachesBoundsOfCurve=!0,d.forceGLPutImageData=!1,d.initFilterBackend=function(){if(d.enableGLFiltering&&d.isWebglSupported&&d.isWebglSupported(d.textureSize))return console.log("max texture size: "+d.maxTextureSize),new d.WebglFilterBackend({tileSize:d.textureSize});if(d.Canvas2dFilterBackend)return new d.Canvas2dFilterBackend},typeof document<"u"&&typeof window<"u"&&(window.fabric=d),function(){function u(t,a){if(this.__eventListeners[t]){var n=this.__eventListeners[t];a?n[n.indexOf(a)]=!1:d.util.array.fill(n,!1)}}function e(t,a){if(this.__eventListeners||(this.__eventListeners={}),arguments.length===1)for(var n in t)this.on(n,t[n]);else this.__eventListeners[t]||(this.__eventListeners[t]=[]),this.__eventListeners[t].push(a);return this}function h(t,a){if(!this.__eventListeners)return this;if(arguments.length===0)for(t in this.__eventListeners)u.call(this,t);else if(arguments.length===1&&typeof arguments[0]=="object")for(var n in t)u.call(this,n,t[n]);else u.call(this,t,a);return this}function r(t,a){if(!this.__eventListeners)return this;var n=this.__eventListeners[t];if(!n)return this;for(var c=0,s=n.length;c<s;c++)n[c]&&n[c].call(this,a||{});return this.__eventListeners[t]=n.filter(function(i){return i!==!1}),this}d.Observable={observe:e,stopObserving:h,fire:r,on:e,off:h,trigger:r}}(),d.Collection={_objects:[],add:function(){if(this._objects.push.apply(this._objects,arguments),this._onObjectAdded)for(var u=0,e=arguments.length;u<e;u++)this._onObjectAdded(arguments[u]);return this.renderOnAddRemove&&this.requestRenderAll(),this},insertAt:function(u,e,h){var r=this._objects;return h?r[e]=u:r.splice(e,0,u),this._onObjectAdded&&this._onObjectAdded(u),this.renderOnAddRemove&&this.requestRenderAll(),this},remove:function(){for(var u=this._objects,e,h=!1,r=0,t=arguments.length;r<t;r++)e=u.indexOf(arguments[r]),e!==-1&&(h=!0,u.splice(e,1),this._onObjectRemoved&&this._onObjectRemoved(arguments[r]));return this.renderOnAddRemove&&h&&this.requestRenderAll(),this},forEachObject:function(u,e){for(var h=this.getObjects(),r=0,t=h.length;r<t;r++)u.call(e,h[r],r,h);return this},getObjects:function(u){return typeof u>"u"?this._objects.concat():this._objects.filter(function(e){return e.type===u})},item:function(u){return this._objects[u]},isEmpty:function(){return this._objects.length===0},size:function(){return this._objects.length},contains:function(u){return this._objects.indexOf(u)>-1},complexity:function(){return this._objects.reduce(function(u,e){return u+=e.complexity?e.complexity():0,u},0)}},d.CommonMethods={_setOptions:function(u){for(var e in u)this.set(e,u[e])},_initGradient:function(u,e){u&&u.colorStops&&!(u instanceof d.Gradient)&&this.set(e,new d.Gradient(u))},_initPattern:function(u,e,h){u&&u.source&&!(u instanceof d.Pattern)?this.set(e,new d.Pattern(u,h)):h&&h()},_initClipping:function(u){if(!(!u.clipTo||typeof u.clipTo!="string")){var e=d.util.getFunctionBody(u.clipTo);typeof e<"u"&&(this.clipTo=new Function("ctx",e))}},_setObject:function(u){for(var e in u)this._set(e,u[e])},set:function(u,e){return typeof u=="object"?this._setObject(u):typeof e=="function"&&u!=="clipTo"?this._set(u,e(this.get(u))):this._set(u,e),this},_set:function(u,e){this[u]=e},toggle:function(u){var e=this.get(u);return typeof e=="boolean"&&this.set(u,!e),this},get:function(u){return this[u]}},function(u){var e=Math.sqrt,h=Math.atan2,r=Math.pow,t=Math.PI/180,a=Math.PI/2;d.util={cos:function(n){if(n===0)return 1;n<0&&(n=-n);var c=n/a;switch(c){case 1:case 3:return 0;case 2:return-1}return Math.cos(n)},sin:function(n){if(n===0)return 0;var c=n/a,s=1;switch(n<0&&(s=-1),c){case 1:return s;case 2:return 0;case 3:return-s}return Math.sin(n)},removeFromArray:function(n,c){var s=n.indexOf(c);return s!==-1&&n.splice(s,1),n},getRandomInt:function(n,c){return Math.floor(Math.random()*(c-n+1))+n},degreesToRadians:function(n){return n*t},radiansToDegrees:function(n){return n/t},rotatePoint:function(n,c,s){n.subtractEquals(c);var i=d.util.rotateVector(n,s);return new d.Point(i.x,i.y).addEquals(c)},rotateVector:function(n,c){var s=d.util.sin(c),i=d.util.cos(c),o=n.x*i-n.y*s,l=n.x*s+n.y*i;return{x:o,y:l}},transformPoint:function(n,c,s){return s?new d.Point(c[0]*n.x+c[2]*n.y,c[1]*n.x+c[3]*n.y):new d.Point(c[0]*n.x+c[2]*n.y+c[4],c[1]*n.x+c[3]*n.y+c[5])},makeBoundingBoxFromPoints:function(n,c){if(c)for(var s=0;s<n.length;s++)n[s]=d.util.transformPoint(n[s],c);var i=[n[0].x,n[1].x,n[2].x,n[3].x],o=d.util.array.min(i),l=d.util.array.max(i),f=l-o,g=[n[0].y,n[1].y,n[2].y,n[3].y],m=d.util.array.min(g),v=d.util.array.max(g),p=v-m;return{left:o,top:m,width:f,height:p}},invertTransform:function(n){var c=1/(n[0]*n[3]-n[1]*n[2]),s=[c*n[3],-c*n[1],-c*n[2],c*n[0]],i=d.util.transformPoint({x:n[4],y:n[5]},s,!0);return s[4]=-i.x,s[5]=-i.y,s},toFixed:function(n,c){return parseFloat(Number(n).toFixed(c))},parseUnit:function(n,c){var s=/\D{0,2}$/.exec(n),i=parseFloat(n);switch(c||(c=d.Text.DEFAULT_SVG_FONT_SIZE),s[0]){case"mm":return i*d.DPI/25.4;case"cm":return i*d.DPI/2.54;case"in":return i*d.DPI;case"pt":return i*d.DPI/72;case"pc":return i*d.DPI/72*12;case"em":return i*c;default:return i}},falseFunction:function(){return!1},getKlass:function(n,c){return n=d.util.string.camelize(n.charAt(0).toUpperCase()+n.slice(1)),d.util.resolveNamespace(c)[n]},getSvgAttributes:function(n){var c=["instantiated_by_use","style","id","class"];switch(n){case"linearGradient":c=c.concat(["x1","y1","x2","y2","gradientUnits","gradientTransform"]);break;case"radialGradient":c=c.concat(["gradientUnits","gradientTransform","cx","cy","r","fx","fy","fr"]);break;case"stop":c=c.concat(["offset","stop-color","stop-opacity"]);break}return c},resolveNamespace:function(n){if(!n)return d;var c=n.split("."),s=c.length,i,o=u||d.window;for(i=0;i<s;++i)o=o[c[i]];return o},loadImage:function(n,c,s,i){if(!n){c&&c.call(s,n);return}var o=d.util.createImage(),l=function(){c&&c.call(s,o),o=o.onload=o.onerror=null};o.onload=l,o.onerror=function(){d.log("Error loading "+o.src),c&&c.call(s,null,!0),o=o.onload=o.onerror=null},n.indexOf("data")!==0&&i&&(o.crossOrigin=i),n.substring(0,14)==="data:image/svg"&&(o.onload=null,d.util.loadImageInDom(o,l)),o.src=n},loadImageInDom:function(n,c){var s=d.document.createElement("div");s.style.width=s.style.height="1px",s.style.left=s.style.top="-100%",s.style.position="absolute",s.appendChild(n),d.document.querySelector("body").appendChild(s),n.onload=function(){c(),s.parentNode.removeChild(s),s=null}},enlivenObjects:function(n,c,s,i){n=n||[];var o=[],l=0,f=n.length;function g(){++l===f&&c&&c(o.filter(function(m){return m}))}if(!f){c&&c(o);return}n.forEach(function(m,v){if(!m||!m.type){g();return}var p=d.util.getKlass(m.type,s);p.fromObject(m,function(_,y){y||(o[v]=_),i&&i(m,_,y),g()})})},enlivenPatterns:function(n,c){n=n||[];function s(){++o===l&&c&&c(i)}var i=[],o=0,l=n.length;if(!l){c&&c(i);return}n.forEach(function(f,g){f&&f.source?new d.Pattern(f,function(m){i[g]=m,s()}):(i[g]=f,s())})},groupSVGElements:function(n,c,s){var i;return n&&n.length===1?n[0]:(c&&(c.width&&c.height?c.centerPoint={x:c.width/2,y:c.height/2}:(delete c.width,delete c.height)),i=new d.Group(n,c),typeof s<"u"&&(i.sourcePath=s),i)},populateWithProperties:function(n,c,s){if(s&&Object.prototype.toString.call(s)==="[object Array]")for(var i=0,o=s.length;i<o;i++)s[i]in n&&(c[s[i]]=n[s[i]])},drawDashedLine:function(n,c,s,i,o,l){var f=i-c,g=o-s,m=e(f*f+g*g),v=h(g,f),p=l.length,_=0,y=!0;for(n.save(),n.translate(c,s),n.moveTo(0,0),n.rotate(v),c=0;m>c;)c+=l[_++%p],c>m&&(c=m),n[y?"lineTo":"moveTo"](c,0),y=!y;n.restore()},createCanvasElement:function(){return d.document.createElement("canvas")},copyCanvasElement:function(n){var c=d.util.createCanvasElement();return c.width=n.width,c.height=n.height,c.getContext("2d").drawImage(n,0,0),c},toDataURL:function(n,c,s){return n.toDataURL("image/"+c,s)},createImage:function(){return d.document.createElement("img")},clipContext:function(n,c){c.save(),c.beginPath(),n.clipTo(c),c.clip()},multiplyTransformMatrices:function(n,c,s){return[n[0]*c[0]+n[2]*c[1],n[1]*c[0]+n[3]*c[1],n[0]*c[2]+n[2]*c[3],n[1]*c[2]+n[3]*c[3],s?0:n[0]*c[4]+n[2]*c[5]+n[4],s?0:n[1]*c[4]+n[3]*c[5]+n[5]]},qrDecompose:function(n){var c=h(n[1],n[0]),s=r(n[0],2)+r(n[1],2),i=e(s),o=(n[0]*n[3]-n[2]*n[1])/i,l=h(n[0]*n[2]+n[1]*n[3],s);return{angle:c/t,scaleX:i,scaleY:o,skewX:l/t,skewY:0,translateX:n[4],translateY:n[5]}},calcRotateMatrix:function(n){if(!n.angle)return d.iMatrix.concat();var c=d.util.degreesToRadians(n.angle),s=d.util.cos(c),i=d.util.sin(c);return[s,i,-i,s,0,0]},calcDimensionsMatrix:function(n){var c=typeof n.scaleX>"u"?1:n.scaleX,s=typeof n.scaleY>"u"?1:n.scaleY,i=[n.flipX?-c:c,0,0,n.flipY?-s:s,0,0],o=d.util.multiplyTransformMatrices,l=d.util.degreesToRadians;return n.skewX&&(i=o(i,[1,0,Math.tan(l(n.skewX)),1],!0)),n.skewY&&(i=o(i,[1,Math.tan(l(n.skewY)),0,1],!0)),i},composeMatrix:function(n){var c=[1,0,0,1,n.translateX||0,n.translateY||0],s=d.util.multiplyTransformMatrices;return n.angle&&(c=s(c,d.util.calcRotateMatrix(n))),(n.scaleX||n.scaleY||n.skewX||n.skewY||n.flipX||n.flipY)&&(c=s(c,d.util.calcDimensionsMatrix(n))),c},customTransformMatrix:function(n,c,s){return d.util.composeMatrix({scaleX:n,scaleY:c,skewX:s})},resetObjectTransform:function(n){n.scaleX=1,n.scaleY=1,n.skewX=0,n.skewY=0,n.flipX=!1,n.flipY=!1,n.rotate(0)},saveObjectTransform:function(n){return{scaleX:n.scaleX,scaleY:n.scaleY,skewX:n.skewX,skewY:n.skewY,angle:n.angle,left:n.left,flipX:n.flipX,flipY:n.flipY,top:n.top}},getFunctionBody:function(n){return(String(n).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},isTransparent:function(n,c,s,i){i>0&&(c>i?c-=i:c=0,s>i?s-=i:s=0);var o=!0,l,f,g=n.getImageData(c,s,i*2||1,i*2||1),m=g.data.length;for(l=3;l<m&&(f=g.data[l],o=f<=0,o!==!1);l+=4);return g=null,o},parsePreserveAspectRatioAttribute:function(n){var c="meet",s="Mid",i="Mid",o=n.split(" "),l;return o&&o.length&&(c=o.pop(),c!=="meet"&&c!=="slice"?(l=c,c="meet"):o.length&&(l=o.pop())),s=l!=="none"?l.slice(1,4):"none",i=l!=="none"?l.slice(5,8):"none",{meetOrSlice:c,alignX:s,alignY:i}},clearFabricFontCache:function(n){n=(n||"").toLowerCase(),n?d.charWidthsCache[n]&&delete d.charWidthsCache[n]:d.charWidthsCache={}},limitDimsByArea:function(n,c){var s=Math.sqrt(c*n),i=Math.floor(c/s);return{x:Math.floor(s),y:i}},capValue:function(n,c,s){return Math.max(n,Math.min(c,s))},findScaleToFit:function(n,c){return Math.min(c.width/n.width,c.height/n.height)},findScaleToCover:function(n,c){return Math.max(c.width/n.width,c.height/n.height)},matrixToSVG:function(n){return"matrix("+n.map(function(c){return d.util.toFixed(c,d.Object.NUM_FRACTION_DIGITS)}).join(" ")+")"}}}(G),function(){var u=Array.prototype.join;function e(a,n,c,s,i,o,l){var f=u.call(arguments);if(d.arcToSegmentsCache[f])return d.arcToSegmentsCache[f];var g=Math.PI,m=l*g/180,v=d.util.sin(m),p=d.util.cos(m),_=0,y=0;c=Math.abs(c),s=Math.abs(s);var S=-p*a*.5-v*n*.5,w=-p*n*.5+v*a*.5,T=c*c,D=s*s,k=w*w,L=S*S,I=T*D-T*k-D*L,X=0;if(I<0){var Y=Math.sqrt(1-I/(T*D));c*=Y,s*=Y}else X=(i===o?-1:1)*Math.sqrt(I/(T*k+D*L));var C=X*c*w/s,P=-X*s*S/c,E=p*C-v*P+a*.5,A=v*C+p*P+n*.5,W=r(1,0,(S-C)/c,(w-P)/s),b=r((S-C)/c,(w-P)/s,(-S-C)/c,(-w-P)/s);o===0&&b>0?b-=2*g:o===1&&b<0&&(b+=2*g);for(var x=Math.ceil(Math.abs(b/g*2)),O=[],F=b/x,j=8/3*Math.sin(F/4)*Math.sin(F/4)/Math.sin(F/2),M=W+F,R=0;R<x;R++)O[R]=h(W,M,p,v,c,s,E,A,j,_,y),_=O[R][4],y=O[R][5],W=M,M+=F;return d.arcToSegmentsCache[f]=O,O}function h(a,n,c,s,i,o,l,f,g,m,v){var p=d.util.cos(a),_=d.util.sin(a),y=d.util.cos(n),S=d.util.sin(n),w=c*i*y-s*o*S+l,T=s*i*y+c*o*S+f,D=m+g*(-c*i*_-s*o*p),k=v+g*(-s*i*_+c*o*p),L=w+g*(c*i*S+s*o*y),I=T+g*(s*i*S-c*o*y);return[D,k,L,I,w,T]}function r(a,n,c,s){var i=Math.atan2(n,a),o=Math.atan2(s,c);return o>=i?o-i:2*Math.PI-(i-o)}d.util.drawArc=function(a,n,c,s){for(var i=s[0],o=s[1],l=s[2],f=s[3],g=s[4],m=s[5],v=s[6],p=[[],[],[],[]],_=e(m-n,v-c,i,o,f,g,l),y=0,S=_.length;y<S;y++)p[y][0]=_[y][0]+n,p[y][1]=_[y][1]+c,p[y][2]=_[y][2]+n,p[y][3]=_[y][3]+c,p[y][4]=_[y][4]+n,p[y][5]=_[y][5]+c,a.bezierCurveTo.apply(a,p[y])},d.util.getBoundsOfArc=function(a,n,c,s,i,o,l,f,g){for(var m=0,v=0,p,_=[],y=e(f-a,g-n,c,s,o,l,i),S=0,w=y.length;S<w;S++)p=t(m,v,y[S][0],y[S][1],y[S][2],y[S][3],y[S][4],y[S][5]),_.push({x:p[0].x+a,y:p[0].y+n}),_.push({x:p[1].x+a,y:p[1].y+n}),m=y[S][4],v=y[S][5];return _};function t(a,n,c,s,i,o,l,f){var g;if(d.cachesBoundsOfCurve&&(g=u.call(arguments),d.boundsOfCurveCache[g]))return d.boundsOfCurveCache[g];var m=Math.sqrt,v=Math.min,p=Math.max,_=Math.abs,y=[],S=[[],[]],w,T,D,k,L,I,X,Y;T=6*a-12*c+6*i,w=-3*a+9*c-9*i+3*l,D=3*c-3*a;for(var C=0;C<2;++C){if(C>0&&(T=6*n-12*s+6*o,w=-3*n+9*s-9*o+3*f,D=3*s-3*n),_(w)<1e-12){if(_(T)<1e-12)continue;k=-D/T,0<k&&k<1&&y.push(k);continue}X=T*T-4*D*w,!(X<0)&&(Y=m(X),L=(-T+Y)/(2*w),0<L&&L<1&&y.push(L),I=(-T-Y)/(2*w),0<I&&I<1&&y.push(I))}for(var P,E,A=y.length,W=A,b;A--;)k=y[A],b=1-k,P=b*b*b*a+3*b*b*k*c+3*b*k*k*i+k*k*k*l,S[0][A]=P,E=b*b*b*n+3*b*b*k*s+3*b*k*k*o+k*k*k*f,S[1][A]=E;S[0][W]=a,S[1][W]=n,S[0][W+1]=l,S[1][W+1]=f;var x=[{x:v.apply(null,S[0]),y:v.apply(null,S[1])},{x:p.apply(null,S[0]),y:p.apply(null,S[1])}];return d.cachesBoundsOfCurve&&(d.boundsOfCurveCache[g]=x),x}d.util.getBoundsOfCurve=t}(),function(){var u=Array.prototype.slice;function e(n,c){for(var s=u.call(arguments,2),i=[],o=0,l=n.length;o<l;o++)i[o]=s.length?n[o][c].apply(n[o],s):n[o][c].call(n[o]);return i}function h(n,c){return a(n,c,function(s,i){return s>=i})}function r(n,c){return a(n,c,function(s,i){return s<i})}function t(n,c){for(var s=n.length;s--;)n[s]=c;return n}function a(n,c,s){if(!(!n||n.length===0)){var i=n.length-1,o=c?n[i][c]:n[i];if(c)for(;i--;)s(n[i][c],o)&&(o=n[i][c]);else for(;i--;)s(n[i],o)&&(o=n[i]);return o}}d.util.array={fill:t,invoke:e,min:r,max:h}}(),function(){function u(h,r,t){if(t)if(!d.isLikelyNode&&r instanceof Element)h=r;else if(r instanceof Array){h=[];for(var a=0,n=r.length;a<n;a++)h[a]=u({},r[a],t)}else if(r&&typeof r=="object")for(var c in r)c==="canvas"?h[c]=u({},r[c]):r.hasOwnProperty(c)&&(h[c]=u({},r[c],t));else h=r;else for(var c in r)h[c]=r[c];return h}function e(h,r){return u({},h,r)}d.util.object={extend:u,clone:e},d.util.object.extend(d.util,d.Observable)}(),function(){function u(a){return a.replace(/-+(.)?/g,function(n,c){return c?c.toUpperCase():""})}function e(a,n){return a.charAt(0).toUpperCase()+(n?a.slice(1):a.slice(1).toLowerCase())}function h(a){return a.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&apos;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function r(a){var n=0,c,s=[];for(n=0,c;n<a.length;n++)(c=t(a,n))!==!1&&s.push(c);return s}function t(a,n){var c=a.charCodeAt(n);if(isNaN(c))return"";if(c<55296||c>57343)return a.charAt(n);if(55296<=c&&c<=56319){if(a.length<=n+1)throw"High surrogate without following low surrogate";var s=a.charCodeAt(n+1);if(56320>s||s>57343)throw"High surrogate without following low surrogate";return a.charAt(n)+a.charAt(n+1)}if(n===0)throw"Low surrogate without preceding high surrogate";var i=a.charCodeAt(n-1);if(55296>i||i>56319)throw"Low surrogate without preceding high surrogate";return!1}d.util.string={camelize:u,capitalize:e,escapeXml:h,graphemeSplit:r}}(),function(){var u=Array.prototype.slice,e=function(){},h=function(){for(var c in{toString:1})if(c==="toString")return!1;return!0}(),r=function(c,s,i){for(var o in s)o in c.prototype&&typeof c.prototype[o]=="function"&&(s[o]+"").indexOf("callSuper")>-1?c.prototype[o]=function(l){return function(){var f=this.constructor.superclass;this.constructor.superclass=i;var g=s[l].apply(this,arguments);if(this.constructor.superclass=f,l!=="initialize")return g}}(o):c.prototype[o]=s[o],h&&(s.toString!==Object.prototype.toString&&(c.prototype.toString=s.toString),s.valueOf!==Object.prototype.valueOf&&(c.prototype.valueOf=s.valueOf))};function t(){}function a(c){for(var s=null,i=this;i.constructor.superclass;){var o=i.constructor.superclass.prototype[c];if(i[c]!==o){s=o;break}i=i.constructor.superclass.prototype}return s?arguments.length>1?s.apply(this,u.call(arguments,1)):s.call(this):console.log("tried to callSuper "+c+", method not found in prototype chain",this)}function n(){var c=null,s=u.call(arguments,0);typeof s[0]=="function"&&(c=s.shift());function i(){this.initialize.apply(this,arguments)}i.superclass=c,i.subclasses=[],c&&(t.prototype=c.prototype,i.prototype=new t,c.subclasses.push(i));for(var o=0,l=s.length;o<l;o++)r(i,s[o],c);return i.prototype.initialize||(i.prototype.initialize=e),i.prototype.constructor=i,i.prototype.callSuper=a,i}d.util.createClass=n}(),function(){var u=!!d.document.createElement("div").attachEvent;d.util.addListener=function(h,r,t,a){h&&h.addEventListener(r,t,u?!1:a)},d.util.removeListener=function(h,r,t,a){h&&h.removeEventListener(r,t,u?!1:a)};function e(h){var r=h.changedTouches;return r&&r[0]?r[0]:h}d.util.getPointer=function(h){var r=h.target,t=d.util.getScrollLeftTop(r),a=e(h);return{x:a.clientX+t.left,y:a.clientY+t.top}}}(),function(){function u(n,c){var s=n.style;if(!s)return n;if(typeof c=="string")return n.style.cssText+=";"+c,c.indexOf("opacity")>-1?a(n,c.match(/opacity:\s*(\d?\.?\d*)/)[1]):n;for(var i in c)if(i==="opacity")a(n,c[i]);else{var o=i==="float"||i==="cssFloat"?typeof s.styleFloat>"u"?"cssFloat":"styleFloat":i;s[o]=c[i]}return n}var e=d.document.createElement("div"),h=typeof e.style.opacity=="string",r=typeof e.style.filter=="string",t=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,a=function(n){return n};h?a=function(n,c){return n.style.opacity=c,n}:r&&(a=function(n,c){var s=n.style;return n.currentStyle&&!n.currentStyle.hasLayout&&(s.zoom=1),t.test(s.filter)?(c=c>=.9999?"":"alpha(opacity="+c*100+")",s.filter=s.filter.replace(t,c)):s.filter+=" alpha(opacity="+c*100+")",n}),d.util.setStyle=u}(),function(){var u=Array.prototype.slice;function e(f){return typeof f=="string"?d.document.getElementById(f):f}var h,r=function(f){return u.call(f,0)};try{h=r(d.document.childNodes)instanceof Array}catch{}h||(r=function(f){for(var g=new Array(f.length),m=f.length;m--;)g[m]=f[m];return g});function t(f,g){var m=d.document.createElement(f);for(var v in g)v==="class"?m.className=g[v]:v==="for"?m.htmlFor=g[v]:m.setAttribute(v,g[v]);return m}function a(f,g){f&&(" "+f.className+" ").indexOf(" "+g+" ")===-1&&(f.className+=(f.className?" ":"")+g)}function n(f,g,m){return typeof g=="string"&&(g=t(g,m)),f.parentNode&&f.parentNode.replaceChild(g,f),g.appendChild(f),g}function c(f){for(var g=0,m=0,v=d.document.documentElement,p=d.document.body||{scrollLeft:0,scrollTop:0};f&&(f.parentNode||f.host)&&(f=f.parentNode||f.host,f===d.document?(g=p.scrollLeft||v.scrollLeft||0,m=p.scrollTop||v.scrollTop||0):(g+=f.scrollLeft||0,m+=f.scrollTop||0),!(f.nodeType===1&&f.style.position==="fixed")););return{left:g,top:m}}function s(f){var g,m=f&&f.ownerDocument,v={left:0,top:0},p={left:0,top:0},_,y={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!m)return p;for(var S in y)p[y[S]]+=parseInt(i(f,S),10)||0;return g=m.documentElement,typeof f.getBoundingClientRect<"u"&&(v=f.getBoundingClientRect()),_=c(f),{left:v.left+_.left-(g.clientLeft||0)+p.left,top:v.top+_.top-(g.clientTop||0)+p.top}}var i;d.document.defaultView&&d.document.defaultView.getComputedStyle?i=function(f,g){var m=d.document.defaultView.getComputedStyle(f,null);return m?m[g]:void 0}:i=function(f,g){var m=f.style[g];return!m&&f.currentStyle&&(m=f.currentStyle[g]),m},function(){var f=d.document.documentElement.style,g="userSelect"in f?"userSelect":"MozUserSelect"in f?"MozUserSelect":"WebkitUserSelect"in f?"WebkitUserSelect":"KhtmlUserSelect"in f?"KhtmlUserSelect":"";function m(p){return typeof p.onselectstart<"u"&&(p.onselectstart=d.util.falseFunction),g?p.style[g]="none":typeof p.unselectable=="string"&&(p.unselectable="on"),p}function v(p){return typeof p.onselectstart<"u"&&(p.onselectstart=null),g?p.style[g]="":typeof p.unselectable=="string"&&(p.unselectable=""),p}d.util.makeElementUnselectable=m,d.util.makeElementSelectable=v}(),function(){function f(g,m){var v=d.document.getElementsByTagName("head")[0],p=d.document.createElement("script"),_=!0;p.onload=p.onreadystatechange=function(y){if(_){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;_=!1,m(y||d.window.event),p=p.onload=p.onreadystatechange=null}},p.src=g,v.appendChild(p)}d.util.getScript=f}();function o(f){var g=d.jsdomImplForWrapper(f);return g._canvas||g._image}function l(f){if(d.isLikelyNode){var g=d.jsdomImplForWrapper(f);g&&(g._image=null,g._canvas=null,g._currentSrc=null,g._attributes=null,g._classList=null)}}d.util.getById=e,d.util.toArray=r,d.util.makeElement=t,d.util.addClass=a,d.util.wrapElement=n,d.util.getScrollLeftTop=c,d.util.getElementOffset=s,d.util.getElementStyle=i,d.util.getNodeCanvas=o,d.util.cleanUpJsdomNode=l}(),function(){function u(r,t){return r+(/\?/.test(r)?"&":"?")+t}function e(){}function h(r,t){t||(t={});var a=t.method?t.method.toUpperCase():"GET",n=t.onComplete||function(){},c=new d.window.XMLHttpRequest,s=t.body||t.parameters;return c.onreadystatechange=function(){c.readyState===4&&(n(c),c.onreadystatechange=e)},a==="GET"&&(s=null,typeof t.parameters=="string"&&(r=u(r,t.parameters))),c.open(a,r,!0),(a==="POST"||a==="PUT")&&c.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),c.send(s),c}d.util.request=h}(),d.log=console.log,d.warn=console.warn,function(){function u(){return!1}function e(c,s,i,o){return-i*Math.cos(c/o*(Math.PI/2))+i+s}function h(c){a(function(s){c||(c={});var i=s||+new Date,o=c.duration||500,l=i+o,f,g=c.onChange||u,m=c.abort||u,v=c.onComplete||u,p=c.easing||e,_="startValue"in c?c.startValue:0,y="endValue"in c?c.endValue:100,S=c.byValue||y-_;c.onStart&&c.onStart(),function w(T){f=T||+new Date;var D=f>l?o:f-i,k=D/o,L=p(D,_,S,o),I=Math.abs((L-_)/S);if(m()){v(y,1,1);return}if(f>l){g(y,1,1),v(y,1,1);return}else g(L,I,k),a(w)}(i)})}var r=d.window.requestAnimationFrame||d.window.webkitRequestAnimationFrame||d.window.mozRequestAnimationFrame||d.window.oRequestAnimationFrame||d.window.msRequestAnimationFrame||function(c){return d.window.setTimeout(c,1e3/60)},t=d.window.cancelAnimationFrame||d.window.clearTimeout;function a(){return r.apply(d.window,arguments)}function n(){return t.apply(d.window,arguments)}d.util.animate=h,d.util.requestAnimFrame=a,d.util.cancelAnimFrame=n}(),function(){function u(h,r,t){var a="rgba("+parseInt(h[0]+t*(r[0]-h[0]),10)+","+parseInt(h[1]+t*(r[1]-h[1]),10)+","+parseInt(h[2]+t*(r[2]-h[2]),10);return a+=","+(h&&r?parseFloat(h[3]+t*(r[3]-h[3])):1),a+=")",a}function e(h,r,t,a){var n=new d.Color(h).getSource(),c=new d.Color(r).getSource();a=a||{},d.util.animate(d.util.object.extend(a,{duration:t||500,startValue:n,endValue:c,byValue:c,easing:function(s,i,o,l){var f=a.colorEasing?a.colorEasing(s,l):1-Math.cos(s/l*(Math.PI/2));return u(i,o,f)}}))}d.util.animateColor=e}(),function(){function u(C,P,E,A){return C<Math.abs(P)?(C=P,A=E/4):P===0&&C===0?A=E/(2*Math.PI)*Math.asin(1):A=E/(2*Math.PI)*Math.asin(P/C),{a:C,c:P,p:E,s:A}}function e(C,P,E){return C.a*Math.pow(2,10*(P-=1))*Math.sin((P*E-C.s)*(2*Math.PI)/C.p)}function h(C,P,E,A){return E*((C=C/A-1)*C*C+1)+P}function r(C,P,E,A){return C/=A/2,C<1?E/2*C*C*C+P:E/2*((C-=2)*C*C+2)+P}function t(C,P,E,A){return E*(C/=A)*C*C*C+P}function a(C,P,E,A){return-E*((C=C/A-1)*C*C*C-1)+P}function n(C,P,E,A){return C/=A/2,C<1?E/2*C*C*C*C+P:-E/2*((C-=2)*C*C*C-2)+P}function c(C,P,E,A){return E*(C/=A)*C*C*C*C+P}function s(C,P,E,A){return E*((C=C/A-1)*C*C*C*C+1)+P}function i(C,P,E,A){return C/=A/2,C<1?E/2*C*C*C*C*C+P:E/2*((C-=2)*C*C*C*C+2)+P}function o(C,P,E,A){return-E*Math.cos(C/A*(Math.PI/2))+E+P}function l(C,P,E,A){return E*Math.sin(C/A*(Math.PI/2))+P}function f(C,P,E,A){return-E/2*(Math.cos(Math.PI*C/A)-1)+P}function g(C,P,E,A){return C===0?P:E*Math.pow(2,10*(C/A-1))+P}function m(C,P,E,A){return C===A?P+E:E*(-Math.pow(2,-10*C/A)+1)+P}function v(C,P,E,A){return C===0?P:C===A?P+E:(C/=A/2,C<1?E/2*Math.pow(2,10*(C-1))+P:E/2*(-Math.pow(2,-10*--C)+2)+P)}function p(C,P,E,A){return-E*(Math.sqrt(1-(C/=A)*C)-1)+P}function _(C,P,E,A){return E*Math.sqrt(1-(C=C/A-1)*C)+P}function y(C,P,E,A){return C/=A/2,C<1?-E/2*(Math.sqrt(1-C*C)-1)+P:E/2*(Math.sqrt(1-(C-=2)*C)+1)+P}function S(C,P,E,A){var W=1.70158,b=0,x=E;if(C===0)return P;if(C/=A,C===1)return P+E;b||(b=A*.3);var O=u(x,E,b,W);return-e(O,C,A)+P}function w(C,P,E,A){var W=1.70158,b=0,x=E;if(C===0)return P;if(C/=A,C===1)return P+E;b||(b=A*.3);var O=u(x,E,b,W);return O.a*Math.pow(2,-10*C)*Math.sin((C*A-O.s)*(2*Math.PI)/O.p)+O.c+P}function T(C,P,E,A){var W=1.70158,b=0,x=E;if(C===0)return P;if(C/=A/2,C===2)return P+E;b||(b=A*(.3*1.5));var O=u(x,E,b,W);return C<1?-.5*e(O,C,A)+P:O.a*Math.pow(2,-10*(C-=1))*Math.sin((C*A-O.s)*(2*Math.PI)/O.p)*.5+O.c+P}function D(C,P,E,A,W){return W===void 0&&(W=1.70158),E*(C/=A)*C*((W+1)*C-W)+P}function k(C,P,E,A,W){return W===void 0&&(W=1.70158),E*((C=C/A-1)*C*((W+1)*C+W)+1)+P}function L(C,P,E,A,W){return W===void 0&&(W=1.70158),C/=A/2,C<1?E/2*(C*C*(((W*=1.525)+1)*C-W))+P:E/2*((C-=2)*C*(((W*=1.525)+1)*C+W)+2)+P}function I(C,P,E,A){return E-X(A-C,0,E,A)+P}function X(C,P,E,A){return(C/=A)<1/2.75?E*(7.5625*C*C)+P:C<2/2.75?E*(7.5625*(C-=1.5/2.75)*C+.75)+P:C<2.5/2.75?E*(7.5625*(C-=2.25/2.75)*C+.9375)+P:E*(7.5625*(C-=2.625/2.75)*C+.984375)+P}function Y(C,P,E,A){return C<A/2?I(C*2,0,E,A)*.5+P:X(C*2-A,0,E,A)*.5+E*.5+P}d.util.ease={easeInQuad:function(C,P,E,A){return E*(C/=A)*C+P},easeOutQuad:function(C,P,E,A){return-E*(C/=A)*(C-2)+P},easeInOutQuad:function(C,P,E,A){return C/=A/2,C<1?E/2*C*C+P:-E/2*(--C*(C-2)-1)+P},easeInCubic:function(C,P,E,A){return E*(C/=A)*C*C+P},easeOutCubic:h,easeInOutCubic:r,easeInQuart:t,easeOutQuart:a,easeInOutQuart:n,easeInQuint:c,easeOutQuint:s,easeInOutQuint:i,easeInSine:o,easeOutSine:l,easeInOutSine:f,easeInExpo:g,easeOutExpo:m,easeInOutExpo:v,easeInCirc:p,easeOutCirc:_,easeInOutCirc:y,easeInElastic:S,easeOutElastic:w,easeInOutElastic:T,easeInBack:D,easeOutBack:k,easeInOutBack:L,easeInBounce:I,easeOutBounce:X,easeInOutBounce:Y}}(),function(u){var e=u.fabric||(u.fabric={}),h=e.util.object.extend,r=e.util.object.clone,t=e.util.toFixed,a=e.util.parseUnit,n=e.util.multiplyTransformMatrices,c=["path","circle","polygon","polyline","ellipse","rect","line","image","text"],s=["symbol","image","marker","pattern","view","svg"],i=["pattern","defs","symbol","metadata","clipPath","mask","desc"],o=["symbol","g","a","svg","clipPath","defs"],l={cx:"left",x:"left",r:"radius",cy:"top",y:"top",display:"visible",visibility:"visible",transform:"transformMatrix","fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","letter-spacing":"charSpacing","paint-order":"paintFirst","stroke-dasharray":"strokeDashArray","stroke-dashoffset":"strokeDashOffset","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration","text-anchor":"textAnchor",opacity:"opacity","clip-path":"clipPath","clip-rule":"clipRule","vector-effect":"strokeUniform"},f={stroke:"strokeOpacity",fill:"fillOpacity"},g="font-size",m="clip-path";e.svgValidTagNamesRegEx=_(c),e.svgViewBoxElementsRegEx=_(s),e.svgInvalidAncestorsRegEx=_(i),e.svgValidParentsRegEx=_(o),e.cssRules={},e.gradientDefs={},e.clipPaths={};function v(b){return b in l?l[b]:b}function p(b,x,O,F){var j=Object.prototype.toString.call(x)==="[object Array]",M;if((b==="fill"||b==="stroke")&&x==="none")x="";else if(b==="vector-effect")x=x==="non-scaling-stroke";else if(b==="strokeDashArray")x==="none"?x=null:x=x.replace(/,/g," ").split(/\s+/).map(parseFloat);else if(b==="transformMatrix")O&&O.transformMatrix?x=n(O.transformMatrix,e.parseTransformAttribute(x)):x=e.parseTransformAttribute(x);else if(b==="visible")x=x!=="none"&&x!=="hidden",O&&O.visible===!1&&(x=!1);else if(b==="opacity")x=parseFloat(x),O&&typeof O.opacity<"u"&&(x*=O.opacity);else if(b==="textAnchor")x=x==="start"?"left":x==="end"?"right":"center";else if(b==="charSpacing")M=a(x,F)/F*1e3;else if(b==="paintFirst"){var R=x.indexOf("fill"),B=x.indexOf("stroke"),x="fill";(R>-1&&B>-1&&B<R||R===-1&&B>-1)&&(x="stroke")}else{if(b==="href"||b==="xlink:href")return x;M=j?x.map(a):a(x,F)}return!j&&isNaN(M)?x:M}function _(b){return new RegExp("^("+b.join("|")+")\\b","i")}function y(b){for(var x in f)if(!(typeof b[f[x]]>"u"||b[x]==="")){if(typeof b[x]>"u"){if(!e.Object.prototype[x])continue;b[x]=e.Object.prototype[x]}if(b[x].indexOf("url(")!==0){var O=new e.Color(b[x]);b[x]=O.setAlpha(t(O.getAlpha()*b[f[x]],2)).toRgba()}}return b}function S(b,x){var O,F=[],j,M,R;for(M=0,R=x.length;M<R;M++)O=x[M],j=b.getElementsByTagName(O),F=F.concat(Array.prototype.slice.call(j));return F}e.parseTransformAttribute=function(){function b(z,q){var Z=e.util.cos(q[0]),tt=e.util.sin(q[0]),st=0,nt=0;q.length===3&&(st=q[1],nt=q[2]),z[0]=Z,z[1]=tt,z[2]=-tt,z[3]=Z,z[4]=st-(Z*st-tt*nt),z[5]=nt-(tt*st+Z*nt)}function x(z,q){var Z=q[0],tt=q.length===2?q[1]:q[0];z[0]=Z,z[3]=tt}function O(z,q,Z){z[Z]=Math.tan(e.util.degreesToRadians(q[0]))}function F(z,q){z[4]=q[0],q.length===2&&(z[5]=q[1])}var j=e.iMatrix,M=e.reNum,R="(?:\\s+,?\\s*|,\\s*)",B="(?:(skewX)\\s*\\(\\s*("+M+")\\s*\\))",U="(?:(skewY)\\s*\\(\\s*("+M+")\\s*\\))",H="(?:(rotate)\\s*\\(\\s*("+M+")(?:"+R+"("+M+")"+R+"("+M+"))?\\s*\\))",$="(?:(scale)\\s*\\(\\s*("+M+")(?:"+R+"("+M+"))?\\s*\\))",N="(?:(translate)\\s*\\(\\s*("+M+")(?:"+R+"("+M+"))?\\s*\\))",V="(?:(matrix)\\s*\\(\\s*("+M+")"+R+"("+M+")"+R+"("+M+")"+R+"("+M+")"+R+"("+M+")"+R+"("+M+")\\s*\\))",K="(?:"+V+"|"+N+"|"+$+"|"+H+"|"+B+"|"+U+")",J="(?:"+K+"(?:"+R+"*"+K+")*)",Q="^\\s*(?:"+J+"?)\\s*$",it=new RegExp(Q),ot=new RegExp(K,"g");return function(z){var q=j.concat(),Z=[];if(!z||z&&!it.test(z))return q;z.replace(ot,function(st){var nt=new RegExp(K).exec(st).filter(function(_t){return!!_t}),pt=nt[1],rt=nt.slice(2).map(parseFloat);switch(pt){case"translate":F(q,rt);break;case"rotate":rt[0]=e.util.degreesToRadians(rt[0]),b(q,rt);break;case"scale":x(q,rt);break;case"skewX":O(q,rt,2);break;case"skewY":O(q,rt,1);break;case"matrix":q=rt;break}Z.push(q.concat()),q=j.concat()});for(var tt=Z[0];Z.length>1;)Z.shift(),tt=e.util.multiplyTransformMatrices(tt,Z[0]);return tt}}();function w(b,x){var O,F;b.replace(/;\s*$/,"").split(";").forEach(function(j){var M=j.split(":");O=M[0].trim().toLowerCase(),F=M[1].trim(),x[O]=F})}function T(b,x){var O,F;for(var j in b)typeof b[j]>"u"||(O=j.toLowerCase(),F=b[j],x[O]=F)}function D(b,x){var O={};for(var F in e.cssRules[x])if(k(b,F.split(" ")))for(var j in e.cssRules[x][F])O[j]=e.cssRules[x][F][j];return O}function k(b,x){var O,F=!0;return O=I(b,x.pop()),O&&x.length&&(F=L(b,x)),O&&F&&x.length===0}function L(b,x){for(var O,F=!0;b.parentNode&&b.parentNode.nodeType===1&&x.length;)F&&(O=x.pop()),b=b.parentNode,F=I(b,O);return x.length===0}function I(b,x){var O=b.nodeName,F=b.getAttribute("class"),j=b.getAttribute("id"),M,R;if(M=new RegExp("^"+O,"i"),x=x.replace(M,""),j&&x.length&&(M=new RegExp("#"+j+"(?![a-zA-Z\\-]+)","i"),x=x.replace(M,"")),F&&x.length)for(F=F.split(" "),R=F.length;R--;)M=new RegExp("\\."+F[R]+"(?![a-zA-Z\\-]+)","i"),x=x.replace(M,"");return x.length===0}function X(b,x){var O;if(b.getElementById&&(O=b.getElementById(x)),O)return O;var F,j,M,R=b.getElementsByTagName("*");for(j=0,M=R.length;j<M;j++)if(F=R[j],x===F.getAttribute("id"))return F}function Y(b){for(var x=S(b,["use","svg:use"]),O=0;x.length&&O<x.length;){var F=x[O],j=(F.getAttribute("xlink:href")||F.getAttribute("href")).substr(1),M=F.getAttribute("x")||0,R=F.getAttribute("y")||0,B=X(b,j).cloneNode(!0),U=(B.getAttribute("transform")||"")+" translate("+M+", "+R+")",H,$=x.length,N,V,K,J,Q=e.svgNS;if(P(B),/^svg$/i.test(B.nodeName)){var it=B.ownerDocument.createElementNS(Q,"g");for(V=0,K=B.attributes,J=K.length;V<J;V++)N=K.item(V),it.setAttributeNS(Q,N.nodeName,N.nodeValue);for(;B.firstChild;)it.appendChild(B.firstChild);B=it}for(V=0,K=F.attributes,J=K.length;V<J;V++)N=K.item(V),!(N.nodeName==="x"||N.nodeName==="y"||N.nodeName==="xlink:href"||N.nodeName==="href")&&(N.nodeName==="transform"?U=N.nodeValue+" "+U:B.setAttribute(N.nodeName,N.nodeValue));B.setAttribute("transform",U),B.setAttribute("instantiated_by_use","1"),B.removeAttribute("id"),H=F.parentNode,H.replaceChild(B,F),x.length===$&&O++}}var C=new RegExp("^\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*$");function P(b){var x=b.getAttribute("viewBox"),O=1,F=1,j=0,M=0,R,B,U,H,$=b.getAttribute("width"),N=b.getAttribute("height"),V=b.getAttribute("x")||0,K=b.getAttribute("y")||0,J=b.getAttribute("preserveAspectRatio")||"",Q=!x||!e.svgViewBoxElementsRegEx.test(b.nodeName)||!(x=x.match(C)),it=!$||!N||$==="100%"||N==="100%",ot=Q&&it,z={},q="",Z=0,tt=0;if(z.width=0,z.height=0,z.toBeParsed=ot,ot)return z;if(Q)return z.width=a($),z.height=a(N),z;if(j=-parseFloat(x[1]),M=-parseFloat(x[2]),R=parseFloat(x[3]),B=parseFloat(x[4]),z.minX=j,z.minY=M,z.viewBoxWidth=R,z.viewBoxHeight=B,it?(z.width=R,z.height=B):(z.width=a($),z.height=a(N),O=z.width/R,F=z.height/B),J=e.util.parsePreserveAspectRatioAttribute(J),J.alignX!=="none"&&(J.meetOrSlice==="meet"&&(F=O=O>F?F:O),J.meetOrSlice==="slice"&&(F=O=O>F?O:F),Z=z.width-R*O,tt=z.height-B*O,J.alignX==="Mid"&&(Z/=2),J.alignY==="Mid"&&(tt/=2),J.alignX==="Min"&&(Z=0),J.alignY==="Min"&&(tt=0)),O===1&&F===1&&j===0&&M===0&&V===0&&K===0)return z;if((V||K)&&(q=" translate("+a(V)+" "+a(K)+") "),U=q+" matrix("+O+" 0 0 "+F+" "+(j*O+Z)+" "+(M*F+tt)+") ",z.viewboxTransform=e.parseTransformAttribute(U),b.nodeName==="svg"){for(H=b.ownerDocument.createElementNS(e.svgNS,"g");b.firstChild;)H.appendChild(b.firstChild);b.appendChild(H)}else H=b,U=H.getAttribute("transform")+U;return H.setAttribute("transform",U),z}function E(b,x){for(;b&&(b=b.parentNode);)if(b.nodeName&&x.test(b.nodeName.replace("svg:",""))&&!b.getAttribute("instantiated_by_use"))return!0;return!1}e.parseSVGDocument=function(b,x,O,F){if(b){Y(b);var j=e.Object.__uid++,M,R,B=P(b),U=e.util.toArray(b.getElementsByTagName("*"));if(B.crossOrigin=F&&F.crossOrigin,B.svgUid=j,U.length===0&&e.isLikelyNode){U=b.selectNodes('//*[name(.)!="svg"]');var H=[];for(M=0,R=U.length;M<R;M++)H[M]=U[M];U=H}var $=U.filter(function(V){return P(V),e.svgValidTagNamesRegEx.test(V.nodeName.replace("svg:",""))&&!E(V,e.svgInvalidAncestorsRegEx)});if(!$||$&&!$.length){x&&x([],{});return}var N={};U.filter(function(V){return V.nodeName.replace("svg:","")==="clipPath"}).forEach(function(V){var K=V.getAttribute("id");N[K]=e.util.toArray(V.getElementsByTagName("*")).filter(function(J){return e.svgValidTagNamesRegEx.test(J.nodeName.replace("svg:",""))})}),e.gradientDefs[j]=e.getGradientDefs(b),e.cssRules[j]=e.getCSSRules(b),e.clipPaths[j]=N,e.parseElements($,function(V,K){x&&(x(V,B,K,U),delete e.gradientDefs[j],delete e.cssRules[j],delete e.clipPaths[j])},r(B),O,F)}};function A(b,x){var O=["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"],F="xlink:href",j=x.getAttribute(F).substr(1),M=X(b,j);if(M&&M.getAttribute(F)&&A(b,M),O.forEach(function(B){M&&!x.hasAttribute(B)&&M.hasAttribute(B)&&x.setAttribute(B,M.getAttribute(B))}),!x.children.length)for(var R=M.cloneNode(!0);R.firstChild;)x.appendChild(R.firstChild);x.removeAttribute(F)}var W=new RegExp("(normal|italic)?\\s*(normal|small-caps)?\\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*("+e.reNum+"(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|"+e.reNum+"))?\\s+(.*)");h(e,{parseFontDeclaration:function(b,x){var O=b.match(W);if(O){var F=O[1],j=O[3],M=O[4],R=O[5],B=O[6];F&&(x.fontStyle=F),j&&(x.fontWeight=isNaN(parseFloat(j))?j:parseFloat(j)),M&&(x.fontSize=a(M)),B&&(x.fontFamily=B),R&&(x.lineHeight=R==="normal"?1:R)}},getGradientDefs:function(b){var x=["linearGradient","radialGradient","svg:linearGradient","svg:radialGradient"],O=S(b,x),F,j=0,M={};for(j=O.length;j--;)F=O[j],F.getAttribute("xlink:href")&&A(b,F),M[F.getAttribute("id")]=F;return M},parseAttributes:function(b,x,O){if(b){var F,j={},M,R;typeof O>"u"&&(O=b.getAttribute("svgUid")),b.parentNode&&e.svgValidParentsRegEx.test(b.parentNode.nodeName)&&(j=e.parseAttributes(b.parentNode,x,O));var B=x.reduce(function(J,Q){return F=b.getAttribute(Q),F&&(J[Q]=F),J},{}),U=h(D(b,O),e.parseStyleAttribute(b));B=h(B,U),U[m]&&b.setAttribute(m,U[m]),M=R=j.fontSize||e.Text.DEFAULT_SVG_FONT_SIZE,B[g]&&(B[g]=M=a(B[g],R));var H,$,N={};for(var V in B)H=v(V),$=p(H,B[V],j,M),N[H]=$;N&&N.font&&e.parseFontDeclaration(N.font,N);var K=h(j,N);return e.svgValidParentsRegEx.test(b.nodeName)?K:y(K)}},parseElements:function(b,x,O,F,j){new e.ElementsParser(b,x,O,F,j).parse()},parseStyleAttribute:function(b){var x={},O=b.getAttribute("style");return O&&(typeof O=="string"?w(O,x):T(O,x)),x},parsePointsAttribute:function(b){if(!b)return null;b=b.replace(/,/g," ").trim(),b=b.split(/\s+/);var x=[],O,F;for(O=0,F=b.length;O<F;O+=2)x.push({x:parseFloat(b[O]),y:parseFloat(b[O+1])});return x},getCSSRules:function(b){var x=b.getElementsByTagName("style"),O,F,j={},M;for(O=0,F=x.length;O<F;O++){var R=x[O].textContent||"";R=R.replace(/\/\*[\s\S]*?\*\//g,""),R.trim()!==""&&(M=R.match(/[^{]*\{[\s\S]*?\}/g),M=M.map(function(B){return B.trim()}),M.forEach(function(B){var U=B.match(/([\s\S]*?)\s*\{([^}]*)\}/),H={},$=U[2].trim(),N=$.replace(/;$/,"").split(/\s*;\s*/);for(O=0,F=N.length;O<F;O++){var V=N[O].split(/\s*:\s*/),K=V[0],J=V[1];H[K]=J}B=U[1],B.split(",").forEach(function(Q){Q=Q.replace(/^svg/i,"").trim(),Q!==""&&(j[Q]?e.util.object.extend(j[Q],H):j[Q]=e.util.object.clone(H))})}))}return j},loadSVGFromURL:function(b,x,O,F){b=b.replace(/^\n\s*/,"").trim(),new e.util.request(b,{method:"get",onComplete:j});function j(M){var R=M.responseXML;if(R&&!R.documentElement&&e.window.ActiveXObject&&M.responseText&&(R=new ActiveXObject("Microsoft.XMLDOM"),R.async="false",R.loadXML(M.responseText.replace(/<!DOCTYPE[\s\S]*?(\[[\s\S]*\])*?>/i,""))),!R||!R.documentElement)return x&&x(null),!1;e.parseSVGDocument(R.documentElement,function(B,U,H,$){x&&x(B,U,H,$)},O,F)}},loadSVGFromString:function(b,x,O,F){b=b.trim();var j;if(typeof e.window.DOMParser<"u"){var M=new e.window.DOMParser;M&&M.parseFromString&&(j=M.parseFromString(b,"text/xml"))}else e.window.ActiveXObject&&(j=new ActiveXObject("Microsoft.XMLDOM"),j.async="false",j.loadXML(b.replace(/<!DOCTYPE[\s\S]*?(\[[\s\S]*\])*?>/i,"")));e.parseSVGDocument(j.documentElement,function(R,B,U,H){x(R,B,U,H)},O,F)}})}(G),d.ElementsParser=function(u,e,h,r,t,a){this.elements=u,this.callback=e,this.options=h,this.reviver=r,this.svgUid=h&&h.svgUid||0,this.parsingOptions=t,this.regexUrl=/^url\(['"]?#([^'"]+)['"]?\)/g,this.doc=a},function(u){u.parse=function(){this.instances=new Array(this.elements.length),this.numElements=this.elements.length,this.createObjects()},u.createObjects=function(){var e=this;this.elements.forEach(function(h,r){h.setAttribute("svgUid",e.svgUid),e.createObject(h,r)})},u.findTag=function(e){return d[d.util.string.capitalize(e.tagName.replace("svg:",""))]},u.createObject=function(e,h){var r=this.findTag(e);if(r&&r.fromElement)try{r.fromElement(e,this.createCallback(h,e),this.options)}catch(t){d.log(t)}else this.checkIfDone()},u.createCallback=function(e,h){var r=this;return function(t){var a;r.resolveGradient(t,h,"fill"),r.resolveGradient(t,h,"stroke"),t instanceof d.Image&&t._originalElement&&(a=t.parsePreserveAspectRatioAttribute(h)),t._removeTransformMatrix(a),r.resolveClipPath(t,h),r.reviver&&r.reviver(h,t),r.instances[e]=t,r.checkIfDone()}},u.extractPropertyDefinition=function(e,h,r){var t=e[h],a=this.regexUrl;if(a.test(t)){a.lastIndex=0;var n=a.exec(t)[1];return a.lastIndex=0,d[r][this.svgUid][n]}},u.resolveGradient=function(e,h,r){var t=this.extractPropertyDefinition(e,r,"gradientDefs");if(t){var a=h.getAttribute(r+"-opacity"),n=d.Gradient.fromElement(t,e,a,this.options);e.set(r,n)}},u.createClipPathCallback=function(e,h){return function(r){r._removeTransformMatrix(),r.fillRule=r.clipRule,h.push(r)}},u.resolveClipPath=function(e,h){var r=this.extractPropertyDefinition(e,"clipPath","clipPaths"),t,a,n,c,s,i;if(r){c=[],n=d.util.invertTransform(e.calcTransformMatrix());for(var o=r[0].parentNode,l=h;l.parentNode&&l.getAttribute("clip-path")!==e.clipPath;)l=l.parentNode;l.parentNode.appendChild(o);for(var f=0;f<r.length;f++)t=r[f],a=this.findTag(t),a.fromElement(t,this.createClipPathCallback(e,c),this.options);c.length===1?r=c[0]:r=new d.Group(c),s=d.util.multiplyTransformMatrices(n,r.calcTransformMatrix()),r.clipPath&&this.resolveClipPath(r,l);var i=d.util.qrDecompose(s);r.flipX=!1,r.flipY=!1,r.set("scaleX",i.scaleX),r.set("scaleY",i.scaleY),r.angle=i.angle,r.skewX=i.skewX,r.skewY=0,r.setPositionByOrigin({x:i.translateX,y:i.translateY},"center","center"),e.clipPath=r}else delete e.clipPath},u.checkIfDone=function(){--this.numElements===0&&(this.instances=this.instances.filter(function(e){return e!=null}),this.callback(this.instances,this.elements))}}(d.ElementsParser.prototype),function(u){var e=u.fabric||(u.fabric={});if(e.Point){e.warn("fabric.Point is already defined");return}e.Point=h;function h(r,t){this.x=r,this.y=t}h.prototype={type:"point",constructor:h,add:function(r){return new h(this.x+r.x,this.y+r.y)},addEquals:function(r){return this.x+=r.x,this.y+=r.y,this},scalarAdd:function(r){return new h(this.x+r,this.y+r)},scalarAddEquals:function(r){return this.x+=r,this.y+=r,this},subtract:function(r){return new h(this.x-r.x,this.y-r.y)},subtractEquals:function(r){return this.x-=r.x,this.y-=r.y,this},scalarSubtract:function(r){return new h(this.x-r,this.y-r)},scalarSubtractEquals:function(r){return this.x-=r,this.y-=r,this},multiply:function(r){return new h(this.x*r,this.y*r)},multiplyEquals:function(r){return this.x*=r,this.y*=r,this},divide:function(r){return new h(this.x/r,this.y/r)},divideEquals:function(r){return this.x/=r,this.y/=r,this},eq:function(r){return this.x===r.x&&this.y===r.y},lt:function(r){return this.x<r.x&&this.y<r.y},lte:function(r){return this.x<=r.x&&this.y<=r.y},gt:function(r){return this.x>r.x&&this.y>r.y},gte:function(r){return this.x>=r.x&&this.y>=r.y},lerp:function(r,t){return typeof t>"u"&&(t=.5),t=Math.max(Math.min(1,t),0),new h(this.x+(r.x-this.x)*t,this.y+(r.y-this.y)*t)},distanceFrom:function(r){var t=this.x-r.x,a=this.y-r.y;return Math.sqrt(t*t+a*a)},midPointFrom:function(r){return this.lerp(r)},min:function(r){return new h(Math.min(this.x,r.x),Math.min(this.y,r.y))},max:function(r){return new h(Math.max(this.x,r.x),Math.max(this.y,r.y))},toString:function(){return this.x+","+this.y},setXY:function(r,t){return this.x=r,this.y=t,this},setX:function(r){return this.x=r,this},setY:function(r){return this.y=r,this},setFromPoint:function(r){return this.x=r.x,this.y=r.y,this},swap:function(r){var t=this.x,a=this.y;this.x=r.x,this.y=r.y,r.x=t,r.y=a},clone:function(){return new h(this.x,this.y)}}}(G),function(u){var e=u.fabric||(u.fabric={});if(e.Intersection){e.warn("fabric.Intersection is already defined");return}function h(r){this.status=r,this.points=[]}e.Intersection=h,e.Intersection.prototype={constructor:h,appendPoint:function(r){return this.points.push(r),this},appendPoints:function(r){return this.points=this.points.concat(r),this}},e.Intersection.intersectLineLine=function(r,t,a,n){var c,s=(n.x-a.x)*(r.y-a.y)-(n.y-a.y)*(r.x-a.x),i=(t.x-r.x)*(r.y-a.y)-(t.y-r.y)*(r.x-a.x),o=(n.y-a.y)*(t.x-r.x)-(n.x-a.x)*(t.y-r.y);if(o!==0){var l=s/o,f=i/o;0<=l&&l<=1&&0<=f&&f<=1?(c=new h("Intersection"),c.appendPoint(new e.Point(r.x+l*(t.x-r.x),r.y+l*(t.y-r.y)))):c=new h}else s===0||i===0?c=new h("Coincident"):c=new h("Parallel");return c},e.Intersection.intersectLinePolygon=function(r,t,a){var n=new h,c=a.length,s,i,o,l;for(l=0;l<c;l++)s=a[l],i=a[(l+1)%c],o=h.intersectLineLine(r,t,s,i),n.appendPoints(o.points);return n.points.length>0&&(n.status="Intersection"),n},e.Intersection.intersectPolygonPolygon=function(r,t){var a=new h,n=r.length,c;for(c=0;c<n;c++){var s=r[c],i=r[(c+1)%n],o=h.intersectLinePolygon(s,i,t);a.appendPoints(o.points)}return a.points.length>0&&(a.status="Intersection"),a},e.Intersection.intersectPolygonRectangle=function(r,t,a){var n=t.min(a),c=t.max(a),s=new e.Point(c.x,n.y),i=new e.Point(n.x,c.y),o=h.intersectLinePolygon(n,s,r),l=h.intersectLinePolygon(s,c,r),f=h.intersectLinePolygon(c,i,r),g=h.intersectLinePolygon(i,n,r),m=new h;return m.appendPoints(o.points),m.appendPoints(l.points),m.appendPoints(f.points),m.appendPoints(g.points),m.points.length>0&&(m.status="Intersection"),m}}(G),function(u){var e=u.fabric||(u.fabric={});if(e.Color){e.warn("fabric.Color is already defined.");return}function h(t){t?this._tryParsingColor(t):this.setSource([0,0,0,1])}e.Color=h,e.Color.prototype={_tryParsingColor:function(t){var a;t in h.colorNameMap&&(t=h.colorNameMap[t]),t==="transparent"&&(a=[255,255,255,0]),a||(a=h.sourceFromHex(t)),a||(a=h.sourceFromRgb(t)),a||(a=h.sourceFromHsl(t)),a||(a=[0,0,0,1]),a&&this.setSource(a)},_rgbToHsl:function(t,a,n){t/=255,a/=255,n/=255;var c,s,i,o=e.util.array.max([t,a,n]),l=e.util.array.min([t,a,n]);if(i=(o+l)/2,o===l)c=s=0;else{var f=o-l;switch(s=i>.5?f/(2-o-l):f/(o+l),o){case t:c=(a-n)/f+(a<n?6:0);break;case a:c=(n-t)/f+2;break;case n:c=(t-a)/f+4;break}c/=6}return[Math.round(c*360),Math.round(s*100),Math.round(i*100)]},getSource:function(){return this._source},setSource:function(t){this._source=t},toRgb:function(){var t=this.getSource();return"rgb("+t[0]+","+t[1]+","+t[2]+")"},toRgba:function(){var t=this.getSource();return"rgba("+t[0]+","+t[1]+","+t[2]+","+t[3]+")"},toHsl:function(){var t=this.getSource(),a=this._rgbToHsl(t[0],t[1],t[2]);return"hsl("+a[0]+","+a[1]+"%,"+a[2]+"%)"},toHsla:function(){var t=this.getSource(),a=this._rgbToHsl(t[0],t[1],t[2]);return"hsla("+a[0]+","+a[1]+"%,"+a[2]+"%,"+t[3]+")"},toHex:function(){var t=this.getSource(),a,n,c;return a=t[0].toString(16),a=a.length===1?"0"+a:a,n=t[1].toString(16),n=n.length===1?"0"+n:n,c=t[2].toString(16),c=c.length===1?"0"+c:c,a.toUpperCase()+n.toUpperCase()+c.toUpperCase()},toHexa:function(){var t=this.getSource(),a;return a=Math.round(t[3]*255),a=a.toString(16),a=a.length===1?"0"+a:a,this.toHex()+a.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(t){var a=this.getSource();return a[3]=t,this.setSource(a),this},toGrayscale:function(){var t=this.getSource(),a=parseInt((t[0]*.3+t[1]*.59+t[2]*.11).toFixed(0),10),n=t[3];return this.setSource([a,a,a,n]),this},toBlackWhite:function(t){var a=this.getSource(),n=(a[0]*.3+a[1]*.59+a[2]*.11).toFixed(0),c=a[3];return t=t||127,n=Number(n)<Number(t)?0:255,this.setSource([n,n,n,c]),this},overlayWith:function(t){t instanceof h||(t=new h(t));var a=[],n=this.getAlpha(),c=.5,s=this.getSource(),i=t.getSource(),o;for(o=0;o<3;o++)a.push(Math.round(s[o]*(1-c)+i[o]*c));return a[3]=n,this.setSource(a),this}},e.Color.reRGBa=/^rgba?\(\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*(?:\s*,\s*((?:\d*\.?\d+)?)\s*)?\)$/i,e.Color.reHSLa=/^hsla?\(\s*(\d{1,3})\s*,\s*(\d{1,3}\%)\s*,\s*(\d{1,3}\%)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/i,e.Color.reHex=/^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i,e.Color.colorNameMap={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#00FFFF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blue:"#0000FF",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgrey:"#A9A9A9",darkgreen:"#006400",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#FF00FF",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgrey:"#D3D3D3",lightgreen:"#90EE90",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#00FF00",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",rebeccapurple:"#663399",red:"#FF0000",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",white:"#FFFFFF",whitesmoke:"#F5F5F5",yellow:"#FFFF00",yellowgreen:"#9ACD32"};function r(t,a,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+(a-t)*6*n:n<1/2?a:n<2/3?t+(a-t)*(2/3-n)*6:t}e.Color.fromRgb=function(t){return h.fromSource(h.sourceFromRgb(t))},e.Color.sourceFromRgb=function(t){var a=t.match(h.reRGBa);if(a){var n=parseInt(a[1],10)/(/%$/.test(a[1])?100:1)*(/%$/.test(a[1])?255:1),c=parseInt(a[2],10)/(/%$/.test(a[2])?100:1)*(/%$/.test(a[2])?255:1),s=parseInt(a[3],10)/(/%$/.test(a[3])?100:1)*(/%$/.test(a[3])?255:1);return[parseInt(n,10),parseInt(c,10),parseInt(s,10),a[4]?parseFloat(a[4]):1]}},e.Color.fromRgba=h.fromRgb,e.Color.fromHsl=function(t){return h.fromSource(h.sourceFromHsl(t))},e.Color.sourceFromHsl=function(t){var a=t.match(h.reHSLa);if(a){var n=(parseFloat(a[1])%360+360)%360/360,c=parseFloat(a[2])/(/%$/.test(a[2])?100:1),s=parseFloat(a[3])/(/%$/.test(a[3])?100:1),i,o,l;if(c===0)i=o=l=s;else{var f=s<=.5?s*(c+1):s+c-s*c,g=s*2-f;i=r(g,f,n+1/3),o=r(g,f,n),l=r(g,f,n-1/3)}return[Math.round(i*255),Math.round(o*255),Math.round(l*255),a[4]?parseFloat(a[4]):1]}},e.Color.fromHsla=h.fromHsl,e.Color.fromHex=function(t){return h.fromSource(h.sourceFromHex(t))},e.Color.sourceFromHex=function(t){if(t.match(h.reHex)){var a=t.slice(t.indexOf("#")+1),n=a.length===3||a.length===4,c=a.length===8||a.length===4,s=n?a.charAt(0)+a.charAt(0):a.substring(0,2),i=n?a.charAt(1)+a.charAt(1):a.substring(2,4),o=n?a.charAt(2)+a.charAt(2):a.substring(4,6),l=c?n?a.charAt(3)+a.charAt(3):a.substring(6,8):"FF";return[parseInt(s,16),parseInt(i,16),parseInt(o,16),parseFloat((parseInt(l,16)/255).toFixed(2))]}},e.Color.fromSource=function(t){var a=new h;return a.setSource(t),a}}(G),function(){function u(a,n){var c=a.getAttribute("style"),s=a.getAttribute("offset")||0,i,o,l,f;if(s=parseFloat(s)/(/%$/.test(s)?100:1),s=s<0?0:s>1?1:s,c){var g=c.split(/\s*;\s*/);for(g[g.length-1]===""&&g.pop(),f=g.length;f--;){var m=g[f].split(/\s*:\s*/),v=m[0].trim(),p=m[1].trim();v==="stop-color"?i=p:v==="stop-opacity"&&(l=p)}}return i||(i=a.getAttribute("stop-color")||"rgb(0,0,0)"),l||(l=a.getAttribute("stop-opacity")),i=new d.Color(i),o=i.getAlpha(),l=isNaN(parseFloat(l))?1:parseFloat(l),l*=o*n,{offset:s,color:i.toRgb(),opacity:l}}function e(a){return{x1:a.getAttribute("x1")||0,y1:a.getAttribute("y1")||0,x2:a.getAttribute("x2")||"100%",y2:a.getAttribute("y2")||0}}function h(a){return{x1:a.getAttribute("fx")||a.getAttribute("cx")||"50%",y1:a.getAttribute("fy")||a.getAttribute("cy")||"50%",r1:0,x2:a.getAttribute("cx")||"50%",y2:a.getAttribute("cy")||"50%",r2:a.getAttribute("r")||"50%"}}var r=d.util.object.clone;d.Gradient=d.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(a){a||(a={}),a.coords||(a.coords={});var n,c=this;Object.keys(a).forEach(function(s){c[s]=a[s]}),this.id?this.id+="_"+d.Object.__uid++:this.id=d.Object.__uid++,n={x1:a.coords.x1||0,y1:a.coords.y1||0,x2:a.coords.x2||0,y2:a.coords.y2||0},this.type==="radial"&&(n.r1=a.coords.r1||0,n.r2=a.coords.r2||0),this.coords=n,this.colorStops=a.colorStops.slice()},addColorStop:function(a){for(var n in a){var c=new d.Color(a[n]);this.colorStops.push({offset:parseFloat(n),color:c.toRgb(),opacity:c.getAlpha()})}return this},toObject:function(a){var n={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return d.util.populateWithProperties(this,n,a),n},toSVG:function(a,o){var c=r(this.coords,!0),s,i,o=o||{},l,f,g=r(this.colorStops,!0),m=c.r1>c.r2,v=this.gradientTransform?this.gradientTransform.concat():d.iMatrix.concat(),p=-this.offsetX,_=-this.offsetY,y=!!o.additionalTransform,S=this.gradientUnits==="pixels"?"userSpaceOnUse":"objectBoundingBox";if(g.sort(function(L,I){return L.offset-I.offset}),S==="objectBoundingBox"?(p/=a.width,_/=a.height):(p+=a.width/2,_+=a.height/2),a.type==="path"&&(p-=a.pathOffset.x,_-=a.pathOffset.y),v[4]-=p,v[5]-=_,f='id="SVGID_'+this.id+'" gradientUnits="'+S+'"',f+=' gradientTransform="'+(y?o.additionalTransform+" ":"")+d.util.matrixToSVG(v)+'" ',this.type==="linear"?l=["<linearGradient ",f,' x1="',c.x1,'" y1="',c.y1,'" x2="',c.x2,'" y2="',c.y2,`">
1
+ var yt=Object.defineProperty;var Ct=(G,d,et)=>d in G?yt(G,d,{enumerable:!0,configurable:!0,writable:!0,value:et}):G[d]=et;var gt=(G,d,et)=>(Ct(G,typeof d!="symbol"?d+"":d,et),et);import{dL as ct,r as ut,P as ft,j as mt}from"./index-b3c0133a.js";var dt={};(function(G){/*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */var d=d||{version:"3.6.6"};if(G.fabric=d,typeof document<"u"&&typeof window<"u")document instanceof(typeof HTMLDocument<"u"?HTMLDocument:Document)?d.document=document:d.document=document.implementation.createHTMLDocument(""),d.window=window;else{var et=ct,at=new et.JSDOM(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;d.document=at.document,d.jsdomImplForWrapper=ct.implForWrapper,d.nodeCanvas=ct.Canvas,d.window=at,DOMParser=d.window.DOMParser}d.isTouchSupported="ontouchstart"in d.window||"ontouchstart"in d.document||d.window&&d.window.navigator&&d.window.navigator.maxTouchPoints>0,d.isLikelyNode=typeof Buffer<"u"&&typeof window>"u",d.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],d.DPI=96,d.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",d.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/ig,d.reNonWord=/[ \n\.,;!\?\-]/,d.fontPaths={},d.iMatrix=[1,0,0,1,0,0],d.svgNS="http://www.w3.org/2000/svg",d.perfLimitSizeTotal=2097152,d.maxCacheSideLimit=4096,d.minCacheSideLimit=256,d.charWidthsCache={},d.textureSize=2048,d.disableStyleCopyPaste=!1,d.enableGLFiltering=!0,d.devicePixelRatio=d.window.devicePixelRatio||d.window.webkitDevicePixelRatio||d.window.mozDevicePixelRatio||1,d.browserShadowBlurConstant=1,d.arcToSegmentsCache={},d.boundsOfCurveCache={},d.cachesBoundsOfCurve=!0,d.forceGLPutImageData=!1,d.initFilterBackend=function(){if(d.enableGLFiltering&&d.isWebglSupported&&d.isWebglSupported(d.textureSize))return console.log("max texture size: "+d.maxTextureSize),new d.WebglFilterBackend({tileSize:d.textureSize});if(d.Canvas2dFilterBackend)return new d.Canvas2dFilterBackend},typeof document<"u"&&typeof window<"u"&&(window.fabric=d),function(){function u(t,a){if(this.__eventListeners[t]){var n=this.__eventListeners[t];a?n[n.indexOf(a)]=!1:d.util.array.fill(n,!1)}}function e(t,a){if(this.__eventListeners||(this.__eventListeners={}),arguments.length===1)for(var n in t)this.on(n,t[n]);else this.__eventListeners[t]||(this.__eventListeners[t]=[]),this.__eventListeners[t].push(a);return this}function h(t,a){if(!this.__eventListeners)return this;if(arguments.length===0)for(t in this.__eventListeners)u.call(this,t);else if(arguments.length===1&&typeof arguments[0]=="object")for(var n in t)u.call(this,n,t[n]);else u.call(this,t,a);return this}function r(t,a){if(!this.__eventListeners)return this;var n=this.__eventListeners[t];if(!n)return this;for(var c=0,s=n.length;c<s;c++)n[c]&&n[c].call(this,a||{});return this.__eventListeners[t]=n.filter(function(i){return i!==!1}),this}d.Observable={observe:e,stopObserving:h,fire:r,on:e,off:h,trigger:r}}(),d.Collection={_objects:[],add:function(){if(this._objects.push.apply(this._objects,arguments),this._onObjectAdded)for(var u=0,e=arguments.length;u<e;u++)this._onObjectAdded(arguments[u]);return this.renderOnAddRemove&&this.requestRenderAll(),this},insertAt:function(u,e,h){var r=this._objects;return h?r[e]=u:r.splice(e,0,u),this._onObjectAdded&&this._onObjectAdded(u),this.renderOnAddRemove&&this.requestRenderAll(),this},remove:function(){for(var u=this._objects,e,h=!1,r=0,t=arguments.length;r<t;r++)e=u.indexOf(arguments[r]),e!==-1&&(h=!0,u.splice(e,1),this._onObjectRemoved&&this._onObjectRemoved(arguments[r]));return this.renderOnAddRemove&&h&&this.requestRenderAll(),this},forEachObject:function(u,e){for(var h=this.getObjects(),r=0,t=h.length;r<t;r++)u.call(e,h[r],r,h);return this},getObjects:function(u){return typeof u>"u"?this._objects.concat():this._objects.filter(function(e){return e.type===u})},item:function(u){return this._objects[u]},isEmpty:function(){return this._objects.length===0},size:function(){return this._objects.length},contains:function(u){return this._objects.indexOf(u)>-1},complexity:function(){return this._objects.reduce(function(u,e){return u+=e.complexity?e.complexity():0,u},0)}},d.CommonMethods={_setOptions:function(u){for(var e in u)this.set(e,u[e])},_initGradient:function(u,e){u&&u.colorStops&&!(u instanceof d.Gradient)&&this.set(e,new d.Gradient(u))},_initPattern:function(u,e,h){u&&u.source&&!(u instanceof d.Pattern)?this.set(e,new d.Pattern(u,h)):h&&h()},_initClipping:function(u){if(!(!u.clipTo||typeof u.clipTo!="string")){var e=d.util.getFunctionBody(u.clipTo);typeof e<"u"&&(this.clipTo=new Function("ctx",e))}},_setObject:function(u){for(var e in u)this._set(e,u[e])},set:function(u,e){return typeof u=="object"?this._setObject(u):typeof e=="function"&&u!=="clipTo"?this._set(u,e(this.get(u))):this._set(u,e),this},_set:function(u,e){this[u]=e},toggle:function(u){var e=this.get(u);return typeof e=="boolean"&&this.set(u,!e),this},get:function(u){return this[u]}},function(u){var e=Math.sqrt,h=Math.atan2,r=Math.pow,t=Math.PI/180,a=Math.PI/2;d.util={cos:function(n){if(n===0)return 1;n<0&&(n=-n);var c=n/a;switch(c){case 1:case 3:return 0;case 2:return-1}return Math.cos(n)},sin:function(n){if(n===0)return 0;var c=n/a,s=1;switch(n<0&&(s=-1),c){case 1:return s;case 2:return 0;case 3:return-s}return Math.sin(n)},removeFromArray:function(n,c){var s=n.indexOf(c);return s!==-1&&n.splice(s,1),n},getRandomInt:function(n,c){return Math.floor(Math.random()*(c-n+1))+n},degreesToRadians:function(n){return n*t},radiansToDegrees:function(n){return n/t},rotatePoint:function(n,c,s){n.subtractEquals(c);var i=d.util.rotateVector(n,s);return new d.Point(i.x,i.y).addEquals(c)},rotateVector:function(n,c){var s=d.util.sin(c),i=d.util.cos(c),o=n.x*i-n.y*s,l=n.x*s+n.y*i;return{x:o,y:l}},transformPoint:function(n,c,s){return s?new d.Point(c[0]*n.x+c[2]*n.y,c[1]*n.x+c[3]*n.y):new d.Point(c[0]*n.x+c[2]*n.y+c[4],c[1]*n.x+c[3]*n.y+c[5])},makeBoundingBoxFromPoints:function(n,c){if(c)for(var s=0;s<n.length;s++)n[s]=d.util.transformPoint(n[s],c);var i=[n[0].x,n[1].x,n[2].x,n[3].x],o=d.util.array.min(i),l=d.util.array.max(i),f=l-o,g=[n[0].y,n[1].y,n[2].y,n[3].y],m=d.util.array.min(g),v=d.util.array.max(g),p=v-m;return{left:o,top:m,width:f,height:p}},invertTransform:function(n){var c=1/(n[0]*n[3]-n[1]*n[2]),s=[c*n[3],-c*n[1],-c*n[2],c*n[0]],i=d.util.transformPoint({x:n[4],y:n[5]},s,!0);return s[4]=-i.x,s[5]=-i.y,s},toFixed:function(n,c){return parseFloat(Number(n).toFixed(c))},parseUnit:function(n,c){var s=/\D{0,2}$/.exec(n),i=parseFloat(n);switch(c||(c=d.Text.DEFAULT_SVG_FONT_SIZE),s[0]){case"mm":return i*d.DPI/25.4;case"cm":return i*d.DPI/2.54;case"in":return i*d.DPI;case"pt":return i*d.DPI/72;case"pc":return i*d.DPI/72*12;case"em":return i*c;default:return i}},falseFunction:function(){return!1},getKlass:function(n,c){return n=d.util.string.camelize(n.charAt(0).toUpperCase()+n.slice(1)),d.util.resolveNamespace(c)[n]},getSvgAttributes:function(n){var c=["instantiated_by_use","style","id","class"];switch(n){case"linearGradient":c=c.concat(["x1","y1","x2","y2","gradientUnits","gradientTransform"]);break;case"radialGradient":c=c.concat(["gradientUnits","gradientTransform","cx","cy","r","fx","fy","fr"]);break;case"stop":c=c.concat(["offset","stop-color","stop-opacity"]);break}return c},resolveNamespace:function(n){if(!n)return d;var c=n.split("."),s=c.length,i,o=u||d.window;for(i=0;i<s;++i)o=o[c[i]];return o},loadImage:function(n,c,s,i){if(!n){c&&c.call(s,n);return}var o=d.util.createImage(),l=function(){c&&c.call(s,o),o=o.onload=o.onerror=null};o.onload=l,o.onerror=function(){d.log("Error loading "+o.src),c&&c.call(s,null,!0),o=o.onload=o.onerror=null},n.indexOf("data")!==0&&i&&(o.crossOrigin=i),n.substring(0,14)==="data:image/svg"&&(o.onload=null,d.util.loadImageInDom(o,l)),o.src=n},loadImageInDom:function(n,c){var s=d.document.createElement("div");s.style.width=s.style.height="1px",s.style.left=s.style.top="-100%",s.style.position="absolute",s.appendChild(n),d.document.querySelector("body").appendChild(s),n.onload=function(){c(),s.parentNode.removeChild(s),s=null}},enlivenObjects:function(n,c,s,i){n=n||[];var o=[],l=0,f=n.length;function g(){++l===f&&c&&c(o.filter(function(m){return m}))}if(!f){c&&c(o);return}n.forEach(function(m,v){if(!m||!m.type){g();return}var p=d.util.getKlass(m.type,s);p.fromObject(m,function(_,y){y||(o[v]=_),i&&i(m,_,y),g()})})},enlivenPatterns:function(n,c){n=n||[];function s(){++o===l&&c&&c(i)}var i=[],o=0,l=n.length;if(!l){c&&c(i);return}n.forEach(function(f,g){f&&f.source?new d.Pattern(f,function(m){i[g]=m,s()}):(i[g]=f,s())})},groupSVGElements:function(n,c,s){var i;return n&&n.length===1?n[0]:(c&&(c.width&&c.height?c.centerPoint={x:c.width/2,y:c.height/2}:(delete c.width,delete c.height)),i=new d.Group(n,c),typeof s<"u"&&(i.sourcePath=s),i)},populateWithProperties:function(n,c,s){if(s&&Object.prototype.toString.call(s)==="[object Array]")for(var i=0,o=s.length;i<o;i++)s[i]in n&&(c[s[i]]=n[s[i]])},drawDashedLine:function(n,c,s,i,o,l){var f=i-c,g=o-s,m=e(f*f+g*g),v=h(g,f),p=l.length,_=0,y=!0;for(n.save(),n.translate(c,s),n.moveTo(0,0),n.rotate(v),c=0;m>c;)c+=l[_++%p],c>m&&(c=m),n[y?"lineTo":"moveTo"](c,0),y=!y;n.restore()},createCanvasElement:function(){return d.document.createElement("canvas")},copyCanvasElement:function(n){var c=d.util.createCanvasElement();return c.width=n.width,c.height=n.height,c.getContext("2d").drawImage(n,0,0),c},toDataURL:function(n,c,s){return n.toDataURL("image/"+c,s)},createImage:function(){return d.document.createElement("img")},clipContext:function(n,c){c.save(),c.beginPath(),n.clipTo(c),c.clip()},multiplyTransformMatrices:function(n,c,s){return[n[0]*c[0]+n[2]*c[1],n[1]*c[0]+n[3]*c[1],n[0]*c[2]+n[2]*c[3],n[1]*c[2]+n[3]*c[3],s?0:n[0]*c[4]+n[2]*c[5]+n[4],s?0:n[1]*c[4]+n[3]*c[5]+n[5]]},qrDecompose:function(n){var c=h(n[1],n[0]),s=r(n[0],2)+r(n[1],2),i=e(s),o=(n[0]*n[3]-n[2]*n[1])/i,l=h(n[0]*n[2]+n[1]*n[3],s);return{angle:c/t,scaleX:i,scaleY:o,skewX:l/t,skewY:0,translateX:n[4],translateY:n[5]}},calcRotateMatrix:function(n){if(!n.angle)return d.iMatrix.concat();var c=d.util.degreesToRadians(n.angle),s=d.util.cos(c),i=d.util.sin(c);return[s,i,-i,s,0,0]},calcDimensionsMatrix:function(n){var c=typeof n.scaleX>"u"?1:n.scaleX,s=typeof n.scaleY>"u"?1:n.scaleY,i=[n.flipX?-c:c,0,0,n.flipY?-s:s,0,0],o=d.util.multiplyTransformMatrices,l=d.util.degreesToRadians;return n.skewX&&(i=o(i,[1,0,Math.tan(l(n.skewX)),1],!0)),n.skewY&&(i=o(i,[1,Math.tan(l(n.skewY)),0,1],!0)),i},composeMatrix:function(n){var c=[1,0,0,1,n.translateX||0,n.translateY||0],s=d.util.multiplyTransformMatrices;return n.angle&&(c=s(c,d.util.calcRotateMatrix(n))),(n.scaleX||n.scaleY||n.skewX||n.skewY||n.flipX||n.flipY)&&(c=s(c,d.util.calcDimensionsMatrix(n))),c},customTransformMatrix:function(n,c,s){return d.util.composeMatrix({scaleX:n,scaleY:c,skewX:s})},resetObjectTransform:function(n){n.scaleX=1,n.scaleY=1,n.skewX=0,n.skewY=0,n.flipX=!1,n.flipY=!1,n.rotate(0)},saveObjectTransform:function(n){return{scaleX:n.scaleX,scaleY:n.scaleY,skewX:n.skewX,skewY:n.skewY,angle:n.angle,left:n.left,flipX:n.flipX,flipY:n.flipY,top:n.top}},getFunctionBody:function(n){return(String(n).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},isTransparent:function(n,c,s,i){i>0&&(c>i?c-=i:c=0,s>i?s-=i:s=0);var o=!0,l,f,g=n.getImageData(c,s,i*2||1,i*2||1),m=g.data.length;for(l=3;l<m&&(f=g.data[l],o=f<=0,o!==!1);l+=4);return g=null,o},parsePreserveAspectRatioAttribute:function(n){var c="meet",s="Mid",i="Mid",o=n.split(" "),l;return o&&o.length&&(c=o.pop(),c!=="meet"&&c!=="slice"?(l=c,c="meet"):o.length&&(l=o.pop())),s=l!=="none"?l.slice(1,4):"none",i=l!=="none"?l.slice(5,8):"none",{meetOrSlice:c,alignX:s,alignY:i}},clearFabricFontCache:function(n){n=(n||"").toLowerCase(),n?d.charWidthsCache[n]&&delete d.charWidthsCache[n]:d.charWidthsCache={}},limitDimsByArea:function(n,c){var s=Math.sqrt(c*n),i=Math.floor(c/s);return{x:Math.floor(s),y:i}},capValue:function(n,c,s){return Math.max(n,Math.min(c,s))},findScaleToFit:function(n,c){return Math.min(c.width/n.width,c.height/n.height)},findScaleToCover:function(n,c){return Math.max(c.width/n.width,c.height/n.height)},matrixToSVG:function(n){return"matrix("+n.map(function(c){return d.util.toFixed(c,d.Object.NUM_FRACTION_DIGITS)}).join(" ")+")"}}}(G),function(){var u=Array.prototype.join;function e(a,n,c,s,i,o,l){var f=u.call(arguments);if(d.arcToSegmentsCache[f])return d.arcToSegmentsCache[f];var g=Math.PI,m=l*g/180,v=d.util.sin(m),p=d.util.cos(m),_=0,y=0;c=Math.abs(c),s=Math.abs(s);var S=-p*a*.5-v*n*.5,w=-p*n*.5+v*a*.5,T=c*c,D=s*s,k=w*w,L=S*S,I=T*D-T*k-D*L,X=0;if(I<0){var Y=Math.sqrt(1-I/(T*D));c*=Y,s*=Y}else X=(i===o?-1:1)*Math.sqrt(I/(T*k+D*L));var C=X*c*w/s,P=-X*s*S/c,E=p*C-v*P+a*.5,A=v*C+p*P+n*.5,W=r(1,0,(S-C)/c,(w-P)/s),b=r((S-C)/c,(w-P)/s,(-S-C)/c,(-w-P)/s);o===0&&b>0?b-=2*g:o===1&&b<0&&(b+=2*g);for(var x=Math.ceil(Math.abs(b/g*2)),O=[],F=b/x,j=8/3*Math.sin(F/4)*Math.sin(F/4)/Math.sin(F/2),M=W+F,R=0;R<x;R++)O[R]=h(W,M,p,v,c,s,E,A,j,_,y),_=O[R][4],y=O[R][5],W=M,M+=F;return d.arcToSegmentsCache[f]=O,O}function h(a,n,c,s,i,o,l,f,g,m,v){var p=d.util.cos(a),_=d.util.sin(a),y=d.util.cos(n),S=d.util.sin(n),w=c*i*y-s*o*S+l,T=s*i*y+c*o*S+f,D=m+g*(-c*i*_-s*o*p),k=v+g*(-s*i*_+c*o*p),L=w+g*(c*i*S+s*o*y),I=T+g*(s*i*S-c*o*y);return[D,k,L,I,w,T]}function r(a,n,c,s){var i=Math.atan2(n,a),o=Math.atan2(s,c);return o>=i?o-i:2*Math.PI-(i-o)}d.util.drawArc=function(a,n,c,s){for(var i=s[0],o=s[1],l=s[2],f=s[3],g=s[4],m=s[5],v=s[6],p=[[],[],[],[]],_=e(m-n,v-c,i,o,f,g,l),y=0,S=_.length;y<S;y++)p[y][0]=_[y][0]+n,p[y][1]=_[y][1]+c,p[y][2]=_[y][2]+n,p[y][3]=_[y][3]+c,p[y][4]=_[y][4]+n,p[y][5]=_[y][5]+c,a.bezierCurveTo.apply(a,p[y])},d.util.getBoundsOfArc=function(a,n,c,s,i,o,l,f,g){for(var m=0,v=0,p,_=[],y=e(f-a,g-n,c,s,o,l,i),S=0,w=y.length;S<w;S++)p=t(m,v,y[S][0],y[S][1],y[S][2],y[S][3],y[S][4],y[S][5]),_.push({x:p[0].x+a,y:p[0].y+n}),_.push({x:p[1].x+a,y:p[1].y+n}),m=y[S][4],v=y[S][5];return _};function t(a,n,c,s,i,o,l,f){var g;if(d.cachesBoundsOfCurve&&(g=u.call(arguments),d.boundsOfCurveCache[g]))return d.boundsOfCurveCache[g];var m=Math.sqrt,v=Math.min,p=Math.max,_=Math.abs,y=[],S=[[],[]],w,T,D,k,L,I,X,Y;T=6*a-12*c+6*i,w=-3*a+9*c-9*i+3*l,D=3*c-3*a;for(var C=0;C<2;++C){if(C>0&&(T=6*n-12*s+6*o,w=-3*n+9*s-9*o+3*f,D=3*s-3*n),_(w)<1e-12){if(_(T)<1e-12)continue;k=-D/T,0<k&&k<1&&y.push(k);continue}X=T*T-4*D*w,!(X<0)&&(Y=m(X),L=(-T+Y)/(2*w),0<L&&L<1&&y.push(L),I=(-T-Y)/(2*w),0<I&&I<1&&y.push(I))}for(var P,E,A=y.length,W=A,b;A--;)k=y[A],b=1-k,P=b*b*b*a+3*b*b*k*c+3*b*k*k*i+k*k*k*l,S[0][A]=P,E=b*b*b*n+3*b*b*k*s+3*b*k*k*o+k*k*k*f,S[1][A]=E;S[0][W]=a,S[1][W]=n,S[0][W+1]=l,S[1][W+1]=f;var x=[{x:v.apply(null,S[0]),y:v.apply(null,S[1])},{x:p.apply(null,S[0]),y:p.apply(null,S[1])}];return d.cachesBoundsOfCurve&&(d.boundsOfCurveCache[g]=x),x}d.util.getBoundsOfCurve=t}(),function(){var u=Array.prototype.slice;function e(n,c){for(var s=u.call(arguments,2),i=[],o=0,l=n.length;o<l;o++)i[o]=s.length?n[o][c].apply(n[o],s):n[o][c].call(n[o]);return i}function h(n,c){return a(n,c,function(s,i){return s>=i})}function r(n,c){return a(n,c,function(s,i){return s<i})}function t(n,c){for(var s=n.length;s--;)n[s]=c;return n}function a(n,c,s){if(!(!n||n.length===0)){var i=n.length-1,o=c?n[i][c]:n[i];if(c)for(;i--;)s(n[i][c],o)&&(o=n[i][c]);else for(;i--;)s(n[i],o)&&(o=n[i]);return o}}d.util.array={fill:t,invoke:e,min:r,max:h}}(),function(){function u(h,r,t){if(t)if(!d.isLikelyNode&&r instanceof Element)h=r;else if(r instanceof Array){h=[];for(var a=0,n=r.length;a<n;a++)h[a]=u({},r[a],t)}else if(r&&typeof r=="object")for(var c in r)c==="canvas"?h[c]=u({},r[c]):r.hasOwnProperty(c)&&(h[c]=u({},r[c],t));else h=r;else for(var c in r)h[c]=r[c];return h}function e(h,r){return u({},h,r)}d.util.object={extend:u,clone:e},d.util.object.extend(d.util,d.Observable)}(),function(){function u(a){return a.replace(/-+(.)?/g,function(n,c){return c?c.toUpperCase():""})}function e(a,n){return a.charAt(0).toUpperCase()+(n?a.slice(1):a.slice(1).toLowerCase())}function h(a){return a.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&apos;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function r(a){var n=0,c,s=[];for(n=0,c;n<a.length;n++)(c=t(a,n))!==!1&&s.push(c);return s}function t(a,n){var c=a.charCodeAt(n);if(isNaN(c))return"";if(c<55296||c>57343)return a.charAt(n);if(55296<=c&&c<=56319){if(a.length<=n+1)throw"High surrogate without following low surrogate";var s=a.charCodeAt(n+1);if(56320>s||s>57343)throw"High surrogate without following low surrogate";return a.charAt(n)+a.charAt(n+1)}if(n===0)throw"Low surrogate without preceding high surrogate";var i=a.charCodeAt(n-1);if(55296>i||i>56319)throw"Low surrogate without preceding high surrogate";return!1}d.util.string={camelize:u,capitalize:e,escapeXml:h,graphemeSplit:r}}(),function(){var u=Array.prototype.slice,e=function(){},h=function(){for(var c in{toString:1})if(c==="toString")return!1;return!0}(),r=function(c,s,i){for(var o in s)o in c.prototype&&typeof c.prototype[o]=="function"&&(s[o]+"").indexOf("callSuper")>-1?c.prototype[o]=function(l){return function(){var f=this.constructor.superclass;this.constructor.superclass=i;var g=s[l].apply(this,arguments);if(this.constructor.superclass=f,l!=="initialize")return g}}(o):c.prototype[o]=s[o],h&&(s.toString!==Object.prototype.toString&&(c.prototype.toString=s.toString),s.valueOf!==Object.prototype.valueOf&&(c.prototype.valueOf=s.valueOf))};function t(){}function a(c){for(var s=null,i=this;i.constructor.superclass;){var o=i.constructor.superclass.prototype[c];if(i[c]!==o){s=o;break}i=i.constructor.superclass.prototype}return s?arguments.length>1?s.apply(this,u.call(arguments,1)):s.call(this):console.log("tried to callSuper "+c+", method not found in prototype chain",this)}function n(){var c=null,s=u.call(arguments,0);typeof s[0]=="function"&&(c=s.shift());function i(){this.initialize.apply(this,arguments)}i.superclass=c,i.subclasses=[],c&&(t.prototype=c.prototype,i.prototype=new t,c.subclasses.push(i));for(var o=0,l=s.length;o<l;o++)r(i,s[o],c);return i.prototype.initialize||(i.prototype.initialize=e),i.prototype.constructor=i,i.prototype.callSuper=a,i}d.util.createClass=n}(),function(){var u=!!d.document.createElement("div").attachEvent;d.util.addListener=function(h,r,t,a){h&&h.addEventListener(r,t,u?!1:a)},d.util.removeListener=function(h,r,t,a){h&&h.removeEventListener(r,t,u?!1:a)};function e(h){var r=h.changedTouches;return r&&r[0]?r[0]:h}d.util.getPointer=function(h){var r=h.target,t=d.util.getScrollLeftTop(r),a=e(h);return{x:a.clientX+t.left,y:a.clientY+t.top}}}(),function(){function u(n,c){var s=n.style;if(!s)return n;if(typeof c=="string")return n.style.cssText+=";"+c,c.indexOf("opacity")>-1?a(n,c.match(/opacity:\s*(\d?\.?\d*)/)[1]):n;for(var i in c)if(i==="opacity")a(n,c[i]);else{var o=i==="float"||i==="cssFloat"?typeof s.styleFloat>"u"?"cssFloat":"styleFloat":i;s[o]=c[i]}return n}var e=d.document.createElement("div"),h=typeof e.style.opacity=="string",r=typeof e.style.filter=="string",t=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,a=function(n){return n};h?a=function(n,c){return n.style.opacity=c,n}:r&&(a=function(n,c){var s=n.style;return n.currentStyle&&!n.currentStyle.hasLayout&&(s.zoom=1),t.test(s.filter)?(c=c>=.9999?"":"alpha(opacity="+c*100+")",s.filter=s.filter.replace(t,c)):s.filter+=" alpha(opacity="+c*100+")",n}),d.util.setStyle=u}(),function(){var u=Array.prototype.slice;function e(f){return typeof f=="string"?d.document.getElementById(f):f}var h,r=function(f){return u.call(f,0)};try{h=r(d.document.childNodes)instanceof Array}catch{}h||(r=function(f){for(var g=new Array(f.length),m=f.length;m--;)g[m]=f[m];return g});function t(f,g){var m=d.document.createElement(f);for(var v in g)v==="class"?m.className=g[v]:v==="for"?m.htmlFor=g[v]:m.setAttribute(v,g[v]);return m}function a(f,g){f&&(" "+f.className+" ").indexOf(" "+g+" ")===-1&&(f.className+=(f.className?" ":"")+g)}function n(f,g,m){return typeof g=="string"&&(g=t(g,m)),f.parentNode&&f.parentNode.replaceChild(g,f),g.appendChild(f),g}function c(f){for(var g=0,m=0,v=d.document.documentElement,p=d.document.body||{scrollLeft:0,scrollTop:0};f&&(f.parentNode||f.host)&&(f=f.parentNode||f.host,f===d.document?(g=p.scrollLeft||v.scrollLeft||0,m=p.scrollTop||v.scrollTop||0):(g+=f.scrollLeft||0,m+=f.scrollTop||0),!(f.nodeType===1&&f.style.position==="fixed")););return{left:g,top:m}}function s(f){var g,m=f&&f.ownerDocument,v={left:0,top:0},p={left:0,top:0},_,y={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!m)return p;for(var S in y)p[y[S]]+=parseInt(i(f,S),10)||0;return g=m.documentElement,typeof f.getBoundingClientRect<"u"&&(v=f.getBoundingClientRect()),_=c(f),{left:v.left+_.left-(g.clientLeft||0)+p.left,top:v.top+_.top-(g.clientTop||0)+p.top}}var i;d.document.defaultView&&d.document.defaultView.getComputedStyle?i=function(f,g){var m=d.document.defaultView.getComputedStyle(f,null);return m?m[g]:void 0}:i=function(f,g){var m=f.style[g];return!m&&f.currentStyle&&(m=f.currentStyle[g]),m},function(){var f=d.document.documentElement.style,g="userSelect"in f?"userSelect":"MozUserSelect"in f?"MozUserSelect":"WebkitUserSelect"in f?"WebkitUserSelect":"KhtmlUserSelect"in f?"KhtmlUserSelect":"";function m(p){return typeof p.onselectstart<"u"&&(p.onselectstart=d.util.falseFunction),g?p.style[g]="none":typeof p.unselectable=="string"&&(p.unselectable="on"),p}function v(p){return typeof p.onselectstart<"u"&&(p.onselectstart=null),g?p.style[g]="":typeof p.unselectable=="string"&&(p.unselectable=""),p}d.util.makeElementUnselectable=m,d.util.makeElementSelectable=v}(),function(){function f(g,m){var v=d.document.getElementsByTagName("head")[0],p=d.document.createElement("script"),_=!0;p.onload=p.onreadystatechange=function(y){if(_){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;_=!1,m(y||d.window.event),p=p.onload=p.onreadystatechange=null}},p.src=g,v.appendChild(p)}d.util.getScript=f}();function o(f){var g=d.jsdomImplForWrapper(f);return g._canvas||g._image}function l(f){if(d.isLikelyNode){var g=d.jsdomImplForWrapper(f);g&&(g._image=null,g._canvas=null,g._currentSrc=null,g._attributes=null,g._classList=null)}}d.util.getById=e,d.util.toArray=r,d.util.makeElement=t,d.util.addClass=a,d.util.wrapElement=n,d.util.getScrollLeftTop=c,d.util.getElementOffset=s,d.util.getElementStyle=i,d.util.getNodeCanvas=o,d.util.cleanUpJsdomNode=l}(),function(){function u(r,t){return r+(/\?/.test(r)?"&":"?")+t}function e(){}function h(r,t){t||(t={});var a=t.method?t.method.toUpperCase():"GET",n=t.onComplete||function(){},c=new d.window.XMLHttpRequest,s=t.body||t.parameters;return c.onreadystatechange=function(){c.readyState===4&&(n(c),c.onreadystatechange=e)},a==="GET"&&(s=null,typeof t.parameters=="string"&&(r=u(r,t.parameters))),c.open(a,r,!0),(a==="POST"||a==="PUT")&&c.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),c.send(s),c}d.util.request=h}(),d.log=console.log,d.warn=console.warn,function(){function u(){return!1}function e(c,s,i,o){return-i*Math.cos(c/o*(Math.PI/2))+i+s}function h(c){a(function(s){c||(c={});var i=s||+new Date,o=c.duration||500,l=i+o,f,g=c.onChange||u,m=c.abort||u,v=c.onComplete||u,p=c.easing||e,_="startValue"in c?c.startValue:0,y="endValue"in c?c.endValue:100,S=c.byValue||y-_;c.onStart&&c.onStart(),function w(T){f=T||+new Date;var D=f>l?o:f-i,k=D/o,L=p(D,_,S,o),I=Math.abs((L-_)/S);if(m()){v(y,1,1);return}if(f>l){g(y,1,1),v(y,1,1);return}else g(L,I,k),a(w)}(i)})}var r=d.window.requestAnimationFrame||d.window.webkitRequestAnimationFrame||d.window.mozRequestAnimationFrame||d.window.oRequestAnimationFrame||d.window.msRequestAnimationFrame||function(c){return d.window.setTimeout(c,1e3/60)},t=d.window.cancelAnimationFrame||d.window.clearTimeout;function a(){return r.apply(d.window,arguments)}function n(){return t.apply(d.window,arguments)}d.util.animate=h,d.util.requestAnimFrame=a,d.util.cancelAnimFrame=n}(),function(){function u(h,r,t){var a="rgba("+parseInt(h[0]+t*(r[0]-h[0]),10)+","+parseInt(h[1]+t*(r[1]-h[1]),10)+","+parseInt(h[2]+t*(r[2]-h[2]),10);return a+=","+(h&&r?parseFloat(h[3]+t*(r[3]-h[3])):1),a+=")",a}function e(h,r,t,a){var n=new d.Color(h).getSource(),c=new d.Color(r).getSource();a=a||{},d.util.animate(d.util.object.extend(a,{duration:t||500,startValue:n,endValue:c,byValue:c,easing:function(s,i,o,l){var f=a.colorEasing?a.colorEasing(s,l):1-Math.cos(s/l*(Math.PI/2));return u(i,o,f)}}))}d.util.animateColor=e}(),function(){function u(C,P,E,A){return C<Math.abs(P)?(C=P,A=E/4):P===0&&C===0?A=E/(2*Math.PI)*Math.asin(1):A=E/(2*Math.PI)*Math.asin(P/C),{a:C,c:P,p:E,s:A}}function e(C,P,E){return C.a*Math.pow(2,10*(P-=1))*Math.sin((P*E-C.s)*(2*Math.PI)/C.p)}function h(C,P,E,A){return E*((C=C/A-1)*C*C+1)+P}function r(C,P,E,A){return C/=A/2,C<1?E/2*C*C*C+P:E/2*((C-=2)*C*C+2)+P}function t(C,P,E,A){return E*(C/=A)*C*C*C+P}function a(C,P,E,A){return-E*((C=C/A-1)*C*C*C-1)+P}function n(C,P,E,A){return C/=A/2,C<1?E/2*C*C*C*C+P:-E/2*((C-=2)*C*C*C-2)+P}function c(C,P,E,A){return E*(C/=A)*C*C*C*C+P}function s(C,P,E,A){return E*((C=C/A-1)*C*C*C*C+1)+P}function i(C,P,E,A){return C/=A/2,C<1?E/2*C*C*C*C*C+P:E/2*((C-=2)*C*C*C*C+2)+P}function o(C,P,E,A){return-E*Math.cos(C/A*(Math.PI/2))+E+P}function l(C,P,E,A){return E*Math.sin(C/A*(Math.PI/2))+P}function f(C,P,E,A){return-E/2*(Math.cos(Math.PI*C/A)-1)+P}function g(C,P,E,A){return C===0?P:E*Math.pow(2,10*(C/A-1))+P}function m(C,P,E,A){return C===A?P+E:E*(-Math.pow(2,-10*C/A)+1)+P}function v(C,P,E,A){return C===0?P:C===A?P+E:(C/=A/2,C<1?E/2*Math.pow(2,10*(C-1))+P:E/2*(-Math.pow(2,-10*--C)+2)+P)}function p(C,P,E,A){return-E*(Math.sqrt(1-(C/=A)*C)-1)+P}function _(C,P,E,A){return E*Math.sqrt(1-(C=C/A-1)*C)+P}function y(C,P,E,A){return C/=A/2,C<1?-E/2*(Math.sqrt(1-C*C)-1)+P:E/2*(Math.sqrt(1-(C-=2)*C)+1)+P}function S(C,P,E,A){var W=1.70158,b=0,x=E;if(C===0)return P;if(C/=A,C===1)return P+E;b||(b=A*.3);var O=u(x,E,b,W);return-e(O,C,A)+P}function w(C,P,E,A){var W=1.70158,b=0,x=E;if(C===0)return P;if(C/=A,C===1)return P+E;b||(b=A*.3);var O=u(x,E,b,W);return O.a*Math.pow(2,-10*C)*Math.sin((C*A-O.s)*(2*Math.PI)/O.p)+O.c+P}function T(C,P,E,A){var W=1.70158,b=0,x=E;if(C===0)return P;if(C/=A/2,C===2)return P+E;b||(b=A*(.3*1.5));var O=u(x,E,b,W);return C<1?-.5*e(O,C,A)+P:O.a*Math.pow(2,-10*(C-=1))*Math.sin((C*A-O.s)*(2*Math.PI)/O.p)*.5+O.c+P}function D(C,P,E,A,W){return W===void 0&&(W=1.70158),E*(C/=A)*C*((W+1)*C-W)+P}function k(C,P,E,A,W){return W===void 0&&(W=1.70158),E*((C=C/A-1)*C*((W+1)*C+W)+1)+P}function L(C,P,E,A,W){return W===void 0&&(W=1.70158),C/=A/2,C<1?E/2*(C*C*(((W*=1.525)+1)*C-W))+P:E/2*((C-=2)*C*(((W*=1.525)+1)*C+W)+2)+P}function I(C,P,E,A){return E-X(A-C,0,E,A)+P}function X(C,P,E,A){return(C/=A)<1/2.75?E*(7.5625*C*C)+P:C<2/2.75?E*(7.5625*(C-=1.5/2.75)*C+.75)+P:C<2.5/2.75?E*(7.5625*(C-=2.25/2.75)*C+.9375)+P:E*(7.5625*(C-=2.625/2.75)*C+.984375)+P}function Y(C,P,E,A){return C<A/2?I(C*2,0,E,A)*.5+P:X(C*2-A,0,E,A)*.5+E*.5+P}d.util.ease={easeInQuad:function(C,P,E,A){return E*(C/=A)*C+P},easeOutQuad:function(C,P,E,A){return-E*(C/=A)*(C-2)+P},easeInOutQuad:function(C,P,E,A){return C/=A/2,C<1?E/2*C*C+P:-E/2*(--C*(C-2)-1)+P},easeInCubic:function(C,P,E,A){return E*(C/=A)*C*C+P},easeOutCubic:h,easeInOutCubic:r,easeInQuart:t,easeOutQuart:a,easeInOutQuart:n,easeInQuint:c,easeOutQuint:s,easeInOutQuint:i,easeInSine:o,easeOutSine:l,easeInOutSine:f,easeInExpo:g,easeOutExpo:m,easeInOutExpo:v,easeInCirc:p,easeOutCirc:_,easeInOutCirc:y,easeInElastic:S,easeOutElastic:w,easeInOutElastic:T,easeInBack:D,easeOutBack:k,easeInOutBack:L,easeInBounce:I,easeOutBounce:X,easeInOutBounce:Y}}(),function(u){var e=u.fabric||(u.fabric={}),h=e.util.object.extend,r=e.util.object.clone,t=e.util.toFixed,a=e.util.parseUnit,n=e.util.multiplyTransformMatrices,c=["path","circle","polygon","polyline","ellipse","rect","line","image","text"],s=["symbol","image","marker","pattern","view","svg"],i=["pattern","defs","symbol","metadata","clipPath","mask","desc"],o=["symbol","g","a","svg","clipPath","defs"],l={cx:"left",x:"left",r:"radius",cy:"top",y:"top",display:"visible",visibility:"visible",transform:"transformMatrix","fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","letter-spacing":"charSpacing","paint-order":"paintFirst","stroke-dasharray":"strokeDashArray","stroke-dashoffset":"strokeDashOffset","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration","text-anchor":"textAnchor",opacity:"opacity","clip-path":"clipPath","clip-rule":"clipRule","vector-effect":"strokeUniform"},f={stroke:"strokeOpacity",fill:"fillOpacity"},g="font-size",m="clip-path";e.svgValidTagNamesRegEx=_(c),e.svgViewBoxElementsRegEx=_(s),e.svgInvalidAncestorsRegEx=_(i),e.svgValidParentsRegEx=_(o),e.cssRules={},e.gradientDefs={},e.clipPaths={};function v(b){return b in l?l[b]:b}function p(b,x,O,F){var j=Object.prototype.toString.call(x)==="[object Array]",M;if((b==="fill"||b==="stroke")&&x==="none")x="";else if(b==="vector-effect")x=x==="non-scaling-stroke";else if(b==="strokeDashArray")x==="none"?x=null:x=x.replace(/,/g," ").split(/\s+/).map(parseFloat);else if(b==="transformMatrix")O&&O.transformMatrix?x=n(O.transformMatrix,e.parseTransformAttribute(x)):x=e.parseTransformAttribute(x);else if(b==="visible")x=x!=="none"&&x!=="hidden",O&&O.visible===!1&&(x=!1);else if(b==="opacity")x=parseFloat(x),O&&typeof O.opacity<"u"&&(x*=O.opacity);else if(b==="textAnchor")x=x==="start"?"left":x==="end"?"right":"center";else if(b==="charSpacing")M=a(x,F)/F*1e3;else if(b==="paintFirst"){var R=x.indexOf("fill"),B=x.indexOf("stroke"),x="fill";(R>-1&&B>-1&&B<R||R===-1&&B>-1)&&(x="stroke")}else{if(b==="href"||b==="xlink:href")return x;M=j?x.map(a):a(x,F)}return!j&&isNaN(M)?x:M}function _(b){return new RegExp("^("+b.join("|")+")\\b","i")}function y(b){for(var x in f)if(!(typeof b[f[x]]>"u"||b[x]==="")){if(typeof b[x]>"u"){if(!e.Object.prototype[x])continue;b[x]=e.Object.prototype[x]}if(b[x].indexOf("url(")!==0){var O=new e.Color(b[x]);b[x]=O.setAlpha(t(O.getAlpha()*b[f[x]],2)).toRgba()}}return b}function S(b,x){var O,F=[],j,M,R;for(M=0,R=x.length;M<R;M++)O=x[M],j=b.getElementsByTagName(O),F=F.concat(Array.prototype.slice.call(j));return F}e.parseTransformAttribute=function(){function b(z,q){var Z=e.util.cos(q[0]),tt=e.util.sin(q[0]),st=0,nt=0;q.length===3&&(st=q[1],nt=q[2]),z[0]=Z,z[1]=tt,z[2]=-tt,z[3]=Z,z[4]=st-(Z*st-tt*nt),z[5]=nt-(tt*st+Z*nt)}function x(z,q){var Z=q[0],tt=q.length===2?q[1]:q[0];z[0]=Z,z[3]=tt}function O(z,q,Z){z[Z]=Math.tan(e.util.degreesToRadians(q[0]))}function F(z,q){z[4]=q[0],q.length===2&&(z[5]=q[1])}var j=e.iMatrix,M=e.reNum,R="(?:\\s+,?\\s*|,\\s*)",B="(?:(skewX)\\s*\\(\\s*("+M+")\\s*\\))",U="(?:(skewY)\\s*\\(\\s*("+M+")\\s*\\))",H="(?:(rotate)\\s*\\(\\s*("+M+")(?:"+R+"("+M+")"+R+"("+M+"))?\\s*\\))",$="(?:(scale)\\s*\\(\\s*("+M+")(?:"+R+"("+M+"))?\\s*\\))",N="(?:(translate)\\s*\\(\\s*("+M+")(?:"+R+"("+M+"))?\\s*\\))",V="(?:(matrix)\\s*\\(\\s*("+M+")"+R+"("+M+")"+R+"("+M+")"+R+"("+M+")"+R+"("+M+")"+R+"("+M+")\\s*\\))",K="(?:"+V+"|"+N+"|"+$+"|"+H+"|"+B+"|"+U+")",J="(?:"+K+"(?:"+R+"*"+K+")*)",Q="^\\s*(?:"+J+"?)\\s*$",it=new RegExp(Q),ot=new RegExp(K,"g");return function(z){var q=j.concat(),Z=[];if(!z||z&&!it.test(z))return q;z.replace(ot,function(st){var nt=new RegExp(K).exec(st).filter(function(_t){return!!_t}),pt=nt[1],rt=nt.slice(2).map(parseFloat);switch(pt){case"translate":F(q,rt);break;case"rotate":rt[0]=e.util.degreesToRadians(rt[0]),b(q,rt);break;case"scale":x(q,rt);break;case"skewX":O(q,rt,2);break;case"skewY":O(q,rt,1);break;case"matrix":q=rt;break}Z.push(q.concat()),q=j.concat()});for(var tt=Z[0];Z.length>1;)Z.shift(),tt=e.util.multiplyTransformMatrices(tt,Z[0]);return tt}}();function w(b,x){var O,F;b.replace(/;\s*$/,"").split(";").forEach(function(j){var M=j.split(":");O=M[0].trim().toLowerCase(),F=M[1].trim(),x[O]=F})}function T(b,x){var O,F;for(var j in b)typeof b[j]>"u"||(O=j.toLowerCase(),F=b[j],x[O]=F)}function D(b,x){var O={};for(var F in e.cssRules[x])if(k(b,F.split(" ")))for(var j in e.cssRules[x][F])O[j]=e.cssRules[x][F][j];return O}function k(b,x){var O,F=!0;return O=I(b,x.pop()),O&&x.length&&(F=L(b,x)),O&&F&&x.length===0}function L(b,x){for(var O,F=!0;b.parentNode&&b.parentNode.nodeType===1&&x.length;)F&&(O=x.pop()),b=b.parentNode,F=I(b,O);return x.length===0}function I(b,x){var O=b.nodeName,F=b.getAttribute("class"),j=b.getAttribute("id"),M,R;if(M=new RegExp("^"+O,"i"),x=x.replace(M,""),j&&x.length&&(M=new RegExp("#"+j+"(?![a-zA-Z\\-]+)","i"),x=x.replace(M,"")),F&&x.length)for(F=F.split(" "),R=F.length;R--;)M=new RegExp("\\."+F[R]+"(?![a-zA-Z\\-]+)","i"),x=x.replace(M,"");return x.length===0}function X(b,x){var O;if(b.getElementById&&(O=b.getElementById(x)),O)return O;var F,j,M,R=b.getElementsByTagName("*");for(j=0,M=R.length;j<M;j++)if(F=R[j],x===F.getAttribute("id"))return F}function Y(b){for(var x=S(b,["use","svg:use"]),O=0;x.length&&O<x.length;){var F=x[O],j=(F.getAttribute("xlink:href")||F.getAttribute("href")).substr(1),M=F.getAttribute("x")||0,R=F.getAttribute("y")||0,B=X(b,j).cloneNode(!0),U=(B.getAttribute("transform")||"")+" translate("+M+", "+R+")",H,$=x.length,N,V,K,J,Q=e.svgNS;if(P(B),/^svg$/i.test(B.nodeName)){var it=B.ownerDocument.createElementNS(Q,"g");for(V=0,K=B.attributes,J=K.length;V<J;V++)N=K.item(V),it.setAttributeNS(Q,N.nodeName,N.nodeValue);for(;B.firstChild;)it.appendChild(B.firstChild);B=it}for(V=0,K=F.attributes,J=K.length;V<J;V++)N=K.item(V),!(N.nodeName==="x"||N.nodeName==="y"||N.nodeName==="xlink:href"||N.nodeName==="href")&&(N.nodeName==="transform"?U=N.nodeValue+" "+U:B.setAttribute(N.nodeName,N.nodeValue));B.setAttribute("transform",U),B.setAttribute("instantiated_by_use","1"),B.removeAttribute("id"),H=F.parentNode,H.replaceChild(B,F),x.length===$&&O++}}var C=new RegExp("^\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*$");function P(b){var x=b.getAttribute("viewBox"),O=1,F=1,j=0,M=0,R,B,U,H,$=b.getAttribute("width"),N=b.getAttribute("height"),V=b.getAttribute("x")||0,K=b.getAttribute("y")||0,J=b.getAttribute("preserveAspectRatio")||"",Q=!x||!e.svgViewBoxElementsRegEx.test(b.nodeName)||!(x=x.match(C)),it=!$||!N||$==="100%"||N==="100%",ot=Q&&it,z={},q="",Z=0,tt=0;if(z.width=0,z.height=0,z.toBeParsed=ot,ot)return z;if(Q)return z.width=a($),z.height=a(N),z;if(j=-parseFloat(x[1]),M=-parseFloat(x[2]),R=parseFloat(x[3]),B=parseFloat(x[4]),z.minX=j,z.minY=M,z.viewBoxWidth=R,z.viewBoxHeight=B,it?(z.width=R,z.height=B):(z.width=a($),z.height=a(N),O=z.width/R,F=z.height/B),J=e.util.parsePreserveAspectRatioAttribute(J),J.alignX!=="none"&&(J.meetOrSlice==="meet"&&(F=O=O>F?F:O),J.meetOrSlice==="slice"&&(F=O=O>F?O:F),Z=z.width-R*O,tt=z.height-B*O,J.alignX==="Mid"&&(Z/=2),J.alignY==="Mid"&&(tt/=2),J.alignX==="Min"&&(Z=0),J.alignY==="Min"&&(tt=0)),O===1&&F===1&&j===0&&M===0&&V===0&&K===0)return z;if((V||K)&&(q=" translate("+a(V)+" "+a(K)+") "),U=q+" matrix("+O+" 0 0 "+F+" "+(j*O+Z)+" "+(M*F+tt)+") ",z.viewboxTransform=e.parseTransformAttribute(U),b.nodeName==="svg"){for(H=b.ownerDocument.createElementNS(e.svgNS,"g");b.firstChild;)H.appendChild(b.firstChild);b.appendChild(H)}else H=b,U=H.getAttribute("transform")+U;return H.setAttribute("transform",U),z}function E(b,x){for(;b&&(b=b.parentNode);)if(b.nodeName&&x.test(b.nodeName.replace("svg:",""))&&!b.getAttribute("instantiated_by_use"))return!0;return!1}e.parseSVGDocument=function(b,x,O,F){if(b){Y(b);var j=e.Object.__uid++,M,R,B=P(b),U=e.util.toArray(b.getElementsByTagName("*"));if(B.crossOrigin=F&&F.crossOrigin,B.svgUid=j,U.length===0&&e.isLikelyNode){U=b.selectNodes('//*[name(.)!="svg"]');var H=[];for(M=0,R=U.length;M<R;M++)H[M]=U[M];U=H}var $=U.filter(function(V){return P(V),e.svgValidTagNamesRegEx.test(V.nodeName.replace("svg:",""))&&!E(V,e.svgInvalidAncestorsRegEx)});if(!$||$&&!$.length){x&&x([],{});return}var N={};U.filter(function(V){return V.nodeName.replace("svg:","")==="clipPath"}).forEach(function(V){var K=V.getAttribute("id");N[K]=e.util.toArray(V.getElementsByTagName("*")).filter(function(J){return e.svgValidTagNamesRegEx.test(J.nodeName.replace("svg:",""))})}),e.gradientDefs[j]=e.getGradientDefs(b),e.cssRules[j]=e.getCSSRules(b),e.clipPaths[j]=N,e.parseElements($,function(V,K){x&&(x(V,B,K,U),delete e.gradientDefs[j],delete e.cssRules[j],delete e.clipPaths[j])},r(B),O,F)}};function A(b,x){var O=["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"],F="xlink:href",j=x.getAttribute(F).substr(1),M=X(b,j);if(M&&M.getAttribute(F)&&A(b,M),O.forEach(function(B){M&&!x.hasAttribute(B)&&M.hasAttribute(B)&&x.setAttribute(B,M.getAttribute(B))}),!x.children.length)for(var R=M.cloneNode(!0);R.firstChild;)x.appendChild(R.firstChild);x.removeAttribute(F)}var W=new RegExp("(normal|italic)?\\s*(normal|small-caps)?\\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*("+e.reNum+"(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|"+e.reNum+"))?\\s+(.*)");h(e,{parseFontDeclaration:function(b,x){var O=b.match(W);if(O){var F=O[1],j=O[3],M=O[4],R=O[5],B=O[6];F&&(x.fontStyle=F),j&&(x.fontWeight=isNaN(parseFloat(j))?j:parseFloat(j)),M&&(x.fontSize=a(M)),B&&(x.fontFamily=B),R&&(x.lineHeight=R==="normal"?1:R)}},getGradientDefs:function(b){var x=["linearGradient","radialGradient","svg:linearGradient","svg:radialGradient"],O=S(b,x),F,j=0,M={};for(j=O.length;j--;)F=O[j],F.getAttribute("xlink:href")&&A(b,F),M[F.getAttribute("id")]=F;return M},parseAttributes:function(b,x,O){if(b){var F,j={},M,R;typeof O>"u"&&(O=b.getAttribute("svgUid")),b.parentNode&&e.svgValidParentsRegEx.test(b.parentNode.nodeName)&&(j=e.parseAttributes(b.parentNode,x,O));var B=x.reduce(function(J,Q){return F=b.getAttribute(Q),F&&(J[Q]=F),J},{}),U=h(D(b,O),e.parseStyleAttribute(b));B=h(B,U),U[m]&&b.setAttribute(m,U[m]),M=R=j.fontSize||e.Text.DEFAULT_SVG_FONT_SIZE,B[g]&&(B[g]=M=a(B[g],R));var H,$,N={};for(var V in B)H=v(V),$=p(H,B[V],j,M),N[H]=$;N&&N.font&&e.parseFontDeclaration(N.font,N);var K=h(j,N);return e.svgValidParentsRegEx.test(b.nodeName)?K:y(K)}},parseElements:function(b,x,O,F,j){new e.ElementsParser(b,x,O,F,j).parse()},parseStyleAttribute:function(b){var x={},O=b.getAttribute("style");return O&&(typeof O=="string"?w(O,x):T(O,x)),x},parsePointsAttribute:function(b){if(!b)return null;b=b.replace(/,/g," ").trim(),b=b.split(/\s+/);var x=[],O,F;for(O=0,F=b.length;O<F;O+=2)x.push({x:parseFloat(b[O]),y:parseFloat(b[O+1])});return x},getCSSRules:function(b){var x=b.getElementsByTagName("style"),O,F,j={},M;for(O=0,F=x.length;O<F;O++){var R=x[O].textContent||"";R=R.replace(/\/\*[\s\S]*?\*\//g,""),R.trim()!==""&&(M=R.match(/[^{]*\{[\s\S]*?\}/g),M=M.map(function(B){return B.trim()}),M.forEach(function(B){var U=B.match(/([\s\S]*?)\s*\{([^}]*)\}/),H={},$=U[2].trim(),N=$.replace(/;$/,"").split(/\s*;\s*/);for(O=0,F=N.length;O<F;O++){var V=N[O].split(/\s*:\s*/),K=V[0],J=V[1];H[K]=J}B=U[1],B.split(",").forEach(function(Q){Q=Q.replace(/^svg/i,"").trim(),Q!==""&&(j[Q]?e.util.object.extend(j[Q],H):j[Q]=e.util.object.clone(H))})}))}return j},loadSVGFromURL:function(b,x,O,F){b=b.replace(/^\n\s*/,"").trim(),new e.util.request(b,{method:"get",onComplete:j});function j(M){var R=M.responseXML;if(R&&!R.documentElement&&e.window.ActiveXObject&&M.responseText&&(R=new ActiveXObject("Microsoft.XMLDOM"),R.async="false",R.loadXML(M.responseText.replace(/<!DOCTYPE[\s\S]*?(\[[\s\S]*\])*?>/i,""))),!R||!R.documentElement)return x&&x(null),!1;e.parseSVGDocument(R.documentElement,function(B,U,H,$){x&&x(B,U,H,$)},O,F)}},loadSVGFromString:function(b,x,O,F){b=b.trim();var j;if(typeof e.window.DOMParser<"u"){var M=new e.window.DOMParser;M&&M.parseFromString&&(j=M.parseFromString(b,"text/xml"))}else e.window.ActiveXObject&&(j=new ActiveXObject("Microsoft.XMLDOM"),j.async="false",j.loadXML(b.replace(/<!DOCTYPE[\s\S]*?(\[[\s\S]*\])*?>/i,"")));e.parseSVGDocument(j.documentElement,function(R,B,U,H){x(R,B,U,H)},O,F)}})}(G),d.ElementsParser=function(u,e,h,r,t,a){this.elements=u,this.callback=e,this.options=h,this.reviver=r,this.svgUid=h&&h.svgUid||0,this.parsingOptions=t,this.regexUrl=/^url\(['"]?#([^'"]+)['"]?\)/g,this.doc=a},function(u){u.parse=function(){this.instances=new Array(this.elements.length),this.numElements=this.elements.length,this.createObjects()},u.createObjects=function(){var e=this;this.elements.forEach(function(h,r){h.setAttribute("svgUid",e.svgUid),e.createObject(h,r)})},u.findTag=function(e){return d[d.util.string.capitalize(e.tagName.replace("svg:",""))]},u.createObject=function(e,h){var r=this.findTag(e);if(r&&r.fromElement)try{r.fromElement(e,this.createCallback(h,e),this.options)}catch(t){d.log(t)}else this.checkIfDone()},u.createCallback=function(e,h){var r=this;return function(t){var a;r.resolveGradient(t,h,"fill"),r.resolveGradient(t,h,"stroke"),t instanceof d.Image&&t._originalElement&&(a=t.parsePreserveAspectRatioAttribute(h)),t._removeTransformMatrix(a),r.resolveClipPath(t,h),r.reviver&&r.reviver(h,t),r.instances[e]=t,r.checkIfDone()}},u.extractPropertyDefinition=function(e,h,r){var t=e[h],a=this.regexUrl;if(a.test(t)){a.lastIndex=0;var n=a.exec(t)[1];return a.lastIndex=0,d[r][this.svgUid][n]}},u.resolveGradient=function(e,h,r){var t=this.extractPropertyDefinition(e,r,"gradientDefs");if(t){var a=h.getAttribute(r+"-opacity"),n=d.Gradient.fromElement(t,e,a,this.options);e.set(r,n)}},u.createClipPathCallback=function(e,h){return function(r){r._removeTransformMatrix(),r.fillRule=r.clipRule,h.push(r)}},u.resolveClipPath=function(e,h){var r=this.extractPropertyDefinition(e,"clipPath","clipPaths"),t,a,n,c,s,i;if(r){c=[],n=d.util.invertTransform(e.calcTransformMatrix());for(var o=r[0].parentNode,l=h;l.parentNode&&l.getAttribute("clip-path")!==e.clipPath;)l=l.parentNode;l.parentNode.appendChild(o);for(var f=0;f<r.length;f++)t=r[f],a=this.findTag(t),a.fromElement(t,this.createClipPathCallback(e,c),this.options);c.length===1?r=c[0]:r=new d.Group(c),s=d.util.multiplyTransformMatrices(n,r.calcTransformMatrix()),r.clipPath&&this.resolveClipPath(r,l);var i=d.util.qrDecompose(s);r.flipX=!1,r.flipY=!1,r.set("scaleX",i.scaleX),r.set("scaleY",i.scaleY),r.angle=i.angle,r.skewX=i.skewX,r.skewY=0,r.setPositionByOrigin({x:i.translateX,y:i.translateY},"center","center"),e.clipPath=r}else delete e.clipPath},u.checkIfDone=function(){--this.numElements===0&&(this.instances=this.instances.filter(function(e){return e!=null}),this.callback(this.instances,this.elements))}}(d.ElementsParser.prototype),function(u){var e=u.fabric||(u.fabric={});if(e.Point){e.warn("fabric.Point is already defined");return}e.Point=h;function h(r,t){this.x=r,this.y=t}h.prototype={type:"point",constructor:h,add:function(r){return new h(this.x+r.x,this.y+r.y)},addEquals:function(r){return this.x+=r.x,this.y+=r.y,this},scalarAdd:function(r){return new h(this.x+r,this.y+r)},scalarAddEquals:function(r){return this.x+=r,this.y+=r,this},subtract:function(r){return new h(this.x-r.x,this.y-r.y)},subtractEquals:function(r){return this.x-=r.x,this.y-=r.y,this},scalarSubtract:function(r){return new h(this.x-r,this.y-r)},scalarSubtractEquals:function(r){return this.x-=r,this.y-=r,this},multiply:function(r){return new h(this.x*r,this.y*r)},multiplyEquals:function(r){return this.x*=r,this.y*=r,this},divide:function(r){return new h(this.x/r,this.y/r)},divideEquals:function(r){return this.x/=r,this.y/=r,this},eq:function(r){return this.x===r.x&&this.y===r.y},lt:function(r){return this.x<r.x&&this.y<r.y},lte:function(r){return this.x<=r.x&&this.y<=r.y},gt:function(r){return this.x>r.x&&this.y>r.y},gte:function(r){return this.x>=r.x&&this.y>=r.y},lerp:function(r,t){return typeof t>"u"&&(t=.5),t=Math.max(Math.min(1,t),0),new h(this.x+(r.x-this.x)*t,this.y+(r.y-this.y)*t)},distanceFrom:function(r){var t=this.x-r.x,a=this.y-r.y;return Math.sqrt(t*t+a*a)},midPointFrom:function(r){return this.lerp(r)},min:function(r){return new h(Math.min(this.x,r.x),Math.min(this.y,r.y))},max:function(r){return new h(Math.max(this.x,r.x),Math.max(this.y,r.y))},toString:function(){return this.x+","+this.y},setXY:function(r,t){return this.x=r,this.y=t,this},setX:function(r){return this.x=r,this},setY:function(r){return this.y=r,this},setFromPoint:function(r){return this.x=r.x,this.y=r.y,this},swap:function(r){var t=this.x,a=this.y;this.x=r.x,this.y=r.y,r.x=t,r.y=a},clone:function(){return new h(this.x,this.y)}}}(G),function(u){var e=u.fabric||(u.fabric={});if(e.Intersection){e.warn("fabric.Intersection is already defined");return}function h(r){this.status=r,this.points=[]}e.Intersection=h,e.Intersection.prototype={constructor:h,appendPoint:function(r){return this.points.push(r),this},appendPoints:function(r){return this.points=this.points.concat(r),this}},e.Intersection.intersectLineLine=function(r,t,a,n){var c,s=(n.x-a.x)*(r.y-a.y)-(n.y-a.y)*(r.x-a.x),i=(t.x-r.x)*(r.y-a.y)-(t.y-r.y)*(r.x-a.x),o=(n.y-a.y)*(t.x-r.x)-(n.x-a.x)*(t.y-r.y);if(o!==0){var l=s/o,f=i/o;0<=l&&l<=1&&0<=f&&f<=1?(c=new h("Intersection"),c.appendPoint(new e.Point(r.x+l*(t.x-r.x),r.y+l*(t.y-r.y)))):c=new h}else s===0||i===0?c=new h("Coincident"):c=new h("Parallel");return c},e.Intersection.intersectLinePolygon=function(r,t,a){var n=new h,c=a.length,s,i,o,l;for(l=0;l<c;l++)s=a[l],i=a[(l+1)%c],o=h.intersectLineLine(r,t,s,i),n.appendPoints(o.points);return n.points.length>0&&(n.status="Intersection"),n},e.Intersection.intersectPolygonPolygon=function(r,t){var a=new h,n=r.length,c;for(c=0;c<n;c++){var s=r[c],i=r[(c+1)%n],o=h.intersectLinePolygon(s,i,t);a.appendPoints(o.points)}return a.points.length>0&&(a.status="Intersection"),a},e.Intersection.intersectPolygonRectangle=function(r,t,a){var n=t.min(a),c=t.max(a),s=new e.Point(c.x,n.y),i=new e.Point(n.x,c.y),o=h.intersectLinePolygon(n,s,r),l=h.intersectLinePolygon(s,c,r),f=h.intersectLinePolygon(c,i,r),g=h.intersectLinePolygon(i,n,r),m=new h;return m.appendPoints(o.points),m.appendPoints(l.points),m.appendPoints(f.points),m.appendPoints(g.points),m.points.length>0&&(m.status="Intersection"),m}}(G),function(u){var e=u.fabric||(u.fabric={});if(e.Color){e.warn("fabric.Color is already defined.");return}function h(t){t?this._tryParsingColor(t):this.setSource([0,0,0,1])}e.Color=h,e.Color.prototype={_tryParsingColor:function(t){var a;t in h.colorNameMap&&(t=h.colorNameMap[t]),t==="transparent"&&(a=[255,255,255,0]),a||(a=h.sourceFromHex(t)),a||(a=h.sourceFromRgb(t)),a||(a=h.sourceFromHsl(t)),a||(a=[0,0,0,1]),a&&this.setSource(a)},_rgbToHsl:function(t,a,n){t/=255,a/=255,n/=255;var c,s,i,o=e.util.array.max([t,a,n]),l=e.util.array.min([t,a,n]);if(i=(o+l)/2,o===l)c=s=0;else{var f=o-l;switch(s=i>.5?f/(2-o-l):f/(o+l),o){case t:c=(a-n)/f+(a<n?6:0);break;case a:c=(n-t)/f+2;break;case n:c=(t-a)/f+4;break}c/=6}return[Math.round(c*360),Math.round(s*100),Math.round(i*100)]},getSource:function(){return this._source},setSource:function(t){this._source=t},toRgb:function(){var t=this.getSource();return"rgb("+t[0]+","+t[1]+","+t[2]+")"},toRgba:function(){var t=this.getSource();return"rgba("+t[0]+","+t[1]+","+t[2]+","+t[3]+")"},toHsl:function(){var t=this.getSource(),a=this._rgbToHsl(t[0],t[1],t[2]);return"hsl("+a[0]+","+a[1]+"%,"+a[2]+"%)"},toHsla:function(){var t=this.getSource(),a=this._rgbToHsl(t[0],t[1],t[2]);return"hsla("+a[0]+","+a[1]+"%,"+a[2]+"%,"+t[3]+")"},toHex:function(){var t=this.getSource(),a,n,c;return a=t[0].toString(16),a=a.length===1?"0"+a:a,n=t[1].toString(16),n=n.length===1?"0"+n:n,c=t[2].toString(16),c=c.length===1?"0"+c:c,a.toUpperCase()+n.toUpperCase()+c.toUpperCase()},toHexa:function(){var t=this.getSource(),a;return a=Math.round(t[3]*255),a=a.toString(16),a=a.length===1?"0"+a:a,this.toHex()+a.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(t){var a=this.getSource();return a[3]=t,this.setSource(a),this},toGrayscale:function(){var t=this.getSource(),a=parseInt((t[0]*.3+t[1]*.59+t[2]*.11).toFixed(0),10),n=t[3];return this.setSource([a,a,a,n]),this},toBlackWhite:function(t){var a=this.getSource(),n=(a[0]*.3+a[1]*.59+a[2]*.11).toFixed(0),c=a[3];return t=t||127,n=Number(n)<Number(t)?0:255,this.setSource([n,n,n,c]),this},overlayWith:function(t){t instanceof h||(t=new h(t));var a=[],n=this.getAlpha(),c=.5,s=this.getSource(),i=t.getSource(),o;for(o=0;o<3;o++)a.push(Math.round(s[o]*(1-c)+i[o]*c));return a[3]=n,this.setSource(a),this}},e.Color.reRGBa=/^rgba?\(\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*(?:\s*,\s*((?:\d*\.?\d+)?)\s*)?\)$/i,e.Color.reHSLa=/^hsla?\(\s*(\d{1,3})\s*,\s*(\d{1,3}\%)\s*,\s*(\d{1,3}\%)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/i,e.Color.reHex=/^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i,e.Color.colorNameMap={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#00FFFF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blue:"#0000FF",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgrey:"#A9A9A9",darkgreen:"#006400",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#FF00FF",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgrey:"#D3D3D3",lightgreen:"#90EE90",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#00FF00",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",rebeccapurple:"#663399",red:"#FF0000",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",white:"#FFFFFF",whitesmoke:"#F5F5F5",yellow:"#FFFF00",yellowgreen:"#9ACD32"};function r(t,a,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+(a-t)*6*n:n<1/2?a:n<2/3?t+(a-t)*(2/3-n)*6:t}e.Color.fromRgb=function(t){return h.fromSource(h.sourceFromRgb(t))},e.Color.sourceFromRgb=function(t){var a=t.match(h.reRGBa);if(a){var n=parseInt(a[1],10)/(/%$/.test(a[1])?100:1)*(/%$/.test(a[1])?255:1),c=parseInt(a[2],10)/(/%$/.test(a[2])?100:1)*(/%$/.test(a[2])?255:1),s=parseInt(a[3],10)/(/%$/.test(a[3])?100:1)*(/%$/.test(a[3])?255:1);return[parseInt(n,10),parseInt(c,10),parseInt(s,10),a[4]?parseFloat(a[4]):1]}},e.Color.fromRgba=h.fromRgb,e.Color.fromHsl=function(t){return h.fromSource(h.sourceFromHsl(t))},e.Color.sourceFromHsl=function(t){var a=t.match(h.reHSLa);if(a){var n=(parseFloat(a[1])%360+360)%360/360,c=parseFloat(a[2])/(/%$/.test(a[2])?100:1),s=parseFloat(a[3])/(/%$/.test(a[3])?100:1),i,o,l;if(c===0)i=o=l=s;else{var f=s<=.5?s*(c+1):s+c-s*c,g=s*2-f;i=r(g,f,n+1/3),o=r(g,f,n),l=r(g,f,n-1/3)}return[Math.round(i*255),Math.round(o*255),Math.round(l*255),a[4]?parseFloat(a[4]):1]}},e.Color.fromHsla=h.fromHsl,e.Color.fromHex=function(t){return h.fromSource(h.sourceFromHex(t))},e.Color.sourceFromHex=function(t){if(t.match(h.reHex)){var a=t.slice(t.indexOf("#")+1),n=a.length===3||a.length===4,c=a.length===8||a.length===4,s=n?a.charAt(0)+a.charAt(0):a.substring(0,2),i=n?a.charAt(1)+a.charAt(1):a.substring(2,4),o=n?a.charAt(2)+a.charAt(2):a.substring(4,6),l=c?n?a.charAt(3)+a.charAt(3):a.substring(6,8):"FF";return[parseInt(s,16),parseInt(i,16),parseInt(o,16),parseFloat((parseInt(l,16)/255).toFixed(2))]}},e.Color.fromSource=function(t){var a=new h;return a.setSource(t),a}}(G),function(){function u(a,n){var c=a.getAttribute("style"),s=a.getAttribute("offset")||0,i,o,l,f;if(s=parseFloat(s)/(/%$/.test(s)?100:1),s=s<0?0:s>1?1:s,c){var g=c.split(/\s*;\s*/);for(g[g.length-1]===""&&g.pop(),f=g.length;f--;){var m=g[f].split(/\s*:\s*/),v=m[0].trim(),p=m[1].trim();v==="stop-color"?i=p:v==="stop-opacity"&&(l=p)}}return i||(i=a.getAttribute("stop-color")||"rgb(0,0,0)"),l||(l=a.getAttribute("stop-opacity")),i=new d.Color(i),o=i.getAlpha(),l=isNaN(parseFloat(l))?1:parseFloat(l),l*=o*n,{offset:s,color:i.toRgb(),opacity:l}}function e(a){return{x1:a.getAttribute("x1")||0,y1:a.getAttribute("y1")||0,x2:a.getAttribute("x2")||"100%",y2:a.getAttribute("y2")||0}}function h(a){return{x1:a.getAttribute("fx")||a.getAttribute("cx")||"50%",y1:a.getAttribute("fy")||a.getAttribute("cy")||"50%",r1:0,x2:a.getAttribute("cx")||"50%",y2:a.getAttribute("cy")||"50%",r2:a.getAttribute("r")||"50%"}}var r=d.util.object.clone;d.Gradient=d.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(a){a||(a={}),a.coords||(a.coords={});var n,c=this;Object.keys(a).forEach(function(s){c[s]=a[s]}),this.id?this.id+="_"+d.Object.__uid++:this.id=d.Object.__uid++,n={x1:a.coords.x1||0,y1:a.coords.y1||0,x2:a.coords.x2||0,y2:a.coords.y2||0},this.type==="radial"&&(n.r1=a.coords.r1||0,n.r2=a.coords.r2||0),this.coords=n,this.colorStops=a.colorStops.slice()},addColorStop:function(a){for(var n in a){var c=new d.Color(a[n]);this.colorStops.push({offset:parseFloat(n),color:c.toRgb(),opacity:c.getAlpha()})}return this},toObject:function(a){var n={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return d.util.populateWithProperties(this,n,a),n},toSVG:function(a,o){var c=r(this.coords,!0),s,i,o=o||{},l,f,g=r(this.colorStops,!0),m=c.r1>c.r2,v=this.gradientTransform?this.gradientTransform.concat():d.iMatrix.concat(),p=-this.offsetX,_=-this.offsetY,y=!!o.additionalTransform,S=this.gradientUnits==="pixels"?"userSpaceOnUse":"objectBoundingBox";if(g.sort(function(L,I){return L.offset-I.offset}),S==="objectBoundingBox"?(p/=a.width,_/=a.height):(p+=a.width/2,_+=a.height/2),a.type==="path"&&(p-=a.pathOffset.x,_-=a.pathOffset.y),v[4]-=p,v[5]-=_,f='id="SVGID_'+this.id+'" gradientUnits="'+S+'"',f+=' gradientTransform="'+(y?o.additionalTransform+" ":"")+d.util.matrixToSVG(v)+'" ',this.type==="linear"?l=["<linearGradient ",f,' x1="',c.x1,'" y1="',c.y1,'" x2="',c.x2,'" y2="',c.y2,`">
2
2
  `]:this.type==="radial"&&(l=["<radialGradient ",f,' cx="',m?c.x1:c.x2,'" cy="',m?c.y1:c.y2,'" r="',m?c.r1:c.r2,'" fx="',m?c.x2:c.x1,'" fy="',m?c.y2:c.y1,`">
3
3
  `]),this.type==="radial"){if(m)for(g=g.concat(),g.reverse(),s=0,i=g.length;s<i;s++)g[s].offset=1-g[s].offset;var w=Math.min(c.r1,c.r2);if(w>0){var T=Math.max(c.r1,c.r2),D=w/T;for(s=0,i=g.length;s<i;s++)g[s].offset+=D*(1-g[s].offset)}}for(s=0,i=g.length;s<i;s++){var k=g[s];l.push("<stop ",'offset="',k.offset*100+"%",'" style="stop-color:',k.color,typeof k.opacity<"u"?";stop-opacity: "+k.opacity:";",`"/>
4
4
  `)}return l.push(this.type==="linear"?`</linearGradient>
@@ -0,0 +1 @@
1
+ var tt=Object.defineProperty;var et=(t,e,s)=>e in t?tt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s;var g=(t,e,s)=>(et(t,typeof e!="symbol"?e+"":e,s),s);import{a as w}from"./index-a9bb7636.js";import{aQ as st,r as q,aj as nt,aL as u,aw as R,b$ as F,u as b}from"./index-b3c0133a.js";import{A as U}from"./colormap-6e43299c.js";import{h as rt,c as $,N as _,d as j,f as x}from"./hooks-171c0765.js";const P=4;class at{constructor(e){g(this,"buffer");g(this,"view");g(this,"pos");this.buffer=new Uint8Array(e),this.view=new DataView(e),this.pos=0}readChunkType(){const e=this.pos%P;e&&(this.pos+=P-e);const s=this.pos;this.pos+=4;const a=this.buffer.subarray(s,this.pos);return String.fromCharCode.apply(null,a)}readChunkSize(){const e=this.view.getUint32(this.pos,!1);return this.pos+=4,e}readChunk(){const e=this.readChunkSize(),s=this.pos;return this.pos+=e,this.buffer.subarray(s,s+e)}readChunkAsShared(){const e=this.readChunk(),s=new SharedArrayBuffer(e.byteLength),a=new Uint8Array(s);return a.set(e),a}skipChunk(){const e=this.readChunkSize();this.pos,this.pos+=e}readJsonChunk(){const e=this.readChunkSize(),s=this.pos;this.pos+=e;const a=this.buffer.subarray(s,s+e),n=String.fromCharCode.apply(null,a);return JSON.parse(n)}eof(){return this.pos+(P-this.pos%P)>=this.buffer.byteLength}}const it=st("daiquiri.services.TomoDetectorService");var E=(t=>(t.Raw="raw",t.F16="f16",t.U8="u8",t))(E||{}),ot=(t=>(t.Dark="dark",t.Flat="flat",t.Proj="proj",t.Flatfield="flatfield",t))(ot||{}),ct=(t=>(t.Unknown="unknown",t.Dark="dark",t.Flat="flat",t.Proj="proj",t.ProjNorm="proj_norm",t.ProjDarkNorm="proj_dark_norm",t.ProjFlatNorm="proj_flat_norm",t.FlatfieldNorm="flatfield_norm",t))(ct||{});const ut={Greys:"gray",Viridis:"viridis",Cividis:"cividis",Magma:"magma",Inferno:"inferno",Plasma:"plasma"},dt={[w.Linear]:"linear",[w.Log]:"log",[w.Sqrt]:"sqrt",[w.Gamma]:"gamma",[w.SymLog]:"arcsinh"};function lt(t){var h;if(!t.detector)return null;const{flat:e,dark:s,data:a}=t.detector,n=a?a.scanid:0,r=a?a.frame_no:0,i=(s!==void 0?s+1:0)+(e!==void 0?e+1:0)+n+r,o=(h=t.profiles)==null?void 0:h.map(m=>m.toString()).join(";");function d(){return t.vmin&&t.vmax?{vmin:t.vmin.toString(),vmax:t.vmax.toString()}:t.autoscale===U.None?{}:{autoscale:t.autoscale.toString()}}return{image_no:i.toString(),norm:dt[t.normalization],lut:ut[t.lut]??"gray",detectorid:t.detector.detector_id,process:t.process.toString(),encoding:t.encoding,histogram:t.histogram?"true":void 0,profiles:o,...d()}}function k(t,e,s){const a=t.headers[e];return a?new u(a):s}function ft(t,e){return t.headers[e].split(" ").map(r=>Number.parseInt(r))}function D(t,e){return Number.parseFloat(t.headers[e])}function ht(t,e){if(e in t.headers)return Number.parseFloat(t.headers[e])}function mt(t){const e=k(t,"dqr-pixelsize",new u("1 px")),s=k(t,"dqr-sy",new u("0 mm")),a=k(t,"dqr-sz",new u("0 mm")),n=k(t,"dqr-sampy",new u("0 mm")),r=k(t,"dqr-somega",null),i=k(t,"dqr-detcy",null),o=k(t,"dqr-detcz",null),d=s.add(n);return{imagePixelSize:e,sampyPosition:n,syPosition:s,szPosition:a,imagePosition:d,imageSomegaPosition:r,detectorCenterY:i,detectorCenterZ:o}}function yt(t,e){const s=mt(t),a=t.headers["dqr-dtype"],n=ft(t,"dqr-shape"),r=D(t,"dqr-min"),i=D(t,"dqr-max"),o=D(t,"dqr-mean"),d=D(t,"dqr-std"),h=ht(t,"dqr-epoch"),m=t.headers["dqr-datakind"]??"unknown",c=rt(t.data,n,a),l=$(c);return{...s,detectorSize:{height:n[0],width:n[1]},array:c,epoch:h,displayArray:l,datakind:m,statistics:{min:r,max:i,mean:o,std:d,minPositive:null}}}function gt(t,e){const s=new at(t.data),a=s.readChunkType();if(a!=="DQR0")throw new Error(`Unexpected IFF BOM: ${a}`);s.skipChunk();let n=null,r=null,i=null,o=null;for(;!s.eof();)switch(s.readChunkType()){case"FORM":{r=s.readJsonChunk();break}case"DATA":{e?i=s.readChunkAsShared():i=s.readChunk();break}case"HST0":{o=s.readChunk();break}case"TOMO":{n=s.readJsonChunk();break}default:s.skipChunk()}if(i===null)throw new Error("Response does not contain DATA chunk");function d(){if(o===null)return;const f=new Float32Array(o.buffer,o.byteOffset,o.byteLength/4);return{values:R(f.subarray(0,256),[256]),bins:R(f.subarray(256,256+257),[257])}}const h=d(),m=r.dtype,c=r.shape,l=r.profile,v=r.min,C=r.max,O=r.mean,H=r.std;function T(f,N){if(l==="u8"){const y=x(f,"|u1");if(!N)return new _(y,c,{min:r.u8_min??0,max:r.u8_max??1,normalization:r.u8_norm??"linear",autoscale:r.u8_autoscale??"none"});const z=R(y,c),A=R(new Float32Array(c[0]*c[1]),c);return F.assign(A,z),F.mulseq(A,C-v),F.divseq(A,255),F.addseq(A,v),A}if(l==="f16"){const y=x(f,"<u2");return new j(y,c)}if(l==="raw"){const y=x(f,m);return R(y,c)}throw new Error(`Unsupported profile ${l}`)}const S=T(i,!1),B=S instanceof _||S instanceof j?S:$(S),G=i.byteLength;function p(f,N,y){const z=f[N];return z?u(z):y}const J=p(n,"DQR-pixelsize",u("1 px")),M=p(n,"DQR-sy",u("0 mm")),V=p(n,"DQR-sz",u("0 mm")),Q=p(n,"DQR-sampy",u("0 mm")),Y=p(n,"DQR-somega",null),Z=p(n,"DQR-detcy",null),I=p(n,"DQR-detcz",null),W=n["DQR-datakind"]??"unknown",X=n["DQR-epoch"],K=M.add(Q);return{epoch:X,imagePixelSize:J,sampyPosition:Q,syPosition:M,szPosition:V,imagePosition:K,imageSomegaPosition:Y,detectorCenterY:Z,detectorCenterZ:I,detectorSize:{height:c[0],width:c[1]},array:S,displayArray:B,datakind:W,info:{profile:l,byteLength:G,dtype:m},statistics:{min:v,max:C,mean:O,std:H,minPositive:null},histogram:h}}const L={bin:yt,iff:gt};class pt{constructor(e){g(this,"setResult");g(this,"isAborted");g(this,"isFetching");g(this,"pendingRequest");this.setResult=e,this.setResult({loading:!1,data:null}),this.isAborted=!1,this.pendingRequest=void 0,this.isFetching=!1}requestUpdate(e){this.isAborted||(this.isFetching?this.pendingRequest=e:(this.isFetching=!0,this.fetchData(e)))}fetchPendingRequest(){if(!this.isAborted)if(this.pendingRequest){const e=this.pendingRequest;this.pendingRequest=void 0,this.fetchData(e)}else this.isFetching&&(this.isFetching=!1,this.setResult(e=>({...e,loading:!1})))}async fetchData(e){function s(){switch(e.process){case"flatfield":case"proj":return e.detector.data!==void 0;case"flat":return e.detector.flat!==void 0;case"dark":return e.detector.dark!==void 0}return!0}if(!s()){try{this.setResult(n=>({...n,data:null}))}finally{this.fetchPendingRequest()}return}const a="iff";if(!this.isAborted){this.setResult(n=>({...n,loading:!0}));try{let n;it("Get image from rest API /tomo/data");try{n=await nt.get("/tomo/data",lt({...e,encoding:a}),!0,"arraybuffer")}catch(r){if(this.isAborted)return;if(r.response.status===404)n=null;else{const i=r instanceof Error?r.message:String(r);this.setResult(o=>({...o,data:null,error:`Error while fetching data: ${i}`}));return}}if(this.isAborted)return;try{if(!n)throw new Error(`No ${e.process} yet available`);if(!(a in L))throw new Error(`Unsupported response encoding '${a}'`);const r=L[a](n,e.shared??!1);this.setResult(i=>({...i,data:r,error:void 0}))}catch(r){const i=r instanceof Error?r.message:String(r);this.setResult(o=>({...o,data:null,error:i}))}}finally{this.fetchPendingRequest()}}}abort(){this.isAborted=!0}}function At(){const[t,e]=q.useState({loading:!1,data:null}),s=q.useMemo(()=>new pt(e),[]);q.useEffect(()=>()=>{s==null||s.abort()},[s]);const a=q.useCallback(n=>{s==null||s.requestUpdate(n)},[s]);return[t,a]}function Rt(t){const[e,s]=b(`${t.name}/lut`,t.lut??"Cividis"),[a,n]=b(`${t.name}/levels`,[-.1,.1]),[r,i]=b(`${t.name}/inverted`,!1),[o,d]=b(`${t.name}/scale`,w.Linear),[h,m]=b(`${t.name}/autoscale`,t.autoscale??!0),[c,l]=b(`${t.name}/autoscalemode`,t.autoscaleMode??U.StdDev3),[v,C]=b(`${t.name}/profile`,E.Raw);return{colorMap:e,setColorMap:s,scaleType:o,setScaleType:d,autoscale:h,setAutoscale:m,autoscaleMode:c,setAutoscaleMode:l,scaleDomain:a,setScaleDomain:n,invertColorMap:r,setInvertColorMap:i,profile:v,setProfile:C}}export{E as I,ct as T,ot as a,At as b,Rt as u};
@@ -0,0 +1 @@
1
+ var t=Object.defineProperty;var m=(s,e,p)=>e in s?t(s,e,{enumerable:!0,configurable:!0,writable:!0,value:p}):s[e]=p;var a=(s,e,p)=>(m(s,typeof e!="symbol"?e+"":e,p),p);import{E as i,a1 as o}from"./index-b3c0133a.js";class r{constructor(){a(this,"edge");a(this,"element");a(this,"end");a(this,"maproiid");a(this,"maps");a(this,"sampleid");a(this,"start")}}class c extends i(r,{pk:"maproiid",key:"MapROI"}){}const y=o({path:"/metadata/xrf/maps/rois/:maproiid",schema:c,searchParams:{}});class d{constructor(){a(this,"b");a(this,"bopacity");a(this,"broi");a(this,"compositeid");a(this,"g");a(this,"gopacity");a(this,"groi");a(this,"opacity");a(this,"r");a(this,"ropacity");a(this,"rroi");a(this,"sampleid");a(this,"subsampleid");a(this,"url")}}class n extends i(d,{pk:"compositeid",key:"CompositeMap"}){}const R=o({path:"/metadata/xrf/maps/composite/:compositeid",schema:n,searchParams:{}});export{R as C,y as M};
@@ -1 +1 @@
1
- var n=Object.defineProperty;var p=(s,t,c)=>t in s?n(s,t,{enumerable:!0,configurable:!0,writable:!0,value:c}):s[t]=c;var r=(s,t,c)=>(p(s,typeof t!="symbol"?t+"":t,c),c);import{dK as i}from"./index-4cf586ed.js";class l{constructor(){r(this,"cache");this.cache={}}debounce(t,c){const e=this.cache[t];return i.isEqual(e,c)?e:(this.cache[t]=c,c)}memo(t,c,e){const h=[void 0,void 0],[u,a]=this.cache[t]||h;if(i.isEqual(a,e))return u;const o=c();return this.cache[t]=[o,e],o}}function m(s){const t=new l;return(c,e)=>s(c,e,t)}export{m};
1
+ var n=Object.defineProperty;var p=(s,t,c)=>t in s?n(s,t,{enumerable:!0,configurable:!0,writable:!0,value:c}):s[t]=c;var r=(s,t,c)=>(p(s,typeof t!="symbol"?t+"":t,c),c);import{dU as i}from"./index-b3c0133a.js";class l{constructor(){r(this,"cache");this.cache={}}debounce(t,c){const e=this.cache[t];return i.isEqual(e,c)?e:(this.cache[t]=c,c)}memo(t,c,e){const h=[void 0,void 0],[u,a]=this.cache[t]||h;if(i.isEqual(a,e))return u;const o=c();return this.cache[t]=[o,e],o}}function m(s){const t=new l;return(c,e)=>s(c,e,t)}export{m};