drawui-core 0.5.3 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/icons-catalog-LG6WL446.cjs +4 -0
- package/dist/icons-catalog-TDWDJPEW.js +4 -0
- package/dist/index.cjs +40 -32
- package/dist/index.d.cts +257 -13
- package/dist/index.d.ts +257 -13
- package/dist/index.js +40 -32
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,50 +1,58 @@
|
|
|
1
|
-
'use strict';var L0=r=>!!r&&Number.isFinite(r.x)&&Number.isFinite(r.y)&&Number.isFinite(r.width)&&Number.isFinite(r.height);function Ne(r){return !L0(r)||r.width<=0||r.height<=0}function gt(r,e){if(Ne(r))return L0(e)?{...e}:null;if(Ne(e))return {...r};let t=r,i=e,n=Math.min(t.x,i.x),o=Math.min(t.y,i.y),s=Math.max(t.x+t.width,i.x+i.width),a=Math.max(t.y+t.height,i.y+i.height);return {x:n,y:o,width:s-n,height:a-o}}function H0(r,e){if(Ne(r)||Ne(e))return false;let t=r,i=e;return t.x<i.x+i.width&&i.x<t.x+t.width&&t.y<i.y+i.height&&i.y<t.y+t.height}function Gn(r,e){if(!H0(r,e))return [{...r}];let t=[],i=r.x+r.width,n=r.y+r.height,o=e.x+e.width,s=e.y+e.height;e.y>r.y&&t.push({x:r.x,y:r.y,width:r.width,height:e.y-r.y}),s<n&&t.push({x:r.x,y:s,width:r.width,height:n-s});let a=Math.max(r.y,Math.min(e.y,n)),l=Math.max(0,Math.min(s,n)-a);return l>0&&e.x>r.x&&t.push({x:r.x,y:a,width:e.x-r.x,height:l}),l>0&&o<i&&t.push({x:o,y:a,width:i-o,height:l}),t}var On=(r,e)=>({x:r.x-e,y:r.y-e,width:r.width+e*2,height:r.height+e*2}),D0=class{current=null;reset(e=null){this.current=L0(e)?{...e}:null;}get(){return this.current?{...this.current}:null}desiredOf(e){let t=e.padding??40,i=e.viewport,n=e.minSize?.width??i.width,o=e.minSize?.height??i.height,s=e.anchor??{x:0,y:0},a;return Ne(e.content)?a={x:s.x,y:s.y,width:Math.max(i.width,n),height:Math.max(i.height,o)}:a=On(e.content,t),e.includeViewport===false?a:gt(a,On(i,t))}update(e){let t=e.viewport,i=this.desiredOf(e);if(Ne(this.current))return this.current=i,{extent:{...i},changed:true,action:"init"};let n=this.current;if(i.x<n.x-.5||i.y<n.y-.5||i.x+i.width>n.x+n.width+.5||i.y+i.height>n.y+n.height+.5){let h=gt(n,i),d=Math.abs(h.x-n.x)>.5||Math.abs(h.y-n.y)>.5||Math.abs(h.width-n.width)>.5||Math.abs(h.height-n.height)>.5;return this.current=h,{extent:{...h},changed:d,action:d?"grow":"hold"}}if(!e.pointerMoved)return {extent:{...n},changed:false,action:"hold",holdReason:"pointer-still"};if(Gn(n,i).some(h=>H0(h,t)))return {extent:{...n},changed:false,action:"hold",holdReason:"still-visible"};let l=Math.abs(i.x-n.x)>.5||Math.abs(i.y-n.y)>.5||Math.abs(i.width-n.width)>.5||Math.abs(i.height-n.height)>.5;return this.current=i,{extent:{...i},changed:l,action:l?"shrink":"hold"}}};var we=new Map,Ot=new Set,P0="anonymous",Gt=new Map,E0=new Set;function R0(r){return E0.add(r),()=>E0.delete(r)}function Un(){for(let r of Array.from(E0))try{r();}catch{}}function Zi(r){P0=r;}var Oi=r=>/^https?:/i.test(r);function Ut(r){if(!r)return null;let e=we.get(r);return e?e.status==="ready"?e.loaded:null:(Je(r),null)}function V0(r){return we.get(r)?.status==="error"}function Gi(r){return we.get(r)?.status==="loading"}function Je(r){if(!r)return Promise.resolve(null);let e=we.get(r);return e?e.status==="ready"?Promise.resolve(e.loaded):e.status==="error"?Promise.resolve(null):Ui(r):(we.set(r,{status:"loading"}),new Promise(t=>{let i=new Image;P0&&Oi(r)&&(i.crossOrigin=P0);let n=o=>{if(o&&i.naturalWidth>0){let s={img:i,width:i.naturalWidth,height:i.naturalHeight,src:r};we.set(r,{status:"ready",loaded:s}),Un(),t(s);}else we.set(r,{status:"error"}),Un(),t(null);};i.onload=()=>n(true),i.onerror=()=>n(false);try{i.src=r;}catch{n(false);}}))}function Ui(r){return new Promise(e=>{let t=0,i=()=>{let n=we.get(r);if(!n||n.status==="ready")return e(n&&n.status==="ready"?n.loaded:null);if(n.status==="error"||++t>600)return e(null);setTimeout(i,50);};i();})}async function F0(r){let e=new Set;for(let t of r)t.type==="image"&&t.src&&e.add(t.src);await Promise.all(Array.from(e).map(t=>Je(t)));}function B0(r){if(!r)return null;if(r.startsWith("data:"))return r;let e=Gt.get(r);if(e)return e;let t=Ut(r);if(!t)return null;try{let i=document.createElement("canvas");i.width=t.width,i.height=t.height;let n=i.getContext("2d");if(!n)return null;n.drawImage(t.img,0,0);let o=i.toDataURL("image/png");return Gt.set(r,o),o}catch{return null}}function jn(r){r.startsWith("blob:")&&Ot.add(r);}function N0(r){if(!(!r.startsWith("blob:")||!Ot.has(r))){Ot.delete(r),we.delete(r),Gt.delete(r);try{URL.revokeObjectURL(r);}catch{}}}function ji(){for(let r of Array.from(Ot))N0(r);we.clear(),Gt.clear();}var jt=31457280;function Wn(r){return typeof r=="function"}var Wi=r=>!!r&&typeof r=="object"&&typeof r.url=="string";function Kn(r,e){return e.split(".").reduce((t,i)=>{if(t&&typeof t=="object")return t[i]},r)}function Ki(r){if(typeof r=="string")return r.trim()||null;if(!r||typeof r!="object")return null;let e=r,t=["url","data.url","data","data.src","location","path","src","href","fileUrl","imageUrl","data.fileUrl"];for(let i of t){let n=Kn(e,i);if(typeof n=="string"&&n.trim())return n.trim()}return null}function Yn(r,e){let t=(r||"").trim();if(!t)throw new Error("\u4E0A\u4F20\u63A5\u53E3\u8FD4\u56DE\u4E3A\u7A7A");let i;try{i=JSON.parse(t);}catch{if(/^(https?:)?\/\//.test(t)||t.startsWith("data:")||t.startsWith("/"))return t;throw new Error(`\u4E0A\u4F20\u63A5\u53E3\u8FD4\u56DE\u65E0\u6CD5\u89E3\u6790\uFF1A${t.slice(0,120)}`)}let n=e?Kn(i,e):Ki(i);if(typeof n=="string"&&n.trim())return n.trim();throw new Error(`\u4E0A\u4F20\u63A5\u53E3\u8FD4\u56DE\u91CC\u6CA1\u6709\u56FE\u7247\u5730\u5740\uFF1A${t.slice(0,120)}`)}async function Xn(r,e){let t=e.maxSizeBytes??31457280;if(r.size>t)throw new Error(`image.tooLarge: \u56FE\u7247\u5927\u5C0F ${(r.size/1024/1024).toFixed(2)} MB \u8D85\u8FC7\u4E0A\u9650 ${(t/1024/1024).toFixed(2)} MB`);let i=new FormData;i.append(e.fieldName||"file",r,r.name||"image.png");for(let[a,l]of Object.entries(e.fields||{}))i.append(a,l);let n=new AbortController,o=e.timeoutMs??6e4,s=setTimeout(()=>n.abort(),o);try{let a=await fetch(e.url,{method:e.method||"POST",body:i,headers:e.headers,credentials:e.withCredentials?"include":"same-origin",signal:n.signal}),l=await a.text();if(!a.ok)throw new Error(`\u4E0A\u4F20\u5931\u8D25\uFF08HTTP ${a.status}\uFF09\uFF1A${l.slice(0,120)}`);return Yn(l,e.responseUrlPath)}catch(a){throw a?.name==="AbortError"?new Error(`\u4E0A\u4F20\u8D85\u65F6\uFF08${o}ms\uFF09`):a instanceof Error?a:new Error(String(a))}finally{clearTimeout(s);}}async function qn(r,e){if(Wn(r)){let t=await r(e);if(!t||typeof t!="string")throw new Error("\u4E0A\u4F20\u51FD\u6570\u6CA1\u6709\u8FD4\u56DE\u56FE\u7247\u5730\u5740");return t}if(Wi(r))return Xn(e,r);throw new Error("\u4E0A\u4F20\u914D\u7F6E\u4E0D\u5408\u6CD5\uFF1A\u9700\u8981 { url } \u6216\u4E0A\u4F20\u51FD\u6570")}function _0(r){let e=[];for(let t of r){if(t.type!=="image")continue;let i=t;i.src&&(i.temporary||i.src.startsWith("blob:"))&&e.push(i.src);}return e}var Yi=new Set(["text","line","arrow","draw","table","uml-class","uml-interface","mind-map","sticky-note"]);function $0(r){return !Yi.has(r)}var Ae={identity(){return {a:1,b:0,c:0,d:1,e:0,f:0}},translation(r,e){return {a:1,b:0,c:0,d:1,e:r,f:e}},rotation(r){let e=Math.cos(r),t=Math.sin(r);return {a:e,b:t,c:-t,d:e,e:0,f:0}},scale(r,e){return {a:r,b:0,c:0,d:e,e:0,f:0}},multiply(r,e){return {a:r.a*e.a+r.b*e.c,b:r.a*e.b+r.b*e.d,c:r.c*e.a+r.d*e.c,d:r.c*e.b+r.d*e.d,e:r.e*e.a+r.f*e.c+e.e,f:r.e*e.b+r.f*e.d+e.f}},apply(r,e){return {x:r.a*e.x+r.c*e.y+r.e,y:r.b*e.x+r.d*e.y+r.f}},invert(r){let e=r.a*r.d-r.b*r.c;if(Math.abs(e)<1e-10)return null;let t=1/e;return {a:r.d*t,b:-r.b*t,c:-r.c*t,d:r.a*t,e:(r.c*r.f-r.d*r.e)*t,f:(r.b*r.e-r.a*r.f)*t}},createCameraMatrix(r){let e=Ae.scale(r.zoom,r.zoom),t=Ae.translation(r.x,r.y);return Ae.multiply(t,e)}};var _e=class{x=0;y=0;zoom=1;minZoom=.1;maxZoom=10;getMatrix(){return Ae.createCameraMatrix({x:this.x,y:this.y,zoom:this.zoom})}getInverseMatrix(){return Ae.invert(this.getMatrix())}screenToPage(e){let t=this.getInverseMatrix();return t?Ae.apply(t,e):e}pageToScreen(e){return Ae.apply(this.getMatrix(),e)}translate(e,t){this.x+=e,this.y+=t;}zoomAt(e,t){let i=this.screenToPage(e);this.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.zoom*t));let n=this.pageToScreen(i);this.x+=e.x-n.x,this.y+=e.y-n.y;}reset(){this.x=0,this.y=0,this.zoom=1;}getZoom(){return this.zoom}fitBounds(e,t=50){let i=window.innerWidth,n=window.innerHeight,o=(i-t*2)/e.width,s=(n-t*2)/e.height,a=Math.min(o,s,this.maxZoom);this.zoom=Math.max(this.minZoom,a),this.x=(i-e.width*this.zoom)/2-e.x*this.zoom,this.y=(n-e.height*this.zoom)/2-e.y*this.zoom;}};var Xi=40;var qi=20;function Wt(r,e,t){let i=t.x-e.x,n=t.y-e.y,o=i*i+n*n;if(o<1e-9)return Math.hypot(r.x-e.x,r.y-e.y);let s=((r.x-e.x)*i+(r.y-e.y)*n)/o;return s=Math.max(0,Math.min(1,s)),Math.hypot(r.x-(e.x+i*s),r.y-(e.y+n*s))}function mt(r){return r==="polyline"||r==="orthogonal"}function Kt(r,e=40){let t=[];for(let i=0;i+1<r.length;i++){let n=r[i],o=r[i+1],s=o.x-n.x,a=o.y-n.y,l=Math.hypot(s,a);l<e||t.push({index:i,center:{x:(n.x+o.x)/2,y:(n.y+o.y)/2},axis:Math.abs(s)>=Math.abs(a)?"H":"V",length:l});}return t}function O0(r,e,t=10,i=14){let n=Kt(r);if(n.length===0)return null;let o=null,s=1/0;for(let a of n){if(Math.hypot(e.x-a.center.x,e.y-a.center.y)<=t)return a;let h=Wt(e,r[a.index],r[a.index+1]);h<=i&&h<s&&(s=h,o=a);}return o}function G0(r,e,t,i=[]){if(e<0||e+1>=r.length)return r;let n=r[e],o=r[e+1],s=Math.abs(o.x-n.x)>=Math.abs(o.y-n.y),a=e===0,l=e+1===r.length-1,h=s?Math.sign(o.x-n.x)||1:Math.sign(o.y-n.y)||1,d=Math.abs(s?o.x-n.x:o.y-n.y),u=Math.min(24,d/2),p=s?(n.y+o.y)/2:(n.x+o.x)/2,g=v=>s?v.y:v.x,m=[];a?m.push(g(r[0])):m.push(g(r[e-1])),l?m.push(g(r[r.length-1])):m.push(g(r[e+2]));let f=p+t,y=1/0,k=null;for(let v of [...m,...i]){let I=Math.abs(f-v);I<20&&I<y&&(y=I,k=v);}k!==null&&(f=k);let S=[];if(a){let v=s?{x:n.x+h*u,y:n.y}:{x:n.x,y:n.y+h*u};S.push({x:n.x,y:n.y},v,s?{x:v.x,y:f}:{x:f,y:v.y});}else S.push(s?{x:n.x,y:f}:{x:f,y:n.y});if(l){let v=s?{x:o.x-h*u,y:o.y}:{x:o.x,y:o.y-h*u};S.push(s?{x:v.x,y:f}:{x:f,y:v.y},v,{x:o.x,y:o.y});}else S.push(s?{x:o.x,y:f}:{x:f,y:o.y});return [...r.slice(0,e),...S,...r.slice(e+2)]}function ft(r){let e=[];for(let t of r){let i=e.length;if(!(i>0&&Math.abs(e[i-1].x-t.x)<1e-6&&Math.abs(e[i-1].y-t.y)<1e-6)){if(i>=2){let n=e[i-2],o=e[i-1];if(Math.abs(n.y-o.y)<1e-6&&Math.abs(o.y-t.y)<1e-6||Math.abs(n.x-o.x)<1e-6&&Math.abs(o.x-t.x)<1e-6){e[i-1]=t;continue}}e.push(t);}}return e}function U0(r){return r.length<=2?[]:r.slice(1,-1).map(e=>({x:e.x,y:e.y}))}var Jn=(r,e)=>Math.hypot(r.x-e.x,r.y-e.y);function Ji(r,e,t,i){if(!e||r.length===0)return r;let n={x:t.x-e.start.x,y:t.y-e.start.y},o={x:i.x-e.end.x,y:i.y-e.end.y},s=Jn({x:0,y:0},n)>=Jn({x:0,y:0},o)?n:o;return Math.abs(s.x)<.01&&Math.abs(s.y)<.01?r:r.map(a=>({x:a.x+s.x,y:a.y+s.y}))}function Qi(r,e,t,i,n,o=20/2){if(r.length===0)return r;let s=r.map(l=>({x:l.x,y:l.y})),a=(l,h,d)=>{d&&(d.x!==0?Math.abs(l.y-h.y)<=o&&(l.y=h.y):d.y!==0&&Math.abs(l.x-h.x)<=o&&(l.x=h.x));};return a(s[0],e,i),a(s[s.length-1],t,n),s}function Yt(r,e,t,i,n,o){return r.length===0?r:Qi(Ji(r,e,t,i),t,i,n,o)}function j0(r,e,t=.75){return r.length!==e.length||r.length===0?false:r.every((i,n)=>Math.abs(i.x-e[n].x)<=t&&Math.abs(i.y-e[n].y)<=t)}function Z0(r,e,t=24,i=.75){let n=Math.abs(e.x-r.x),o=Math.abs(e.y-r.y);return n<=t+.001&&o<=i||o<=t+.001&&n<=i}function W0(r,e,t=24,i=.75){if(r.length===0||e.length<3)return r;let n=[e[0],e[e.length-1]],o=[Z0(n[0],e[1],t,i)?e[1]:null,Z0(n[1],e[e.length-2],t,i)?e[e.length-2]:null].filter(s=>!!s);return o.length===0?r:r.filter(s=>!o.some(a=>Math.abs(s.x-a.x)<=i&&Math.abs(s.y-a.y)<=i))}var Qn={primary:"#3b82f6",selection:{outline:"#3b82f6",handleStroke:"#3b82f6",handleFill:"#ffffff",outlineFill:"rgba(59, 130, 246, 0.1)",shadow:"#3b82f6"},grid:"#e5e7eb",text:"#1f2937",editBorder:"#3b82f6",brushFill:"rgba(59, 130, 246, 0.08)",brushStroke:"rgba(59, 130, 246, 0.8)",guide:"rgba(59, 130, 246, 0.6)",lineHighlight:"rgba(59, 130, 246, 0.4)",genDot:"#3b82f6",genLine:"rgba(59, 130, 246, 0.55)"},V={...Qn,selection:{...Qn.selection}},K0=new Set;function eo(r){return K0.add(r),()=>K0.delete(r)}function Xt(r){r.selection&&Object.assign(V.selection,r.selection);for(let e of Object.keys(r)){if(e==="selection")continue;let t=r[e];t!==void 0&&(V[e]=t);}K0.forEach(e=>e());}function to(){return V}function J(r,e){let t=ei(r);if(!t)return r;let i=parseInt(t,16),n=i>>16&255,o=i>>8&255,s=i&255;return `rgba(${n}, ${o}, ${s}, ${e})`}function Y0(r,e){let t=ei(r);if(!t)return r;let i=parseInt(t,16),n=e<0?0:255,o=Math.abs(e),s=a=>Math.round((n-a)*o+a).toString(16).padStart(2,"0");return `#${s(i>>16&255)}${s(i>>8&255)}${s(i&255)}`}var no={light:{grid:"#e5e7eb"},warm:{grid:"#e0dcc8"},gray:{grid:"#d1d5db"},purple:{grid:"#e0dcfa"},green:{grid:"#d1fae5"},"eye-care":{grid:"#e3dcc6"}},io="light";function ei(r){let e=r.replace("#","").trim();return /^[0-9a-fA-F]{3}$|^[0-9a-fA-F]{6}$/.test(e)?e.length===3?e.split("").map(t=>t+t).join(""):e:null}var ne=class{context;constructor(e){this.context=e;}getCursor(e){return null}hasTransientState(){return false}cancelTransient(){return false}isDragging(){return false}dispose(){}};var oo=[{code:"zh-CN",label:"\u7B80\u4F53\u4E2D\u6587"},{code:"zh-TW",label:"\u7E41\u9AD4\u4E2D\u6587"},{code:"en-US",label:"English"},{code:"ja-JP",label:"\u65E5\u672C\u8A9E"},{code:"ko-KR",label:"\uD55C\uAD6D\uC5B4"},{code:"de-DE",label:"Deutsch"},{code:"fr-FR",label:"Fran\xE7ais"}],ro={"save.success":"\u5DF2\u4FDD\u5B58","save.fail":"\u4FDD\u5B58\u5931\u8D25","tool.select":"\u9009\u62E9\u5DE5\u5177","tool.hand":"\u62D6\u62FD\u89C6\u53E3","tool.rectangle":"\u77E9\u5F62","tool.rounded-rectangle":"\u5706\u89D2\u77E9\u5F62","tool.circle":"\u5706\u5F62","tool.ellipse":"\u692D\u5706","tool.diamond":"\u83F1\u5F62","tool.triangle":"\u4E09\u89D2\u5F62","tool.hexagon":"\u516D\u8FB9\u5F62","tool.parallelogram":"\u5E73\u884C\u56DB\u8FB9\u5F62","tool.trapezoid":"\u68AF\u5F62","tool.pentagon":"\u4E94\u8FB9\u5F62","tool.octagon":"\u516B\u8FB9\u5F62","tool.star":"\u661F\u5F62","tool.cylinder":"\u5706\u67F1\u4F53","tool.cloud":"\u4E91\u5F62","tool.heart":"\u5FC3\u5F62","tool.block-arrow-right":"\u53F3\u7BAD\u5934","tool.block-arrow-left":"\u5DE6\u7BAD\u5934","tool.block-arrow-up":"\u4E0A\u7BAD\u5934","tool.block-arrow-down":"\u4E0B\u7BAD\u5934","tool.block-arrow-double":"\u53CC\u5411\u7BAD\u5934","tool.right-triangle":"\u76F4\u89D2\u4E09\u89D2\u5F62","tool.cross":"\u5341\u5B57","tool.speech-rect":"\u65B9\u5F62\u5BF9\u8BDD\u6846","tool.speech-round":"\u5706\u5F62\u5BF9\u8BDD\u6846","tool.cube":"\u7ACB\u65B9\u4F53","tool.sector":"\u6247\u5F62","tool.delay":"D \u5F62","tool.predefined-process":"\u9884\u5B9A\u4E49\u6D41\u7A0B","tool.document":"\u6587\u6863","tool.stadium":"\u5168\u5706\u89D2\u77E9\u5F62","tool.class-catalog":"\u7C7B\u76EE","tool.envelope":"\u4FE1\u5C01","tool.checkbox":"\u590D\u9009\u6846","tool.sticky-note":"\u4FBF\u7B7E","shape.sticky-note":"\u4FBF\u7B7E","tool.triangular-pyramid":"\u4E09\u68F1\u9525","tool.quadrangular-pyramid":"\u56DB\u68F1\u9525","tool.cuboid":"\u957F\u65B9\u4F53","tool.sphere":"\u7403","tool.ellipsoid":"\u692D\u7403","tool.pie":"\u997C\u72B6","tool.hollow-pie":"\u7A7A\u5FC3\u997C\u72B6","class.plain":"\u7C7B","flow.process":"\u5904\u7406","flow.step":"\u6D41\u7A0B","flow.startEnd":"\u5F00\u59CB/\u7ED3\u675F","flow.decision":"\u5224\u5B9A","flow.data":"\u6570\u636E","flow.manual":"\u624B\u52A8\u64CD\u4F5C","flow.preparation":"\u51C6\u5907","flow.database":"\u6570\u636E\u5E93","flow.delay":"\u5EF6\u65F6","shapeGroup.basic":"\u57FA\u7840","shapeGroup.flowchart":"\u6D41\u7A0B\u56FE","shapeGroup.other":"\u5176\u4ED6","shapeGroup.solid":"\u7ACB\u4F53","shapeGroup.uml":"\u7C7B\u56FE","shapeMenu.hint":"\u60AC\u505C\u67E5\u770B\u540D\u79F0","tool.chevron":"\u5C16\u89D2","tool.brace-left":"\u5DE6\u62EC\u53F7","tool.brace-right":"\u53F3\u62EC\u53F7","tool.uml-class":"UML \u7C7B\u56FE","tool.uml-interface":"UML \u63A5\u53E3","tool.line":"\u76F4\u7EBF","tool.arrow":"\u7EBF\u6761","tool.text":"\u6587\u672C","tool.draw":"\u753B\u7B14","tool.pen":"\u753B\u7B14","tool.highlighter":"\u8367\u5149\u7B14","tool.eraser":"\u6A61\u76AE\u64E6","status.none":"\u672A\u9009\u62E9","status.selected":"\u5DF2\u9009\u62E9 {n} \u4E2A\u56FE\u5F62","toolbar.select":"\u9009\u62E9 (V)","toolbar.hand":"\u62D6\u62FD\u89C6\u53E3 (H)","toolbar.shapes":"\u5F62\u72B6","toolbar.grid":"\u7F51\u683C","toolbar.undo":"\u64A4\u9500 (Ctrl+Z)","toolbar.redo":"\u91CD\u505A (Ctrl+Shift+Z)","toolbar.arrow":"\u7BAD\u5934 (A)","toolbar.text":"\u6587\u672C (T)","toolbar.pen":"\u753B\u7B14","toolbar.highlighter":"\u8367\u5149\u7B14","toolbar.eraser":"\u6A61\u76AE\u64E6 (E)","toolbar.uml-class":"UML \u7C7B\u56FE","toolbar.uml-interface":"UML \u63A5\u53E3","zoom.in":"\u653E\u5927","zoom.out":"\u7F29\u5C0F","zoom.reset":"\u91CD\u7F6E","style.stroke":"\u8FB9\u6846","style.line":"\u7EBF\u6761","style.fill":"\u586B\u5145","style.text":"\u6587\u5B57","style.highlight":"\u9AD8\u4EAE","style.prefix":"\u524D\u7F00\u7B26\u53F7","style.prefix.soon":"\u524D\u7F00\u7B26\u53F7\u5F00\u53D1\u4E2D\uFF0C\u656C\u8BF7\u671F\u5F85","style.none":"\u65E0","style.addColor":"\u6DFB\u52A0\u989C\u8272","style.connection":"\u8FDE\u7EBF","style.arrow":"\u7BAD\u5934","style.dashed":"\u865A\u7EBF","style.solid":"\u5B9E\u7EBF","style.opacity":"\u4E0D\u900F\u660E\u5EA6","style.connection.straight":"\u76F4\u7EBF","style.connection.polyline":"\u6298\u7EBF","style.connection.orthogonal":"\u76F4\u89D2\u6298\u7EBF","style.connection.curve":"\u66F2\u7EBF","style.arrowhead.none":"\u65E0\u7BAD\u5934","style.arrowhead.end":"\u7EC8\u70B9\u7BAD\u5934","style.arrowhead.start":"\u8D77\u70B9\u7BAD\u5934","style.arrowhead.both":"\u53CC\u7BAD\u5934","style.arrowhead.none-dashed":"\u65E0\u7BAD\u5934\u865A\u7EBF","style.arrowhead.both-dashed":"\u53CC\u7BAD\u5934\u865A\u7EBF","style.uml":"UML","style.arrowhead.inheritance":"\u7EE7\u627F","style.arrowhead.composition":"\u7EC4\u5408","style.arrowhead.aggregation":"\u805A\u5408","style.arrowhead.dependency":"\u4F9D\u8D56","style.arrowhead.realization":"\u5B9E\u73B0","menu.title":"\u9009\u62E9\u65B0\u56FE\u5F62","menu.cancel":"\u70B9\u51FB\u7A7A\u767D\u5904\u53D6\u6D88","shape.rectangle":"\u77E9\u5F62","shape.rounded-rectangle":"\u5706\u89D2","shape.circle":"\u5706\u5F62","shape.ellipse":"\u692D\u5706","shape.diamond":"\u83F1\u5F62","shape.triangle":"\u4E09\u89D2","shape.hexagon":"\u516D\u8FB9\u5F62","shape.parallelogram":"\u5E73\u884C","shape.trapezoid":"\u68AF\u5F62","shape.pentagon":"\u4E94\u8FB9\u5F62","shape.octagon":"\u516B\u8FB9\u5F62","shape.star":"\u661F\u5F62","shape.uml-class":"\u7C7B\u56FE","shape.uml-interface":"\u63A5\u53E3","uml.drag":"\u62D6\u62FD\u6392\u5E8F","uml.delete":"\u5220\u9664\u8BE5\u884C","uml.textColor":"\u6587\u5B57\u989C\u8272","uml.defaultColor":"\u9ED8\u8BA4\u989C\u8272","uml.fontSize":"\u5B57\u53F7","uml.strikethrough":"\u5220\u9664\u7EBF","uml.attribute":"\u5C5E\u6027","uml.method":"\u65B9\u6CD5","minimap.title":"\u5C0F\u5730\u56FE","minimap.expand":"\u5C55\u5F00\u5C0F\u5730\u56FE","minimap.collapse":"\u6536\u8D77\u5C0F\u5730\u56FE","tool.mind-map":"\u601D\u7EF4\u5BFC\u56FE","toolbar.mind-map":"\u601D\u7EF4\u5BFC\u56FE","toolbar.export":"\u5BFC\u51FA","toolbar.export.png":"PNG \u56FE\u7247","toolbar.export.svg":"SVG \u77E2\u91CF\u56FE","toolbar.export.pdf":"PDF \u6587\u6863","toolbar.export.data":"\u5BFC\u51FA\u6570\u636E","toolbar.import.data":"\u5BFC\u5165\u6570\u636E","import.success":"\u5BFC\u5165\u6210\u529F\uFF0C\u5DF2\u6062\u590D {n} \u4E2A\u56FE\u5F62","import.fail":"\u5BFC\u5165\u5931\u8D25\uFF0C\u6587\u4EF6\u683C\u5F0F\u4E0D\u6B63\u786E","shape.mind-map":"\u601D\u7EF4\u5BFC\u56FE","mindmap.defaultRoot":"\u4E2D\u5FC3\u4E3B\u9898","mindmap.defaultBranch":"\u5206\u652F\u4E3B\u9898","mindmap.nodeText":"\u8282\u70B9\u6587\u672C","mindmap.addChild":"\u5B50\u8282\u70B9","mindmap.addSibling":"\u5144\u5F1F\u8282\u70B9","mindmap.deleteNode":"\u5220\u9664\u8282\u70B9","mindmap.color":"\u989C\u8272","mindmap.levelColor":"\u9ED8\u8BA4\u5C42\u7EA7\u8272","mindmap.icon":"\u56FE\u6807","mindmap.noIcon":"\u65E0\u56FE\u6807","mindmap.note":"\u5C5E\u6027\u8BF4\u660E","mindmap.notePlaceholder":"\u8BF4\u660E\u5185\u5BB9\uFF08\u53EF\u9009\uFF09","mindmap.noteColor":"\u8BF4\u660E\u989C\u8272","mindmap.noteColorDefault":"\u540C\u8282\u70B9\u8272","mindmap.collapse":"\u6298\u53E0","mindmap.expand":"\u5C55\u5F00","mindmap.close":"\u5173\u95ED\u7F16\u8F91","mindmap.more":"\u66F4\u591A\u8BBE\u7F6E","mindmap.level":"\u5C42\u7EA7","mindmap.promote1":"\u5347\u4E00\u7EA7","mindmap.promote2":"\u5347\u4E24\u7EA7","mindmap.promoteDisabled":"\u5DF2\u81F3\u9876\u5C42","tool.table":"\u8868\u683C","toolbar.table":"\u8868\u683C","shape.table":"\u8868\u683C","table.insertRow":"\u63D2\u5165\u884C","table.deleteRow":"\u5220\u9664\u884C","table.insertCol":"\u63D2\u5165\u5217","table.deleteCol":"\u5220\u9664\u5217","table.merge":"\u5408\u5E76\u5355\u5143\u683C","table.split":"\u62C6\u5206\u5355\u5143\u683C","table.insertRowAbove":"\u5728\u4E0A\u65B9\u63D2\u5165\u884C","table.insertRowBelow":"\u5728\u4E0B\u65B9\u63D2\u5165\u884C","table.insertColLeft":"\u5728\u5DE6\u4FA7\u63D2\u5165\u5217","table.insertColRight":"\u5728\u53F3\u4FA7\u63D2\u5165\u5217","table.pickHint":"\u62D6\u9009\u884C\u5217\u6570","ctx.copy":"\u590D\u5236","ctx.paste":"\u7C98\u8D34","ctx.duplicate":"\u521B\u5EFA\u526F\u672C","ctx.layer":"\u5C42\u7EA7","ctx.bringToFront":"\u7F6E\u4E8E\u9876\u5C42","ctx.bringForward":"\u4E0A\u79FB\u4E00\u5C42","ctx.sendBackward":"\u4E0B\u79FB\u4E00\u5C42","ctx.sendToBack":"\u7F6E\u4E8E\u5E95\u5C42","ctx.copyStyle":"\u590D\u5236\u6837\u5F0F","ctx.pasteStyle":"\u7C98\u8D34\u6837\u5F0F","ctx.rotate90":"90\xB0","ctx.rotate180":"180\xB0","ctx.rotate270":"270\xB0","ctx.rotate":"\u65CB\u8F6C","ctx.group":"\u6210\u7EC4","ctx.ungroup":"\u89E3\u7EC4","ctx.lock":"\u9501\u5B9A","ctx.unlock":"\u89E3\u9501","ctx.delete":"\u5220\u9664","toolbar.icon":"\u56FE\u6807 (S)","toolbar.image":"\u56FE\u7247","toolbar.more":"\u66F4\u591A","toolbar.pageTheme":"\u9875\u9762\u4E3B\u9898","pageTheme.light":"\u9ED8\u8BA4","pageTheme.warm":"\u6696\u9EC4","pageTheme.gray":"\u6D45\u7070","pageTheme.purple":"\u6D45\u7D2B","pageTheme.green":"\u6D45\u7EFF","pageTheme.eye-care":"\u62A4\u773C","tool.image":"\u56FE\u7247","image.uploadFailed":"\u56FE\u7247\u4E0A\u4F20\u5931\u8D25","image.insertFailed":"\u56FE\u7247\u63D2\u5165\u5931\u8D25","image.tooLarge":"\u56FE\u7247\u8D85\u8FC7 30 MB\uFF0C\u65E0\u6CD5\u4E0A\u4F20","image.temporaryInserted":"\u5DF2\u63D2\u5165\u4E34\u65F6\u56FE\u7247\uFF08\u672A\u914D\u7F6E\u4E0A\u4F20\u63A5\u53E3\uFF0C\u5237\u65B0\u540E\u4F1A\u4E22\u5931\uFF09","image.naturalSize":"\u539F\u56FE\u5C3A\u5BF8","icon.search":"\u641C\u7D22\u56FE\u6807","icon.empty":"\u6CA1\u6709\u5339\u914D\u7684\u56FE\u6807","icon.recent":"\u6700\u8FD1\u4F7F\u7528","iconCat.status":"\u72B6\u6001\u6807\u8BB0","iconCat.number":"\u6570\u5B57\u5FBD\u6807","iconCat.tech":"\u4E91\u4E0E\u6280\u672F","iconCat.chart":"\u6570\u636E\u56FE\u8868","iconCat.office":"\u529E\u516C\u6587\u6863","iconCat.media":"\u5A92\u4F53\u534F\u4F5C","iconCat.arrow":"\u7BAD\u5934\u65B9\u5411","iconCat.misc":"\u5E38\u7528","iconCat.emoji":"\u8868\u60C5","iconCat.sticker":"\u8D34\u7EB8","iconCat.device":"\u7535\u8111\u8BBE\u5907","iconCat.weather":"\u5929\u6C14","iconCat.transport":"\u4EA4\u901A","iconCat.nature":"\u81EA\u7136","iconCat.building":"\u5EFA\u7B51","iconCat.medical":"\u533B\u7597","iconCat.shopping":"\u8D2D\u7269","iconCat.science":"\u79D1\u5B66","iconCat.animal":"\u52A8\u7269","iconCat.time":"\u65F6\u95F4","iconCat.edit":"\u7F16\u8F91","iconCat.food":"\u98DF\u7269","iconCat.communication":"\u901A\u8BAF"},ti={"zh-CN":ro,"zh-TW":{"save.success":"\u5DF2\u5132\u5B58","save.fail":"\u5132\u5B58\u5931\u6557","tool.select":"\u9078\u53D6\u5DE5\u5177","tool.hand":"\u62D6\u66F3\u8996\u7A97","tool.rectangle":"\u77E9\u5F62","tool.rounded-rectangle":"\u5713\u89D2\u77E9\u5F62","tool.circle":"\u5713\u5F62","tool.ellipse":"\u6A62\u5713","tool.diamond":"\u83F1\u5F62","tool.triangle":"\u4E09\u89D2\u5F62","tool.hexagon":"\u516D\u908A\u5F62","tool.parallelogram":"\u5E73\u884C\u56DB\u908A\u5F62","tool.trapezoid":"\u68AF\u5F62","tool.pentagon":"\u4E94\u908A\u5F62","tool.octagon":"\u516B\u908A\u5F62","tool.star":"\u661F\u5F62","tool.cylinder":"\u5713\u67F1\u9AD4","tool.cloud":"\u96F2\u5F62","tool.heart":"\u5FC3\u5F62","tool.block-arrow-right":"\u53F3\u7BAD\u982D","tool.block-arrow-left":"\u5DE6\u7BAD\u982D","tool.block-arrow-up":"\u4E0A\u7BAD\u982D","tool.block-arrow-down":"\u4E0B\u7BAD\u982D","tool.block-arrow-double":"\u96D9\u5411\u7BAD\u982D","tool.right-triangle":"\u76F4\u89D2\u4E09\u89D2\u5F62","tool.cross":"\u5341\u5B57","tool.speech-rect":"\u65B9\u5F62\u5C0D\u8A71\u6846","tool.speech-round":"\u5713\u5F62\u5C0D\u8A71\u6846","tool.cube":"\u7ACB\u65B9\u9AD4","tool.sector":"\u6247\u5F62","tool.delay":"D \u5F62","tool.predefined-process":"\u9810\u5B9A\u7FA9\u6D41\u7A0B","tool.document":"\u6587\u4EF6","tool.stadium":"\u5168\u5713\u89D2\u77E9\u5F62","tool.class-catalog":"\u985E\u76EE","tool.envelope":"\u4FE1\u5C01","tool.checkbox":"\u6838\u53D6\u65B9\u584A","tool.sticky-note":"\u4FBF\u5229\u8CBC","shape.sticky-note":"\u4FBF\u5229\u8CBC","tool.triangular-pyramid":"\u4E09\u7A1C\u9310","tool.quadrangular-pyramid":"\u56DB\u7A1C\u9310","tool.cuboid":"\u9577\u65B9\u9AD4","tool.sphere":"\u7403","tool.ellipsoid":"\u6A62\u7403","tool.pie":"\u9905\u72C0","tool.hollow-pie":"\u7A7A\u5FC3\u9905\u72C0","class.plain":"\u985E\u5225","flow.process":"\u8655\u7406","flow.step":"\u6D41\u7A0B","flow.startEnd":"\u958B\u59CB/\u7D50\u675F","flow.decision":"\u5224\u65B7","flow.data":"\u8CC7\u6599","flow.manual":"\u624B\u52D5\u64CD\u4F5C","flow.preparation":"\u6E96\u5099","flow.database":"\u8CC7\u6599\u5EAB","flow.delay":"\u5EF6\u9072","shapeGroup.basic":"\u57FA\u790E","shapeGroup.flowchart":"\u6D41\u7A0B\u5716","shapeGroup.other":"\u5176\u4ED6","shapeGroup.solid":"\u7ACB\u9AD4","shapeGroup.uml":"\u985E\u5225\u5716","shapeMenu.hint":"\u61F8\u505C\u67E5\u770B\u540D\u7A31","tool.chevron":"\u5C16\u89D2","tool.brace-left":"\u5DE6\u62EC\u865F","tool.brace-right":"\u53F3\u62EC\u865F","tool.uml-class":"UML \u985E\u5225\u5716","tool.uml-interface":"UML \u4ECB\u9762","tool.line":"\u76F4\u7DDA","tool.arrow":"\u7DDA\u689D","tool.text":"\u6587\u5B57","tool.draw":"\u756B\u7B46","tool.pen":"\u756B\u7B46","tool.highlighter":"\u87A2\u5149\u7B46","tool.eraser":"\u6A61\u76AE\u64E6","status.none":"\u672A\u9078\u53D6","status.selected":"\u5DF2\u9078\u53D6 {n} \u500B\u5716\u5F62","toolbar.select":"\u9078\u53D6 (V)","toolbar.hand":"\u62D6\u66F3\u8996\u7A97 (H)","toolbar.shapes":"\u5F62\u72C0","toolbar.grid":"\u683C\u7DDA","toolbar.undo":"\u5FA9\u539F (Ctrl+Z)","toolbar.redo":"\u91CD\u505A (Ctrl+Shift+Z)","toolbar.arrow":"\u7BAD\u982D (A)","toolbar.text":"\u6587\u5B57 (T)","toolbar.pen":"\u756B\u7B46","toolbar.highlighter":"\u87A2\u5149\u7B46","toolbar.eraser":"\u6A61\u76AE\u64E6 (E)","toolbar.uml-class":"UML \u985E\u5225\u5716","toolbar.uml-interface":"UML \u4ECB\u9762","zoom.in":"\u653E\u5927","zoom.out":"\u7E2E\u5C0F","zoom.reset":"\u91CD\u8A2D","style.stroke":"\u908A\u6846","style.line":"\u7DDA\u689D","style.fill":"\u586B\u8272","style.text":"\u6587\u5B57","style.highlight":"\u6A19\u793A","style.prefix":"\u524D\u7F6E\u7B26\u865F","style.prefix.soon":"\u524D\u7F6E\u7B26\u865F\u958B\u767C\u4E2D\uFF0C\u656C\u8ACB\u671F\u5F85","style.none":"\u7121","style.addColor":"\u65B0\u589E\u984F\u8272","style.connection":"\u9023\u7DDA","style.arrow":"\u7BAD\u982D","style.dashed":"\u865B\u7DDA","style.solid":"\u5BE6\u7DDA","style.opacity":"\u4E0D\u900F\u660E\u5EA6","style.connection.straight":"\u76F4\u7DDA","style.connection.polyline":"\u6298\u7DDA","style.connection.orthogonal":"\u76F4\u89D2\u6298\u7DDA","style.connection.curve":"\u66F2\u7DDA","style.arrowhead.none":"\u7121\u7BAD\u982D","style.arrowhead.end":"\u7D42\u9EDE\u7BAD\u982D","style.arrowhead.start":"\u8D77\u9EDE\u7BAD\u982D","style.arrowhead.both":"\u96D9\u7BAD\u982D","style.arrowhead.none-dashed":"\u7121\u7BAD\u982D\u865B\u7DDA","style.arrowhead.both-dashed":"\u96D9\u7BAD\u982D\u865B\u7DDA","style.uml":"UML","style.arrowhead.inheritance":"\u7E7C\u627F","style.arrowhead.composition":"\u7D44\u5408","style.arrowhead.aggregation":"\u805A\u5408","style.arrowhead.dependency":"\u4F9D\u8CF4","style.arrowhead.realization":"\u5BE6\u73FE","menu.title":"\u9078\u64C7\u65B0\u5716\u5F62","menu.cancel":"\u9EDE\u64CA\u7A7A\u767D\u8655\u53D6\u6D88","shape.rectangle":"\u77E9\u5F62","shape.rounded-rectangle":"\u5713\u89D2","shape.circle":"\u5713\u5F62","shape.ellipse":"\u6A62\u5713","shape.diamond":"\u83F1\u5F62","shape.triangle":"\u4E09\u89D2","shape.hexagon":"\u516D\u908A\u5F62","shape.parallelogram":"\u5E73\u884C","shape.trapezoid":"\u68AF\u5F62","shape.pentagon":"\u4E94\u908A\u5F62","shape.octagon":"\u516B\u908A\u5F62","shape.star":"\u661F\u5F62","shape.uml-class":"\u985E\u5225\u5716","shape.uml-interface":"\u4ECB\u9762","uml.drag":"\u62D6\u66F3\u6392\u5E8F","uml.delete":"\u522A\u9664\u8A72\u5217","uml.textColor":"\u6587\u5B57\u984F\u8272","uml.defaultColor":"\u9810\u8A2D\u984F\u8272","uml.fontSize":"\u5B57\u7D1A","uml.strikethrough":"\u522A\u9664\u7DDA","uml.attribute":"\u5C6C\u6027","uml.method":"\u65B9\u6CD5","minimap.title":"\u5C0F\u5730\u5716","minimap.expand":"\u5C55\u958B\u5C0F\u5730\u5716","minimap.collapse":"\u6536\u5408\u5C0F\u5730\u5716","tool.mind-map":"\u5FC3\u667A\u5716","toolbar.mind-map":"\u5FC3\u667A\u5716","toolbar.export":"\u532F\u51FA","toolbar.export.png":"PNG \u5716\u7247","toolbar.export.svg":"SVG \u5411\u91CF\u5716","toolbar.export.pdf":"PDF \u6587\u4EF6","toolbar.export.data":"\u532F\u51FA\u8CC7\u6599","toolbar.import.data":"\u532F\u5165\u8CC7\u6599","import.success":"\u532F\u5165\u6210\u529F\uFF0C\u5DF2\u9084\u539F {n} \u500B\u5716\u5F62","import.fail":"\u532F\u5165\u5931\u6557\uFF0C\u6A94\u6848\u683C\u5F0F\u4E0D\u6B63\u78BA","shape.mind-map":"\u5FC3\u667A\u5716","mindmap.defaultRoot":"\u4E2D\u5FC3\u4E3B\u984C","mindmap.defaultBranch":"\u5206\u652F\u4E3B\u984C","mindmap.nodeText":"\u7BC0\u9EDE\u6587\u5B57","mindmap.addChild":"\u5B50\u7BC0\u9EDE","mindmap.addSibling":"\u5144\u5F1F\u7BC0\u9EDE","mindmap.deleteNode":"\u522A\u9664\u7BC0\u9EDE","mindmap.color":"\u984F\u8272","mindmap.levelColor":"\u9810\u8A2D\u5C64\u7D1A\u8272","mindmap.icon":"\u5716\u793A","mindmap.noIcon":"\u7121\u5716\u793A","mindmap.note":"\u5C6C\u6027\u8AAA\u660E","mindmap.notePlaceholder":"\u8AAA\u660E\u5167\u5BB9\uFF08\u9078\u586B\uFF09","mindmap.noteColor":"\u8AAA\u660E\u984F\u8272","mindmap.noteColorDefault":"\u540C\u7BC0\u9EDE\u8272","mindmap.collapse":"\u6536\u5408","mindmap.expand":"\u5C55\u958B","mindmap.close":"\u95DC\u9589\u7DE8\u8F2F","mindmap.more":"\u66F4\u591A\u8A2D\u5B9A","mindmap.level":"\u5C64\u7D1A","mindmap.promote1":"\u5347\u4E00\u7D1A","mindmap.promote2":"\u5347\u5169\u7D1A","mindmap.promoteDisabled":"\u5DF2\u81F3\u9802\u5C64","tool.table":"\u8868\u683C","toolbar.table":"\u8868\u683C","shape.table":"\u8868\u683C","table.insertRow":"\u63D2\u5165\u6A6B\u5217","table.deleteRow":"\u522A\u9664\u6A6B\u5217","table.insertCol":"\u63D2\u5165\u76F4\u6B04","table.deleteCol":"\u522A\u9664\u76F4\u6B04","table.merge":"\u5408\u4F75\u5132\u5B58\u683C","table.split":"\u5206\u5272\u5132\u5B58\u683C","table.insertRowAbove":"\u5728\u4E0A\u65B9\u63D2\u5165\u6A6B\u5217","table.insertRowBelow":"\u5728\u4E0B\u65B9\u63D2\u5165\u6A6B\u5217","table.insertColLeft":"\u5728\u5DE6\u5074\u63D2\u5165\u76F4\u6B04","table.insertColRight":"\u5728\u53F3\u5074\u63D2\u5165\u76F4\u6B04","table.pickHint":"\u62D6\u9078\u884C\u5217\u6578","ctx.copy":"\u8907\u88FD","ctx.paste":"\u8CBC\u4E0A","ctx.duplicate":"\u5EFA\u7ACB\u526F\u672C","ctx.layer":"\u5716\u5C64","ctx.bringToFront":"\u79FB\u5230\u6700\u4E0A\u5C64","ctx.bringForward":"\u4E0A\u79FB\u4E00\u5C64","ctx.sendBackward":"\u4E0B\u79FB\u4E00\u5C64","ctx.sendToBack":"\u79FB\u5230\u6700\u4E0B\u5C64","ctx.copyStyle":"\u8907\u88FD\u6A23\u5F0F","ctx.pasteStyle":"\u8CBC\u4E0A\u6A23\u5F0F","ctx.rotate90":"90\xB0","ctx.rotate180":"180\xB0","ctx.rotate270":"270\xB0","ctx.rotate":"\u65CB\u8F49","ctx.group":"\u6210\u7D44","ctx.ungroup":"\u89E3\u7D44","ctx.lock":"\u9396\u5B9A","ctx.unlock":"\u89E3\u9396","ctx.delete":"\u522A\u9664","toolbar.icon":"\u5716\u793A (S)","toolbar.image":"\u5716\u7247","toolbar.more":"\u66F4\u591A","toolbar.pageTheme":"\u9801\u9762\u4E3B\u984C","pageTheme.light":"\u9810\u8A2D","pageTheme.warm":"\u6696\u9EC3","pageTheme.gray":"\u6DFA\u7070","pageTheme.purple":"\u6DFA\u7D2B","pageTheme.green":"\u6DFA\u7DA0","pageTheme.eye-care":"\u8B77\u773C","tool.image":"\u5716\u7247","image.uploadFailed":"\u5716\u7247\u4E0A\u50B3\u5931\u6557","image.insertFailed":"\u5716\u7247\u63D2\u5165\u5931\u6557","image.tooLarge":"\u5716\u7247\u8D85\u904E 30 MB\uFF0C\u7121\u6CD5\u4E0A\u50B3","image.temporaryInserted":"\u5DF2\u63D2\u5165\u81E8\u6642\u5716\u7247\uFF08\u672A\u914D\u7F6E\u4E0A\u50B3\u4ECB\u9762\uFF0C\u91CD\u65B0\u6574\u7406\u5F8C\u6703\u907A\u5931\uFF09","image.naturalSize":"\u539F\u5716\u5C3A\u5BF8","icon.search":"\u641C\u5C0B\u5716\u793A","icon.empty":"\u6C92\u6709\u7B26\u5408\u7684\u5716\u793A","icon.recent":"\u6700\u8FD1\u4F7F\u7528","iconCat.status":"\u72C0\u614B\u6A19\u8A18","iconCat.number":"\u6578\u5B57\u5FBD\u6A19","iconCat.tech":"\u96F2\u7AEF\u8207\u6280\u8853","iconCat.chart":"\u8CC7\u6599\u5716\u8868","iconCat.office":"\u8FA6\u516C\u6587\u4EF6","iconCat.media":"\u5A92\u9AD4\u5354\u4F5C","iconCat.arrow":"\u7BAD\u982D\u65B9\u5411","iconCat.misc":"\u5E38\u7528","iconCat.emoji":"\u8868\u60C5","iconCat.sticker":"\u8CBC\u7D19","iconCat.device":"\u96FB\u8166\u8A2D\u5099","iconCat.weather":"\u5929\u6C23","iconCat.transport":"\u4EA4\u901A","iconCat.nature":"\u81EA\u7136","iconCat.building":"\u5EFA\u7BC9","iconCat.medical":"\u91AB\u7642","iconCat.shopping":"\u8CFC\u7269","iconCat.science":"\u79D1\u5B78","iconCat.animal":"\u52D5\u7269","iconCat.time":"\u6642\u9593","iconCat.edit":"\u7DE8\u8F2F","iconCat.food":"\u98DF\u7269","iconCat.communication":"\u901A\u8A0A"},"en-US":{"save.success":"Saved","save.fail":"Save failed","tool.select":"Select tool","tool.hand":"Pan view","tool.rectangle":"Rectangle","tool.rounded-rectangle":"Rounded rectangle","tool.circle":"Circle","tool.ellipse":"Ellipse","tool.diamond":"Diamond","tool.triangle":"Triangle","tool.hexagon":"Hexagon","tool.parallelogram":"Parallelogram","tool.trapezoid":"Trapezoid","tool.pentagon":"Pentagon","tool.octagon":"Octagon","tool.star":"Star","tool.cylinder":"Cylinder","tool.cloud":"Cloud","tool.heart":"Heart","tool.block-arrow-right":"Arrow right","tool.block-arrow-left":"Arrow left","tool.block-arrow-up":"Arrow up","tool.block-arrow-down":"Arrow down","tool.block-arrow-double":"Double arrow","tool.right-triangle":"Right triangle","tool.cross":"Cross","tool.speech-rect":"Speech bubble","tool.speech-round":"Round bubble","tool.cube":"Cube","tool.sector":"Sector","tool.delay":"Delay","tool.predefined-process":"Predefined process","tool.document":"Document","tool.stadium":"Stadium","tool.class-catalog":"Category","tool.envelope":"Envelope","tool.checkbox":"Checkbox","tool.sticky-note":"Sticky note","shape.sticky-note":"Sticky note","tool.triangular-pyramid":"Triangular pyramid","tool.quadrangular-pyramid":"Square pyramid","tool.cuboid":"Cuboid","tool.sphere":"Sphere","tool.ellipsoid":"Ellipsoid","tool.pie":"Pie","tool.hollow-pie":"Donut","class.plain":"Class","flow.process":"Process","flow.step":"Step","flow.startEnd":"Start / End","flow.decision":"Decision","flow.data":"Data","flow.manual":"Manual operation","flow.preparation":"Preparation","flow.database":"Database","flow.delay":"Delay","shapeGroup.basic":"Basic","shapeGroup.flowchart":"Flowchart","shapeGroup.other":"Other","shapeGroup.solid":"3D","shapeGroup.uml":"Class diagram","shapeMenu.hint":"Hover to see name","tool.chevron":"Chevron","tool.brace-left":"Left brace","tool.brace-right":"Right brace","tool.uml-class":"UML class","tool.uml-interface":"UML interface","tool.line":"Line","tool.arrow":"Line","tool.text":"Text","tool.draw":"Pen","tool.pen":"Pen","tool.highlighter":"Highlighter","tool.eraser":"Eraser","status.none":"Nothing selected","status.selected":"{n} shapes selected","toolbar.select":"Select (V)","toolbar.hand":"Pan view (H)","toolbar.shapes":"Shapes","toolbar.grid":"Grid","toolbar.undo":"Undo (Ctrl+Z)","toolbar.redo":"Redo (Ctrl+Shift+Z)","toolbar.arrow":"Arrow (A)","toolbar.text":"Text (T)","toolbar.pen":"Pen","toolbar.highlighter":"Highlighter","toolbar.eraser":"Eraser (E)","toolbar.uml-class":"UML class","toolbar.uml-interface":"UML interface","zoom.in":"Zoom in","zoom.out":"Zoom out","zoom.reset":"Reset","style.stroke":"Border","style.line":"Line","style.fill":"Fill","style.text":"Text","style.highlight":"Highlight","style.prefix":"Prefix","style.prefix.soon":"Prefix symbols are coming soon","style.none":"None","style.addColor":"Add color","style.connection":"Connection","style.arrow":"Arrow head","style.dashed":"Dashed","style.solid":"Solid","style.opacity":"Opacity","style.connection.straight":"Straight","style.connection.polyline":"Polyline","style.connection.orthogonal":"Orthogonal","style.connection.curve":"Curve","style.arrowhead.none":"None","style.arrowhead.end":"End","style.arrowhead.start":"Start","style.arrowhead.both":"Both","style.arrowhead.none-dashed":"Dashed","style.arrowhead.both-dashed":"Dashed both","style.uml":"UML","style.arrowhead.inheritance":"Inheritance","style.arrowhead.composition":"Composition","style.arrowhead.aggregation":"Aggregation","style.arrowhead.dependency":"Dependency","style.arrowhead.realization":"Realization","menu.title":"Create shape","menu.cancel":"Click empty space to cancel","shape.rectangle":"Rectangle","shape.rounded-rectangle":"Rounded","shape.circle":"Circle","shape.ellipse":"Ellipse","shape.diamond":"Diamond","shape.triangle":"Triangle","shape.hexagon":"Hexagon","shape.parallelogram":"Parallelogram","shape.trapezoid":"Trapezoid","shape.pentagon":"Pentagon","shape.octagon":"Octagon","shape.star":"Star","shape.uml-class":"Class","shape.uml-interface":"Interface","uml.drag":"Drag to reorder","uml.delete":"Delete row","uml.textColor":"Text color","uml.defaultColor":"Default color","uml.fontSize":"Font size","uml.strikethrough":"Strikethrough","uml.attribute":"Attributes","uml.method":"Methods","minimap.title":"Minimap","minimap.expand":"Expand minimap","minimap.collapse":"Collapse minimap","tool.mind-map":"Mind map","toolbar.mind-map":"Mind map","toolbar.export":"Export","toolbar.export.png":"PNG image","toolbar.export.svg":"SVG vector","toolbar.export.pdf":"PDF document","toolbar.export.data":"Export data","toolbar.import.data":"Import data","import.success":"Import succeeded: {n} shapes restored","import.fail":"Import failed: invalid file format","shape.mind-map":"Mind map","mindmap.defaultRoot":"Central topic","mindmap.defaultBranch":"Branch topic","mindmap.nodeText":"Node text","mindmap.addChild":"Child","mindmap.addSibling":"Sibling","mindmap.deleteNode":"Delete node","mindmap.color":"Color","mindmap.levelColor":"Default level color","mindmap.icon":"Icon","mindmap.noIcon":"No icon","mindmap.note":"Note","mindmap.notePlaceholder":"Note content (optional)","mindmap.noteColor":"Note color","mindmap.noteColorDefault":"Same as node","mindmap.collapse":"Collapse","mindmap.expand":"Expand","mindmap.close":"Close editor","mindmap.more":"More settings","mindmap.level":"Level","mindmap.promote1":"Promote","mindmap.promote2":"Promote 2","mindmap.promoteDisabled":"Already at top","tool.table":"Table","toolbar.table":"Table","shape.table":"Table","table.insertRow":"Insert row","table.deleteRow":"Delete row","table.insertCol":"Insert column","table.deleteCol":"Delete column","table.merge":"Merge cells","table.split":"Split cell","table.insertRowAbove":"Insert row above","table.insertRowBelow":"Insert row below","table.insertColLeft":"Insert column left","table.insertColRight":"Insert column right","table.pickHint":"Drag to pick size","ctx.copy":"Copy","ctx.paste":"Paste","ctx.duplicate":"Duplicate","ctx.layer":"Layer","ctx.bringToFront":"Bring to front","ctx.bringForward":"Bring forward","ctx.sendBackward":"Send backward","ctx.sendToBack":"Send to back","ctx.copyStyle":"Copy style","ctx.pasteStyle":"Paste style","ctx.rotate90":"90\xB0","ctx.rotate180":"180\xB0","ctx.rotate270":"270\xB0","ctx.rotate":"Rotate","ctx.group":"Group","ctx.ungroup":"Ungroup","ctx.lock":"Lock","ctx.unlock":"Unlock","ctx.delete":"Delete","toolbar.icon":"Icons (S)","toolbar.image":"Image","toolbar.more":"More","toolbar.pageTheme":"Page theme","pageTheme.light":"Default","pageTheme.warm":"Warm","pageTheme.gray":"Light gray","pageTheme.purple":"Light purple","pageTheme.green":"Light green","pageTheme.eye-care":"Eye care","tool.image":"Image","image.uploadFailed":"Image upload failed","image.insertFailed":"Failed to insert image","image.tooLarge":"Image exceeds the 30 MB upload limit","image.temporaryInserted":"Temporary image inserted (no upload endpoint configured, it will be lost on refresh)","image.naturalSize":"Original size","icon.search":"Search icons","icon.empty":"No matching icons","icon.recent":"Recent","iconCat.status":"Status","iconCat.number":"Number badges","iconCat.tech":"Cloud & tech","iconCat.chart":"Charts","iconCat.office":"Documents","iconCat.media":"Media & collab","iconCat.arrow":"Arrows","iconCat.misc":"Essentials","iconCat.emoji":"Emoji","iconCat.sticker":"Stickers","iconCat.device":"Devices","iconCat.weather":"Weather","iconCat.transport":"Transport","iconCat.nature":"Nature","iconCat.building":"Building","iconCat.medical":"Medical","iconCat.shopping":"Shopping","iconCat.science":"Science","iconCat.animal":"Animal","iconCat.time":"Time","iconCat.edit":"Editing","iconCat.food":"Food","iconCat.communication":"Communication"},"ja-JP":{"save.success":"\u4FDD\u5B58\u3057\u307E\u3057\u305F","save.fail":"\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F","tool.select":"\u9078\u629E\u30C4\u30FC\u30EB","tool.hand":"\u30AD\u30E3\u30F3\u30D0\u30B9\u3092\u79FB\u52D5","tool.rectangle":"\u56DB\u89D2\u5F62","tool.rounded-rectangle":"\u89D2\u4E38\u56DB\u89D2\u5F62","tool.circle":"\u5186","tool.ellipse":"\u6955\u5186","tool.diamond":"\u3072\u3057\u5F62","tool.triangle":"\u4E09\u89D2\u5F62","tool.hexagon":"\u516D\u89D2\u5F62","tool.parallelogram":"\u5E73\u884C\u56DB\u8FBA\u5F62","tool.trapezoid":"\u53F0\u5F62","tool.pentagon":"\u4E94\u89D2\u5F62","tool.octagon":"\u516B\u89D2\u5F62","tool.star":"\u661F\u5F62","tool.cylinder":"\u5186\u67F1","tool.cloud":"\u96F2","tool.heart":"\u30CF\u30FC\u30C8","tool.block-arrow-right":"\u53F3\u77E2\u5370","tool.block-arrow-left":"\u5DE6\u77E2\u5370","tool.block-arrow-up":"\u4E0A\u77E2\u5370","tool.block-arrow-down":"\u4E0B\u77E2\u5370","tool.block-arrow-double":"\u53CC\u65B9\u5411\u77E2\u5370","tool.right-triangle":"\u76F4\u89D2\u4E09\u89D2\u5F62","tool.cross":"\u5341\u5B57","tool.speech-rect":"\u56DB\u89D2\u3044\u5439\u304D\u51FA\u3057","tool.speech-round":"\u4E38\u3044\u5439\u304D\u51FA\u3057","tool.cube":"\u7ACB\u65B9\u4F53","tool.sector":"\u6247\u5F62","tool.delay":"D \u5B57","tool.predefined-process":"\u5B9A\u7FA9\u6E08\u307F\u51E6\u7406","tool.document":"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8","tool.stadium":"\u4E21\u7AEF\u304C\u4E38\u3044\u9577\u65B9\u5F62","tool.class-catalog":"\u30AB\u30C6\u30B4\u30EA","tool.envelope":"\u5C01\u7B52","tool.checkbox":"\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9","tool.sticky-note":"\u4ED8\u7B8B","shape.sticky-note":"\u4ED8\u7B8B","tool.triangular-pyramid":"\u4E09\u89D2\u9310","tool.quadrangular-pyramid":"\u56DB\u89D2\u9310","tool.cuboid":"\u76F4\u65B9\u4F53","tool.sphere":"\u7403","tool.ellipsoid":"\u6955\u5186\u4F53","tool.pie":"\u5186\u30B0\u30E9\u30D5","tool.hollow-pie":"\u30C9\u30FC\u30CA\u30C4","class.plain":"\u30AF\u30E9\u30B9","flow.process":"\u51E6\u7406","flow.step":"\u30B9\u30C6\u30C3\u30D7","flow.startEnd":"\u958B\u59CB/\u7D42\u4E86","flow.decision":"\u5224\u65AD","flow.data":"\u30C7\u30FC\u30BF","flow.manual":"\u624B\u52D5\u64CD\u4F5C","flow.preparation":"\u6E96\u5099","flow.database":"\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9","flow.delay":"\u9045\u5EF6","shapeGroup.basic":"\u57FA\u672C","shapeGroup.flowchart":"\u30D5\u30ED\u30FC\u30C1\u30E3\u30FC\u30C8","shapeGroup.other":"\u305D\u306E\u4ED6","shapeGroup.solid":"\u7ACB\u4F53","shapeGroup.uml":"\u30AF\u30E9\u30B9\u56F3","shapeMenu.hint":"\u30DB\u30D0\u30FC\u3067\u540D\u524D\u3092\u8868\u793A","tool.chevron":"\u5C71\u5F62","tool.brace-left":"\u5DE6\u4E2D\u62EC\u5F27","tool.brace-right":"\u53F3\u4E2D\u62EC\u5F27","tool.uml-class":"UML \u30AF\u30E9\u30B9\u56F3","tool.uml-interface":"UML \u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30FC\u30B9","tool.line":"\u76F4\u7DDA","tool.arrow":"\u7DDA","tool.text":"\u30C6\u30AD\u30B9\u30C8","tool.draw":"\u30DA\u30F3","tool.pen":"\u30DA\u30F3","tool.highlighter":"\u86CD\u5149\u30DA\u30F3","tool.eraser":"\u6D88\u3057\u30B4\u30E0","status.none":"\u672A\u9078\u629E","status.selected":"{n} \u500B\u306E\u56F3\u5F62\u3092\u9078\u629E\u4E2D","toolbar.select":"\u9078\u629E (V)","toolbar.hand":"\u30AD\u30E3\u30F3\u30D0\u30B9\u3092\u79FB\u52D5 (H)","toolbar.shapes":"\u56F3\u5F62","toolbar.grid":"\u30B0\u30EA\u30C3\u30C9","toolbar.undo":"\u5143\u306B\u623B\u3059 (Ctrl+Z)","toolbar.redo":"\u3084\u308A\u76F4\u3059 (Ctrl+Shift+Z)","toolbar.arrow":"\u77E2\u5370 (A)","toolbar.text":"\u30C6\u30AD\u30B9\u30C8 (T)","toolbar.pen":"\u30DA\u30F3","toolbar.highlighter":"\u86CD\u5149\u30DA\u30F3","toolbar.eraser":"\u6D88\u3057\u30B4\u30E0 (E)","toolbar.uml-class":"UML \u30AF\u30E9\u30B9\u56F3","toolbar.uml-interface":"UML \u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30FC\u30B9","zoom.in":"\u62E1\u5927","zoom.out":"\u7E2E\u5C0F","zoom.reset":"\u30EA\u30BB\u30C3\u30C8","style.stroke":"\u67A0\u7DDA","style.line":"\u7DDA","style.fill":"\u5857\u308A","style.text":"\u30C6\u30AD\u30B9\u30C8","style.highlight":"\u30CF\u30A4\u30E9\u30A4\u30C8","style.prefix":"\u63A5\u982D\u8A18\u53F7","style.prefix.soon":"\u63A5\u982D\u8A18\u53F7\u306F\u958B\u767A\u4E2D\u3067\u3059\u3002\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u304F\u3060\u3055\u3044","style.none":"\u306A\u3057","style.addColor":"\u8272\u3092\u8FFD\u52A0","style.connection":"\u63A5\u7D9A","style.arrow":"\u77E2\u5370","style.dashed":"\u7834\u7DDA","style.solid":"\u5B9F\u7DDA","style.opacity":"\u4E0D\u900F\u660E\u5EA6","style.connection.straight":"\u76F4\u7DDA","style.connection.polyline":"\u6298\u308C\u7DDA","style.connection.orthogonal":"\u76F4\u89D2\u6298\u308C\u7DDA","style.connection.curve":"\u66F2\u7DDA","style.arrowhead.none":"\u77E2\u5370\u306A\u3057","style.arrowhead.end":"\u7D42\u70B9\u306E\u77E2\u5370","style.arrowhead.start":"\u59CB\u70B9\u306E\u77E2\u5370","style.arrowhead.both":"\u4E21\u7AEF\u306E\u77E2\u5370","style.arrowhead.none-dashed":"\u77E2\u5370\u306A\u3057\u306E\u7834\u7DDA","style.arrowhead.both-dashed":"\u4E21\u7AEF\u77E2\u5370\u306E\u7834\u7DDA","style.uml":"UML","style.arrowhead.inheritance":"\u7D99\u627F","style.arrowhead.composition":"\u30B3\u30F3\u30DD\u30B8\u30B7\u30E7\u30F3","style.arrowhead.aggregation":"\u96C6\u7D04","style.arrowhead.dependency":"\u4F9D\u5B58","style.arrowhead.realization":"\u5B9F\u73FE","menu.title":"\u65B0\u3057\u3044\u56F3\u5F62\u3092\u9078\u629E","menu.cancel":"\u7A7A\u767D\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30AD\u30E3\u30F3\u30BB\u30EB","shape.rectangle":"\u56DB\u89D2\u5F62","shape.rounded-rectangle":"\u89D2\u4E38","shape.circle":"\u5186","shape.ellipse":"\u6955\u5186","shape.diamond":"\u3072\u3057\u5F62","shape.triangle":"\u4E09\u89D2","shape.hexagon":"\u516D\u89D2\u5F62","shape.parallelogram":"\u5E73\u884C","shape.trapezoid":"\u53F0\u5F62","shape.pentagon":"\u4E94\u89D2\u5F62","shape.octagon":"\u516B\u89D2\u5F62","shape.star":"\u661F\u5F62","shape.uml-class":"\u30AF\u30E9\u30B9\u56F3","shape.uml-interface":"\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30FC\u30B9","uml.drag":"\u30C9\u30E9\u30C3\u30B0\u3067\u4E26\u3079\u66FF\u3048","uml.delete":"\u3053\u306E\u884C\u3092\u524A\u9664","uml.textColor":"\u6587\u5B57\u8272","uml.defaultColor":"\u65E2\u5B9A\u306E\u8272","uml.fontSize":"\u6587\u5B57\u30B5\u30A4\u30BA","uml.strikethrough":"\u53D6\u308A\u6D88\u3057\u7DDA","uml.attribute":"\u5C5E\u6027","uml.method":"\u30E1\u30BD\u30C3\u30C9","minimap.title":"\u30DF\u30CB\u30DE\u30C3\u30D7","minimap.expand":"\u30DF\u30CB\u30DE\u30C3\u30D7\u3092\u5C55\u958B","minimap.collapse":"\u30DF\u30CB\u30DE\u30C3\u30D7\u3092\u6298\u308A\u305F\u305F\u3080","tool.mind-map":"\u30DE\u30A4\u30F3\u30C9\u30DE\u30C3\u30D7","toolbar.mind-map":"\u30DE\u30A4\u30F3\u30C9\u30DE\u30C3\u30D7","toolbar.export":"\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8","toolbar.export.png":"PNG \u753B\u50CF","toolbar.export.svg":"SVG \u30D9\u30AF\u30BF\u30FC","toolbar.export.pdf":"PDF \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8","toolbar.export.data":"\u30C7\u30FC\u30BF\u3092\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8","toolbar.import.data":"\u30C7\u30FC\u30BF\u3092\u30A4\u30F3\u30DD\u30FC\u30C8","import.success":"\u30A4\u30F3\u30DD\u30FC\u30C8\u6210\u529F\uFF1A{n} \u500B\u306E\u56F3\u5F62\u3092\u5FA9\u5143\u3057\u307E\u3057\u305F","import.fail":"\u30A4\u30F3\u30DD\u30FC\u30C8\u5931\u6557\uFF1A\u30D5\u30A1\u30A4\u30EB\u5F62\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093","shape.mind-map":"\u30DE\u30A4\u30F3\u30C9\u30DE\u30C3\u30D7","mindmap.defaultRoot":"\u4E2D\u5FC3\u30C8\u30D4\u30C3\u30AF","mindmap.defaultBranch":"\u30D6\u30E9\u30F3\u30C1\u30C8\u30D4\u30C3\u30AF","mindmap.nodeText":"\u30CE\u30FC\u30C9\u306E\u30C6\u30AD\u30B9\u30C8","mindmap.addChild":"\u5B50\u30CE\u30FC\u30C9","mindmap.addSibling":"\u5144\u5F1F\u30CE\u30FC\u30C9","mindmap.deleteNode":"\u30CE\u30FC\u30C9\u3092\u524A\u9664","mindmap.color":"\u8272","mindmap.levelColor":"\u65E2\u5B9A\u306E\u968E\u5C64\u8272","mindmap.icon":"\u30A2\u30A4\u30B3\u30F3","mindmap.noIcon":"\u30A2\u30A4\u30B3\u30F3\u306A\u3057","mindmap.note":"\u88DC\u8DB3\u8AAC\u660E","mindmap.notePlaceholder":"\u8AAC\u660E\uFF08\u4EFB\u610F\uFF09","mindmap.noteColor":"\u8AAC\u660E\u306E\u8272","mindmap.noteColorDefault":"\u30CE\u30FC\u30C9\u3068\u540C\u3058","mindmap.collapse":"\u6298\u308A\u305F\u305F\u3080","mindmap.expand":"\u5C55\u958B","mindmap.close":"\u7DE8\u96C6\u3092\u9589\u3058\u308B","mindmap.more":"\u8A73\u7D30\u8A2D\u5B9A","mindmap.level":"Level","mindmap.promote1":"Promote","mindmap.promote2":"Promote 2","mindmap.promoteDisabled":"Already at top","tool.table":"\u30C6\u30FC\u30D6\u30EB","toolbar.table":"\u30C6\u30FC\u30D6\u30EB","shape.table":"\u30C6\u30FC\u30D6\u30EB","table.insertRow":"\u884C\u3092\u633F\u5165","table.deleteRow":"\u884C\u3092\u524A\u9664","table.insertCol":"\u5217\u3092\u633F\u5165","table.deleteCol":"\u5217\u3092\u524A\u9664","table.merge":"\u30BB\u30EB\u3092\u7D50\u5408","table.split":"\u30BB\u30EB\u3092\u5206\u5272","table.insertRowAbove":"\u4E0A\u306B\u884C\u3092\u633F\u5165","table.insertRowBelow":"\u4E0B\u306B\u884C\u3092\u633F\u5165","table.insertColLeft":"\u5DE6\u306B\u5217\u3092\u633F\u5165","table.insertColRight":"\u53F3\u306B\u5217\u3092\u633F\u5165","table.pickHint":"\u884C\u6570\u30FB\u5217\u6570\u3092\u9078\u629E","ctx.copy":"\u30B3\u30D4\u30FC","ctx.paste":"\u8CBC\u308A\u4ED8\u3051","ctx.duplicate":"\u8907\u88FD\u3092\u4F5C\u6210","ctx.layer":"\u30EC\u30A4\u30E4\u30FC","ctx.bringToFront":"\u6700\u524D\u9762\u3078","ctx.bringForward":"\u4E00\u3064\u524D\u3078","ctx.sendBackward":"\u4E00\u3064\u5F8C\u308D\u3078","ctx.sendToBack":"\u6700\u80CC\u9762\u3078","ctx.copyStyle":"\u30B9\u30BF\u30A4\u30EB\u3092\u30B3\u30D4\u30FC","ctx.pasteStyle":"\u30B9\u30BF\u30A4\u30EB\u3092\u8CBC\u308A\u4ED8\u3051","ctx.rotate90":"90\xB0","ctx.rotate180":"180\xB0","ctx.rotate270":"270\xB0","ctx.rotate":"\u56DE\u8EE2","ctx.group":"\u30B0\u30EB\u30FC\u30D7\u5316","ctx.ungroup":"\u30B0\u30EB\u30FC\u30D7\u89E3\u9664","ctx.lock":"\u30ED\u30C3\u30AF","ctx.unlock":"\u30ED\u30C3\u30AF\u89E3\u9664","ctx.delete":"\u524A\u9664","toolbar.icon":"\u30A2\u30A4\u30B3\u30F3 (S)","toolbar.image":"\u753B\u50CF","toolbar.more":"\u305D\u306E\u4ED6","toolbar.pageTheme":"\u30DA\u30FC\u30B8\u30C6\u30FC\u30DE","pageTheme.light":"\u30C7\u30D5\u30A9\u30EB\u30C8","pageTheme.warm":"\u30A6\u30A9\u30FC\u30E0","pageTheme.gray":"\u30E9\u30A4\u30C8\u30B0\u30EC\u30FC","pageTheme.purple":"\u30E9\u30A4\u30C8\u30D1\u30FC\u30D7\u30EB","pageTheme.green":"\u30E9\u30A4\u30C8\u30B0\u30EA\u30FC\u30F3","pageTheme.eye-care":"\u30A2\u30A4\u30B1\u30A2","tool.image":"\u753B\u50CF","image.uploadFailed":"\u753B\u50CF\u306E\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F","image.insertFailed":"\u753B\u50CF\u306E\u633F\u5165\u306B\u5931\u6557\u3057\u307E\u3057\u305F","image.tooLarge":"\u753B\u50CF\u304C 30 MB \u3092\u8D85\u3048\u3066\u3044\u308B\u305F\u3081\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093","image.temporaryInserted":"\u4E00\u6642\u753B\u50CF\u3092\u633F\u5165\u3057\u307E\u3057\u305F\uFF08\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u5148\u304C\u672A\u8A2D\u5B9A\u306E\u305F\u3081\u3001\u518D\u8AAD\u307F\u8FBC\u307F\u3067\u5931\u308F\u308C\u307E\u3059\uFF09","image.naturalSize":"\u5143\u306E\u30B5\u30A4\u30BA","icon.search":"\u30A2\u30A4\u30B3\u30F3\u3092\u691C\u7D22","icon.empty":"\u4E00\u81F4\u3059\u308B\u30A2\u30A4\u30B3\u30F3\u304C\u3042\u308A\u307E\u305B\u3093","icon.recent":"\u6700\u8FD1\u4F7F\u3063\u305F\u3082\u306E","iconCat.status":"\u30B9\u30C6\u30FC\u30BF\u30B9","iconCat.number":"\u6570\u5B57\u30D0\u30C3\u30B8","iconCat.tech":"\u30AF\u30E9\u30A6\u30C9\u3068\u6280\u8853","iconCat.chart":"\u30B0\u30E9\u30D5","iconCat.office":"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8","iconCat.media":"\u30E1\u30C7\u30A3\u30A2\u3068\u5171\u540C\u4F5C\u696D","iconCat.arrow":"\u77E2\u5370","iconCat.misc":"\u3088\u304F\u4F7F\u3046","iconCat.emoji":"\u7D75\u6587\u5B57","iconCat.sticker":"\u30B9\u30C6\u30C3\u30AB\u30FC","iconCat.device":"\u30C7\u30D0\u30A4\u30B9","iconCat.weather":"\u5929\u6C17","iconCat.transport":"\u4EA4\u901A","iconCat.nature":"\u81EA\u7136","iconCat.building":"\u5EFA\u7269","iconCat.medical":"\u533B\u7642","iconCat.shopping":"\u30B7\u30E7\u30C3\u30D4\u30F3\u30B0","iconCat.science":"\u30B5\u30A4\u30A8\u30F3\u30B9","iconCat.animal":"\u52D5\u7269","iconCat.time":"\u6642\u9593","iconCat.edit":"\u7DE8\u96C6","iconCat.food":"\u98DF\u3079\u7269","iconCat.communication":"\u901A\u4FE1"},"ko-KR":{"save.success":"\uC800\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4","save.fail":"\uC800\uC7A5 \uC2E4\uD328","tool.select":"\uC120\uD0DD \uB3C4\uAD6C","tool.hand":"\uD654\uBA74 \uC774\uB3D9","tool.rectangle":"\uC0AC\uAC01\uD615","tool.rounded-rectangle":"\uB465\uADFC \uC0AC\uAC01\uD615","tool.circle":"\uC6D0","tool.ellipse":"\uD0C0\uC6D0","tool.diamond":"\uB2E4\uC774\uC544\uBAAC\uB4DC","tool.triangle":"\uC0BC\uAC01\uD615","tool.hexagon":"\uC721\uAC01\uD615","tool.parallelogram":"\uD3C9\uD589\uC0AC\uBCC0\uD615","tool.trapezoid":"\uC0AC\uB2E4\uB9AC\uAF34","tool.pentagon":"\uC624\uAC01\uD615","tool.octagon":"\uD314\uAC01\uD615","tool.star":"\uBCC4","tool.cylinder":"\uC6D0\uAE30\uB465","tool.cloud":"\uAD6C\uB984","tool.heart":"\uD558\uD2B8","tool.block-arrow-right":"\uC624\uB978\uCABD \uD654\uC0B4\uD45C","tool.block-arrow-left":"\uC67C\uCABD \uD654\uC0B4\uD45C","tool.block-arrow-up":"\uC704\uCABD \uD654\uC0B4\uD45C","tool.block-arrow-down":"\uC544\uB798\uCABD \uD654\uC0B4\uD45C","tool.block-arrow-double":"\uC591\uBC29\uD5A5 \uD654\uC0B4\uD45C","tool.right-triangle":"\uC9C1\uAC01\uC0BC\uAC01\uD615","tool.cross":"\uC2ED\uC790","tool.speech-rect":"\uC0AC\uAC01\uD615 \uB9D0\uD48D\uC120","tool.speech-round":"\uC6D0\uD615 \uB9D0\uD48D\uC120","tool.cube":"\uC815\uC721\uBA74\uCCB4","tool.sector":"\uBD80\uCC44\uAF34","tool.delay":"D \uC790","tool.predefined-process":"\uC0AC\uC804 \uC815\uC758 \uD504\uB85C\uC138\uC2A4","tool.document":"\uBB38\uC11C","tool.stadium":"\uC591\uB05D\uC774 \uB465\uADFC \uC0AC\uAC01\uD615","tool.class-catalog":"\uCE74\uD14C\uACE0\uB9AC","tool.envelope":"\uBD09\uD22C","tool.checkbox":"\uCCB4\uD06C\uBC15\uC2A4","tool.sticky-note":"\uC2A4\uD2F0\uD0A4 \uB178\uD2B8","shape.sticky-note":"\uC2A4\uD2F0\uD0A4 \uB178\uD2B8","tool.triangular-pyramid":"\uC0BC\uAC01\uBFD4","tool.quadrangular-pyramid":"\uC0AC\uAC01\uBFD4","tool.cuboid":"\uC9C1\uC721\uBA74\uCCB4","tool.sphere":"\uAD6C","tool.ellipsoid":"\uD0C0\uC6D0\uCCB4","tool.pie":"\uD30C\uC774","tool.hollow-pie":"\uB3C4\uB11B","class.plain":"\uD074\uB798\uC2A4","flow.process":"\uCC98\uB9AC","flow.step":"\uB2E8\uACC4","flow.startEnd":"\uC2DC\uC791/\uC885\uB8CC","flow.decision":"\uD310\uB2E8","flow.data":"\uB370\uC774\uD130","flow.manual":"\uC218\uB3D9 \uC791\uC5C5","flow.preparation":"\uC900\uBE44","flow.database":"\uB370\uC774\uD130\uBCA0\uC774\uC2A4","flow.delay":"\uC9C0\uC5F0","shapeGroup.basic":"\uAE30\uBCF8","shapeGroup.flowchart":"\uC21C\uC11C\uB3C4","shapeGroup.other":"\uAE30\uD0C0","shapeGroup.solid":"\uC785\uCCB4","shapeGroup.uml":"\uD074\uB798\uC2A4 \uB2E4\uC774\uC5B4\uADF8\uB7A8","shapeMenu.hint":"\uB9C8\uC6B0\uC2A4\uB97C \uC62C\uB824 \uC774\uB984 \uD655\uC778","tool.chevron":"\uAEBE\uC1E0","tool.brace-left":"\uC67C\uCABD \uC911\uAD04\uD638","tool.brace-right":"\uC624\uB978\uCABD \uC911\uAD04\uD638","tool.uml-class":"UML \uD074\uB798\uC2A4","tool.uml-interface":"UML \uC778\uD130\uD398\uC774\uC2A4","tool.line":"\uC9C1\uC120","tool.arrow":"\uC120","tool.text":"\uD14D\uC2A4\uD2B8","tool.draw":"\uD39C","tool.pen":"\uD39C","tool.highlighter":"\uD615\uAD11\uD39C","tool.eraser":"\uC9C0\uC6B0\uAC1C","status.none":"\uC120\uD0DD \uC5C6\uC74C","status.selected":"\uB3C4\uD615 {n}\uAC1C \uC120\uD0DD\uB428","toolbar.select":"\uC120\uD0DD (V)","toolbar.hand":"\uD654\uBA74 \uC774\uB3D9 (H)","toolbar.shapes":"\uB3C4\uD615","toolbar.grid":"\uADF8\uB9AC\uB4DC","toolbar.undo":"\uC2E4\uD589 \uCDE8\uC18C (Ctrl+Z)","toolbar.redo":"\uB2E4\uC2DC \uC2E4\uD589 (Ctrl+Shift+Z)","toolbar.arrow":"\uD654\uC0B4\uD45C (A)","toolbar.text":"\uD14D\uC2A4\uD2B8 (T)","toolbar.pen":"\uD39C","toolbar.highlighter":"\uD615\uAD11\uD39C","toolbar.eraser":"\uC9C0\uC6B0\uAC1C (E)","toolbar.uml-class":"UML \uD074\uB798\uC2A4","toolbar.uml-interface":"UML \uC778\uD130\uD398\uC774\uC2A4","zoom.in":"\uD655\uB300","zoom.out":"\uCD95\uC18C","zoom.reset":"\uCD08\uAE30\uD654","style.stroke":"\uD14C\uB450\uB9AC","style.line":"\uC120","style.fill":"\uCC44\uC6B0\uAE30","style.text":"\uD14D\uC2A4\uD2B8","style.highlight":"\uD615\uAD11","style.prefix":"\uC811\uB450 \uAE30\uD638","style.prefix.soon":"\uC811\uB450 \uAE30\uD638\uB294 \uC900\uBE44 \uC911\uC785\uB2C8\uB2E4","style.none":"\uC5C6\uC74C","style.addColor":"\uC0C9\uC0C1 \uCD94\uAC00","style.connection":"\uC5F0\uACB0","style.arrow":"\uD654\uC0B4\uD45C","style.dashed":"\uC810\uC120","style.solid":"\uC2E4\uC120","style.opacity":"\uBD88\uD22C\uBA85\uB3C4","style.connection.straight":"\uC9C1\uC120","style.connection.polyline":"\uAEBE\uC740\uC120","style.connection.orthogonal":"\uC9C1\uAC01 \uAEBE\uC740\uC120","style.connection.curve":"\uACE1\uC120","style.arrowhead.none":"\uD654\uC0B4\uD45C \uC5C6\uC74C","style.arrowhead.end":"\uB05D \uD654\uC0B4\uD45C","style.arrowhead.start":"\uC2DC\uC791 \uD654\uC0B4\uD45C","style.arrowhead.both":"\uC591\uBC29\uD5A5 \uD654\uC0B4\uD45C","style.arrowhead.none-dashed":"\uD654\uC0B4\uD45C \uC5C6\uB294 \uC810\uC120","style.arrowhead.both-dashed":"\uC591\uBC29\uD5A5 \uD654\uC0B4\uD45C \uC810\uC120","style.uml":"UML","style.arrowhead.inheritance":"\uC0C1\uC18D","style.arrowhead.composition":"\uD569\uC131","style.arrowhead.aggregation":"\uC9D1\uD569","style.arrowhead.dependency":"\uC758\uC874","style.arrowhead.realization":"\uC2E4\uD604","menu.title":"\uC0C8 \uB3C4\uD615 \uC120\uD0DD","menu.cancel":"\uBE48 \uACF3\uC744 \uD074\uB9AD\uD574 \uCDE8\uC18C","shape.rectangle":"\uC0AC\uAC01\uD615","shape.rounded-rectangle":"\uB465\uADFC","shape.circle":"\uC6D0","shape.ellipse":"\uD0C0\uC6D0","shape.diamond":"\uB2E4\uC774\uC544\uBAAC\uB4DC","shape.triangle":"\uC0BC\uAC01","shape.hexagon":"\uC721\uAC01\uD615","shape.parallelogram":"\uD3C9\uD589","shape.trapezoid":"\uC0AC\uB2E4\uB9AC\uAF34","shape.pentagon":"\uC624\uAC01\uD615","shape.octagon":"\uD314\uAC01\uD615","shape.star":"\uBCC4","shape.uml-class":"\uD074\uB798\uC2A4","shape.uml-interface":"\uC778\uD130\uD398\uC774\uC2A4","uml.drag":"\uB4DC\uB798\uADF8\uD558\uC5EC \uC815\uB82C","uml.delete":"\uC774 \uD589 \uC0AD\uC81C","uml.textColor":"\uAE00\uC790\uC0C9","uml.defaultColor":"\uAE30\uBCF8 \uC0C9\uC0C1","uml.fontSize":"\uAE00\uC790 \uD06C\uAE30","uml.strikethrough":"\uCDE8\uC18C\uC120","uml.attribute":"\uC18D\uC131","uml.method":"\uBA54\uC11C\uB4DC","minimap.title":"\uBBF8\uB2C8\uB9F5","minimap.expand":"\uBBF8\uB2C8\uB9F5 \uD3BC\uCE58\uAE30","minimap.collapse":"\uBBF8\uB2C8\uB9F5 \uC811\uAE30","tool.mind-map":"\uB9C8\uC778\uB4DC\uB9F5","toolbar.mind-map":"\uB9C8\uC778\uB4DC\uB9F5","toolbar.export":"\uB0B4\uBCF4\uB0B4\uAE30","toolbar.export.png":"PNG \uC774\uBBF8\uC9C0","toolbar.export.svg":"SVG \uBCA1\uD130","toolbar.export.pdf":"PDF \uBB38\uC11C","toolbar.export.data":"\uB370\uC774\uD130 \uB0B4\uBCF4\uB0B4\uAE30","toolbar.import.data":"\uB370\uC774\uD130 \uAC00\uC838\uC624\uAE30","import.success":"\uAC00\uC838\uC624\uAE30 \uC131\uACF5: \uB3C4\uD615 {n}\uAC1C \uBCF5\uC6D0\uB428","import.fail":"\uAC00\uC838\uC624\uAE30 \uC2E4\uD328: \uD30C\uC77C \uD615\uC2DD\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4","shape.mind-map":"\uB9C8\uC778\uB4DC\uB9F5","mindmap.defaultRoot":"\uC911\uC2EC \uC8FC\uC81C","mindmap.defaultBranch":"\uBD84\uAE30 \uC8FC\uC81C","mindmap.nodeText":"\uB178\uB4DC \uD14D\uC2A4\uD2B8","mindmap.addChild":"\uD558\uC704 \uB178\uB4DC","mindmap.addSibling":"\uD615\uC81C \uB178\uB4DC","mindmap.deleteNode":"\uB178\uB4DC \uC0AD\uC81C","mindmap.color":"\uC0C9\uC0C1","mindmap.levelColor":"\uAE30\uBCF8 \uB2E8\uACC4 \uC0C9\uC0C1","mindmap.icon":"\uC544\uC774\uCF58","mindmap.noIcon":"\uC544\uC774\uCF58 \uC5C6\uC74C","mindmap.note":"\uC18D\uC131 \uC124\uBA85","mindmap.notePlaceholder":"\uC124\uBA85 \uB0B4\uC6A9(\uC120\uD0DD)","mindmap.noteColor":"\uC124\uBA85 \uC0C9\uC0C1","mindmap.noteColorDefault":"\uB178\uB4DC\uC640 \uB3D9\uC77C","mindmap.collapse":"\uC811\uAE30","mindmap.expand":"\uD3BC\uCE58\uAE30","mindmap.close":"\uD3B8\uC9D1 \uB2EB\uAE30","mindmap.more":"\uCD94\uAC00 \uC124\uC815","mindmap.level":"Level","mindmap.promote1":"Promote","mindmap.promote2":"Promote 2","mindmap.promoteDisabled":"Already at top","tool.table":"\uD45C","toolbar.table":"\uD45C","shape.table":"\uD45C","table.insertRow":"\uD589 \uC0BD\uC785","table.deleteRow":"\uD589 \uC0AD\uC81C","table.insertCol":"\uC5F4 \uC0BD\uC785","table.deleteCol":"\uC5F4 \uC0AD\uC81C","table.merge":"\uC140 \uBCD1\uD569","table.split":"\uC140 \uBD84\uD560","table.insertRowAbove":"\uC704\uC5D0 \uD589 \uC0BD\uC785","table.insertRowBelow":"\uC544\uB798\uC5D0 \uD589 \uC0BD\uC785","table.insertColLeft":"\uC67C\uCABD\uC5D0 \uC5F4 \uC0BD\uC785","table.insertColRight":"\uC624\uB978\uCABD\uC5D0 \uC5F4 \uC0BD\uC785","table.pickHint":"\uD589\xB7\uC5F4 \uC218 \uC120\uD0DD","ctx.copy":"\uBCF5\uC0AC","ctx.paste":"\uBD99\uC5EC\uB123\uAE30","ctx.duplicate":"\uC0AC\uBCF8 \uB9CC\uB4E4\uAE30","ctx.layer":"\uB808\uC774\uC5B4","ctx.bringToFront":"\uB9E8 \uC55E\uC73C\uB85C","ctx.bringForward":"\uD55C \uCE78 \uC55E\uC73C\uB85C","ctx.sendBackward":"\uD55C \uCE78 \uB4A4\uB85C","ctx.sendToBack":"\uB9E8 \uB4A4\uB85C","ctx.copyStyle":"\uC2A4\uD0C0\uC77C \uBCF5\uC0AC","ctx.pasteStyle":"\uC2A4\uD0C0\uC77C \uBD99\uC5EC\uB123\uAE30","ctx.rotate90":"90\xB0","ctx.rotate180":"180\xB0","ctx.rotate270":"270\xB0","ctx.rotate":"\uD68C\uC804","ctx.group":"\uADF8\uB8F9 \uB9CC\uB4E4\uAE30","ctx.ungroup":"\uADF8\uB8F9 \uD574\uC81C","ctx.lock":"\uC7A0\uAE08","ctx.unlock":"\uC7A0\uAE08 \uD574\uC81C","ctx.delete":"\uC0AD\uC81C","toolbar.icon":"\uC544\uC774\uCF58 (S)","toolbar.image":"\uC774\uBBF8\uC9C0","toolbar.more":"\uB354\uBCF4\uAE30","toolbar.pageTheme":"\uD398\uC774\uC9C0 \uD14C\uB9C8","pageTheme.light":"\uAE30\uBCF8","pageTheme.warm":"\uB530\uB73B\uD55C","pageTheme.gray":"\uBC1D\uC740 \uD68C\uC0C9","pageTheme.purple":"\uBC1D\uC740 \uBCF5\uC22D\uC544","pageTheme.green":"\uBC1D\uC740 \uCD08\uB85D","pageTheme.eye-care":"\uB208 \uBCF4\uD638","tool.image":"\uC774\uBBF8\uC9C0","image.uploadFailed":"\uC774\uBBF8\uC9C0 \uC5C5\uB85C\uB4DC \uC2E4\uD328","image.insertFailed":"\uC774\uBBF8\uC9C0 \uC0BD\uC785 \uC2E4\uD328","image.tooLarge":"\uC774\uBBF8\uC9C0\uAC00 30 MB\uB97C \uCD08\uACFC\uD558\uC5EC \uC5C5\uB85C\uB4DC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4","image.temporaryInserted":"\uC784\uC2DC \uC774\uBBF8\uC9C0\uB97C \uC0BD\uC785\uD588\uC2B5\uB2C8\uB2E4(\uC5C5\uB85C\uB4DC \uC8FC\uC18C\uAC00 \uC5C6\uC5B4 \uC0C8\uB85C\uACE0\uCE68\uD558\uBA74 \uC0AC\uB77C\uC9D1\uB2C8\uB2E4)","image.naturalSize":"\uC6D0\uBCF8 \uD06C\uAE30","icon.search":"\uC544\uC774\uCF58 \uAC80\uC0C9","icon.empty":"\uC77C\uCE58\uD558\uB294 \uC544\uC774\uCF58\uC774 \uC5C6\uC2B5\uB2C8\uB2E4","icon.recent":"\uCD5C\uADFC \uC0AC\uC6A9","iconCat.status":"\uC0C1\uD0DC \uD45C\uC2DC","iconCat.number":"\uC22B\uC790 \uBC30\uC9C0","iconCat.tech":"\uD074\uB77C\uC6B0\uB4DC\uC640 \uAE30\uC220","iconCat.chart":"\uCC28\uD2B8","iconCat.office":"\uBB38\uC11C","iconCat.media":"\uBBF8\uB514\uC5B4\uC640 \uD611\uC5C5","iconCat.arrow":"\uD654\uC0B4\uD45C","iconCat.misc":"\uC790\uC8FC \uC4F0\uB294","iconCat.emoji":"\uC774\uBAA8\uD2F0\uCF58","iconCat.sticker":"\uC2A4\uD2F0\uCEE4","iconCat.device":"\uAE30\uAE30","iconCat.weather":"\uB0A0\uC528","iconCat.transport":"\uAD50\uD1B5","iconCat.nature":"\uC790\uC5F0","iconCat.building":"\uAC74\uBB3C","iconCat.medical":"\uC758\uB8CC","iconCat.shopping":"\uC1FC\uD551","iconCat.science":"\uACFC\uD559","iconCat.animal":"\uB3D9\uBB3C","iconCat.time":"\uC2DC\uAC04","iconCat.edit":"\uD3B8\uC9D1","iconCat.food":"\uC74C\uC2DD","iconCat.communication":"\uD1B5\uC2E0"},"de-DE":{"save.success":"Gespeichert","save.fail":"Speichern fehlgeschlagen","tool.select":"Auswahlwerkzeug","tool.hand":"Ansicht verschieben","tool.rectangle":"Rechteck","tool.rounded-rectangle":"Abgerundetes Rechteck","tool.circle":"Kreis","tool.ellipse":"Ellipse","tool.diamond":"Raute","tool.triangle":"Dreieck","tool.hexagon":"Sechseck","tool.parallelogram":"Parallelogramm","tool.trapezoid":"Trapez","tool.pentagon":"F\xFCnfeck","tool.octagon":"Achteck","tool.star":"Stern","tool.cylinder":"Zylinder","tool.cloud":"Wolke","tool.heart":"Herz","tool.block-arrow-right":"Pfeil rechts","tool.block-arrow-left":"Pfeil links","tool.block-arrow-up":"Pfeil oben","tool.block-arrow-down":"Pfeil unten","tool.block-arrow-double":"Doppelpfeil","tool.right-triangle":"Rechtwinkliges Dreieck","tool.cross":"Kreuz","tool.speech-rect":"Eckige Sprechblase","tool.speech-round":"Runde Sprechblase","tool.cube":"W\xFCrfel","tool.sector":"Kreissektor","tool.delay":"D-Form","tool.predefined-process":"Vordefinierter Prozess","tool.document":"Dokument","tool.stadium":"Stadionform","tool.class-catalog":"Kategorie","tool.envelope":"Umschlag","tool.checkbox":"Kontrollk\xE4stchen","tool.sticky-note":"Haftnotiz","shape.sticky-note":"Haftnotiz","tool.triangular-pyramid":"Dreieckspyramide","tool.quadrangular-pyramid":"Viereckspyramide","tool.cuboid":"Quader","tool.sphere":"Kugel","tool.ellipsoid":"Ellipsoid","tool.pie":"Tortenst\xFCck","tool.hollow-pie":"Donut","class.plain":"Klasse","flow.process":"Prozess","flow.step":"Schritt","flow.startEnd":"Start / Ende","flow.decision":"Entscheidung","flow.data":"Daten","flow.manual":"Manueller Vorgang","flow.preparation":"Vorbereitung","flow.database":"Datenbank","flow.delay":"Verz\xF6gerung","shapeGroup.basic":"Basis","shapeGroup.flowchart":"Flussdiagramm","shapeGroup.other":"Sonstige","shapeGroup.solid":"3D","shapeGroup.uml":"Klassendiagramm","shapeMenu.hint":"Zum Anzeigen des Namens \xFCberfahren","tool.chevron":"Winkelform","tool.brace-left":"Linke Klammer","tool.brace-right":"Rechte Klammer","tool.uml-class":"UML-Klasse","tool.uml-interface":"UML-Schnittstelle","tool.line":"Linie","tool.arrow":"Linie","tool.text":"Text","tool.draw":"Stift","tool.pen":"Stift","tool.highlighter":"Textmarker","tool.eraser":"Radiergummi","status.none":"Nichts ausgew\xE4hlt","status.selected":"{n} Objekte ausgew\xE4hlt","toolbar.select":"Auswahl (V)","toolbar.hand":"Ansicht verschieben (H)","toolbar.shapes":"Formen","toolbar.grid":"Raster","toolbar.undo":"R\xFCckg\xE4ngig (Strg+Z)","toolbar.redo":"Wiederholen (Strg+Umschalt+Z)","toolbar.arrow":"Pfeil (A)","toolbar.text":"Text (T)","toolbar.pen":"Stift","toolbar.highlighter":"Textmarker","toolbar.eraser":"Radiergummi (E)","toolbar.uml-class":"UML-Klasse","toolbar.uml-interface":"UML-Schnittstelle","zoom.in":"Vergr\xF6\xDFern","zoom.out":"Verkleinern","zoom.reset":"Zur\xFCcksetzen","style.stroke":"Rahmen","style.line":"Linie","style.fill":"F\xFCllung","style.text":"Text","style.highlight":"Hervorhebung","style.prefix":"Pr\xE4fix","style.prefix.soon":"Pr\xE4fixsymbole folgen in K\xFCrze","style.none":"Keine","style.addColor":"Farbe hinzuf\xFCgen","style.connection":"Verbindung","style.arrow":"Pfeilspitze","style.dashed":"Gestrichelt","style.solid":"Durchgezogen","style.opacity":"Deckkraft","style.connection.straight":"Gerade","style.connection.polyline":"Polylinie","style.connection.orthogonal":"Rechtwinklig","style.connection.curve":"Kurve","style.arrowhead.none":"Keine","style.arrowhead.end":"Ende","style.arrowhead.start":"Start","style.arrowhead.both":"Beide","style.arrowhead.none-dashed":"Gestrichelt","style.arrowhead.both-dashed":"Gestrichelt beidseitig","style.uml":"UML","style.arrowhead.inheritance":"Vererbung","style.arrowhead.composition":"Komposition","style.arrowhead.aggregation":"Aggregation","style.arrowhead.dependency":"Abh\xE4ngigkeit","style.arrowhead.realization":"Realisierung","menu.title":"Neue Form w\xE4hlen","menu.cancel":"Zum Abbrechen ins Leere klicken","shape.rectangle":"Rechteck","shape.rounded-rectangle":"Abgerundet","shape.circle":"Kreis","shape.ellipse":"Ellipse","shape.diamond":"Raute","shape.triangle":"Dreieck","shape.hexagon":"Sechseck","shape.parallelogram":"Parallelogramm","shape.trapezoid":"Trapez","shape.pentagon":"F\xFCnfeck","shape.octagon":"Achteck","shape.star":"Stern","shape.uml-class":"Klasse","shape.uml-interface":"Schnittstelle","uml.drag":"Zum Sortieren ziehen","uml.delete":"Zeile l\xF6schen","uml.textColor":"Textfarbe","uml.defaultColor":"Standardfarbe","uml.fontSize":"Schriftgr\xF6\xDFe","uml.strikethrough":"Durchgestrichen","uml.attribute":"Attribute","uml.method":"Methoden","minimap.title":"Minikarte","minimap.expand":"Minikarte einblenden","minimap.collapse":"Minikarte ausblenden","tool.mind-map":"Mindmap","toolbar.mind-map":"Mindmap","toolbar.export":"Exportieren","toolbar.export.png":"PNG-Bild","toolbar.export.svg":"SVG-Vektor","toolbar.export.pdf":"PDF-Dokument","toolbar.export.data":"Daten exportieren","toolbar.import.data":"Daten importieren","import.success":"Import erfolgreich: {n} Formen wiederhergestellt","import.fail":"Import fehlgeschlagen: ung\xFCltiges Dateiformat","shape.mind-map":"Mindmap","mindmap.defaultRoot":"Zentrales Thema","mindmap.defaultBranch":"Unterthema","mindmap.nodeText":"Knotentext","mindmap.addChild":"Unterknoten","mindmap.addSibling":"Geschwisterknoten","mindmap.deleteNode":"Knoten l\xF6schen","mindmap.color":"Farbe","mindmap.levelColor":"Standard-Ebenenfarbe","mindmap.icon":"Symbol","mindmap.noIcon":"Kein Symbol","mindmap.note":"Notiz","mindmap.notePlaceholder":"Notizinhalt (optional)","mindmap.noteColor":"Notizfarbe","mindmap.noteColorDefault":"Wie Knoten","mindmap.collapse":"Einklappen","mindmap.expand":"Ausklappen","mindmap.close":"Editor schlie\xDFen","mindmap.more":"Weitere Einstellungen","mindmap.level":"Ebene","mindmap.promote1":"Ebene h\xF6her","mindmap.promote2":"2 Ebenen h\xF6her","mindmap.promoteDisabled":"Bereits oben","tool.table":"Tabelle","toolbar.table":"Tabelle","shape.table":"Tabelle","table.insertRow":"Zeile einf\xFCgen","table.deleteRow":"Zeile l\xF6schen","table.insertCol":"Spalte einf\xFCgen","table.deleteCol":"Spalte l\xF6schen","table.merge":"Zellen verbinden","table.split":"Zelle teilen","table.insertRowAbove":"Zeile dar\xFCber einf\xFCgen","table.insertRowBelow":"Zeile darunter einf\xFCgen","table.insertColLeft":"Spalte links einf\xFCgen","table.insertColRight":"Spalte rechts einf\xFCgen","table.pickHint":"Zeilen & Spalten w\xE4hlen","ctx.copy":"Kopieren","ctx.paste":"Einf\xFCgen","ctx.duplicate":"Duplizieren","ctx.layer":"Ebene","ctx.bringToFront":"Ganz nach vorn","ctx.bringForward":"Nach vorn","ctx.sendBackward":"Nach hint","ctx.sendToBack":"Ganz nach hint","ctx.copyStyle":"Stil kopieren","ctx.pasteStyle":"Stil einf\xFCgen","ctx.rotate90":"90\xB0","ctx.rotate180":"180\xB0","ctx.rotate270":"270\xB0","ctx.rotate":"Drehen","ctx.group":"Gruppieren","ctx.ungroup":"Gruppierung aufheben","ctx.lock":"Sperren","ctx.unlock":"Entsperren","ctx.delete":"L\xF6schen","toolbar.icon":"Symbole (S)","toolbar.image":"Bild","toolbar.more":"Mehr","toolbar.pageTheme":"Seitenthema","pageTheme.light":"Standard","pageTheme.warm":"Warm","pageTheme.gray":"Hellgrau","pageTheme.purple":"Helllila","pageTheme.green":"Hellgr\xFCn","pageTheme.eye-care":"Augenschonend","tool.image":"Bild","image.uploadFailed":"Bild-Upload fehlgeschlagen","image.insertFailed":"Bild konnte nicht eingef\xFCgt werden","image.tooLarge":"Bild \xFCberschreitet das Upload-Limit von 30 MB","image.temporaryInserted":"Tempor\xE4res Bild eingef\xFCgt (kein Upload-Endpunkt konfiguriert, geht beim Neuladen verloren)","image.naturalSize":"Originalgr\xF6\xDFe","icon.search":"Symbole suchen","icon.empty":"Keine passenden Symbole","icon.recent":"Zuletzt verwendet","iconCat.status":"Status","iconCat.number":"Zahlen-Badges","iconCat.tech":"Cloud & Technik","iconCat.chart":"Diagramme","iconCat.office":"Dokumente","iconCat.media":"Medien & Teamarbeit","iconCat.arrow":"Pfeile","iconCat.misc":"H\xE4ufig genutzt","iconCat.emoji":"Emotionen","iconCat.sticker":"Sticker","iconCat.device":"Ger\xE4te","iconCat.weather":"Wetter","iconCat.transport":"Verkehr","iconCat.nature":"Natur","iconCat.building":"Geb\xE4ude","iconCat.medical":"Medizin","iconCat.shopping":"Einkaufen","iconCat.science":"Wissenschaft","iconCat.animal":"Tier","iconCat.time":"Zeit","iconCat.edit":"Bearbeiten","iconCat.food":"Essen","iconCat.communication":"Kommunikation"},"fr-FR":{"save.success":"Enregistr\xE9","save.fail":"\xC9chec de l'enregistrement","tool.select":"Outil de s\xE9lection","tool.hand":"D\xE9placer la vue","tool.rectangle":"Rectangle","tool.rounded-rectangle":"Rectangle arrondi","tool.circle":"Cercle","tool.ellipse":"Ellipse","tool.diamond":"Losange","tool.triangle":"Triangle","tool.hexagon":"Hexagone","tool.parallelogram":"Parall\xE9logramme","tool.trapezoid":"Trap\xE8ze","tool.pentagon":"Pentagone","tool.octagon":"Octogone","tool.star":"\xC9toile","tool.cylinder":"Cylindre","tool.cloud":"Nuage","tool.heart":"C\u0153ur","tool.block-arrow-right":"Fl\xE8che droite","tool.block-arrow-left":"Fl\xE8che gauche","tool.block-arrow-up":"Fl\xE8che haut","tool.block-arrow-down":"Fl\xE8che bas","tool.block-arrow-double":"Double fl\xE8che","tool.right-triangle":"Triangle rectangle","tool.cross":"Croix","tool.speech-rect":"Bulle rectangulaire","tool.speech-round":"Bulle ronde","tool.cube":"Cube","tool.sector":"Secteur","tool.delay":"Forme D","tool.predefined-process":"Processus pr\xE9d\xE9fini","tool.document":"Document","tool.stadium":"Forme stade","tool.class-catalog":"Cat\xE9gorie","tool.envelope":"Enveloppe","tool.checkbox":"Case \xE0 cocher","tool.sticky-note":"Note adh\xE9sive","shape.sticky-note":"Note adh\xE9sive","tool.triangular-pyramid":"Pyramide triangulaire","tool.quadrangular-pyramid":"Pyramide \xE0 base carr\xE9e","tool.cuboid":"Pav\xE9 droit","tool.sphere":"Sph\xE8re","tool.ellipsoid":"Ellipso\xEFde","tool.pie":"Camembert","tool.hollow-pie":"Anneau","class.plain":"Classe","flow.process":"Traitement","flow.step":"\xC9tape","flow.startEnd":"D\xE9but / Fin","flow.decision":"D\xE9cision","flow.data":"Donn\xE9es","flow.manual":"Op\xE9ration manuelle","flow.preparation":"Pr\xE9paration","flow.database":"Base de donn\xE9es","flow.delay":"D\xE9lai","shapeGroup.basic":"De base","shapeGroup.flowchart":"Organigramme","shapeGroup.other":"Autres","shapeGroup.solid":"3D","shapeGroup.uml":"Diagramme de classes","shapeMenu.hint":"Survolez pour voir le nom","tool.chevron":"Chevron","tool.brace-left":"Accolade gauche","tool.brace-right":"Accolade droite","tool.uml-class":"Classe UML","tool.uml-interface":"Interface UML","tool.line":"Ligne","tool.arrow":"Ligne","tool.text":"Texte","tool.draw":"Stylo","tool.pen":"Stylo","tool.highlighter":"Surligneur","tool.eraser":"Gomme","status.none":"Aucune s\xE9lection","status.selected":"{n} formes s\xE9lectionn\xE9es","toolbar.select":"S\xE9lection (V)","toolbar.hand":"D\xE9placer la vue (H)","toolbar.shapes":"Formes","toolbar.grid":"Grille","toolbar.undo":"Annuler (Ctrl+Z)","toolbar.redo":"R\xE9tablir (Ctrl+Maj+Z)","toolbar.arrow":"Fl\xE8che (A)","toolbar.text":"Texte (T)","toolbar.pen":"Stylo","toolbar.highlighter":"Surligneur","toolbar.eraser":"Gomme (E)","toolbar.uml-class":"Classe UML","toolbar.uml-interface":"Interface UML","zoom.in":"Zoom avant","zoom.out":"Zoom arri\xE8re","zoom.reset":"R\xE9initialiser","style.stroke":"Bordure","style.line":"Ligne","style.fill":"Remplissage","style.text":"Texte","style.highlight":"Surlignage","style.prefix":"Pr\xE9fixe","style.prefix.soon":"Les symboles de pr\xE9fixe arrivent bient\xF4t","style.none":"Aucun","style.addColor":"Ajouter une couleur","style.connection":"Connexion","style.arrow":"Pointe de fl\xE8che","style.dashed":"Pointill\xE9","style.solid":"Continu","style.opacity":"Opacit\xE9","style.connection.straight":"Droite","style.connection.polyline":"Polyligne","style.connection.orthogonal":"Orthogonale","style.connection.curve":"Courbe","style.arrowhead.none":"Aucune","style.arrowhead.end":"Fin","style.arrowhead.start":"D\xE9but","style.arrowhead.both":"Les deux","style.arrowhead.none-dashed":"Pointill\xE9","style.arrowhead.both-dashed":"Pointill\xE9 double","style.uml":"UML","style.arrowhead.inheritance":"H\xE9ritage","style.arrowhead.composition":"Composition","style.arrowhead.aggregation":"Agr\xE9gation","style.arrowhead.dependency":"D\xE9pendance","style.arrowhead.realization":"R\xE9alisation","menu.title":"Choisir une nouvelle forme","menu.cancel":"Cliquez dans le vide pour annuler","shape.rectangle":"Rectangle","shape.rounded-rectangle":"Arrondi","shape.circle":"Cercle","shape.ellipse":"Ellipse","shape.diamond":"Losange","shape.triangle":"Triangle","shape.hexagon":"Hexagone","shape.parallelogram":"Parall\xE9logramme","shape.trapezoid":"Trap\xE8ze","shape.pentagon":"Pentagone","shape.octagon":"Octogone","shape.star":"\xC9toile","shape.uml-class":"Classe","shape.uml-interface":"Interface","uml.drag":"Glisser pour r\xE9ordonner","uml.delete":"Supprimer la ligne","uml.textColor":"Couleur du texte","uml.defaultColor":"Couleur par d\xE9faut","uml.fontSize":"Taille de police","uml.strikethrough":"Barr\xE9","uml.attribute":"Attributs","uml.method":"M\xE9thodes","minimap.title":"Mini-carte","minimap.expand":"D\xE9velopper la mini-carte","minimap.collapse":"R\xE9duire la mini-carte","tool.mind-map":"Carte mentale","toolbar.mind-map":"Carte mentale","toolbar.export":"Exporter","toolbar.export.png":"Image PNG","toolbar.export.svg":"Vecteur SVG","toolbar.export.pdf":"Document PDF","toolbar.export.data":"Exporter les donn\xE9es","toolbar.import.data":"Importer les donn\xE9es","import.success":"Import r\xE9ussi : {n} formes restaur\xE9es","import.fail":"\xC9chec de l'import : format de fichier invalide","shape.mind-map":"Carte mentale","mindmap.defaultRoot":"Sujet central","mindmap.defaultBranch":"Sous-sujet","mindmap.nodeText":"Texte du n\u0153ud","mindmap.addChild":"N\u0153ud enfant","mindmap.addSibling":"N\u0153ud fr\xE8re","mindmap.deleteNode":"Supprimer le n\u0153ud","mindmap.color":"Couleur","mindmap.levelColor":"Couleur de niveau par d\xE9faut","mindmap.icon":"Ic\xF4ne","mindmap.noIcon":"Aucune ic\xF4ne","mindmap.note":"Note","mindmap.notePlaceholder":"Contenu de la note (facultatif)","mindmap.noteColor":"Couleur de la note","mindmap.noteColorDefault":"Comme le n\u0153ud","mindmap.collapse":"R\xE9duire","mindmap.expand":"D\xE9velopper","mindmap.close":"Fermer l'\xE9diteur","mindmap.more":"Plus de r\xE9glages","mindmap.level":"Niveau","mindmap.promote1":"Monter","mindmap.promote2":"Monter de 2","mindmap.promoteDisabled":"D\xE9j\xE0 en haut","tool.table":"Tableau","toolbar.table":"Tableau","shape.table":"Tableau","table.insertRow":"Ins\xE9rer une ligne","table.deleteRow":"Supprimer la ligne","table.insertCol":"Ins\xE9rer une colonne","table.deleteCol":"Supprimer la colonne","table.merge":"Fusionner les cellules","table.split":"Scinder la cellule","table.insertRowAbove":"Ins\xE9rer une ligne au-dessus","table.insertRowBelow":"Ins\xE9rer une ligne en dessous","table.insertColLeft":"Ins\xE9rer une colonne \xE0 gauche","table.insertColRight":"Ins\xE9rer une colonne \xE0 droite","table.pickHint":"Choisir lignes et colonnes","ctx.copy":"Copier","ctx.paste":"Coller","ctx.duplicate":"Dupliquer","ctx.layer":"Calque","ctx.bringToFront":"Premier plan","ctx.bringForward":"Vers l'avant","ctx.sendBackward":"Vers l'arri\xE8re","ctx.sendToBack":"Arri\xE8re-plan","ctx.copyStyle":"Copier le style","ctx.pasteStyle":"Coller le style","ctx.rotate90":"90\xB0","ctx.rotate180":"180\xB0","ctx.rotate270":"270\xB0","ctx.rotate":"Pivoter","ctx.group":"Grouper","ctx.ungroup":"Dissocier","ctx.lock":"Verrouiller","ctx.unlock":"D\xE9verrouiller","ctx.delete":"Supprimer","toolbar.icon":"Ic\xF4nes (S)","toolbar.image":"Image","toolbar.more":"Plus","toolbar.pageTheme":"Th\xE8me de page","pageTheme.light":"D\xE9faut","pageTheme.warm":"Chaud","pageTheme.gray":"Gris clair","pageTheme.purple":"Violet clair","pageTheme.green":"Vert clair","pageTheme.eye-care":"Protecteur","tool.image":"Image","image.uploadFailed":"\xC9chec de l'envoi de l'image","image.insertFailed":"\xC9chec de l'insertion de l'image","image.tooLarge":"L'image d\xE9passe la limite d'envoi de 30 Mo","image.temporaryInserted":"Image temporaire ins\xE9r\xE9e (aucun point d'envoi configur\xE9, elle sera perdue au rechargement)","image.naturalSize":"Taille d\u2019origine","icon.search":"Rechercher une ic\xF4ne","icon.empty":"Aucune ic\xF4ne correspondante","icon.recent":"R\xE9cemment utilis\xE9s","iconCat.status":"Statut","iconCat.number":"Badges num\xE9rot\xE9s","iconCat.tech":"Cloud et technique","iconCat.chart":"Graphiques","iconCat.office":"Documents","iconCat.media":"M\xE9dias et collaboration","iconCat.arrow":"Fl\xE8ches","iconCat.misc":"Essentiels","iconCat.emoji":"\xC9motions","iconCat.sticker":"Autocollants","iconCat.device":"Appareils","iconCat.weather":"M\xE9t\xE9o","iconCat.transport":"Transport","iconCat.nature":"Nature","iconCat.building":"B\xE2timent","iconCat.medical":"M\xE9dical","iconCat.shopping":"Shopping","iconCat.science":"Science","iconCat.animal":"Animal","iconCat.time":"Temps","iconCat.edit":"\xC9dition","iconCat.food":"Nourriture","iconCat.communication":"Communication"}},qt="zh-CN",X0=new Set;function Jt(r){qt!==r&&(qt=r,X0.forEach(e=>e()));}function so(){return qt}function ao(r){return X0.add(r),()=>X0.delete(r)}function fe(r,e){let i=ti[qt][r]??ti["zh-CN"][r];if(e)for(let[n,o]of Object.entries(e))i=i.replace(new RegExp(`\\{${n}\\}`,"g"),String(o));return i}function $e(r){let e=r.visibility??"",t=(r.name??"").trim(),i=(r.type??"").trim();if(!t&&!i)return "";let n=`${t}${i?`: ${i}`:""}`;return e?`${e} ${n}`:n}function ve(r){let e=r.visibility??"",t=(r.name??"").trim(),i=(r.params??"").trim(),n=(r.returnType??"").trim();if(!t&&!i&&!n)return "";let o=`${t}(${i})${n?`: ${n}`:""}`;return e?`${e} ${o}`:o}var J0=["#ef4444","#f59e0b","#10b981","#3b82f6","#8b5cf6","#ec4899"],De=14,lo=40,co=80,ho=240;var yt=9,uo=12;var et=["right","left","up","down"];function ye(r){return r==="right"||r==="left"}function Qe(r){return r==="right"||r==="down"?1:-1}function ie(r,e="right"){return r.direction??e}function Ze(r,e){return r.color??J0[e%J0.length]}function ni(r){let e=r.text||"",t=0;for(let n of e)t+=/[\u2e80-\u9fff\uf900-\ufaff\uff00-\uffef\u3000-\u303f]/.test(n)?1:.6;let i=Math.max(80,Math.min(240,Math.ceil(t*14)+24));return r.icon&&(i+=26),{width:i,height:40}}function Qt(r){let e={...r};return r.children&&(e.children=r.children.map(t=>Qt(t))),e}function tt(r,e,t){if(r.id===e)return {...r,...t};let i=r.children??[],n=i.map(o=>tt(o,e,t));return n.some((o,s)=>o!==i[s])?{...r,children:n}:r}function Q0(r,e,t){if(r.id===e)return {...r,children:[...r.children??[],t],collapsed:false};let i=r.children??[],n=i.map(o=>Q0(o,e,t));return n.some((o,s)=>o!==i[s])?{...r,children:n}:r}function en(r,e,t){let i=r.children??[];for(let n=0;n<i.length;n++){if(i[n].id===e){let s=[...i];return s.splice(n+1,0,t),{...r,children:s}}let o=en(i[n],e,t);if(o!==i[n])return {...r,children:i.map(s=>s===i[n]?o:s)}}return r}function e0(r,e){if(r.id===e)return null;let t=r.children??[],i=t.map(n=>e0(n,e)).filter(n=>n!==null);return i.length!==t.length||i.some((n,o)=>n!==t[o])?{...r,children:i}:r}function X(r,e){if(r.id===e)return r;for(let t of r.children??[]){let i=X(t,e);if(i)return i}return null}function t0(r,e){if(r.id===e)return 0;for(let t of r.children??[]){let i=t0(t,e);if(i!==-1)return i+1}return -1}function nt(r,e){for(let t of r.children??[]){if(t.id===e)return r;let i=nt(t,e);if(i)return i}return null}function ii(r){let e=1;for(let t of r.children??[])e+=ii(t);return e}function po(r){let e=new Map;for(let t of et)e.set(t,[]);for(let t of r.children??[]){let i=t.direction??"right";e.get(i).push(t);}return e}function oi(r,e){e.set(r.id,ni(r));for(let t of r.children??[])oi(t,e);}function Z(r){let e=new Map;oi(r,e);let t=new Map,i=new Map,n=w=>e.get(w),o=(w,x)=>{let C=ie(w,x),z=`${w.id}:${C}`,L=i.get(z);if(L)return L;let P=n(w.id);if(w.collapsed)return i.set(z,P),P;let N=w.children??[];if(N.length===0)return i.set(z,P),P;let Y=N.map(ke=>o(ke,C)),me;if(ye(C)){let ke=Y.reduce((W,he)=>W+he.height,0)+16*(N.length-1),Ce=Math.max(...Y.map(W=>W.width));me={width:P.width+48+Ce,height:Math.max(P.height,ke)};}else {let ke=Y.reduce((W,he)=>W+he.width,0)+16*(N.length-1),Ce=Math.max(...Y.map(W=>W.height));me={width:Math.max(P.width,ke),height:P.height+48+Ce};}return i.set(z,me),me},s=(w,x,C,z,L)=>{let P=ie(w,x),N=n(w.id);if(t.set(w.id,{x:z,y:L,depth:C,width:N.width,height:N.height,direction:P}),w.collapsed)return;let Y=w.children??[];if(Y.length!==0)if(ye(P)){let me=z+Qe(P)*(N.width/2+48),ke=Y.reduce((W,he)=>W+o(he,P).height,0)+16*(Y.length-1),Ce=L-ke/2;for(let W of Y){let he=ie(W,P),pt=o(W,he),T0=n(W.id);s(W,he,C+1,me+Qe(he)*T0.width/2,Ce+pt.height/2),Ce+=pt.height+16;}}else {let me=L+Qe(P)*(N.height/2+48),ke=Y.reduce((W,he)=>W+o(he,P).width,0)+16*(Y.length-1),Ce=z-ke/2;for(let W of Y){let he=ie(W,P),pt=o(W,he),T0=n(W.id);s(W,he,C+1,Ce+pt.width/2,me+Qe(he)*T0.height/2),Ce+=pt.width+16;}}},a=n(r.id);t.set(r.id,{x:0,y:0,depth:0,width:a.width,height:a.height,direction:"right"});let l=po(r);for(let w of et){let x=l.get(w);if(x.length!==0)if(ye(w)){let z=-(x.reduce((L,P)=>L+o(P,w).height,0)+16*(x.length-1))/2;for(let L of x){let P=o(L,w),N=n(L.id);s(L,w,1,Qe(w)*(a.width/2+48+N.width/2),z+P.height/2),z+=P.height+16;}}else {let z=-(x.reduce((L,P)=>L+o(P,w).width,0)+16*(x.length-1))/2;for(let L of x){let P=o(L,w),N=n(L.id);s(L,w,1,z+P.width/2,Qe(w)*(a.height/2+48+N.height/2)),z+=P.width+16;}}}let h=new Map,d=(w,x)=>{let C=w.offset,z={dx:x.dx+(C?.dx??0),dy:x.dy+(C?.dy??0)};h.set(w.id,z);for(let L of w.children??[])d(L,z);};d(r,{dx:0,dy:0}),t.forEach((w,x)=>{let C=h.get(x);C&&(w.x+=C.dx,w.y+=C.dy);});let u=1/0,p=-1/0,g=1/0,m=-1/0;t.forEach(w=>{u=Math.min(u,w.x-w.width/2),p=Math.max(p,w.x+w.width/2),g=Math.min(g,w.y-w.height/2),m=Math.max(m,w.y+w.height/2);});let f=(u+p)/2,y=(g+m)/2;t.forEach(w=>{w.x-=f,w.y-=y;});let k=1/0,S=-1/0,v=1/0,I=-1/0;return t.forEach(w=>{k=Math.min(k,w.x-w.width/2),S=Math.max(S,w.x+w.width/2),v=Math.min(v,w.y-w.height/2),I=Math.max(I,w.y+w.height/2);}),{positions:t,width:S-k,height:I-v}}function n0(r,e){return e==="right"?{x:r.x+r.width/2+10,y:r.y}:e==="left"?{x:r.x-r.width/2-10,y:r.y}:e==="down"?{x:r.x,y:r.y+r.height/2+10}:{x:r.x,y:r.y-r.height/2-10}}function ri(r,e,t){let i=!!(r.children&&r.children.length>0),n=e.direction,o=i?16:0,s=[];if(t)for(let a of et)s.push(q0(a,e,o));else {s.push(q0(n,e,o));let a=ye(n)?"down":"right";s.push(q0(a,e,0,"sibling"));}return s}function q0(r,e,t,i="child"){let n=18+t;return r==="right"?{kind:i,direction:r,x:e.x+e.width/2+n,y:e.y}:r==="left"?{kind:i,direction:r,x:e.x-e.width/2-n,y:e.y}:r==="down"?{kind:i,direction:r,x:e.x,y:e.y+e.height/2+n}:{kind:i,direction:r,x:e.x,y:e.y-e.height/2-n}}function tn(r,e){let t=X(r,e);if(!t)return [];let i=Z(r).positions.get(e);return i?ri(t,i,t.id===r.id):[]}function nn(r,e,t,i){let o=s=>{let a=e.get(s.id);if(a)for(let l of ri(s,a,s===r)){let h=t-l.x,d=i-l.y;if(h*h+d*d<=144)return {nodeId:s.id,kind:l.kind,direction:l.direction}}if(!s.collapsed)for(let l of s.children??[]){let h=o(l);if(h)return h}return null};return o(r)}function Oe(r,e){let t=nt(r,e);if(!t)return null;let i=X(r,e);if(!i)return null;let n=t===r?i.direction??"right":ie(i,ie(t)),o;t===r?o=(t.children??[]).filter(a=>ie(a,"right")===n):o=t.children??[];let s=o.findIndex(a=>a.id===e);return s===-1?null:{parent:t,siblings:o,index:s,direction:n}}function on(r,e,t){let i=Oe(r,e);if(!i)return r;let{parent:n,siblings:o,index:s,direction:a}=i;if(t<0&&(t=0),t>o.length-1&&(t=o.length-1),t===s)return r;let l=[...o],[h]=l.splice(s,1);if(l.splice(t,0,h),n!==r)return tt(r,n.id,{children:l});let d=[],u=0;for(let p of r.children??[])ie(p,"right")===a?d.push(l[u++]):d.push(p);return {...r,children:d}}function rn(r,e,t){let i=ai(r,e);if(!i)return r;let n=i.length-1;if(n<t+1)return r;let o=i[n-1-t],s=i[n-t],a=X(r,e);if(!a)return r;let l=a;if(!l.direction&&o===r.id){let d=X(r,s),u=d?ie(d):ie(a,"right");l={...l,direction:u};}let h=li(r,e);return h===r?r:ci(h,o,s,l)}function sn(r,e,t,i,n){if(e===r.id||e===t)return r;let o=X(r,e);if(!o||t!==r.id&&X(o,t))return r;let s=e0(r,e);if(!s)return r;let a=t===r.id,l;return a?l={...o,direction:i}:(l={...o},delete l.direction),si(s,t,i,n,l)}function go(r,e,t){let i=0;for(let o=0;o<r.length;o++)if(ie(r[o],"right")===e){if(i===t)return o;i++;}let n=-1;for(let o=0;o<r.length;o++)ie(r[o],"right")===e&&(n=o);return n===-1?r.length:n+1}function si(r,e,t,i,n){if(r.id===e){let s=r.children??[],a=go(s,t,Math.max(0,i)),l=[...s];return l.splice(a,0,n),{...r,children:l}}let o=r.children??[];for(let s=0;s<o.length;s++){let a=o[s];if(a.id===e){let h=[...a.children??[]],d=Math.max(0,Math.min(i,h.length));return h.splice(d,0,n),{...r,children:o.map((u,p)=>p===s?{...a,children:h}:u)}}let l=si(a,e,t,i,n);if(l!==a)return {...r,children:o.map((h,d)=>d===s?l:h)}}return r}function ai(r,e,t=[]){let i=[...t,r.id];if(r.id===e)return i;for(let n of r.children??[]){let o=ai(n,e,i);if(o)return o}return null}function li(r,e){let t=r.children??[];if(t.findIndex(o=>o.id===e)!==-1)return {...r,children:t.filter(o=>o.id!==e)};let n=t.map(o=>li(o,e));return n.some((o,s)=>o!==t[s])?{...r,children:n}:r}function ci(r,e,t,i){if(r.id===e){let s=r.children??[],a=s.findIndex(d=>d.id===t),l=a===-1?s.length:a+1,h=[...s];return h.splice(l,0,i),{...r,children:h}}let n=r.children??[],o=n.map(s=>ci(s,e,t,i));return o.some((s,a)=>s!==n[a])?{...r,children:o}:r}var hi=["#fde68a","#fcd34d","#fdba74","#fca5a5","#f9a8d4","#e9d5ff","#c4b5fd","#a5b4fc","#7dd3fc","#a7f3d0","#86efac","#d9f99d"],i0=hi[0];function an(r){return typeof r=="string"&&/^#[0-9a-fA-F]{6}$/.test(r.trim())}var pe=.2,it=.85-pe/2;function di(r){return !r||r==="transparent"?r:Y0(r,-0.14)}function ui(r,e){return {...r,fillColor:an(e)?e:i0,fillOpacity:1,strokeColor:"transparent"}}var pi={color:"#0f172a",opacity:.2,blur:16,offsetX:0,offsetY:5};var A="#FFCC4D",gi=[{id:"emoji-smile",cat:"emoji",zh:"\u5FAE\u7B11",en:"Smile",kw:"smile happy \u5FAE\u7B11 \u5F00\u5FC3 \u7B11 \u53CB\u597D",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12S0 18.63 0 12 5.37 0 12 0s12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M1.33 12A3.33 3.33 0 1 0 8 12A3.33 3.33 0 1 0 1.33 12Z",fill:"#FF7892",stroke:"none"},{d:"M16 12A3.33 3.33 0 1 0 22.67 12A3.33 3.33 0 1 0 16 12Z",fill:"#FF7892",stroke:"none"},{d:"M18.22 14.42c-0.12 -0.11 -0.3 -0.11 -0.42 -0.02 -0.03 0.02 -2.61 1.93 -5.8 1.93 -3.18 0 -5.77 -1.91 -5.8 -1.93 -0.13 -0.09 -0.3 -0.09 -0.42 0.02 -0.12 0.11 -0.14 0.28 -0.06 0.42C5.8 14.98 7.86 18.33 12 18.33s6.2 -3.35 6.29 -3.5c0.08 -0.14 0.06 -0.31 -0.06 -0.42zM5.33 10c-0.1 0 -0.2 -0.02 -0.3 -0.07 -0.33 -0.16 -0.46 -0.57 -0.3 -0.89C4.77 8.97 5.62 7.33 8 7.33c2.38 0 3.23 1.63 3.26 1.7 0.16 0.33 0.03 0.73 -0.3 0.89 -0.33 0.16 -0.72 0.03 -0.89 -0.29C10.05 9.59 9.52 8.67 8 8.67c-1.54 0 -2.07 0.96 -2.07 0.96 -0.12 0.23 -0.35 0.37 -0.6 0.37zm13.33 0c-0.24 0 -0.48 -0.13 -0.6 -0.37C18.05 9.6 17.53 8.67 16 8.67s-2.05 0.93 -2.07 0.97c-0.17 0.32 -0.57 0.45 -0.9 0.28 -0.32 -0.17 -0.45 -0.56 -0.29 -0.89C12.77 8.97 13.62 7.33 16 7.33s3.23 1.63 3.26 1.7c0.16 0.33 0.03 0.73 -0.3 0.89 -0.1 0.05 -0.2 0.07 -0.3 0.07z",fill:"#664500",stroke:"none"}]},{id:"emoji-laugh",cat:"emoji",zh:"\u5927\u7B11",en:"Laugh",kw:"laugh grin \u5927\u7B11 \u5F00\u5FC3 \u7B11 \u54C8\u54C8",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12 -6.63 0 -12 -5.37 -12 -12C0 5.37 5.37 0 12 0c6.63 0 12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M18.97 11.86c-0.04 -0.09 -1 -2.2 -2.97 -2.2 -1.97 0 -2.93 2.11 -2.97 2.2 -0.06 0.14 -0.02 0.3 0.1 0.39 0.12 0.09 0.28 0.1 0.41 0.01 0.01 -0.01 0.84 -0.6 2.47 -0.6 1.62 0 2.45 0.59 2.47 0.6 0.06 0.04 0.13 0.07 0.2 0.07 0.07 0 0.15 -0.02 0.21 -0.07 0.12 -0.09 0.16 -0.26 0.1 -0.4zm-8 0c-0.04 -0.09 -1 -2.2 -2.97 -2.2 -1.97 0 -2.93 2.11 -2.97 2.2 -0.06 0.14 -0.02 0.3 0.1 0.39 0.12 0.09 0.28 0.1 0.41 0.01 0.01 -0.01 0.84 -0.6 2.47 -0.6 1.62 0 2.45 0.59 2.47 0.6 0.06 0.04 0.13 0.07 0.2 0.07 0.07 0 0.15 -0.02 0.21 -0.07 0.12 -0.09 0.16 -0.26 0.1 -0.4zM12 14.67c-2.42 0 -4.02 -0.28 -6 -0.67 -0.45 -0.09 -1.33 0 -1.33 1.33 0 2.67 3.06 6 7.33 6 4.27 0 7.33 -3.33 7.33 -6 0 -1.33 -0.88 -1.42 -1.33 -1.33 -1.98 0.39 -3.58 0.67 -6 0.67z",fill:"#664500",stroke:"none"},{d:"M6 15.33s2 0.67 6 0.67 6 -0.67 6 -0.67 -1.33 2.67 -6 2.67 -6 -2.67 -6 -2.67z",fill:"#FFF",stroke:"none"}]},{id:"emoji-joy",cat:"emoji",zh:"\u7B11\u54ED",en:"Joy",kw:"joy tears laugh cry \u7B11\u54ED \u7B11\u54ED \u5927\u7B11 \u773C\u6CEA",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12 -6.63 0 -12 -5.37 -12 -12C0 5.37 5.37 0 12 0c6.63 0 12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M18.97 11.86c-0.04 -0.09 -1 -2.2 -2.97 -2.2 -1.97 0 -2.93 2.11 -2.97 2.2 -0.06 0.14 -0.02 0.3 0.1 0.39 0.12 0.09 0.28 0.1 0.41 0.01 0.01 -0.01 0.84 -0.6 2.47 -0.6 1.62 0 2.45 0.59 2.47 0.6 0.06 0.04 0.13 0.07 0.2 0.07 0.07 0 0.15 -0.02 0.21 -0.07 0.12 -0.09 0.16 -0.26 0.1 -0.4zm-8 0c-0.04 -0.09 -1 -2.2 -2.97 -2.2 -1.97 0 -2.93 2.11 -2.97 2.2 -0.06 0.14 -0.02 0.3 0.1 0.39 0.12 0.09 0.28 0.1 0.41 0.01 0.01 -0.01 0.84 -0.6 2.47 -0.6 1.62 0 2.45 0.59 2.47 0.6 0.06 0.04 0.13 0.07 0.2 0.07 0.07 0 0.15 -0.02 0.21 -0.07 0.12 -0.09 0.16 -0.26 0.1 -0.4zM20.67 10.67c-0.26 0 -0.51 -0.16 -0.62 -0.42 -1.19 -2.96 -4.15 -3.59 -4.18 -3.59 -0.36 -0.07 -0.6 -0.42 -0.52 -0.78 0.07 -0.36 0.42 -0.59 0.78 -0.52 0.15 0.03 3.7 0.78 5.15 4.41 0.14 0.34 -0.03 0.73 -0.37 0.87 -0.08 0.03 -0.16 0.05 -0.25 0.05zM3.33 10.67c-0.08 0 -0.17 -0.02 -0.25 -0.05 -0.34 -0.14 -0.51 -0.52 -0.37 -0.87 1.45 -3.63 5 -4.38 5.15 -4.41 0.36 -0.07 0.71 0.16 0.78 0.52 0.07 0.36 -0.16 0.71 -0.52 0.78 -0.12 0.03 -3 0.65 -4.18 3.59 -0.1 0.26 -0.36 0.42 -0.62 0.42zm8.67 4c-2.42 0 -4.02 -0.28 -6 -0.67 -0.45 -0.09 -1.33 0 -1.33 1.33 0 2.67 3.06 6 7.33 6 4.27 0 7.33 -3.33 7.33 -6 0 -1.33 -0.88 -1.42 -1.33 -1.33 -1.98 0.39 -3.58 0.67 -6 0.67z",fill:"#664500",stroke:"none"},{d:"M6 15.33s2 0.67 6 0.67 6 -0.67 6 -0.67 -1.33 2.67 -6 2.67 -6 -2.67 -6 -2.67z",fill:"#FFF",stroke:"none"},{d:"M7.23 18.82c-0.45 1.78 -2.27 2.86 -4.05 2.41 -1.78 -0.45 -2.86 -2.27 -2.41 -4.05 0.45 -1.78 4.22 -5.81 4.87 -5.64 0.65 0.16 2.04 5.5 1.59 7.28zm9.52 0c0.45 1.78 2.27 2.86 4.05 2.41 1.78 -0.45 2.86 -2.27 2.41 -4.05 -0.45 -1.78 -4.23 -5.81 -4.87 -5.64 -0.65 0.16 -2.04 5.5 -1.59 7.28z",fill:"#5DADEC",stroke:"none"}]},{id:"emoji-grin",cat:"emoji",zh:"\u5472\u7259",en:"Grin",kw:"grin teeth \u5472\u7259 \u7B11 \u9732\u9F7F \u5F00\u5FC3",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12 -6.63 0 -12 -5.37 -12 -12C0 5.37 5.37 0 12 0c6.63 0 12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M10.67 12c-0.28 0 -0.54 -0.18 -0.63 -0.46C9.9 11.14 9.36 10 8.67 10c-0.71 0 -1.26 1.22 -1.37 1.54 -0.12 0.35 -0.49 0.54 -0.84 0.42 -0.35 -0.12 -0.54 -0.49 -0.42 -0.84C6.12 10.87 6.9 8.67 8.67 8.67s2.55 2.2 2.63 2.46c0.12 0.35 -0.07 0.73 -0.42 0.84 -0.07 0.02 -0.14 0.03 -0.21 0.03zm6.67 0c-0.28 0 -0.54 -0.18 -0.63 -0.46C16.57 11.14 16.02 10 15.33 10c-0.71 0 -1.26 1.22 -1.37 1.54 -0.12 0.35 -0.49 0.54 -0.84 0.42 -0.35 -0.12 -0.54 -0.49 -0.42 -0.84C12.78 10.87 13.57 8.67 15.33 8.67s2.55 2.2 2.63 2.46c0.12 0.35 -0.07 0.73 -0.42 0.84 -0.07 0.02 -0.14 0.03 -0.21 0.03zm-5.33 2.67c-2.42 0 -4.02 -0.28 -6 -0.67 -0.45 -0.09 -1.33 0 -1.33 1.33 0 2.67 3.06 6 7.33 6 4.27 0 7.33 -3.33 7.33 -6 0 -1.33 -0.88 -1.42 -1.33 -1.33 -1.98 0.39 -3.58 0.67 -6 0.67z",fill:"#664500",stroke:"none"},{d:"M6 15.33s2 0.67 6 0.67 6 -0.67 6 -0.67 -0.9 4.5 -6 4.5S6 15.33 6 15.33z",fill:"#FFF",stroke:"none"},{d:"M12 18.4c-2.4 0 -4.18 -0.25 -5.29 -0.5l-0.55 -1.25c0.55 0.21 2.59 0.6 5.84 0.6 3.3 0 5.36 -0.41 5.91 -0.63l-0.47 1.23c-1.09 0.25 -2.95 0.54 -5.44 0.54z",fill:"#664500",stroke:"none"}]},{id:"emoji-smile-tears",cat:"emoji",zh:"\u7834\u6D95\u4E3A\u7B11",en:"Rolling laugh",kw:"rolling laugh \u7834\u6D95\u4E3A\u7B11 \u7B11\u5230\u6D41\u6CEA \u597D\u7B11",ink:A,layers:[{d:"M20.49 3.51c4.69 4.69 4.69 12.28 0 16.97s-12.28 4.69 -16.97 0c-4.69 -4.69 -4.69 -12.28 0 -16.97s12.28 -4.69 16.97 0",fill:"#FFCB4C",stroke:"none"},{d:"M12.85 12.85c-2.33 2.33 -4.15 3.6 -6.43 5.14 -0.52 0.35 -1.29 1.29 0 2.57 2.57 2.57 8.74 2.83 12.86 -1.29 4.12 -4.12 3.86 -10.29 1.29 -12.86 -1.29 -1.29 -2.22 -0.52 -2.57 0 -1.54 2.28 -2.81 4.1 -5.14 6.43z",fill:"#65471B",stroke:"none"},{d:"M7.71 19.28s2.57 -1.29 6.43 -5.14c3.86 -3.86 5.14 -6.43 5.14 -6.43s1.29 3.86 -3.21 8.36c-4.5 4.5 -8.36 3.21 -8.36 3.21z",fill:"#FFF",stroke:"none"},{d:"M5.51 16.82c-0.14 0.14 -0.35 0.22 -0.57 0.19 -0.36 -0.05 -0.62 -0.39 -0.57 -0.75 0.02 -0.12 0.36 -2.42 1.85 -4.61 -1.75 0.58 -3.06 1.86 -3.08 1.88 -0.26 0.26 -0.68 0.26 -0.94 0 -0.26 -0.26 -0.26 -0.68 0 -0.94 0.1 -0.1 2.59 -2.55 5.66 -2.55 0.27 0 0.51 0.16 0.62 0.41 0.1 0.25 0.05 0.54 -0.14 0.73 -2.17 2.17 -2.64 5.25 -2.64 5.28 -0.02 0.15 -0.09 0.28 -0.19 0.38zm11.31 -11.31c-0.1 0.1 -0.23 0.17 -0.38 0.19 -0.03 0 -3.12 0.48 -5.28 2.64 -0.19 0.19 -0.48 0.25 -0.73 0.14 -0.25 -0.1 -0.41 -0.35 -0.41 -0.62 0 -3.07 2.45 -5.55 2.55 -5.66 0.26 -0.26 0.68 -0.26 0.94 0 0.26 0.26 0.26 0.68 0 0.94 -0.02 0.02 -1.3 1.32 -1.88 3.08 2.19 -1.49 4.5 -1.83 4.61 -1.85 0.36 -0.05 0.7 0.2 0.75 0.56 0.03 0.22 -0.04 0.42 -0.19 0.57z",fill:"#65471B",stroke:"none"},{d:"M20.07 8.04c1.83 0.22 3.49 -1.08 3.71 -2.91 0.22 -1.83 -1.08 -3.49 -2.91 -3.71 -1.83 -0.22 -6.94 1.84 -7.02 2.5 -0.08 0.66 4.39 3.89 6.21 4.11zM8.1 20c0.22 1.83 -1.08 3.49 -2.91 3.71 -1.83 0.22 -3.49 -1.08 -3.71 -2.91 -0.22 -1.83 1.84 -6.94 2.5 -7.02 0.66 -0.08 3.89 4.39 4.11 6.22z",fill:"#64AADD",stroke:"none"}]},{id:"emoji-shy",cat:"emoji",zh:"\u5BB3\u7F9E",en:"Flushed",kw:"shy blush \u5BB3\u7F9E \u8138\u7EA2 \u4E0D\u597D\u610F\u601D",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12 -6.63 0 -12 -5.37 -12 -12C0 5.37 5.37 0 12 0c6.63 0 12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M16 15.33A3.33 3.33 0 1 0 22.67 15.33A3.33 3.33 0 1 0 16 15.33Z",fill:"#FF7892",stroke:"none"},{d:"M1.33 15.33A3.33 3.33 0 1 0 8 15.33A3.33 3.33 0 1 0 1.33 15.33Z",fill:"#FF7892",stroke:"none"},{d:"M12.67 11A3.67 3.67 0 1 0 20 11A3.67 3.67 0 1 0 12.67 11Z",fill:"#F5F8FA",stroke:"none"},{d:"M4 11A3.67 3.67 0 1 0 11.33 11A3.67 3.67 0 1 0 4 11Z",fill:"#F5F8FA",stroke:"none"},{d:"M6 11A1.67 1.67 0 1 0 9.33 11A1.67 1.67 0 1 0 6 11Z",fill:"#292F33",stroke:"none"},{d:"M14.67 11A1.67 1.67 0 1 0 18 11A1.67 1.67 0 1 0 14.67 11Z",fill:"#292F33",stroke:"none"},{d:"M14.67 20h-5.33c-0.37 0 -0.67 -0.3 -0.67 -0.67s0.3 -0.67 0.67 -0.67h5.33c0.37 0 0.67 0.3 0.67 0.67s-0.3 0.67 -0.67 0.67zm5.33 -12.67c-0.2 0 -0.4 -0.09 -0.53 -0.27 -1.76 -2.35 -4.04 -2.4 -4.14 -2.4 -0.37 0 -0.66 -0.3 -0.66 -0.67C14.67 3.63 14.97 3.33 15.33 3.33c0.12 0 3.02 0.03 5.2 2.93 0.22 0.29 0.16 0.71 -0.13 0.93 -0.12 0.09 -0.26 0.13 -0.4 0.13zM4 7.33c-0.14 0 -0.28 -0.04 -0.4 -0.13 -0.29 -0.22 -0.35 -0.64 -0.13 -0.93C5.64 3.37 8.54 3.33 8.67 3.33c0.37 0 0.67 0.3 0.67 0.67 0 0.37 -0.3 0.67 -0.66 0.67 -0.1 0 -2.38 0.06 -4.14 2.4 -0.13 0.17 -0.33 0.27 -0.53 0.27z",fill:"#664500",stroke:"none"}]},{id:"emoji-cute",cat:"emoji",zh:"\u53EF\u7231",en:"Smiling hearts",kw:"cute hearts love \u53EF\u7231 \u559C\u6B22 \u5FC3\u52A8",ink:A,layers:[{d:"M0 12A12 12 0 1 0 24 12A12 12 0 1 0 0 12Z",fill:"#FFCC4D",stroke:"none"},{d:"M10.67 11.31c-0.28 0 -0.54 -0.18 -0.63 -0.46 -0.14 -0.4 -0.68 -1.54 -1.37 -1.54 -0.71 0 -1.26 1.22 -1.37 1.54 -0.12 0.35 -0.49 0.54 -0.84 0.42 -0.35 -0.12 -0.54 -0.49 -0.42 -0.84 0.08 -0.25 0.87 -2.46 2.63 -2.46s2.55 2.2 2.63 2.46c0.12 0.35 -0.07 0.73 -0.42 0.84 -0.07 0.02 -0.14 0.03 -0.21 0.03zm6.67 0c-0.28 0 -0.54 -0.18 -0.63 -0.46 -0.14 -0.4 -0.68 -1.54 -1.37 -1.54 -0.71 0 -1.26 1.22 -1.37 1.54 -0.12 0.35 -0.49 0.54 -0.84 0.42 -0.35 -0.12 -0.54 -0.49 -0.42 -0.84 0.08 -0.25 0.87 -2.46 2.63 -2.46s2.55 2.2 2.63 2.46c0.12 0.35 -0.07 0.73 -0.42 0.84 -0.07 0.02 -0.14 0.03 -0.21 0.03zm0.89 2.49c-0.12 -0.11 -0.3 -0.11 -0.42 -0.02 -0.03 0.02 -2.61 1.93 -5.8 1.93 -3.18 0 -5.77 -1.91 -5.8 -1.93 -0.13 -0.09 -0.3 -0.09 -0.42 0.02 -0.12 0.11 -0.14 0.28 -0.06 0.42 0.09 0.14 2.14 3.5 6.29 3.5s6.2 -3.35 6.29 -3.5c0.08 -0.14 0.06 -0.31 -0.06 -0.42z",fill:"#664500",stroke:"none"},{d:"M14.15 2.63c0 0.16 0.02 0.31 0.05 0.46 0.28 1.76 2.24 3.62 3.65 4.13 1.11 -0.4 2.56 -1.65 3.27 -3.03C19.73 2.57 17.91 1.32 15.83 0.63c-0.95 0.17 -1.68 1 -1.68 2.01zm-4.99 16.75c0.04 -0.16 0.06 -0.33 0.06 -0.5 0 -1.22 -0.99 -2.21 -2.21 -2.21 -0.74 0 -1.4 0.37 -1.8 0.93 -0.4 -0.56 -1.06 -0.93 -1.8 -0.93 -0.83 0 -1.54 0.46 -1.92 1.13 1.22 2.2 3.1 3.97 5.38 5.05 1.09 -0.9 2.09 -2.2 2.29 -3.47zm13.71 -2.29c-0.19 -0.63 -0.77 -1.1 -1.46 -1.1 -0.51 0 -0.97 0.25 -1.25 0.64 -0.28 -0.39 -0.73 -0.64 -1.25 -0.64 -0.85 0 -1.53 0.69 -1.53 1.53 0 0.12 0.02 0.24 0.04 0.35 0.2 1.27 1.57 2.6 2.61 3.04 1.18 -1.07 2.15 -2.36 2.84 -3.82z",fill:"#FFAC33",stroke:"none"},{d:"M22.42 2.18c0 -1.13 -0.91 -2.04 -2.04 -2.04 -0.68 0 -1.29 0.34 -1.66 0.85C18.34 0.48 17.74 0.14 17.06 0.14c-1.13 0 -2.04 0.91 -2.04 2.04 0 0.16 0.02 0.31 0.05 0.46 0.28 1.76 2.24 3.62 3.65 4.13 1.4 -0.51 3.36 -2.37 3.65 -4.13 0.04 -0.15 0.06 -0.3 0.06 -0.46zM8.14 18.94c0 -1.22 -0.99 -2.21 -2.21 -2.21 -0.74 0 -1.4 0.37 -1.8 0.93 -0.4 -0.56 -1.06 -0.93 -1.8 -0.93 -1.22 0 -2.21 0.99 -2.21 2.21 0 0.17 0.02 0.34 0.06 0.5 0.31 1.91 2.43 3.92 3.95 4.48 1.52 -0.55 3.64 -2.57 3.95 -4.48 0.04 -0.16 0.06 -0.33 0.06 -0.5zm15.83 -1.52c0 -0.85 -0.69 -1.53 -1.53 -1.53 -0.51 0 -0.97 0.25 -1.25 0.64 -0.28 -0.39 -0.73 -0.64 -1.25 -0.64 -0.85 0 -1.53 0.69 -1.53 1.53 0 0.12 0.02 0.24 0.04 0.35 0.21 1.32 1.68 2.72 2.74 3.1 1.05 -0.38 2.52 -1.78 2.74 -3.1 0.03 -0.11 0.04 -0.23 0.04 -0.35z",fill:"#DD2E44",stroke:"none"}]},{id:"emoji-kiss",cat:"emoji",zh:"\u4EB2\u4EB2",en:"Kiss",kw:"kiss \u4EB2\u4EB2 \u4EB2 \u543B \u98DE\u543B",ink:A,layers:[{d:"M0 12A12 12 0 1 0 24 12A12 12 0 1 0 0 12Z",fill:"#FFCC4D",stroke:"none"},{d:"M6 10.33A1.67 2.33 0 1 0 9.33 10.33A1.67 2.33 0 1 0 6 10.33Z",fill:"#664500",stroke:"none"},{d:"M18.97 11.86c-0.04 -0.09 -1 -2.2 -2.97 -2.2 -1.97 0 -2.93 2.11 -2.97 2.2 -0.06 0.14 -0.02 0.3 0.1 0.39 0.12 0.09 0.28 0.1 0.41 0.01 0.01 -0.01 0.84 -0.6 2.47 -0.6 1.62 0 2.45 0.59 2.47 0.6 0.06 0.04 0.13 0.07 0.2 0.07 0.07 0 0.15 -0.02 0.21 -0.07 0.12 -0.09 0.16 -0.26 0.1 -0.4zM4 7.33c-0.14 0 -0.28 -0.04 -0.4 -0.13 -0.29 -0.22 -0.35 -0.64 -0.13 -0.93C5.64 3.37 8.54 3.33 8.67 3.33c0.37 0 0.67 0.3 0.67 0.67 0 0.37 -0.3 0.67 -0.66 0.67 -0.1 0 -2.38 0.06 -4.14 2.4 -0.13 0.17 -0.33 0.27 -0.53 0.27zm15.33 2c-0.2 0 -0.4 -0.09 -0.53 -0.27 -1.73 -2.3 -4.64 -1.75 -4.67 -1.75 -0.36 0.07 -0.71 -0.16 -0.78 -0.52 -0.07 -0.36 0.16 -0.71 0.52 -0.78 0.15 -0.03 3.77 -0.71 6 2.25 0.22 0.29 0.16 0.71 -0.13 0.93 -0.12 0.09 -0.26 0.13 -0.4 0.13zm-5.95 8.69c0.89 -0.27 1.75 -0.77 1.75 -1.67 0 -1.75 -3.27 -1.98 -3.65 -2 -0.18 -0.02 -0.34 0.13 -0.35 0.31 -0.01 0.18 0.13 0.34 0.31 0.35 0.02 0 2.36 0.2 2.36 1.33s-2.33 1.33 -2.36 1.33c-0.01 0 -0.02 0.01 -0.02 0.01 -0.03 0 -0.07 0.01 -0.1 0.03l-0.01 0.01c-0.03 0.02 -0.06 0.04 -0.08 0.07 -0.01 0.01 -0.02 0.02 -0.02 0.03 -0.02 0.02 -0.03 0.04 -0.04 0.07 -0.01 0.02 -0.01 0.04 -0.02 0.06 0 0.02 -0.01 0.03 -0.01 0.04 0 0.01 0 0.01 0 0.02s0 0.01 0 0.02c0 0.02 0.01 0.03 0.01 0.05 0 0.02 0.01 0.04 0.02 0.06 0.01 0.02 0.02 0.04 0.03 0.06 0.01 0.02 0.02 0.03 0.03 0.05 0.02 0.02 0.03 0.03 0.05 0.04 0.02 0.01 0.03 0.02 0.05 0.03 0.02 0.01 0.04 0.01 0.07 0.02 0.02 0 0.03 0.01 0.05 0.01 0.02 0 2.36 0.2 2.36 1.33s-2.33 1.33 -2.36 1.33c-0.18 0.01 -0.32 0.17 -0.31 0.35 0.01 0.18 0.16 0.31 0.33 0.31l0.02 0c0.37 -0.02 3.65 -0.25 3.65 -2 0 -0.9 -0.86 -1.39 -1.75 -1.67z",fill:"#664500",stroke:"none"},{d:"M22.8 17.2c-0.16 -0.53 -0.52 -0.99 -1.05 -1.25 -0.61 -0.3 -1.3 -0.26 -1.86 0.04 -0.11 -0.62 -0.5 -1.19 -1.11 -1.49 -1.01 -0.49 -2.23 -0.07 -2.72 0.94 -0.07 0.14 -0.12 0.29 -0.15 0.44 -0.52 1.7 0.43 4.23 1.46 5.3 0.82 0.09 1.97 -0.13 3.01 -0.58 1 -0.97 1.82 -2.12 2.44 -3.39z",fill:"#FFAC33",stroke:"none"},{d:"M23.77 18.15c0.49 -1.01 0.07 -2.23 -0.94 -2.72 -0.61 -0.3 -1.3 -0.26 -1.86 0.04 -0.11 -0.62 -0.5 -1.19 -1.11 -1.49 -1.01 -0.49 -2.23 -0.07 -2.72 0.94 -0.07 0.14 -0.12 0.29 -0.15 0.44 -0.52 1.7 0.43 4.23 1.46 5.3 1.48 0.16 4.05 -0.65 5.08 -2.11 0.1 -0.12 0.18 -0.25 0.25 -0.39z",fill:"#DD2E44",stroke:"none"}]},{id:"emoji-wink",cat:"emoji",zh:"\u7728\u773C",en:"Wink",kw:"wink \u7728\u773C \u4FCF\u76AE \u629B\u5A9A\u773C",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12 -6.63 0 -12 -5.37 -12 -12C0 5.37 5.37 0 12 0c6.63 0 12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M6 11A1.67 2.33 0 1 0 9.33 11A1.67 2.33 0 1 0 6 11Z",fill:"#664500",stroke:"none"},{d:"M18.97 11.86c-0.04 -0.09 -1 -2.2 -2.97 -2.2 -1.97 0 -2.93 2.11 -2.97 2.2 -0.06 0.14 -0.02 0.3 0.1 0.39 0.12 0.09 0.28 0.1 0.41 0.01 0.01 -0.01 0.84 -0.6 2.47 -0.6 1.62 0 2.45 0.59 2.47 0.6 0.06 0.04 0.13 0.07 0.2 0.07 0.07 0 0.15 -0.02 0.21 -0.07 0.12 -0.09 0.16 -0.26 0.1 -0.4zM4 8.31c-0.14 0 -0.28 -0.04 -0.4 -0.13 -0.29 -0.22 -0.35 -0.64 -0.13 -0.93 2.17 -2.9 5.08 -2.93 5.2 -2.93 0.37 0 0.67 0.3 0.67 0.67 0 0.37 -0.3 0.67 -0.66 0.67 -0.1 0 -2.38 0.06 -4.14 2.4 -0.13 0.17 -0.33 0.27 -0.53 0.27zm15.33 1.42c-0.2 0 -0.4 -0.09 -0.53 -0.27 -1.73 -2.3 -4.64 -1.75 -4.67 -1.75 -0.36 0.07 -0.71 -0.16 -0.78 -0.52 -0.07 -0.36 0.16 -0.71 0.52 -0.78 0.15 -0.03 3.77 -0.71 6 2.25 0.22 0.29 0.16 0.71 -0.13 0.93 -0.12 0.09 -0.26 0.13 -0.4 0.13zm-3.83 6c-0.13 -0.07 -0.29 -0.06 -0.4 0.04 -0.01 0.01 -0.68 0.58 -3.1 0.58 -2.43 0 -3.1 -0.57 -3.1 -0.57 -0.11 -0.11 -0.27 -0.13 -0.4 -0.05 -0.13 0.07 -0.2 0.23 -0.16 0.37 0.01 0.03 0.76 2.92 3.66 2.92s3.65 -2.89 3.66 -2.92c0.04 -0.14 -0.03 -0.29 -0.15 -0.36z",fill:"#664500",stroke:"none"}]},{id:"emoji-tongue",cat:"emoji",zh:"\u8C03\u76AE",en:"Tongue",kw:"tongue \u8C03\u76AE \u5410\u820C \u4FCF\u76AE \u641E\u602A",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12 -6.63 0 -12 -5.37 -12 -12C0 5.37 5.37 0 12 0c6.63 0 12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M6 9.67A1.67 2.33 0 1 0 9.33 9.67A1.67 2.33 0 1 0 6 9.67Z",fill:"#66471B",stroke:"none"},{d:"M14.67 9.67A1.67 2.33 0 1 0 18 9.67A1.67 2.33 0 1 0 14.67 9.67Z",fill:"#66471B",stroke:"none"},{d:"M4.67 14.17c0 2.64 3.06 6 7.33 6s7.33 -3.33 7.33 -6c0 0 -6.89 1.84 -14.67 0z",fill:"#66471B",stroke:"none"},{d:"M12.36 15.74l-0.73 0c-2.14 -0.05 -3.64 -0.4 -3.64 -0.4v4.64c0 2 1.33 4 4 4s4 -2 4 -4v-4.61c-1.28 0.26 -2.52 0.36 -3.64 0.37z",fill:"#E8596E",stroke:"none"},{d:"M12 21.23c0.2 0 0.36 -0.16 0.36 -0.36v-5.13l-0.73 0v5.13c0 0.2 0.16 0.36 0.36 0.36z",fill:"#DD2F45",stroke:"none"}]},{id:"emoji-smug",cat:"emoji",zh:"\u5F97\u610F",en:"Smirk",kw:"smirk smug \u5F97\u610F \u574F\u7B11 \u81EA\u4FE1",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12S0 18.63 0 12 5.37 0 12 0s12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M16.22 15.75c-0.1 -0.09 -0.25 -0.11 -0.37 -0.05l-2.67 1.33c-1.25 0.62 -4.48 0.63 -4.52 0.63 -0.18 0 -0.33 0.15 -0.33 0.33 0 0.12 0.07 0.23 0.17 0.29v0h0v0c0.05 0.03 0.1 0.04 0.16 0.04h4.67c1.77 0 2.73 -1.46 2.98 -2.23 0.04 -0.13 0 -0.27 -0.1 -0.36zM20.67 10.67c-0.2 0 -0.4 -0.09 -0.53 -0.27 -1.76 -2.35 -4.04 -2.4 -4.14 -2.4 -0.37 0 -0.66 -0.3 -0.66 -0.67 0 -0.37 0.3 -0.66 0.66 -0.66 0.12 0 3.02 0.03 5.2 2.93 0.22 0.29 0.16 0.71 -0.13 0.93 -0.12 0.09 -0.26 0.13 -0.4 0.13zM3.33 10.67c-0.14 0 -0.28 -0.04 -0.4 -0.13 -0.29 -0.22 -0.35 -0.64 -0.13 -0.93C4.97 6.7 7.88 6.67 8 6.67c0.37 0 0.67 0.3 0.67 0.67 0 0.37 -0.3 0.67 -0.66 0.67 -0.1 0 -2.38 0.06 -4.14 2.4 -0.13 0.17 -0.33 0.27 -0.53 0.27zm7.27 0.93c0.02 -0.03 0.04 -0.06 0.05 -0.1 0.09 -0.36 -0.13 -0.72 -0.48 -0.81 -0.12 -0.03 -2.98 -0.72 -5.2 0.76 -0.31 0.2 -0.39 0.62 -0.18 0.92 0.13 0.19 0.34 0.3 0.55 0.3 0.13 0 0.26 -0.04 0.37 -0.11 0.73 -0.49 1.57 -0.66 2.31 -0.71 -0.01 0.05 -0.02 0.1 -0.02 0.15 0 0.74 0.6 1.33 1.33 1.33s1.33 -0.6 1.33 -1.33c0 -0.14 -0.03 -0.27 -0.07 -0.4zm8 0c0.02 -0.03 0.04 -0.06 0.05 -0.1 0.09 -0.36 -0.13 -0.72 -0.48 -0.81 -0.12 -0.03 -2.98 -0.72 -5.2 0.76 -0.31 0.2 -0.39 0.62 -0.18 0.92 0.13 0.19 0.34 0.3 0.56 0.3 0.13 0 0.26 -0.04 0.37 -0.11 0.73 -0.49 1.57 -0.66 2.31 -0.71 -0.01 0.05 -0.02 0.1 -0.02 0.15 0 0.74 0.6 1.33 1.33 1.33s1.33 -0.6 1.33 -1.33c0 -0.14 -0.03 -0.28 -0.07 -0.4z",fill:"#664500",stroke:"none"}]},{id:"emoji-cool",cat:"emoji",zh:"\u9177",en:"Cool",kw:"cool sunglasses \u9177 \u58A8\u955C \u5E05\u6C14",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12S0 18.63 0 12 5.37 0 12 0s12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M0.83 7.35c0.16 0.16 0.96 0.64 1.12 1.12 0.16 0.48 0.48 3.19 1.44 3.99 0.99 0.82 4.72 0.52 5.43 0.16 1.6 -0.8 1.79 -3.02 2.08 -4.15 0.16 -0.64 1.12 -0.64 1.12 -0.64s0.96 0 1.12 0.64c0.28 1.13 0.48 3.35 2.08 4.15 0.71 0.36 4.44 0.66 5.43 -0.16 0.96 -0.8 1.28 -3.51 1.44 -3.99 0.16 -0.48 0.96 -0.96 1.12 -1.12 0.16 -0.16 0.16 -0.8 0 -0.96 -0.32 -0.32 -4.09 -0.6 -8.15 -0.16 -0.81 0.09 -1.12 0.32 -3.04 0.32 -1.92 0 -2.23 -0.23 -3.04 -0.32 -4.06 -0.44 -7.83 -0.16 -8.15 0.16 -0.16 0.16 -0.16 0.8 0 0.96z",fill:"#292F33",stroke:"none"},{d:"M18.22 15.75c-0.12 -0.11 -0.3 -0.11 -0.42 -0.02 -0.03 0.02 -2.61 1.93 -5.8 1.93 -3.18 0 -5.77 -1.91 -5.8 -1.93 -0.13 -0.09 -0.3 -0.09 -0.42 0.02 -0.12 0.11 -0.14 0.28 -0.06 0.42C5.8 16.31 7.86 19.67 12 19.67s6.2 -3.35 6.29 -3.5c0.08 -0.14 0.06 -0.31 -0.06 -0.42z",fill:"#664500",stroke:"none"}]},{id:"emoji-love",cat:"emoji",zh:"\u82B1\u75F4",en:"Heart eyes",kw:"heart eyes love \u82B1\u75F4 \u7231\u5FC3\u773C \u559C\u6B22 \u7740\u8FF7",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12S0 18.63 0 12 5.37 0 12 0s12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M12 14.57c-1.98 0 -3.29 -0.23 -4.91 -0.55 -0.37 -0.07 -1.09 0 -1.09 1.09 0 2.18 2.51 4.91 6 4.91s6 -2.73 6 -4.91c0 -1.09 -0.72 -1.16 -1.09 -1.09 -1.62 0.32 -2.93 0.55 -4.91 0.55",fill:"#664500",stroke:"none"},{d:"M11.1 2.19C10.53 0.57 8.75 -0.28 7.13 0.29c-0.98 0.35 -1.68 1.14 -1.95 2.07 -0.79 -0.55 -1.83 -0.73 -2.82 -0.39C0.74 2.54 -0.11 4.32 0.46 5.94c0.08 0.23 0.19 0.44 0.31 0.64 1.3 2.39 5.06 4.07 7.33 4.09 1.76 -1.44 3.63 -5.11 3.15 -7.78 -0.03 -0.23 -0.08 -0.47 -0.16 -0.69zm1.8 0C13.47 0.57 15.25 -0.28 16.87 0.29c0.98 0.35 1.68 1.14 1.95 2.07 0.79 -0.55 1.83 -0.73 2.82 -0.39 1.62 0.57 2.47 2.35 1.9 3.97 -0.08 0.23 -0.19 0.44 -0.32 0.64 -1.3 2.39 -5.06 4.07 -7.33 4.09 -1.76 -1.44 -3.63 -5.11 -3.14 -7.78 0.02 -0.23 0.07 -0.47 0.15 -0.69z",fill:"#DD2E44",stroke:"none"}]},{id:"emoji-think",cat:"emoji",zh:"\u601D\u8003",en:"Thinking",kw:"think \u601D\u8003 \u60F3 \u7591\u60D1 \u8003\u8651",ink:A,layers:[{d:"M0.67 11.35A11.33 11.33 0 1 0 23.33 11.35A11.33 11.33 0 1 0 0.67 11.35Z",fill:"#FFCB4C",stroke:"none"},{d:"M9.68 14.02c-0.1 -0.08 -0.17 -0.18 -0.21 -0.31 -0.09 -0.31 0.09 -0.61 0.39 -0.68 3.02 -0.68 5.05 0.91 5.14 0.98 0.26 0.2 0.31 0.56 0.12 0.8 -0.19 0.24 -0.55 0.27 -0.81 0.06 -0.07 -0.06 -1.68 -1.28 -4.12 -0.73 -0.18 0.04 -0.37 -0.01 -0.51 -0.12z",fill:"#65471B",stroke:"none"},{d:"M7.33 7.45A1.42 1.77 0 1 0 10.16 7.45A1.42 1.77 0 1 0 7.33 7.45Z",fill:"#65471B",stroke:"none"},{d:"M14.83 8.16A1.42 1.77 0 1 0 17.67 8.16A1.42 1.77 0 1 0 14.83 8.16Z",fill:"#65471B",stroke:"none"},{d:"M11.52 23.43s0.84 -0.27 0.95 -0.9c0.12 -0.65 -0.42 -0.78 -0.42 -0.78s0.69 -0.14 0.78 -0.92c0.08 -0.73 -0.57 -0.91 -0.57 -0.91s0.65 -0.27 0.68 -1.03c0.03 -0.64 -0.66 -0.95 -0.66 -0.95s3.36 -0.81 3.7 -0.89c0.34 -0.08 0.88 -0.41 0.71 -1.13 -0.17 -0.72 -0.8 -0.75 -1.13 -0.67 -0.33 0.08 -4.5 1.04 -5.93 1.38l-0.96 0.22c-0.36 0.08 -0.52 -0.07 -0.27 -0.34 0.34 -0.36 0.56 -0.75 0.63 -1.41 0.08 -0.69 -0.15 -1.54 -0.29 -1.87 -0.25 -0.61 -0.67 -1.1 -1.16 -1.27 -0.76 -0.26 -1.3 0.21 -1.03 1.04 0.4 1.24 0.14 2.25 -0.56 2.86 -1.63 1.44 -2.39 2.46 -1.89 4.65 0.55 2.38 2.92 3.92 5.3 3.37l2.1 -0.45z",fill:"#F19020",stroke:"none"},{d:"M6.2 4.23c-0.11 -0.06 -0.2 -0.15 -0.26 -0.27 -0.14 -0.29 -0.03 -0.62 0.26 -0.74 2.84 -1.22 5.13 -0.03 5.23 0.02 0.29 0.15 0.41 0.5 0.26 0.77 -0.14 0.27 -0.49 0.36 -0.78 0.21 -0.08 -0.04 -1.89 -0.95 -4.19 0.03 -0.17 0.07 -0.36 0.06 -0.52 -0.03zm8.09 2.5c-0.1 -0.07 -0.19 -0.16 -0.24 -0.28 -0.12 -0.29 0.02 -0.62 0.31 -0.72 2.92 -1.02 5.12 0.32 5.22 0.38 0.28 0.17 0.37 0.52 0.21 0.79 -0.16 0.26 -0.52 0.33 -0.79 0.16 -0.08 -0.05 -1.82 -1.08 -4.18 -0.25 -0.18 0.06 -0.37 0.03 -0.52 -0.06z",fill:"#65471B",stroke:"none"}]},{id:"emoji-confused",cat:"emoji",zh:"\u7591\u95EE",en:"Confused",kw:"confused \u7591\u95EE \u7591\u60D1 \u4E0D\u89E3 \u8FF7\u832B",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12 -6.63 0 -12 -5.37 -12 -12C0 5.37 5.37 0 12 0c6.63 0 12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M6 11A1.67 2.33 0 1 0 9.33 11A1.67 2.33 0 1 0 6 11Z",fill:"#664500",stroke:"none"},{d:"M14.67 11A1.67 2.33 0 1 0 18 11A1.67 2.33 0 1 0 14.67 11Z",fill:"#664500",stroke:"none"},{d:"M8 18.67c1.33 -3.33 8.67 -3.33 8.67 -2 0 0.67 -5.33 -0.67 -8.67 2z",fill:"#664500",stroke:"none"}]},{id:"emoji-eyeroll",cat:"emoji",zh:"\u767D\u773C",en:"Eye roll",kw:"eyeroll \u767D\u773C \u65E0\u8BED \u5ACC\u5F03 \u7FFB\u767D\u773C",ink:A,layers:[{d:"M0 12A12 12 0 1 0 24 12A12 12 0 1 0 0 12Z",fill:"#FFCC4D",stroke:"none"},{d:"M12.67 9A3.67 3.67 0 1 0 20 9A3.67 3.67 0 1 0 12.67 9Z",fill:"#F4F7F9",stroke:"none"},{d:"M4 9A3.67 3.67 0 1 0 11.33 9A3.67 3.67 0 1 0 4 9Z",fill:"#F4F7F9",stroke:"none"},{d:"M15.41 15.62c-1.84 -0.44 -5.92 -0.04 -7.44 2.94 -0.05 0.11 -0.03 0.24 0.07 0.31 0.05 0.04 0.1 0.05 0.16 0.05 0.06 0 0.11 -0.02 0.16 -0.06 2.06 -1.72 4.96 -1.72 6.69 -1.72 1.09 0 1.69 0 1.69 -0.47s-0.47 -0.85 -1.32 -1.05zM7 8.67c0.92 0 1.67 -0.75 1.67 -1.67 0 -0.83 -0.62 -1.52 -1.42 -1.64 -0.53 0.06 -1.02 0.23 -1.45 0.49C5.51 6.15 5.33 6.55 5.33 7c0 0.92 0.75 1.67 1.67 1.67zm8.67 0c0.92 0 1.67 -0.75 1.67 -1.67 0 -0.83 -0.62 -1.52 -1.42 -1.64 -0.53 0.06 -1.02 0.23 -1.45 0.49C14.18 6.15 14 6.55 14 7c0 0.92 0.75 1.67 1.67 1.67z",fill:"#65471B",stroke:"none"}]},{id:"emoji-neutral",cat:"emoji",zh:"\u5E73\u6DE1",en:"Neutral",kw:"neutral \u5E73\u6DE1 \u9762\u65E0\u8868\u60C5 \u51B7\u9759 \u65E0\u611F",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12 -6.63 0 -12 -5.37 -12 -12C0 5.37 5.37 0 12 0c6.63 0 12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M6 11A1.67 2.33 0 1 0 9.33 11A1.67 2.33 0 1 0 6 11Z",fill:"#664500",stroke:"none"},{d:"M14.67 11A1.67 2.33 0 1 0 18 11A1.67 2.33 0 1 0 14.67 11Z",fill:"#664500",stroke:"none"},{d:"M16.67 17.33H7.33c-0.37 0 -0.67 -0.3 -0.67 -0.67s0.3 -0.67 0.67 -0.67h9.33c0.37 0 0.67 0.3 0.67 0.67s-0.3 0.67 -0.67 0.67z",fill:"#664500",stroke:"none"}]},{id:"emoji-speechless",cat:"emoji",zh:"\u65E0\u8BED",en:"Speechless",kw:"speechless \u65E0\u8BED \u65E0\u5948 \u6C89\u9ED8 \u9762\u65E0\u8868\u60C5",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12 -6.63 0 -12 -5.37 -12 -12C0 5.37 5.37 0 12 0c6.63 0 12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M16.67 17.33H7.33c-0.37 0 -0.67 -0.3 -0.67 -0.67s0.3 -0.67 0.67 -0.67h9.33c0.37 0 0.67 0.3 0.67 0.67s-0.3 0.67 -0.67 0.67zm-6.67 -5.33H5.33c-0.37 0 -0.67 -0.3 -0.67 -0.67s0.3 -0.67 0.67 -0.67h4.67c0.37 0 0.67 0.3 0.67 0.67s-0.3 0.67 -0.67 0.67zm8.67 0h-4.67c-0.37 0 -0.67 -0.3 -0.67 -0.67s0.3 -0.67 0.67 -0.67h4.67c0.37 0 0.67 0.3 0.67 0.67s-0.3 0.67 -0.67 0.67z",fill:"#664500",stroke:"none"}]},{id:"emoji-surprised",cat:"emoji",zh:"\u60CA\u8BB6",en:"Surprised",kw:"surprised \u60CA\u8BB6 \u5403\u60CA \u610F\u5916 \u5F20\u5634",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12S0 18.63 0 12 5.37 0 12 0s12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M9.33 16.67A2.67 3.33 0 1 0 14.67 16.67A2.67 3.33 0 1 0 9.33 16.67Z",fill:"#664500",stroke:"none"},{d:"M6.33 9A1.67 2.33 0 1 0 9.67 9A1.67 2.33 0 1 0 6.33 9Z",fill:"#664500",stroke:"none"},{d:"M14.33 9A1.67 2.33 0 1 0 17.67 9A1.67 2.33 0 1 0 14.33 9Z",fill:"#664500",stroke:"none"}]},{id:"emoji-shocked",cat:"emoji",zh:"\u5403\u60CA",en:"Scream",kw:"shock scream \u5403\u60CA \u60CA\u5413 \u5C16\u53EB \u5BB3\u6015",ink:A,layers:[{d:"M12 0C5.37 0 0 5.37 0 12c0 4.03 2 7.59 5.05 9.77C5.12 17.48 3.56 12.67 0.94 12.67c-0.31 0 -0.56 0.04 -0.77 0.12C0.37 12.28 0.81 12 1.63 12c2.85 0 4.44 5.67 4.06 10.19C7.52 23.33 9.68 24 12 24c2.32 0 4.48 -0.67 6.31 -1.81C17.93 17.65 19.53 12 22.37 12c0.82 0 1.26 0.28 1.46 0.79 -0.21 -0.08 -0.46 -0.12 -0.77 -0.12 -2.63 0 -4.19 4.8 -4.11 9.1C22 19.59 24 16.03 24 12c0 -6.63 -5.37 -12 -12 -12z",fill:"#FFCC4D",stroke:"none"},{d:"M12 0C5.37 0 0 5.37 0 12c0 0.79 0.08 1.57 0.23 2.32 0.16 -0.58 0.4 -1.13 0.71 -1.66 -0.31 0 -0.56 0.04 -0.77 0.12 0.18 -0.44 0.55 -0.7 1.18 -0.76C3.34 9.24 7.36 7.33 12 7.33c4.64 0 8.66 1.91 10.65 4.69 0.63 0.06 1.01 0.32 1.18 0.76 -0.21 -0.08 -0.46 -0.12 -0.77 -0.12 0.31 0.53 0.55 1.08 0.71 1.66 0.15 -0.75 0.23 -1.53 0.23 -2.32 0 -6.63 -5.37 -12 -12 -12z",fill:"#BDDDF4",stroke:"none"},{d:"M4.9 7.94c-0.63 2.12 0.07 4.2 1.57 4.64 1.5 0.45 3.22 -0.91 3.85 -3.03 0.63 -2.12 -0.07 -4.2 -1.57 -4.64 -1.5 -0.45 -3.22 0.91 -3.85 3.03zm14.2 0c0.63 2.12 -0.07 4.2 -1.57 4.64 -1.5 0.45 -3.22 -0.91 -3.85 -3.03 -0.63 -2.12 0.07 -4.2 1.57 -4.64 1.5 -0.45 3.22 0.91 3.85 3.03z",fill:"#F5F8FA",stroke:"none"},{d:"M12 12c-1.84 0 -3.33 1.5 -3.33 3.33v4c0 1.84 1.5 3.33 3.33 3.33s3.33 -1.5 3.33 -3.33v-4c0 -1.84 -1.5 -3.33 -3.33 -3.33z",fill:"#664500",stroke:"none"},{d:"M0.94 12.67c-0.31 0 -0.56 0.04 -0.77 0.12 0.05 -0.12 0.11 -0.22 0.19 -0.32C-0.89 14 1.9 19.03 0.55 24h4.31c0.79 -4.64 -0.82 -11.33 -3.92 -11.33zm22.9 0.12c-0.21 -0.08 -0.46 -0.12 -0.77 -0.12 -3.09 0 -4.71 6.67 -3.92 11.33h4.31c-1.27 -4.7 1.1 -9.39 0.38 -11.21z",fill:"#FCAB40",stroke:"none"}]},{id:"emoji-angry",cat:"emoji",zh:"\u751F\u6C14",en:"Angry",kw:"angry \u751F\u6C14 \u6124\u6012 \u607C\u706B \u4E0D\u6EE1",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12 -6.63 0 -12 -5.37 -12 -12C0 5.37 5.37 0 12 0c6.63 0 12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M16.99 19.92C16.96 19.8 16.21 17 12 17c-4.21 0 -4.96 2.8 -4.99 2.92 -0.04 0.14 0.03 0.29 0.16 0.37 0.13 0.07 0.29 0.05 0.4 -0.05 0.01 -0.01 1.3 -1.24 4.43 -1.24s4.42 1.22 4.43 1.24c0.06 0.06 0.15 0.1 0.23 0.1 0.06 0 0.11 -0.01 0.16 -0.04 0.13 -0.07 0.2 -0.23 0.16 -0.37zm-6.52 -8.39C8.3 9.36 4.81 9.33 4.67 9.33c-0.37 0 -0.67 0.3 -0.67 0.67 0 0.37 0.3 0.67 0.67 0.67 0.02 0 1.28 0.01 2.66 0.49 -0.4 0.43 -0.65 1.09 -0.65 1.84 0 1.29 0.75 2.33 1.67 2.33s1.67 -1.04 1.67 -2.33c0 -0.12 -0.01 -0.23 -0.02 -0.34 0.01 0 0.02 0 0.02 0 0.17 0 0.34 -0.07 0.47 -0.2 0.26 -0.26 0.26 -0.68 0 -0.94zM19.33 9.33c-0.15 0 -3.63 0.03 -5.8 2.2 -0.26 0.26 -0.26 0.68 0 0.94 0.13 0.13 0.3 0.2 0.47 0.2 0.01 0 0.02 0 0.02 0 -0.01 0.11 -0.02 0.22 -0.02 0.34 0 1.29 0.75 2.33 1.67 2.33s1.67 -1.04 1.67 -2.33c0 -0.75 -0.26 -1.42 -0.65 -1.84 1.37 -0.48 2.64 -0.49 2.66 -0.49 0.37 0 0.67 -0.3 0.66 -0.67 0 -0.37 -0.3 -0.67 -0.67 -0.67z",fill:"#664500",stroke:"none"}]},{id:"emoji-rage",cat:"emoji",zh:"\u53D1\u6012",en:"Pouting",kw:"rage pout \u53D1\u6012 \u6124\u6012 \u66B4\u6012 \u6C14",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12 -6.63 0 -12 -5.37 -12 -12C0 5.37 5.37 0 12 0c6.63 0 12 5.37 12 12",fill:"#DA2F47",stroke:"none"},{d:"M16.99 19.92C16.96 19.8 16.21 17 12 17c-4.21 0 -4.96 2.8 -4.99 2.92 -0.04 0.14 0.03 0.29 0.16 0.37 0.13 0.07 0.29 0.05 0.4 -0.05 0.01 -0.01 1.3 -1.24 4.43 -1.24s4.42 1.22 4.43 1.24c0.06 0.06 0.15 0.1 0.23 0.1 0.06 0 0.11 -0.01 0.16 -0.04 0.13 -0.07 0.2 -0.23 0.16 -0.37zm-6.52 -8.39C8.3 9.36 4.81 9.33 4.67 9.33c-0.37 0 -0.67 0.3 -0.67 0.67 0 0.37 0.3 0.67 0.67 0.67 0.02 0 1.28 0.01 2.66 0.49 -0.4 0.43 -0.65 1.09 -0.65 1.84 0 1.29 0.75 2.33 1.67 2.33s1.67 -1.04 1.67 -2.33c0 -0.12 -0.01 -0.23 -0.02 -0.34 0.01 0 0.02 0 0.02 0 0.17 0 0.34 -0.07 0.47 -0.2 0.26 -0.26 0.26 -0.68 0 -0.94zM19.33 9.33c-0.15 0 -3.63 0.03 -5.8 2.2 -0.26 0.26 -0.26 0.68 0 0.94 0.13 0.13 0.3 0.2 0.47 0.2 0.01 0 0.02 0 0.02 0 -0.01 0.11 -0.02 0.22 -0.02 0.34 0 1.29 0.75 2.33 1.67 2.33s1.67 -1.04 1.67 -2.33c0 -0.75 -0.26 -1.42 -0.65 -1.84 1.37 -0.48 2.64 -0.49 2.66 -0.49 0.37 0 0.67 -0.3 0.66 -0.67 0 -0.37 -0.3 -0.67 -0.67 -0.67z",fill:"#292F33",stroke:"none"}]},{id:"emoji-crazy",cat:"emoji",zh:"\u6293\u72C2",en:"Crazy",kw:"crazy zany \u6293\u72C2 \u75AF\u72C2 \u641E\u602A \u53D1\u75AF",ink:A,layers:[{d:"M23.73 9.49c1.39 6.48 -2.74 12.86 -9.22 14.25C8.03 25.12 1.65 21 0.26 14.52 -1.12 8.04 3 1.66 9.48 0.27c6.48 -1.39 12.86 2.74 14.25 9.22",fill:"#FFCB4C",stroke:"none"},{d:"M19.52 6.01c0.52 2.42 -1.02 4.81 -3.45 5.33 -2.42 0.52 -4.81 -1.02 -5.33 -3.45 -0.52 -2.42 1.02 -4.81 3.45 -5.33s4.81 1.02 5.33 3.45z",fill:"#F4F7F9",stroke:"none"},{d:"M13.51 6.19A1.36 1.36 0 1 0 16.23 6.19A1.36 1.36 0 1 0 13.51 6.19Z",fill:"#292F33",stroke:"none"},{d:"M9.39 9.52c0.3 1.42 -0.6 2.81 -2.02 3.12s-2.81 -0.6 -3.12 -2.02c-0.3 -1.42 0.6 -2.81 2.02 -3.12s2.81 0.6 3.12 2.02z",fill:"#F4F7F9",stroke:"none"},{d:"M5.53 10.57A1.29 1.29 0 1 0 8.12 10.57A1.29 1.29 0 1 0 5.53 10.57Z",fill:"#292F33",stroke:"none"},{d:"M12.42 13.96c-2.36 0.51 -3.99 0.57 -6.01 0.61 -0.46 0.01 -1.3 0.28 -1.02 1.58 0.56 2.61 4.25 5.22 8.43 4.33 4.17 -0.89 6.47 -4.8 5.91 -7.4 -0.28 -1.3 -1.16 -1.21 -1.58 -1.02 -1.86 0.79 -3.37 1.4 -5.73 1.91z",fill:"#65471B",stroke:"none"},{d:"M7.33 16v4c0 2 1.33 4 4 4s4 -2 4 -4v-4H7.33z",fill:"#E8596E",stroke:"none"},{d:"M11.33 21.26c0.2 0 0.36 -0.16 0.36 -0.36v-4.2h-0.73v4.2c0 0.2 0.16 0.36 0.36 0.36z",fill:"#DD2F45",stroke:"none"},{d:"M6.69 15.87s2.1 0.23 6.01 -0.61c3.91 -0.84 5.73 -1.91 5.73 -1.91s-0.74 2.89 -5.31 3.86c-4.56 0.98 -6.43 -1.35 -6.43 -1.35z",fill:"#FFF",stroke:"none"}]},{id:"emoji-cry",cat:"emoji",zh:"\u54ED",en:"Cry",kw:"cry sad tear \u54ED \u54ED\u6CE3 \u96BE\u8FC7 \u4F24\u5FC3",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12 -6.63 0 -12 -5.37 -12 -12C0 5.37 5.37 0 12 0c6.63 0 12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M6 11.33A1.67 2.33 0 1 0 9.33 11.33A1.67 2.33 0 1 0 6 11.33Z",fill:"#664500",stroke:"none"},{d:"M14.67 11.33A1.67 2.33 0 1 0 18 11.33A1.67 2.33 0 1 0 14.67 11.33Z",fill:"#664500",stroke:"none"},{d:"M4 9c-0.14 0 -0.28 -0.04 -0.4 -0.13 -0.29 -0.22 -0.35 -0.64 -0.13 -0.93 2.17 -2.9 5.08 -2.93 5.2 -2.93 0.37 0 0.67 0.3 0.67 0.67 0 0.37 -0.3 0.67 -0.66 0.67 -0.1 0 -2.38 0.06 -4.14 2.4 -0.13 0.17 -0.33 0.27 -0.53 0.27zm16 0c-0.2 0 -0.4 -0.09 -0.53 -0.27 -1.76 -2.35 -4.04 -2.4 -4.14 -2.4 -0.37 0 -0.66 -0.3 -0.66 -0.67 0 -0.37 0.3 -0.66 0.66 -0.66 0.12 0 3.02 0.03 5.2 2.93 0.22 0.29 0.16 0.71 -0.13 0.93 -0.12 0.09 -0.26 0.13 -0.4 0.13zm-4.34 9.92C15.65 18.89 14.89 16 12 16s-3.65 2.89 -3.66 2.92c-0.04 0.14 0.03 0.29 0.15 0.36 0.13 0.07 0.29 0.06 0.4 -0.04C8.9 19.24 9.57 18.67 12 18.67c2.39 0 3.08 0.55 3.1 0.58 0.06 0.06 0.15 0.09 0.23 0.09 0.06 0 0.11 -0.01 0.16 -0.04 0.13 -0.07 0.2 -0.23 0.16 -0.37z",fill:"#664500",stroke:"none"},{d:"M10.67 20.67c0 1.84 -1.49 3.33 -3.33 3.33s-3.33 -1.49 -3.33 -3.33 2.67 -6.67 3.33 -6.67 3.33 4.83 3.33 6.67z",fill:"#5DADEC",stroke:"none"}]},{id:"emoji-sob",cat:"emoji",zh:"\u5927\u54ED",en:"Sob",kw:"sob cry \u5927\u54ED \u568E\u5555 \u75DB\u54ED \u4F24\u5FC3",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12S0 18.63 0 12 5.37 0 12 0s12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M14.67 18c0 1.84 -1.19 2 -2.67 2 -1.47 0 -2.67 -0.16 -2.67 -2 0 -1.84 1.19 -4 2.67 -4 1.47 0 2.67 2.16 2.67 4zm5.33 -8c-0.08 0 -0.17 -0.02 -0.25 -0.05 -3.49 -1.39 -4.91 -3.49 -4.97 -3.58 -0.2 -0.31 -0.12 -0.72 0.18 -0.92 0.31 -0.2 0.72 -0.12 0.92 0.18 0.01 0.02 1.29 1.86 4.36 3.09 0.34 0.14 0.51 0.52 0.37 0.87 -0.1 0.26 -0.36 0.42 -0.62 0.42zM4 10c-0.26 0 -0.51 -0.16 -0.62 -0.42 -0.14 -0.34 0.03 -0.73 0.37 -0.87 3.07 -1.23 4.35 -3.07 4.36 -3.09 0.21 -0.3 0.62 -0.38 0.92 -0.18 0.3 0.21 0.39 0.62 0.18 0.92 -0.06 0.09 -1.49 2.19 -4.97 3.58C4.17 9.98 4.08 10 4 10z",fill:"#664500",stroke:"none"},{d:"M16 10.67h2.67v12.67l-2.67 -0.03V10.67zM5.33 23.33l2.67 -0.03V10.67H5.33v12.67z",fill:"#5DADEC",stroke:"none"},{d:"M10 12c-0.1 0 -0.2 -0.02 -0.3 -0.07 -2.34 -1.17 -4.71 -0.01 -4.74 0 -0.33 0.17 -0.73 0.03 -0.89 -0.3 -0.16 -0.33 -0.03 -0.73 0.3 -0.89 0.12 -0.06 3 -1.46 5.93 0 0.33 0.16 0.46 0.57 0.3 0.89 -0.12 0.23 -0.35 0.37 -0.6 0.37zm9.33 0c-0.1 0 -0.2 -0.02 -0.3 -0.07 -2.34 -1.17 -4.71 -0.01 -4.74 0 -0.33 0.17 -0.73 0.03 -0.89 -0.3 -0.16 -0.33 -0.03 -0.73 0.3 -0.89 0.12 -0.06 3 -1.46 5.93 0 0.33 0.16 0.46 0.57 0.3 0.89 -0.12 0.23 -0.35 0.37 -0.6 0.37z",fill:"#664500",stroke:"none"},{d:"M0 22.67A12 1.33 0 1 0 24 22.67A12 1.33 0 1 0 0 22.67Z",fill:"#5DADEC",stroke:"none"},{d:"M10 18A2 1.33 0 1 0 14 18A2 1.33 0 1 0 10 18Z",fill:"#E75A70",stroke:"none"}]},{id:"emoji-wronged",cat:"emoji",zh:"\u59D4\u5C48",en:"Disappointed",kw:"disappointed wronged \u59D4\u5C48 \u5931\u671B \u96BE\u8FC7 \u6487\u5634",ink:A,layers:[{d:"M0 12A12 12 0 1 0 24 12A12 12 0 1 0 0 12Z",fill:"#FFCC4D",stroke:"none"},{d:"M15.66 19.25C15.65 19.22 14.89 16.33 12 16.33s-3.65 2.89 -3.66 2.92c-0.04 0.14 0.03 0.29 0.15 0.36 0.13 0.07 0.29 0.06 0.4 -0.04 0.01 -0.01 0.68 -0.58 3.1 -0.58 2.39 0 3.08 0.55 3.1 0.58 0.06 0.06 0.15 0.09 0.23 0.09 0.06 0 0.11 -0.01 0.16 -0.04 0.13 -0.07 0.2 -0.23 0.16 -0.37zM7.48 10.34c-0.21 0 -0.42 0.03 -0.63 0.08 -1.91 0.47 -2.34 2.75 -2.36 2.84 -0.03 0.15 0.05 0.3 0.19 0.36 0.04 0.02 0.09 0.03 0.14 0.03 0.1 0 0.19 -0.04 0.26 -0.12 0.01 -0.01 0.67 -0.79 2.25 -1.17 0.48 -0.12 0.94 -0.18 1.38 -0.18 0.74 0 1.15 0.17 1.16 0.17 0.04 0.02 0.09 0.03 0.14 0.03 0.18 0.01 0.34 -0.15 0.34 -0.33 0 -0.11 -0.05 -0.21 -0.14 -0.27 -0.24 -0.29 -1.3 -1.44 -2.73 -1.44zm9.03 0c0.21 0 0.42 0.03 0.63 0.08 1.91 0.47 2.34 2.75 2.36 2.84 0.03 0.15 -0.05 0.3 -0.19 0.36 -0.04 0.02 -0.09 0.03 -0.14 0.03 -0.1 0 -0.19 -0.04 -0.26 -0.12 -0.01 -0.01 -0.67 -0.79 -2.25 -1.17 -0.48 -0.12 -0.94 -0.18 -1.38 -0.18 -0.74 0 -1.15 0.17 -1.16 0.17 -0.04 0.02 -0.09 0.03 -0.14 0.03 -0.18 0.01 -0.34 -0.15 -0.34 -0.33 0 -0.11 0.05 -0.21 0.14 -0.27 0.24 -0.29 1.3 -1.44 2.73 -1.44z",fill:"#664500",stroke:"none"}]},{id:"emoji-sad",cat:"emoji",zh:"\u96BE\u8FC7",en:"Sad",kw:"sad frown \u96BE\u8FC7 \u60B2\u4F24 \u6CAE\u4E27 \u4E0D\u5F00\u5FC3",ink:A,layers:[{d:"M0 12A12 12 0 1 0 24 12A12 12 0 1 0 0 12Z",fill:"#FFCC4D",stroke:"none"},{d:"M16.99 18.25C16.96 18.13 16.21 15.33 12 15.33c-4.21 0 -4.96 2.8 -4.99 2.92 -0.04 0.14 0.03 0.29 0.16 0.37 0.13 0.07 0.29 0.05 0.4 -0.05C7.58 18.56 8.87 17.33 12 17.33s4.42 1.22 4.43 1.24c0.06 0.06 0.15 0.1 0.23 0.1 0.06 0 0.11 -0.01 0.16 -0.04 0.13 -0.07 0.2 -0.23 0.16 -0.37z",fill:"#664500",stroke:"none"},{d:"M6.33 9A1.67 2.33 0 1 0 9.67 9A1.67 2.33 0 1 0 6.33 9Z",fill:"#664500",stroke:"none"},{d:"M14.33 9A1.67 2.33 0 1 0 17.67 9A1.67 2.33 0 1 0 14.33 9Z",fill:"#664500",stroke:"none"}]},{id:"emoji-sweat",cat:"emoji",zh:"\u6C57",en:"Sweat",kw:"sweat \u6C57 \u5192\u6C57 \u7D27\u5F20 \u5C34\u5C2C \u538B\u529B",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12 -6.63 0 -12 -5.37 -12 -12C0 5.37 5.37 0 12 0c6.63 0 12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M18.97 11.86c-0.04 -0.09 -1 -2.2 -2.97 -2.2 -1.97 0 -2.93 2.11 -2.97 2.2 -0.06 0.14 -0.02 0.3 0.1 0.39 0.12 0.09 0.28 0.1 0.41 0.01 0.01 -0.01 0.84 -0.6 2.47 -0.6 1.62 0 2.45 0.59 2.47 0.6 0.06 0.04 0.13 0.07 0.2 0.07 0.07 0 0.15 -0.02 0.21 -0.07 0.12 -0.09 0.16 -0.26 0.1 -0.4zm-7.33 0c-0.04 -0.09 -1 -2.2 -2.97 -2.2 -1.97 0 -2.93 2.11 -2.97 2.2 -0.06 0.14 -0.02 0.3 0.1 0.39 0.12 0.09 0.28 0.1 0.41 0.01 0.01 -0.01 0.84 -0.6 2.47 -0.6 1.62 0 2.45 0.59 2.47 0.6 0.06 0.04 0.13 0.07 0.2 0.07 0.07 0 0.15 -0.02 0.21 -0.07 0.12 -0.09 0.16 -0.26 0.1 -0.4zM8.67 18.67s0.67 -2.67 3.33 -2.67 3.33 2.67 3.33 2.67 -0.67 -0.67 -3.33 -0.67 -3.33 0.67 -3.33 0.67z",fill:"#664500",stroke:"none"},{d:"M7.33 7.33c0 1.84 -1.49 3.33 -3.33 3.33 -1.84 0 -3.33 -1.49 -3.33 -3.33S3.33 0.67 4 0.67s3.33 4.83 3.33 6.67z",fill:"#5DADEC",stroke:"none"}]},{id:"emoji-awkward",cat:"emoji",zh:"\u5C34\u5C2C",en:"Awkward",kw:"awkward sweat \u5C34\u5C2C \u82E6\u7B11 \u6C57\u989C",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12 -6.63 0 -12 -5.37 -12 -12C0 5.37 5.37 0 12 0c6.63 0 12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M18.97 11.86c-0.04 -0.09 -1 -2.2 -2.97 -2.2 -1.97 0 -2.93 2.11 -2.97 2.2 -0.06 0.14 -0.02 0.3 0.1 0.39 0.12 0.09 0.28 0.1 0.41 0.01 0.01 -0.01 0.84 -0.6 2.47 -0.6 1.62 0 2.45 0.59 2.47 0.6 0.06 0.04 0.13 0.07 0.2 0.07 0.07 0 0.15 -0.02 0.21 -0.07 0.12 -0.09 0.16 -0.26 0.1 -0.4zm-8 0c-0.04 -0.09 -1 -2.2 -2.97 -2.2 -1.97 0 -2.93 2.11 -2.97 2.2 -0.06 0.14 -0.02 0.3 0.1 0.39 0.12 0.09 0.28 0.1 0.41 0.01 0.01 -0.01 0.84 -0.6 2.47 -0.6 1.62 0 2.45 0.59 2.47 0.6 0.06 0.04 0.13 0.07 0.2 0.07 0.07 0 0.15 -0.02 0.21 -0.07 0.12 -0.09 0.16 -0.26 0.1 -0.4zM12 14.67c-2.42 0 -4.02 -0.28 -6 -0.67 -0.45 -0.09 -1.33 0 -1.33 1.33 0 2.67 3.06 6 7.33 6 4.27 0 7.33 -3.33 7.33 -6 0 -1.33 -0.88 -1.42 -1.33 -1.33 -1.98 0.39 -3.58 0.67 -6 0.67z",fill:"#664500",stroke:"none"},{d:"M6 15.33s2 0.67 6 0.67 6 -0.67 6 -0.67 -1.33 2.67 -6 2.67 -6 -2.67 -6 -2.67z",fill:"#FFF",stroke:"none"},{d:"M23.33 7.33c0 1.84 -1.49 3.33 -3.33 3.33s-3.33 -1.49 -3.33 -3.33 2.67 -6.67 3.33 -6.67 3.33 4.83 3.33 6.67z",fill:"#5DADEC",stroke:"none"}]},{id:"emoji-sick",cat:"emoji",zh:"\u751F\u75C5",en:"Sick",kw:"sick nauseated \u751F\u75C5 \u6076\u5FC3 \u60F3\u5410 \u96BE\u53D7",ink:A,layers:[{d:"M23.99 12c0 6.63 -5.37 12 -12 12 -6.63 0 -12 -5.37 -12 -12 0 -6.63 5.37 -12 12 -12s12 5.37 12 12",fill:"#77B255",stroke:"none"},{d:"M10.24 17.41l-1.01 -1.53c0.77 -0.51 1.74 -0.79 2.73 -0.79 0.99 0 1.93 0.27 2.71 0.77l-1 1.54c-0.95 -0.62 -2.48 -0.62 -3.42 0.01zm8.44 -8.72c-0.16 -0.2 -4.51 -1 -4.55 -1 -0.08 0 -0.17 0.06 -0.18 0.14 -0.15 0.68 -0.03 1.38 0.31 1.96 0.35 0.58 0.89 0.98 1.53 1.12 0.15 0.03 0.31 0.05 0.47 0.05 1.16 0 2.2 -0.89 2.46 -2.12 0.01 -0.05 0 -0.1 -0.04 -0.14zm-8.85 -1c-0.04 0 -4.39 0.8 -4.55 1 -0.03 0.04 -0.05 0.09 -0.03 0.14 0.26 1.23 1.29 2.12 2.46 2.12 0.16 0 0.32 -0.02 0.47 -0.05 1.31 -0.28 2.14 -1.66 1.84 -3.08 -0.02 -0.08 -0.1 -0.14 -0.18 -0.14z",fill:"#292F33",stroke:"none"},{d:"M7.76 19.76c-0.3 0 -0.57 -0.19 -0.67 -0.48 -0.12 -0.37 0.08 -0.77 0.45 -0.89 0.06 -0.02 1.64 -0.58 1.64 -2.15s-1.57 -2.13 -1.64 -2.15c-0.37 -0.13 -0.56 -0.53 -0.44 -0.89 0.12 -0.37 0.52 -0.57 0.89 -0.44 0.11 0.04 2.6 0.9 2.6 3.49s-2.49 3.46 -2.6 3.49c-0.07 0.02 -0.15 0.04 -0.22 0.04zm8.47 0c-0.07 0 -0.15 -0.01 -0.22 -0.04 -0.11 -0.04 -2.6 -0.9 -2.6 -3.49s2.49 -3.46 2.6 -3.49c0.37 -0.12 0.77 0.08 0.89 0.45 0.12 0.37 -0.08 0.77 -0.44 0.89 -0.07 0.02 -1.64 0.59 -1.64 2.15s1.57 2.13 1.64 2.15c0.37 0.13 0.56 0.53 0.44 0.89 -0.1 0.29 -0.37 0.48 -0.67 0.48z",fill:"#3E721D",stroke:"none"}]},{id:"emoji-mask",cat:"emoji",zh:"\u53E3\u7F69",en:"Mask",kw:"mask \u53E3\u7F69 \u751F\u75C5 \u9632\u62A4 \u611F\u5192",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12 -6.63 0 -12 -5.37 -12 -12C0 5.37 5.37 0 12 0c6.63 0 12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M4.67 10c-0.22 0 -0.43 -0.1 -0.56 -0.3 -0.2 -0.31 -0.12 -0.72 0.18 -0.92C4.39 8.72 6.5 7.33 9.33 7.33c0.37 0 0.67 0.3 0.67 0.67s-0.3 0.67 -0.67 0.67c-2.44 0 -4.28 1.21 -4.3 1.22 -0.11 0.08 -0.24 0.11 -0.37 0.11zm14.67 0c-0.13 0 -0.25 -0.04 -0.37 -0.11C18.95 9.88 17.09 8.67 14.67 8.67c-0.37 0 -0.67 -0.3 -0.67 -0.67s0.3 -0.67 0.67 -0.67c2.84 0 4.95 1.39 5.04 1.45 0.31 0.2 0.39 0.62 0.18 0.92 -0.13 0.19 -0.34 0.3 -0.56 0.3z",fill:"#664500",stroke:"none"},{d:"M18 14.73L24 12c0 -0.44 -0.03 -0.87 -0.07 -1.3L18 13.39V12.67c0 -0.74 -0.6 -1.33 -1.33 -1.33H7.33c-0.74 0 -1.33 0.6 -1.33 1.33v0.73L0.07 10.7C0.03 11.13 0 11.56 0 12l6 2.73v3.03l-4.97 -0.9c0.23 0.51 0.49 1 0.79 1.48L6 19.09V20c0 0.74 0.6 1.33 1.33 1.33h9.33c0.74 0 1.33 -0.6 1.33 -1.33v-0.91l4.18 -0.76c0.29 -0.47 0.56 -0.96 0.79 -1.48L18 17.76v-3.03z",fill:"#F5F8FA",stroke:"none"}]},{id:"emoji-facepalm",cat:"emoji",zh:"\u6342\u8138",en:"Facepalm",kw:"facepalm \u6342\u8138 \u65E0\u8BED \u65E0\u5948 \u6276\u989D",ink:A,layers:[{d:"M18 18H6.67v6h14v-3.33c0 -1.47 -1.19 -2.67 -2.67 -2.67z",fill:"#FA743E",stroke:"none"},{d:"M14.6 0.84c-1.35 -0.44 -4.51 -0.32 -5.31 0.71 -2.06 0.04 -4.48 1.9 -4.79 4.36 -0.31 2.43 0.39 3.56 0.63 5.39 0.28 2.07 1.45 2.73 2.38 3.01C8.85 16.08 10.28 16 12.67 16c4.67 0 6.89 -3.12 7.09 -8.43 0.12 -3.21 -1.76 -5.64 -5.15 -6.73z",fill:"#FFAC33",stroke:"none"},{d:"M10 14.67v4c0 1.1 0.9 2 2 2s2 -0.9 2 -2v-4h-4z",fill:"#FFDC5D",stroke:"none"},{d:"M17.27 7.8c-0.45 -0.63 -1.03 -1.13 -2.3 -1.31 0.48 0.22 0.93 0.97 0.99 1.39 0.06 0.42 0.12 0.75 -0.26 0.34 -1.51 -1.67 -3.15 -1.01 -4.77 -2.03 -1.14 -0.71 -1.48 -1.5 -1.48 -1.5s-0.14 1.05 -1.86 2.12c-0.5 0.31 -1.1 1 -1.43 2.02C5.93 9.56 6 10.22 6 11.33c0 3.26 2.69 6 6 6s6 -2.76 6 -6c0 -2.03 -0.21 -2.82 -0.73 -3.53z",fill:"#FFDC5D",stroke:"none"},{d:"M8.49 3.98h1.83v2.59h-1.83z",fill:"#FFAC33",stroke:"none"},{d:"M12.67 13h-1.33c-0.18 0 -0.33 -0.15 -0.33 -0.33s0.15 -0.33 0.33 -0.33h1.33c0.18 0 0.33 0.15 0.33 0.33s-0.15 0.33 -0.33 0.33z",fill:"#C1694F",stroke:"none"},{d:"M12.49 12.26l1.22 0.46s-4.35 9.16 -4.94 10.01c-0.59 0.85 -1.25 1.37 -3.05 1.17l6.77 -11.65zM17.33 21.33h0.67v2.67h-0.67z",fill:"#DD551F",stroke:"none"},{d:"M9.99 18.93s-1.57 2.95 -1.91 3.56c-0.18 0.33 -0.87 1.34 -1.55 1.34 0 0 1.48 0.08 2.08 -1.12 0.86 -1.7 1.3 -2.52 1.62 -3.1 0 0 -0.08 -0.22 -0.14 -0.32 -0.08 -0.16 -0.1 -0.35 -0.1 -0.35z",fill:"#DD551F",stroke:"none"},{d:"M16.1 10.91c-0.02 -0.04 -0.4 -0.86 -1.16 -1.02l-0.33 0.93c0.02 0 0.04 -0.01 0.07 -0.01 0.77 0 1.17 0.28 1.18 0.29 0.03 0.02 0.06 0.03 0.1 0.03 0.04 0 0.07 -0.01 0.1 -0.03 0.06 -0.04 0.08 -0.12 0.05 -0.19z",fill:"#662113",stroke:"none"},{d:"M15.1 5.42l-2.52 -0.88c-0.69 -0.24 -1.46 0.12 -1.7 0.82l-0.5 1.44 -0.19 -0.76c-0.11 -0.46 -0.55 -0.99 -1.18 -0.8 -0.45 0.14 -0.59 0.75 -0.48 1.21l0.82 3.29 -0.23 0.66 0.41 0.85 3.77 1.32c0.63 0.22 0.85 -0.41 0.85 -0.41l0.46 -1.32 0.33 -0.93 0.97 -2.78c0.24 -0.69 -0.12 -1.46 -0.82 -1.7z",fill:"#EF9645",stroke:"none"},{d:"M14.68 9.86c-0.94 0 -1.4 1.01 -1.42 1.05 -0.03 0.07 -0.01 0.14 0.05 0.19 0.06 0.05 0.14 0.05 0.19 0 0 0 0.39 -0.26 1.12 -0.28l0.33 -0.93c-0.08 -0.02 -0.17 -0.03 -0.26 -0.03z",fill:"#4F140B",stroke:"none"},{d:"M8.34 5.1c0.46 -0.11 0.92 0.17 1.04 0.62l0.19 0.76 0.5 -1.44c0.24 -0.69 1 -1.06 1.7 -0.82l2.52 0.88c0.69 0.24 1.06 1 0.82 1.7l-1.77 5.03s-0.22 0.63 -0.85 0.41L8.71 10.93l-0.41 -0.85 0.23 -0.66 -0.82 -3.29c-0.11 -0.46 0.17 -0.92 0.62 -1.04z",fill:"#FFDC5D",stroke:"none"},{d:"M12.5 8.04l1.1 -3.15 0.63 0.22 -1.1 3.15zm-1.89 -0.66l1.1 -3.15 0.63 0.22 -1.1 3.15z",fill:"#EF9645",stroke:"none"},{d:"M14 15.58s-0.37 -0.74 -1.12 -1.12c-0.16 0.34 -0.34 0.72 -0.54 1.12h1.66z",fill:"#C1694F",stroke:"none"},{d:"M12.49 12.26l-1.27 2.16 -0.68 1.16 -0.77 1.32L10 18.67c0 0.4 0.12 0.76 0.32 1.07 0.65 -1.32 1.4 -2.86 2.02 -4.16l0.54 -1.12c0.49 -1.03 0.83 -1.74 0.83 -1.74l-1.22 -0.46z",fill:"#EF9645",stroke:"none"},{d:"M12.88 14.46c-0.25 -0.13 -0.55 -0.21 -0.88 -0.21 -0.29 0 -0.55 0.07 -0.77 0.17l-0.68 1.16h1.8l0.54 -1.12z",fill:"#662113",stroke:"none"},{d:"M9.52 19.9s-1.15 2.39 -1.4 2.94C7.66 23.83 6.67 24 6.67 24c-5.33 0 -2.41 -5.56 -2.41 -5.56l4.29 -7.9 4.36 1.72 -3.38 7.64z",fill:"#FA743E",stroke:"none"}]},{id:"emoji-sleep",cat:"emoji",zh:"\u7761",en:"Sleep",kw:"sleep \u7761 \u7761\u89C9 \u56F0 \u75B2\u60EB",ink:A,layers:[{d:"M0 12A12 12 0 1 0 24 12A12 12 0 1 0 0 12Z",fill:"#FFCC4D",stroke:"none"},{d:"M10 17.33A2 2 0 1 0 14 17.33A2 2 0 1 0 10 17.33Z",fill:"#664500",stroke:"none"},{d:"M11.54 11.07c-0.12 -0.1 -0.28 -0.1 -0.41 -0.01 -0.01 0.01 -0.84 0.6 -2.47 0.6 -1.63 0 -2.46 -0.6 -2.47 -0.6 -0.12 -0.09 -0.29 -0.09 -0.41 0.01 -0.12 0.09 -0.16 0.26 -0.1 0.4 0.04 0.09 1 2.2 2.97 2.2 1.97 0 2.93 -2.11 2.97 -2.2 0.06 -0.14 0.02 -0.3 -0.1 -0.39zm6.67 0c-0.12 -0.1 -0.28 -0.1 -0.41 -0.01 -0.01 0.01 -0.84 0.6 -2.47 0.6 -1.63 0 -2.46 -0.6 -2.47 -0.6 -0.12 -0.09 -0.29 -0.09 -0.41 0.01 -0.12 0.09 -0.16 0.26 -0.1 0.4 0.04 0.09 1 2.2 2.97 2.2 1.97 0 2.93 -2.11 2.97 -2.2 0.06 -0.14 0.02 -0.3 -0.1 -0.39z",fill:"#664500",stroke:"none"},{d:"M22.95 8.36c0 -0.03 0.02 -0.05 0.02 -0.08 0 -0.5 -0.37 -0.79 -0.82 -0.79h-2.39l2.85 -4c0.14 -0.19 0.19 -0.3 0.19 -0.54 0 -0.49 -0.43 -0.57 -0.59 -0.57h-3.57l-0.02 -0.46s-0.94 0.55 -1 0.59 -0.34 0.25 -0.34 0.66c0 0.5 0.36 0.79 0.82 0.79h2.1l-2.84 4c-0.06 0.1 -0.16 0.29 -0.16 0.49 0 0.41 0.34 0.62 0.74 0.62h4.21c0.17 0 0.34 -0.05 0.45 -0.12l1 -0.59h-0.65z",fill:"#FFAC33",stroke:"none"},{d:"M21.18 3.39h-2.1c-0.45 0 -0.82 -0.29 -0.82 -0.79s0.36 -0.79 0.82 -0.79h4.11c0.16 0 0.59 0.08 0.59 0.57 0 0.24 -0.05 0.35 -0.19 0.54l-2.85 4h2.39c0.45 0 0.82 0.29 0.82 0.79s-0.37 0.79 -0.82 0.79h-4.21c-0.4 0 -0.74 -0.2 -0.74 -0.62 0 -0.2 0.1 -0.39 0.16 -0.49l2.84 -3.99z",fill:"#2A6797",stroke:"none"},{d:"M16.59 4.99c0 -0.02 0.01 -0.04 0.01 -0.06 0 -0.38 -0.27 -0.59 -0.61 -0.59h-1.79l2.14 -2.99c0.1 -0.14 0.14 -0.23 0.14 -0.4 0 -0.37 -0.32 -0.42 -0.44 -0.42h-2.67l-0.02 -0.34s-0.7 0.41 -0.75 0.44c-0.05 0.03 -0.25 0.19 -0.25 0.49 0 0.38 0.27 0.59 0.61 0.59H14.53l-2.13 2.99c-0.05 0.08 -0.12 0.22 -0.12 0.37 0 0.31 0.25 0.46 0.55 0.46h3.15c0.13 0 0.26 -0.04 0.34 -0.09l0.75 -0.44h-0.49z",fill:"#FFAC33",stroke:"none"},{d:"M15.26 1.27h-1.57c-0.34 0 -0.61 -0.22 -0.61 -0.59 0 -0.38 0.27 -0.59 0.61 -0.59h3.08c0.12 0 0.44 0.06 0.44 0.42 0 0.18 -0.04 0.26 -0.14 0.4l-2.14 2.99h1.79c0.34 0 0.61 0.22 0.61 0.59s-0.27 0.59 -0.61 0.59h-3.15c-0.3 0 -0.55 -0.15 -0.55 -0.46 0 -0.15 0.08 -0.29 0.12 -0.37l2.13 -2.99z",fill:"#2A6797",stroke:"none"},{d:"M11.83 6.95c0 -0.02 0.01 -0.03 0.01 -0.05 0 -0.32 -0.23 -0.51 -0.52 -0.51h-1.53l1.83 -2.56c0.09 -0.12 0.12 -0.19 0.12 -0.35 0 -0.31 -0.27 -0.36 -0.38 -0.36h-2.28l-0.01 -0.29 -0.64 0.38c-0.04 0.02 -0.22 0.16 -0.22 0.42 0 0.32 0.23 0.51 0.52 0.51h1.34l-1.82 2.56c-0.04 0.06 -0.1 0.19 -0.1 0.31 0 0.27 0.22 0.39 0.47 0.39h2.7c0.11 0 0.22 -0.03 0.29 -0.08l0.64 -0.38h-0.42z",fill:"#FFAC33",stroke:"none"},{d:"M10.69 3.77H9.35c-0.29 0 -0.52 -0.19 -0.52 -0.51s0.23 -0.51 0.52 -0.51h2.63c0.1 0 0.38 0.05 0.38 0.36 0 0.15 -0.03 0.23 -0.12 0.35l-1.83 2.56h1.53c0.29 0 0.52 0.19 0.52 0.51s-0.23 0.51 -0.52 0.51h-2.7c-0.26 0 -0.47 -0.13 -0.47 -0.39 0 -0.13 0.06 -0.25 0.1 -0.31l1.82 -2.56z",fill:"#2A6797",stroke:"none"}]},{id:"emoji-delicious",cat:"emoji",zh:"\u597D\u5403",en:"Yummy",kw:"yummy delicious \u597D\u5403 \u998B \u6D41\u53E3\u6C34 \u7F8E\u5473",ink:A,layers:[{d:"M0 12A12 12 0 1 0 24 12A12 12 0 1 0 0 12Z",fill:"#FFCC4D",stroke:"none"},{d:"M4.67 11.33c-0.1 0 -0.2 -0.02 -0.3 -0.07 -0.33 -0.16 -0.46 -0.57 -0.3 -0.89C4.11 10.3 4.95 8.67 7.33 8.67c2.38 0 3.23 1.63 3.26 1.7 0.16 0.33 0.03 0.73 -0.3 0.89 -0.33 0.16 -0.72 0.03 -0.89 -0.29C9.38 10.92 8.85 10 7.33 10c-1.54 0 -2.07 0.96 -2.07 0.96 -0.12 0.23 -0.35 0.37 -0.6 0.37zM19.33 11.33c0.1 0 0.2 -0.02 0.3 -0.07 0.33 -0.16 0.46 -0.57 0.3 -0.89 -0.03 -0.07 -0.88 -1.7 -3.26 -1.7 -2.38 0 -3.23 1.63 -3.26 1.7 -0.16 0.33 -0.03 0.73 0.3 0.89 0.33 0.16 0.72 0.03 0.89 -0.29 0.03 -0.05 0.55 -0.97 2.07 -0.97 1.54 0 2.07 0.96 2.07 0.96 0.12 0.23 0.35 0.37 0.6 0.37zm0.34 4.35c0.22 -0.5 0.31 -0.84 0.31 -0.85 0.09 -0.36 -0.13 -0.72 -0.48 -0.81 -0.36 -0.09 -0.72 0.13 -0.81 0.48C18.64 14.7 17.39 19.33 12 19.33s-6.64 -4.63 -6.69 -4.83c-0.09 -0.36 -0.45 -0.57 -0.81 -0.48 -0.36 0.09 -0.57 0.45 -0.48 0.81C4.03 14.89 5.55 20.67 12 20.67c1.1 0 2.05 -0.18 2.88 -0.46 2.89 -0.97 4.25 -3.27 4.79 -4.53z",fill:"#664500",stroke:"none"},{d:"M21.6 17.79l-1.97 -2.03s-0.45 -0.29 -0.85 0.38c-0.52 0.88 -1.38 1.96 -2.62 2.78 -0.52 0.35 -1.43 0.79 -1.8 0.88 -0.49 0.11 -0.26 0.64 -0.26 0.64 0.39 -0.08 0.7 -0.2 0.7 -0.2l0.2 0.2 1.82 1.82c1.15 1.15 3.33 1.33 4.67 0s1.27 -3.31 0.12 -4.46z",fill:"#E75B70",stroke:"none"},{d:"M19.94 20.72c0.14 -0.14 0.14 -0.37 0 -0.51l-2.42 -2.42 -0.53 0.5 2.44 2.44c0.14 0.14 0.37 0.14 0.51 0z",fill:"#DE3146",stroke:"none"}]},{id:"emoji-hug",cat:"emoji",zh:"\u62E5\u62B1",en:"Hug",kw:"hug \u62E5\u62B1 \u62B1\u62B1 \u6E29\u6696 \u5B89\u6170",ink:A,layers:[{d:"M22.67 10.67c0 5.89 -4.78 10.67 -10.67 10.67 -5.89 0 -10.67 -4.78 -10.67 -10.67C1.33 4.78 6.11 0 12 0c5.89 0 10.67 4.78 10.67 10.67",fill:"#FFCC4D",stroke:"none"},{d:"M17.24 10.75c-0.1 -0.11 -0.25 -0.11 -0.36 -0.02 -0.02 0.02 -2.2 1.93 -4.88 1.93 -2.68 0 -4.86 -1.91 -4.88 -1.93 -0.11 -0.09 -0.26 -0.09 -0.36 0.02 -0.1 0.11 -0.12 0.28 -0.05 0.42C6.78 11.31 8.51 14.67 12 14.67s5.22 -3.35 5.29 -3.5c0.07 -0.14 0.05 -0.31 -0.05 -0.42z",fill:"#664500",stroke:"none"},{d:"M8.93 15.44l-1.03 -1.48s-0.36 -0.58 -0.94 -0.22c-0.58 0.36 -0.22 0.94 -0.22 0.94l1.17 2.25s0.1 0.51 -0.61 -0.06c-0.31 -0.25 -0.13 -0.11 -0.13 -0.11l-0.29 -0.24 -3.66 -3.01s-0.47 -0.5 -0.91 0.03c-0.43 0.53 0.15 0.89 0.15 0.89l3.46 2.84c-0.08 0.08 -0.32 0.36 -0.4 0.44l-3.7 -3.04s-0.47 -0.5 -0.91 0.03c-0.43 0.53 0.15 0.89 0.15 0.89l3.7 3.04c-0.07 0.09 -0.24 0.32 -0.31 0.41l-3.19 -2.62s-0.47 -0.5 -0.91 0.03c-0.43 0.53 0.15 0.89 0.15 0.89l3.4 2.79c-0.04 0.12 -0.24 0.43 -0.27 0.55l-2.45 -2.01s-0.47 -0.5 -0.9 0.03c-0.43 0.53 0.15 0.89 0.15 0.89l3.95 3.25 0.26 0.22c1.75 1.43 4.33 1.18 5.76 -0.57 1.31 -1.6 1.21 -3.9 -0.16 -5.38 -0.49 -0.52 -0.91 -1.1 -1.31 -1.69zm14.79 3.28c-0.43 -0.53 -0.9 -0.03 -0.9 -0.03l-2.45 2.01c-0.03 -0.12 -0.23 -0.43 -0.27 -0.55l3.4 -2.79s0.58 -0.37 0.15 -0.89c-0.43 -0.53 -0.91 -0.03 -0.91 -0.03l-3.19 2.62c-0.06 -0.09 -0.24 -0.32 -0.31 -0.41l3.7 -3.04s0.58 -0.37 0.15 -0.89c-0.43 -0.53 -0.9 -0.03 -0.9 -0.03l-3.71 3.04c-0.08 -0.09 -0.32 -0.36 -0.4 -0.44l3.46 -2.84s0.58 -0.37 0.15 -0.89c-0.43 -0.53 -0.91 -0.03 -0.91 -0.03l-3.66 3.01 -0.29 0.24s0.66 -0.56 -0.13 0.11c-0.79 0.67 -0.61 0.06 -0.61 0.06l1.17 -2.25s0.36 -0.58 -0.22 -0.94c-0.58 -0.36 -0.94 0.22 -0.94 0.22l-1.03 1.48c-0.41 0.59 -0.83 1.17 -1.32 1.69 -1.37 1.48 -1.47 3.78 -0.16 5.38 1.43 1.75 4.01 2 5.76 0.57l0.26 -0.22 3.95 -3.25c0 0 0.58 -0.37 0.15 -0.89z",fill:"#F4900C",stroke:"none"},{d:"M18.45 7.32C18.42 7.24 17.59 5.33 15.9 5.33c-1.69 0 -2.51 1.91 -2.55 1.99 -0.05 0.13 -0.02 0.27 0.08 0.36 0.1 0.09 0.24 0.09 0.35 0.01 0.01 -0.01 0.72 -0.54 2.12 -0.54 1.39 0 2.1 0.53 2.12 0.54 0.05 0.04 0.11 0.06 0.17 0.06 0.06 0 0.13 -0.02 0.18 -0.07 0.1 -0.09 0.14 -0.23 0.08 -0.36zm-7.33 0C11.08 7.24 10.26 5.33 8.57 5.33c-1.69 0 -2.51 1.91 -2.55 1.99 -0.05 0.13 -0.02 0.27 0.08 0.36 0.1 0.09 0.24 0.09 0.35 0.01 0.01 -0.01 0.72 -0.54 2.12 -0.54 1.39 0 2.1 0.53 2.12 0.54 0.05 0.04 0.11 0.06 0.17 0.06 0.06 0 0.13 -0.02 0.18 -0.07 0.1 -0.09 0.14 -0.23 0.08 -0.36z",fill:"#664500",stroke:"none"},{d:"M7.45 16.99s-1.73 2.21 0.32 4.97c0.14 0.19 0.5 0.1 0.35 -0.13 -0.17 -0.24 -1.83 -2.6 -0.27 -4.7 0 0 -0.25 -0.03 -0.4 -0.14zm9.06 0.07s1.73 2.21 -0.32 4.97c-0.14 0.19 -0.5 0.1 -0.35 -0.13 0.17 -0.24 1.83 -2.6 0.27 -4.7 0 0 0.25 -0.03 0.4 -0.14z",fill:"#B55005",stroke:"none"}]},{id:"emoji-party-face",cat:"emoji",zh:"\u6B22\u547C",en:"Partying",kw:"party celebrate \u6B22\u547C \u5E86\u795D \u6D3E\u5BF9 \u5F00\u5FC3",ink:A,layers:[{d:"M0 12.67A11.33 11.33 0 1 0 22.67 12.67A11.33 11.33 0 1 0 0 12.67Z",fill:"#FFCC4D",stroke:"none"},{d:"M10.67 17.33A1.33 1.67 0 1 0 13.33 17.33A1.33 1.67 0 1 0 10.67 17.33Z",fill:"#664500",stroke:"none"},{d:"M5.41 14.26c-0.12 0 -0.24 -0.03 -0.35 -0.1 -0.31 -0.2 -0.4 -0.61 -0.21 -0.92 0.61 -0.97 2.47 -2.63 5.13 -1.97 0.36 0.09 0.58 0.45 0.49 0.81 -0.09 0.36 -0.45 0.57 -0.81 0.49 -2.4 -0.59 -3.67 1.37 -3.68 1.39 -0.13 0.2 -0.34 0.31 -0.57 0.31zm7.98 -2.49c-0.19 0 -0.38 -0.08 -0.52 -0.24 -0.23 -0.28 -0.19 -0.71 0.09 -0.94 2.12 -1.74 4.51 -1.04 5.48 -0.43 0.31 0.2 0.4 0.61 0.21 0.92 -0.2 0.31 -0.61 0.4 -0.92 0.21 -0.09 -0.06 -2.03 -1.22 -3.92 0.33 -0.12 0.1 -0.27 0.15 -0.42 0.15z",fill:"#664500",stroke:"none"},{d:"M8.9 20.85c-0.05 0 -0.09 -0.01 -0.14 -0.02 -0.27 -0.08 -0.42 -0.35 -0.34 -0.62 0.29 -1.03 0.17 -2.02 -0.33 -2.72 -0.33 -0.47 -0.8 -0.75 -1.3 -0.79 -0.28 -0.02 -0.49 -0.25 -0.47 -0.53s0.25 -0.5 0.53 -0.47c0.8 0.05 1.54 0.49 2.05 1.2 0.67 0.95 0.85 2.26 0.47 3.57 -0.06 0.22 -0.26 0.36 -0.48 0.36zm7.36 -2.04c-0.09 0 -0.19 -0.03 -0.27 -0.08 -0.78 -0.51 -1.21 -1.41 -1.19 -2.46 0.02 -1.09 0.54 -2.1 1.32 -2.58 0.24 -0.14 0.54 -0.07 0.69 0.17 0.14 0.24 0.07 0.54 -0.17 0.69 -0.49 0.3 -0.83 1 -0.84 1.74 -0.01 0.7 0.26 1.29 0.75 1.61 0.23 0.15 0.29 0.46 0.14 0.69 -0.1 0.15 -0.25 0.22 -0.42 0.22z",fill:"#E2A62D",stroke:"none"},{d:"M11.45 1.81c-0.03 -0.03 -0.07 -0.05 -0.13 -0.06 0 0 -10.62 -2.02 -11.08 -1.61C-0.21 0.55 0.49 11.33 0.49 11.33c0 0.05 0.02 0.1 0.04 0.13 0.4 0.46 3.17 -1.34 6.19 -4 3.01 -2.67 5.13 -5.19 4.73 -5.65z",fill:"#DD2E44",stroke:"none"},{d:"M0.23 0.18C0.22 0.2 0.21 0.23 0.21 0.26 0.31 1.18 1.34 8.7 1.98 11.05c0.96 -0.54 1.93 -1.26 3.07 -2.17C4.08 7.1 0.77 0.1 0.23 0.18z",fill:"#EA596E",stroke:"none"},{d:"M19.93 19.49l-7.05 -0.87c-0.75 -0.07 -2.08 -0.07 -2.01 -1.27 0.06 -1.08 1.36 -0.92 2.32 -0.77l7.09 1.18 -0.35 1.73z",fill:"#3B88C3",stroke:"none"},{d:"M20.29 17.76l-2.81 -0.48c-0.33 -0.06 -0.62 0.43 -0.64 0.95 -0.02 0.58 0.15 0.87 0.48 0.94l2.76 0.34 0.21 -1.75z",fill:"#88C9F9",stroke:"none"},{d:"M23.28 17.56l-1.75 1.61 -3.12 -3.4 1.75 -1.61c0.91 -0.83 2.33 -0.77 3.17 0.13l0.09 0.1c0.83 0.91 0.77 2.33 -0.13 3.17z",fill:"#3B88C3",stroke:"none"},{d:"M18.12 17.47A1.85 2.31 0 1 0 21.81 17.47A1.85 2.31 0 1 0 18.12 17.47Z",fill:"#88C9F9",stroke:"none"},{d:"M19.05 17.47A0.93 1.39 0 1 0 20.89 17.47A0.93 1.39 0 1 0 19.05 17.47Z",fill:"#269",stroke:"none"},{d:"M0.67 22.33A1 1 0 1 0 2.67 22.33A1 1 0 1 0 0.67 22.33Z",fill:"#55ACEE",stroke:"none"},{d:"M18 1.33A1.33 1.33 0 1 0 20.67 1.33A1.33 1.33 0 1 0 18 1.33Z",fill:"#55ACEE",stroke:"none"},{d:"M3.24 19.5L1.68 15.75 0.27 19.78zM17.33 3.33l-2.67 0.67 0.67 -2.67z",fill:"#EA596E",stroke:"none"},{d:"M21.33 8.67L24 5.33 22 4z",fill:"#77B255",stroke:"none"}]},{id:"emoji-halo",cat:"emoji",zh:"\u5929\u4F7F",en:"Angel",kw:"halo angel \u5929\u4F7F \u5584\u826F \u65E0\u8F9C \u5149\u73AF",ink:A,layers:[{d:"M0 12A12 12 0 1 0 24 12A12 12 0 1 0 0 12Z",fill:"#FFCC4D",stroke:"none"},{d:"M18.22 15.09c-0.12 -0.11 -0.3 -0.11 -0.42 -0.02 -0.03 0.02 -2.61 1.93 -5.8 1.93 -3.18 0 -5.77 -1.91 -5.8 -1.93 -0.13 -0.09 -0.3 -0.09 -0.42 0.02 -0.12 0.11 -0.14 0.28 -0.06 0.42C5.8 15.65 7.86 19 12 19s6.2 -3.35 6.29 -3.5c0.08 -0.14 0.06 -0.31 -0.06 -0.42zM17.33 12.67c-0.28 0 -0.54 -0.18 -0.63 -0.46C16.57 11.81 16.02 10.67 15.33 10.67c-0.71 0 -1.26 1.22 -1.37 1.54 -0.12 0.35 -0.49 0.54 -0.84 0.42 -0.35 -0.12 -0.54 -0.49 -0.42 -0.84C12.78 11.54 13.57 9.33 15.33 9.33s2.55 2.2 2.63 2.46c0.12 0.35 -0.07 0.73 -0.42 0.84 -0.07 0.02 -0.14 0.03 -0.21 0.03zm-6.67 0c-0.28 0 -0.54 -0.18 -0.63 -0.46C9.9 11.81 9.36 10.67 8.67 10.67c-0.71 0 -1.26 1.22 -1.37 1.54 -0.12 0.35 -0.49 0.54 -0.84 0.42 -0.35 -0.12 -0.54 -0.49 -0.42 -0.84C6.12 11.54 6.9 9.33 8.67 9.33s2.55 2.2 2.63 2.46c0.12 0.35 -0.07 0.73 -0.42 0.84 -0.07 0.02 -0.14 0.03 -0.21 0.03z",fill:"#664500",stroke:"none"},{d:"M22.12 5.54s-6.03 0.11 -10.12 0.11c-2.6 0 -10.14 -0.08 -10.14 -0.08l-0.35 0.58c2.03 1.24 6.04 1.94 10.48 1.94 4.4 0 8.38 -0.69 10.43 -1.91l0.05 -0.03s-0.25 -0.44 -0.37 -0.62z",fill:"#FFAC33",stroke:"none"},{d:"M15.85 0.23c-0.81 -0.06 -1.65 -0.11 -2.52 -0.13C12.9 0.09 12.45 0.09 12 0.09c-0.45 0 -0.89 0.01 -1.33 0.02 -0.87 0.02 -1.71 0.06 -2.52 0.13C3.56 0.59 0.11 1.63 0.11 3.52c0 2.39 5.51 3.85 11.89 3.85s11.89 -1.46 11.89 -3.85c0 -1.89 -3.45 -2.94 -8.04 -3.29zM12 4.92c-4.57 0 -8.61 -0.56 -8.61 -1.82 0 -0.36 0.33 -0.68 0.89 -0.97 0.77 -0.39 1.99 -0.7 3.46 -0.9 1.27 -0.17 2.73 -0.27 4.25 -0.27 1.53 0 2.99 0.1 4.27 0.28 1.49 0.21 2.72 0.52 3.49 0.92 0.54 0.28 0.85 0.6 0.85 0.95 0 1.27 -4.03 1.82 -8.61 1.82z",fill:"#5DADEC",stroke:"none"},{d:"M16.27 1.24c1.49 0.21 2.72 0.52 3.49 0.92l0.04 0.01c-1.52 -1.12 -3.05 -1.71 -3.94 -1.93 -0.81 -0.06 -1.65 -0.11 -2.52 -0.13l0.01 0L16.27 1.24zM4.29 2.13c0.77 -0.39 1.99 -0.7 3.46 -0.9L10.66 0.11l0.02 -0.01c-0.87 0.02 -1.71 0.06 -2.52 0.13 -0.9 0.23 -2.42 0.82 -3.95 1.93l0.08 -0.03z",fill:"#3B94D9",stroke:"none"},{d:"M18.98 2.25c-0.44 -0.3 -0.9 -0.61 -1.33 -0.84C15.96 0.51 14.04 0 12 0c-1.95 0 -3.8 0.47 -5.43 1.29 -0.73 0.37 -1.25 0.67 -1.45 0.96h13.85z",fill:"#FFCC4D",stroke:"none"}]},{id:"emoji-starstruck",cat:"emoji",zh:"\u661F\u661F\u773C",en:"Star struck",kw:"starstruck \u661F\u661F\u773C \u5D07\u62DC \u60CA\u559C \u60CA\u8273",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12S0 18.63 0 12 5.37 0 12 0s12 5.37 12 12",fill:"#FFCC4D",stroke:"none"},{d:"M12 14c-2.42 0 -4.02 -0.28 -6 -0.67 -0.45 -0.09 -1.33 0 -1.33 1.33 0 2.67 3.06 6 7.33 6 4.27 0 7.33 -3.33 7.33 -6 0 -1.33 -0.88 -1.42 -1.33 -1.33 -1.98 0.39 -3.58 0.67 -6 0.67z",fill:"#664500",stroke:"none"},{d:"M6 14.67s2 0.67 6 0.67 6 -0.67 6 -0.67 -1.33 2.67 -6 2.67 -6 -2.67 -6 -2.67z",fill:"#FFF",stroke:"none"},{d:"M10.45 2.94l-3.03 0.53L5.87 0.64C5.69 0.33 5.34 0.16 4.99 0.22c-0.35 0.06 -0.62 0.34 -0.68 0.69l-0.5 3.2 -3.03 0.53c-0.36 0.06 -0.63 0.35 -0.68 0.71s0.14 0.71 0.47 0.86l2.71 1.29 -0.5 3.21c-0.06 0.36 0.13 0.71 0.45 0.87 0.12 0.06 0.25 0.09 0.37 0.09 0.22 0 0.43 -0.09 0.59 -0.25l2.34 -2.37 3.01 1.43c0.33 0.15 0.72 0.08 0.96 -0.18 0.25 -0.26 0.3 -0.66 0.12 -0.97L9.08 6.49l2.11 -2.14c0.25 -0.26 0.31 -0.65 0.14 -0.97 -0.17 -0.32 -0.53 -0.5 -0.88 -0.43zm3.09 0l3.03 0.53L18.13 0.64c0.17 -0.31 0.53 -0.48 0.87 -0.42 0.35 0.06 0.62 0.34 0.68 0.69l0.5 3.2 3.03 0.53c0.36 0.06 0.63 0.35 0.68 0.71s-0.14 0.71 -0.47 0.86l-2.71 1.29 0.5 3.21c0.06 0.36 -0.13 0.71 -0.45 0.87 -0.12 0.06 -0.25 0.09 -0.37 0.09 -0.22 0 -0.43 -0.09 -0.59 -0.25l-2.34 -2.37 -3.01 1.43c-0.33 0.15 -0.72 0.08 -0.96 -0.18 -0.25 -0.26 -0.3 -0.66 -0.12 -0.97l1.57 -2.84 -2.11 -2.14c-0.25 -0.26 -0.31 -0.65 -0.14 -0.97 0.17 -0.32 0.53 -0.5 0.88 -0.43z",fill:"#E95F28",stroke:"none"}]},{id:"emoji-plead",cat:"emoji",zh:"\u6073\u6C42",en:"Pleading",kw:"plead \u6073\u6C42 \u8BF7\u6C42 \u53EF\u601C \u62DC\u6258 \u59D4\u5C48",ink:A,layers:[{d:"M0 12A12 12 0 1 0 24 12A12 12 0 1 0 0 12Z",fill:"#FFCC4D",stroke:"none"},{d:"M14 18c-0.07 0 -0.14 -0.01 -0.21 -0.03 -1.17 -0.38 -2.41 -0.38 -3.58 0 -0.35 0.11 -0.73 -0.08 -0.84 -0.43 -0.11 -0.35 0.08 -0.73 0.43 -0.84 1.44 -0.47 2.96 -0.47 4.41 0 0.35 0.11 0.54 0.49 0.43 0.84 -0.09 0.28 -0.35 0.46 -0.63 0.46z",fill:"#65471B",stroke:"none"},{d:"M20.22 8.05c-0.6 1.83 -2.32 3.14 -4.33 3.14 -0.1 0 -0.19 0 -0.29 -0.01 -0.98 -0.06 -1.89 -0.44 -2.63 -1.06 0.02 0.33 0.05 0.66 0.09 1.03 0.1 0.93 0.59 1.65 1.41 2.11 0.55 0.3 1.2 0.46 1.88 0.5 1.16 0.07 2.38 -0.19 3.25 -0.61 0.92 -0.44 1.51 -1.24 1.64 -2.19 0.12 -0.94 -0.24 -1.95 -1.01 -2.92z",fill:"#FFF",stroke:"none"},{d:"M14.23 5.06c-0.86 0.37 -1.3 1.53 -1.32 3.53l0.03 0.05c0.6 0.88 1.58 1.48 2.73 1.55 0.08 0 0.15 0.01 0.23 0.01 1.76 0 3.23 -1.29 3.5 -3.02 -0.08 -0.07 -0.15 -0.14 -0.23 -0.21 -2.48 -2.11 -4.31 -2.17 -4.93 -1.91z",fill:"#65471B",stroke:"none"},{d:"M15.89 11.19c2.01 0 3.73 -1.31 4.33 -3.14 -0.24 -0.3 -0.51 -0.59 -0.83 -0.87 -0.27 1.72 -1.75 3.02 -3.5 3.02 -0.08 0 -0.15 0 -0.23 -0.01 -1.14 -0.07 -2.13 -0.68 -2.73 -1.55l-0.03 -0.05c0 0.47 0.01 0.98 0.06 1.54 0.74 0.62 1.65 0.99 2.63 1.06 0.1 0.01 0.19 0.01 0.29 0.01z",fill:"#F4900C",stroke:"none"},{d:"M13.54 7.14A0.74 0.74 0 1 0 15.01 7.14A0.74 0.74 0 1 0 13.54 7.14Z",fill:"#FFF",stroke:"none"},{d:"M8.11 11.19c-2.01 0 -3.73 -1.31 -4.33 -3.14 -0.77 0.97 -1.13 1.98 -1.01 2.92 0.12 0.95 0.72 1.75 1.64 2.19 0.87 0.42 2.09 0.68 3.25 0.61 0.68 -0.04 1.33 -0.2 1.88 -0.5 0.82 -0.45 1.31 -1.18 1.41 -2.11 0.04 -0.36 0.07 -0.69 0.09 -1.02 -0.74 0.62 -1.65 0.99 -2.63 1.05 -0.1 0.01 -0.19 0.01 -0.29 0.01z",fill:"#FFF",stroke:"none"},{d:"M8.11 10.19c0.08 0 0.15 0 0.23 -0.01 1.14 -0.07 2.13 -0.68 2.73 -1.55l0.03 -0.05c-0.02 -1.99 -0.45 -3.16 -1.32 -3.53 -0.62 -0.26 -2.46 -0.21 -4.93 1.91 -0.08 0.07 -0.15 0.14 -0.23 0.21 0.27 1.73 1.75 3.02 3.5 3.02z",fill:"#65471B",stroke:"none"},{d:"M11.08 8.58l-0.03 0.05c-0.6 0.88 -1.58 1.48 -2.73 1.55 -0.08 0 -0.15 0.01 -0.23 0.01 -1.76 0 -3.23 -1.29 -3.5 -3.02 -0.31 0.29 -0.59 0.58 -0.83 0.87 0.6 1.83 2.32 3.14 4.33 3.14 0.1 0 0.19 0 0.29 -0.01 0.99 -0.06 1.9 -0.44 2.63 -1.05 0.04 -0.56 0.06 -1.08 0.06 -1.54z",fill:"#F4900C",stroke:"none"},{d:"M6.52 7.87c0.41 -0.03 0.72 -0.38 0.69 -0.78 -0.03 -0.41 -0.38 -0.72 -0.78 -0.69 -0.41 0.03 -0.72 0.38 -0.69 0.78 0.03 0.41 0.38 0.72 0.78 0.69z",fill:"#FFF",stroke:"none"}]},{id:"emoji-explode",cat:"emoji",zh:"\u7206\u70B8",en:"Exploding",kw:"explode \u7206\u70B8 \u9707\u60CA \u5D29\u6E83 \u5934\u8111",ink:A,layers:[{d:"M23.33 12.41c0 -2.53 -2.05 -4.58 -4.58 -4.58 -0.65 0 -1.83 0.39 -1.83 0.39l-8.75 0.92s-1.81 -1.05 -2.92 -1.05C2.72 8.09 0.67 10.14 0.67 12.67c0 0.16 0.01 0.31 0.02 0.47C0.94 19.18 5.9 24 12 24c6.26 0 11.33 -5.07 11.33 -11.33 0 -0.03 -0.01 -0.07 -0.01 -0.1 0 -0.05 0.01 -0.1 0.01 -0.15z",fill:"#FFCB4C",stroke:"none"},{d:"M20.08 9.17c-0.63 -0.16 -0.67 0.26 -1.47 0.16 -0.78 -0.09 0.29 -0.49 -0.13 -0.73 -0.14 -0.08 -0.34 -0.1 -0.59 -0.07 -0.7 0.09 -11.3 0.36 -11.7 0.55 -0.35 0.17 -0.56 0.37 -0.88 0.07 -0.4 -0.37 -0.98 -0.16 -1.14 -0.03 -0.21 0.16 -0.26 0.48 0.16 0.85 0.41 0.28 1.12 0.57 2.31 0.77 0.13 0.02 0.24 0.03 0.35 0.03 0.82 0.03 0.93 -1.11 2.09 -1.14 0.76 -0.02 7.44 0.71 7.99 0.64 0.07 -0.01 0.14 -0.02 0.22 -0.02 1.04 0 1.28 0.97 2.39 0.21 0.47 -0.38 1.21 -1.1 0.41 -1.31z",fill:"#F19020",stroke:"none"},{d:"M3.96 6.08c1.02 1.02 1.74 2.1 2.24 3.02 0.38 0.69 0.64 1.29 0.79 1.69 0.82 0.03 0.93 -0.45 2.09 -0.48 0.76 -0.02 1.19 0.51 1.75 0.82 1 0.55 1.71 -0.49 2.48 -0.49 0.57 0 1.48 0.8 2.12 0.51 0.92 -0.43 1.09 -0.79 1.64 -0.87 0.21 -0.53 0.49 -1.13 0.83 -1.74 0.49 -0.88 1.12 -1.78 1.89 -2.46H3.96z",fill:"#F36C24",stroke:"none"},{d:"M19.54 6.29c0.85 -0.84 -15.36 0.01 -14.89 0.53 0.66 0.73 1.47 2.1 1.47 2.1s3.17 1.6 5.57 -0.42c1.67 1 4 0.65 5.04 -1.07 0 0 0.81 0.3 1.63 0.35 0 0 0.64 -0.95 1.18 -1.49z",fill:"#CE5C1F",stroke:"none"},{d:"M9.11 19.09A2.89 3.3 0 1 0 14.89 19.09A2.89 3.3 0 1 0 9.11 19.09Z",fill:"#65471B",stroke:"none"},{d:"M9.33 13.74c0 0.98 -0.6 1.78 -1.33 1.78 -0.74 0 -1.33 -0.8 -1.33 -1.78 0 -0.98 0.6 -1.78 1.33 -1.78 0.74 0 1.33 0.8 1.33 1.78zm8 0c0 0.98 -0.6 1.78 -1.33 1.78s-1.33 -0.8 -1.33 -1.78c0 -0.98 0.6 -1.78 1.33 -1.78 0.74 0 1.33 0.8 1.33 1.78z",fill:"#65471B",stroke:"none"},{d:"M20.75 2.48c-0.16 0 -0.31 0.03 -0.46 0.07 -0.46 -0.56 -1.15 -0.93 -1.93 -0.93 -0.06 0 -0.11 0.01 -0.17 0.02 -0.49 -0.55 -1.2 -0.91 -1.99 -0.91 -1 0 -1.87 0.56 -2.32 1.38 -0.23 -0.53 -0.76 -0.9 -1.38 -0.9 -0.48 0 -0.9 0.23 -1.17 0.58C10.99 0.81 10.07 0.1 8.97 0.1c-0.88 0 -1.65 0.46 -2.1 1.15 -0.12 -0.02 -0.25 -0.04 -0.37 -0.04 -0.95 0 -1.77 0.54 -2.2 1.33 -0.14 -0.03 -0.27 -0.04 -0.42 -0.04 -1.24 0 -2.25 1.01 -2.25 2.25s1.01 2.25 2.25 2.25c0.39 0 0.76 -0.11 1.08 -0.28 0.25 0.19 0.56 0.3 0.9 0.3 0.1 0 0.19 -0.01 0.28 -0.03 0.57 0.92 1.58 1.54 2.74 1.54 1.14 0 2.14 -0.59 2.72 -1.48 0.48 0.59 1.2 0.97 2.02 0.97 1.21 0 2.22 -0.83 2.52 -1.94 0.02 0 0.04 0.01 0.07 0.01 0.19 0 0.37 -0.02 0.55 -0.06 0.44 0.37 0.99 0.6 1.61 0.6 0.78 0 1.47 -0.37 1.93 -0.93 0.15 0.04 0.3 0.07 0.46 0.07 0.91 0 1.64 -0.74 1.64 -1.64s-0.74 -1.64 -1.64 -1.64z",fill:"#CCD6DD",stroke:"none"},{d:"M17.11 3.85A1.41 1.41 0 1 0 19.95 3.85A1.41 1.41 0 1 0 17.11 3.85Z",fill:"#E1E8ED",stroke:"none"},{d:"M13.25 3.94c0 -0.8 -0.64 -1.44 -1.44 -1.44 -0.25 0 -0.47 0.07 -0.68 0.18 -0.17 -0.4 -0.56 -0.68 -1.02 -0.68 -0.38 0 -0.71 0.19 -0.91 0.48 -0.45 -0.42 -1.04 -0.68 -1.7 -0.68 -1.17 0 -2.14 0.81 -2.42 1.89 -0.24 -0.24 -0.58 -0.4 -0.95 -0.4 -0.74 0 -1.34 0.6 -1.34 1.34s0.6 1.34 1.34 1.34c0.47 0 0.88 -0.24 1.12 -0.6 0.34 0.72 1.02 1.25 1.83 1.39 0.26 0.45 0.74 0.75 1.29 0.75 0.72 0 1.31 -0.5 1.46 -1.17 0.22 0.12 0.46 0.19 0.72 0.19 0.71 0 1.31 -0.5 1.46 -1.17 0.69 -0.1 1.23 -0.7 1.23 -1.42z",fill:"#E1E8ED",stroke:"none"}]},{id:"emoji-thumb",cat:"emoji",zh:"\u5F3A",en:"Thumbs up",kw:"thumb like good \u5F3A \u70B9\u8D5E \u5F88\u68D2 \u8D5E \u5389\u5BB3",ink:A,layers:[{d:"M23.3 11.94c0 -0.34 -0.08 -0.65 -0.21 -0.94 -0.89 -2.88 -5.08 -2.67 -11.03 -2.81 -1 -0.02 -0.43 -1.2 -0.08 -3.78 0.23 -1.68 -0.85 -4.25 -2.67 -4.25 -3 0 -0.11 2.37 -2.77 8.21 -1.42 3.13 -4.58 1.37 -4.58 4.51v7.15c0 1.22 0.12 2.4 1.84 2.59C5.46 22.81 5.09 24 7.49 24h12.03c1.23 0 2.22 -1 2.22 -2.22 0 -0.51 -0.18 -0.97 -0.47 -1.35 0.68 -0.38 1.15 -1.1 1.15 -1.93 0 -0.51 -0.18 -0.97 -0.46 -1.34 0.68 -0.38 1.15 -1.1 1.15 -1.93 0 -0.61 -0.25 -1.16 -0.64 -1.56 0.5 -0.41 0.83 -1.02 0.83 -1.72z",fill:"#FFDB5E",stroke:"none"},{d:"M15.35 14.17h5.74c0.78 0 1.51 -0.42 1.91 -1.09 0.16 -0.28 0.07 -0.63 -0.2 -0.8 -0.28 -0.16 -0.63 -0.07 -0.8 0.2 -0.19 0.32 -0.54 0.52 -0.91 0.52h-5.87c-0.58 0 -1.06 -0.47 -1.06 -1.06s0.47 -1.06 1.06 -1.06H19.13c0.32 0 0.58 -0.26 0.58 -0.58s-0.26 -0.58 -0.58 -0.58h-3.93c-1.23 0 -2.22 1 -2.22 2.22 0 0.68 0.32 1.29 0.8 1.7 -0.41 0.4 -0.67 0.96 -0.67 1.58 0 0.69 0.32 1.29 0.81 1.7 -0.41 0.4 -0.66 0.96 -0.66 1.58 0 0.75 0.37 1.41 0.94 1.81 -0.35 0.39 -0.57 0.9 -0.57 1.47 0 1.23 1 2.22 2.22 2.22h3.66c0.78 0 1.51 -0.42 1.91 -1.09 0.16 -0.28 0.07 -0.63 -0.2 -0.8 -0.28 -0.16 -0.64 -0.07 -0.8 0.2 -0.19 0.32 -0.54 0.52 -0.91 0.52h-3.66c-0.58 0 -1.06 -0.47 -1.06 -1.06s0.47 -1.06 1.06 -1.06h4.34c0.78 0 1.51 -0.42 1.91 -1.09 0.16 -0.28 0.07 -0.64 -0.2 -0.8 -0.28 -0.17 -0.64 -0.07 -0.8 0.2 -0.19 0.32 -0.53 0.52 -0.91 0.52h-4.71c-0.58 0 -1.06 -0.47 -1.06 -1.06s0.47 -1.06 1.06 -1.06h5.39c0.78 0 1.51 -0.42 1.91 -1.09 0.16 -0.28 0.07 -0.63 -0.2 -0.8 -0.28 -0.16 -0.64 -0.07 -0.8 0.2 -0.19 0.32 -0.53 0.52 -0.91 0.52H15.35c-0.58 0 -1.06 -0.47 -1.06 -1.06s0.47 -1.06 1.06 -1.06z",fill:"#EE9547",stroke:"none"}]},{id:"emoji-clap",cat:"emoji",zh:"\u9F13\u638C",en:"Clap",kw:"clap \u9F13\u638C \u62CD\u624B \u6B22\u8FCE \u79F0\u8D5E",ink:A,layers:[{d:"M21.53 16.23c-0.46 -0.67 -0.2 -1.65 -0.32 -2.72 -0.12 -1.75 -0.87 -3.45 -2.33 -4.81l-4.98 -4.63s-0.98 -0.91 -1.89 0.07c-0.91 0.98 0.07 1.89 0.07 1.89l2.1 1.96 1.82 1.69s-0.46 0.49 -2.47 -1.39l-6.81 -6.34s-0.98 -0.91 -1.89 0.07c-0.91 0.98 0.07 1.89 0.07 1.89l6.44 5.99c-0.01 -0.01 -0.49 0.46 -0.5 0.45L3.94 3.96s-0.98 -0.91 -1.89 0.07c-0.91 0.98 0.07 1.89 0.07 1.89L9.01 12.33c0.01 0.01 -0.44 0.51 -0.42 0.52l-5.95 -5.53s-0.98 -0.91 -1.89 0.07c-0.91 0.98 0.07 1.89 0.07 1.89l6.32 5.88c0.06 0.05 -0.33 0.61 -0.26 0.67l-4.56 -4.24s-0.98 -0.91 -1.89 0.07c-0.91 0.98 0.07 1.89 0.07 1.89L7.93 20.47c1.24 1.15 2.51 1.74 4.05 1.95 0.31 0.04 0.71 0.04 0.88 0.06 0.52 0.07 0.97 0.25 1.58 0.62 0.78 0.48 1.96 0.68 2.63 -0.04l2.3 -2.46 2.13 -2.27c0.67 -0.72 0.55 -1.34 0.03 -2.1z",fill:"#EF9645",stroke:"none"},{d:"M1.3 23.35c-0.17 0 -0.34 -0.07 -0.47 -0.2 -0.26 -0.26 -0.26 -0.68 0 -0.94L3.2 19.85c0.26 -0.26 0.68 -0.26 0.94 0s0.26 0.68 0 0.94l-2.37 2.37c-0.13 0.13 -0.3 0.19 -0.47 0.19zm4.5 0.61c-0.07 0 -0.15 -0.01 -0.22 -0.04 -0.35 -0.12 -0.53 -0.5 -0.41 -0.85l0.65 -1.85c0.12 -0.35 0.5 -0.53 0.85 -0.41 0.35 0.12 0.53 0.5 0.41 0.85l-0.65 1.85c-0.1 0.27 -0.35 0.45 -0.63 0.45zm-5.11 -5.11c-0.27 0 -0.53 -0.17 -0.63 -0.44 -0.12 -0.35 0.06 -0.73 0.41 -0.85l1.66 -0.59c0.35 -0.12 0.73 0.06 0.85 0.41 0.12 0.35 -0.06 0.73 -0.41 0.85l-1.66 0.59c-0.07 0.03 -0.15 0.04 -0.22 0.04zm19.64 -14.51c-0.17 0 -0.34 -0.07 -0.47 -0.2 -0.26 -0.26 -0.26 -0.68 0 -0.94l2.37 -2.37c0.26 -0.26 0.68 -0.26 0.94 0s0.26 0.68 0 0.94l-2.37 2.37c-0.13 0.13 -0.3 0.2 -0.47 0.2zm-2.78 -1.13c-0.07 0 -0.15 -0.01 -0.22 -0.04 -0.35 -0.12 -0.53 -0.5 -0.41 -0.85l0.65 -1.85c0.12 -0.35 0.5 -0.53 0.85 -0.41 0.35 0.12 0.53 0.5 0.41 0.85l-0.65 1.85c-0.1 0.28 -0.35 0.45 -0.63 0.45zm4.1 3.85c-0.27 0 -0.53 -0.17 -0.63 -0.44 -0.12 -0.35 0.06 -0.73 0.41 -0.85l1.66 -0.59c0.35 -0.12 0.73 0.06 0.85 0.41 0.12 0.35 -0.06 0.73 -0.41 0.85l-1.66 0.59c-0.07 0.03 -0.15 0.04 -0.22 0.04z",fill:"#FA743E",stroke:"none"},{d:"M23.59 15.88c-0.44 -0.69 -0.15 -1.65 -0.23 -2.73 -0.06 -1.76 -0.76 -3.48 -2.17 -4.89l-4.82 -4.79s-0.95 -0.94 -1.9 0.01c-0.94 0.95 0.01 1.89 0.01 1.89l2.04 2.03 1.76 1.75s-0.47 0.47 -2.43 -1.47c-1.95 -1.94 -6.6 -6.56 -6.6 -6.56s-0.95 -0.94 -1.9 0.01c-0.95 0.95 0 1.89 0 1.89l6.24 6.21c-0.01 -0.01 -0.5 0.44 -0.51 0.44L6.43 3.02s-0.95 -0.95 -1.9 0c-0.94 0.95 0 1.89 0 1.89l6.67 6.64c0.01 0.01 -0.45 0.49 -0.44 0.51L5.01 6.34s-0.95 -0.94 -1.9 0.01 0 1.9 0 1.9l6.12 6.09c0.06 0.06 -0.35 0.59 -0.28 0.66l-4.41 -4.39s-0.95 -0.94 -1.9 0.01 0 1.9 0 1.9l7.19 7.15c1.2 1.2 2.45 1.82 3.98 2.09 0.31 0.05 0.71 0.07 0.87 0.09 0.52 0.08 0.96 0.28 1.56 0.68 0.77 0.51 1.93 0.75 2.63 0.05l2.38 -2.38 2.2 -2.2c0.7 -0.7 0.6 -1.33 0.1 -2.1z",fill:"#FFDB5E",stroke:"none"}]},{id:"emoji-pray",cat:"emoji",zh:"\u5408\u5341",en:"Pray",kw:"pray \u5408\u5341 \u7948\u7977 \u8C22\u8C22 \u62DC\u6258 \u611F\u6069",ink:A,layers:[{d:"M20 14.67c-2 0 -4.46 4.73 -4.67 6.67 -0.28 2.61 1.33 2.67 1.33 2.67h7.33V17.33s-2.29 -2.67 -4 -2.67z",fill:"#50A5E6",stroke:"none"},{d:"M14.49 18.99A3.9 1.09 0 1 0 22.28 18.99A3.9 1.09 0 1 0 14.49 18.99Z",fill:"#1C6399",stroke:"none"},{d:"M13.39 0c0.79 0 1.43 0.64 1.43 1.43 0 0.53 0.45 7.22 0.45 7.22L11.97 12V1.43C11.97 0.64 12.6 0 13.39 0z",fill:"#F9CA55",stroke:"none"},{d:"M12.58 2.88c0 -0.73 0.57 -1.33 1.27 -1.33 0.7 0 1.27 0.59 1.27 1.33 0 0 0.36 3.96 0.79 6.25 0.59 1.24 0.91 3.12 0.84 4.17 0.04 0.27 3.75 3.34 3.75 3.34 -0.19 1.21 -1.51 4.1 -3.17 5.44l-2.35 -1.95c-1.92 -0.27 -2.97 -2.22 -2.97 -2.84 0 -1.99 0.57 -14.4 0.57 -14.4z",fill:"#FFDC5D",stroke:"none"},{d:"M4 14.67c2 0 4.46 4.73 4.67 6.67 0.28 2.61 -1.33 2.67 -1.33 2.67H0V17.33s2.29 -2.67 4 -2.67z",fill:"#50A5E6",stroke:"none"},{d:"M4.53 18.99A1.09 3.9 0 1 0 6.71 18.99A1.09 3.9 0 1 0 4.53 18.99Z",fill:"#1C6399",stroke:"none"},{d:"M10.71 0.01c-0.84 -0.08 -1.56 0.58 -1.56 1.4 0 0.52 -0.12 6.88 -0.12 6.88L11.93 12l0.04 -10.51c0 -0.74 -0.53 -1.41 -1.26 -1.48z",fill:"#F9CA55",stroke:"none"},{d:"M11.42 2.88c0 -0.73 -0.57 -1.33 -1.27 -1.33 -0.7 0 -1.27 0.59 -1.27 1.33 0 0 -0.36 3.96 -0.79 6.25 -0.59 1.24 -0.91 3.12 -0.84 4.17 -0.04 0.27 -3.75 3.34 -3.75 3.34C3.68 17.84 5 20.73 6.67 22.07l2.35 -1.95c1.92 -0.27 2.97 -2.22 2.97 -2.84 0 -1.99 -0.57 -14.4 -0.57 -14.4z",fill:"#FFDC5D",stroke:"none"},{d:"M11.97 17.22c-0.28 0 -0.5 -0.22 -0.5 -0.5V1.86c0 -0.28 0.22 -0.5 0.5 -0.5s0.5 0.22 0.5 0.5v14.85c0 0.28 -0.22 0.5 -0.5 0.5z",fill:"#F9CA55",stroke:"none"}]},{id:"emoji-ok",cat:"emoji",zh:"OK",en:"OK hand",kw:"ok \u597D\u7684 \u53EF\u4EE5 \u6CA1\u95EE\u9898 \u624B\u52BF",ink:A,layers:[{d:"M15.48 13.96l-1.15 -4.57 -2.63 -5.88c-0.33 -0.86 0.1 -1.84 0.96 -2.17 0.86 -0.34 1.84 0.1 2.17 0.96l4.14 10.51 -3.49 1.15z",fill:"#EF9645",stroke:"none"},{d:"M21.04 12.3c-0.33 -1.72 -1.33 -4.35 -1.33 -4.35L15.86 0.96C15.44 0.13 14.43 -0.2 13.6 0.21c-0.83 0.42 -1.16 1.43 -0.74 2.26l3.55 6.36c0.01 0.01 0.94 3.66 0.94 3.66 -0.72 -0.66 -1.74 -1.57 -2.68 -2.41 -2.07 -1.85 -3.29 -2.54 -3.29 -2.54 -0.47 -0.3 -0.79 -0.34 -1.42 -0.04L6.05 9.22c-0.1 0.05 -0.19 0.13 -0.26 0.22l-1.54 2.06c-0.6 0.71 -0.5 1.77 0.21 2.36 0.71 0.6 1.77 0.5 2.37 -0.21 0.03 -0.04 1.19 -1.71 1.29 -1.76 0.69 -0.36 1.98 -0.96 2.54 -0.95 0.6 0.02 4.19 3.97 4.19 3.97 0.14 0.17 0.15 0.41 0.04 0.6l-1.94 3.49c-0.05 0.09 -0.13 0.16 -0.22 0.2l-1.78 1c-0.1 0.05 -0.22 0.07 -0.33 0.04l-3.51 -1.51c-0.17 -0.08 -0.32 -0.21 -0.39 -0.39 -0.52 -1.23 -0.6 -2.41 -0.6 -2.43 -0.04 -0.93 -0.83 -1.64 -1.76 -1.6 -0.92 0.04 -1.64 0.83 -1.6 1.76 0.01 0.18 0.23 3.76 3.15 6.19 1.69 1.41 3.77 1.95 6.43 1.59 3.07 -0.41 4.98 -0.82 7.67 -6.37 0.74 -1.54 1.27 -4.02 1.05 -5.19z",fill:"#FFDC5D",stroke:"none"}]},{id:"emoji-fist",cat:"emoji",zh:"\u62B1\u62F3",en:"Fist",kw:"fist \u62B1\u62F3 \u62F3\u5934 \u52A0\u6CB9 \u529B\u91CF",ink:A,layers:[{d:"M21.96 7.5c-0.03 -0.41 -0.19 -0.79 -0.45 -1.1l-0.24 -1.37c-0.25 -1.34 -1.49 -2.26 -2.84 -2.11L2.84 5.41C1.58 5.54 0.61 6.56 0.52 7.81l1.17 7.43c0.2 1.45 1.43 2.53 2.89 2.54 0.45 0.01 0.83 0.01 0.98 0.02l6.32 0.31c-0.24 0.32 -0.55 0.72 -0.55 1.15v0.03c0 1.05 1.18 2.04 2.24 2.04h4.85c0.51 0 0.99 -0.27 1.35 -0.63l2.95 -2.98c0.39 -0.39 0.59 -0.94 0.55 -1.49l-1.32 -8.74z",fill:"#FFDC5D",stroke:"none"},{d:"M5.48 17.75c-0.32 0 -0.6 -0.23 -0.66 -0.55L3.45 9.65c-0.07 -0.36 0.17 -0.71 0.54 -0.78 0.36 -0.06 0.71 0.17 0.78 0.54l1.37 7.55c0.07 0.36 -0.17 0.71 -0.54 0.77 -0.04 0.01 -0.08 0.01 -0.12 0.01zm4.12 0c-0.34 0 -0.64 -0.27 -0.66 -0.62l-0.69 -8.93c-0.03 -0.37 0.25 -0.69 0.61 -0.72 0.37 -0.03 0.69 0.25 0.72 0.61l0.69 8.93c0.03 0.37 -0.25 0.69 -0.61 0.72 -0.02 0 -0.04 0 -0.05 0zm4.8 0.74c-0.34 0 -0.5 0 -0.63 -0.71l-0.03 0c0 -0.04 0 -0.07 0.01 -0.11 -0.12 -0.71 -0.21 -2.05 -0.37 -4.54 -0.16 -2.33 -0.32 -5.03 -0.32 -5.66 0 -0.37 0.3 -0.67 0.67 -0.67 0.37 0 0.67 0.3 0.67 0.67 0 1.02 0.53 8.88 0.65 10.1 0.02 0.06 0.03 0.13 0.03 0.21 0 0.18 -0.07 0.37 -0.2 0.5s-0.3 0.22 -0.47 0.22z",fill:"#EF9645",stroke:"none"},{d:"M16.79 19.12H12.35c-0.37 0 -0.67 -0.3 -0.67 -0.67s0.3 -0.67 0.67 -0.67h4.44c0.97 0 1.76 -0.79 1.76 -1.76V7.47c0 -0.37 0.3 -0.67 0.67 -0.67s0.67 0.3 0.67 0.67V16.03c0 1.71 -1.39 3.1 -3.1 3.1z",fill:"#EF9645",stroke:"none"}]},{id:"emoji-finger-heart",cat:"emoji",zh:"\u6BD4\u5FC3",en:"Love you",kw:"finger heart \u6BD4\u5FC3 \u7231\u4F60 \u5FC3\u5F62\u624B\u52BF \u98DE\u543B",ink:A,layers:[{d:"M12.77 23.18c1.85 -0.79 3.05 -2.41 3.76 -3.97 1.12 -2.44 5.05 -3.45 6.03 -4.14 1.36 -0.96 0.11 -2.92 -1.91 -2.59 -2.18 0.35 -2.7 1.3 -4.01 1.87 -0.67 0.29 -1.14 0.2 -1.23 -1.04 -0.07 -0.91 1.1 -8.02 1.46 -11.31 0.12 -1.12 -0.35 -1.76 -1.25 -1.88 -1.02 -0.14 -1.55 0.42 -1.77 1.45 -0.54 2.55 -1.4 7.56 -1.76 7.85 -1.93 1.21 -4.5 2.8 -6.81 -0.28 0 0 -1.1 -5.77 -1.27 -6.94C3.72 0.17 0.99 0.53 1.22 2.64c0.21 1.98 0.86 6.66 0.29 8.32 -0.5 1.46 -1.38 6.47 0.56 9.52 1.92 3.01 7.04 4.28 10.7 2.71z",fill:"#FFDC5D",stroke:"none"},{d:"M5.89 15.08c0.58 2.77 3.92 2.46 3.71 -0.18 -0.17 -2.15 -0.82 -5.9 -1.04 -6.83 -0.43 -1.92 -3.77 -1.49 -3.5 0.77 0.18 1.47 0.37 4.09 0.82 6.24z",fill:"#EF9645",stroke:"none"},{d:"M6.51 14.79c0.53 2.3 2.95 1.66 2.83 -0.49 -0.12 -2.15 -0.62 -5.43 -0.77 -6.38 -0.36 -2.22 -3.2 -1.22 -2.97 0.41s0.52 4.74 0.92 6.45z",fill:"#FFDC5D",stroke:"none"},{d:"M8.49 15.68c0.05 3.3 3.72 3.12 4.01 0.65 0.25 -2.14 -0.28 -6.85 -0.32 -7.81 -0.07 -1.79 -3.34 -1.8 -3.45 0.23 -0.09 1.65 -0.26 5.18 -0.24 6.94z",fill:"#EF9645",stroke:"none"},{d:"M9.11 15.78c-0.09 2.05 2.68 2.28 2.88 0.14 0.2 -2.14 0.15 -6.73 0.14 -7.69 -0.03 -1.67 -2.82 -1.61 -2.9 0.44 -0.06 1.65 -0.03 5.35 -0.11 7.11z",fill:"#FFDC5D",stroke:"none"}]},{id:"emoji-heart",cat:"emoji",zh:"\u7231\u5FC3",en:"Heart",kw:"heart love \u7231\u5FC3 \u5FC3 \u559C\u6B22 \u7231",ink:A,layers:[{d:"M23.92 7.89c0 -3.63 -2.95 -6.58 -6.58 -6.58 -2.21 0 -4.15 1.09 -5.35 2.75 -1.19 -1.66 -3.14 -2.75 -5.34 -2.75 -3.63 0 -6.58 2.94 -6.58 6.58 0 0.51 0.07 1.01 0.18 1.49C1.17 15.06 7.48 21.05 12 22.69c4.52 -1.64 10.83 -7.63 11.74 -13.31 0.11 -0.48 0.18 -0.98 0.18 -1.49z",fill:"#DD2E44",stroke:"none"}]},{id:"emoji-heartbreak",cat:"emoji",zh:"\u5FC3\u788E",en:"Broken heart",kw:"heartbreak broken \u5FC3\u788E \u5931\u604B \u4F24\u5FC3 \u5206\u624B",ink:A,layers:[{d:"M9.06 17.68c-0.2 -0.33 -0.19 -0.74 0.02 -1.07l2.93 -4.43 -4 -3.43c-0.37 -0.32 -0.46 -0.86 -0.21 -1.27l2.87 -4.78c-1.11 -0.87 -2.5 -1.39 -4.02 -1.39 -3.63 0 -6.58 2.94 -6.58 6.58 0 0.51 0.07 1.01 0.18 1.49C1.17 15.06 7.48 21.05 12 22.69c0.02 -0.01 0.03 -0.01 0.05 -0.02l-2.99 -4.99z",fill:"#000000",stroke:"none"},{d:"M17.35 1.31c-1.84 0 -3.5 0.77 -4.69 1.99l-2.69 4.49 4.03 3.45c0.38 0.33 0.46 0.89 0.18 1.31l-3.07 4.64 2.77 4.62c4.23 -2.35 9.08 -7.51 9.87 -12.43 0.11 -0.48 0.18 -0.98 0.18 -1.49 0 -3.63 -2.95 -6.58 -6.58 -6.58z",fill:"#000000",stroke:"none"}]},{id:"emoji-rose",cat:"emoji",zh:"\u73AB\u7470",en:"Rose",kw:"rose flower \u73AB\u7470 \u82B1 \u7231\u60C5 \u9001\u82B1",ink:A,layers:[{d:"M12.88 16.91c-0.08 0 -0.14 0 -0.21 0v-0.28c3.2 -0.32 5.7 -2.84 5.7 -4.87 0 -2.17 0 0.98 -6.37 0.98 -6.37 0 -6.37 -3.15 -6.37 -0.98 0 2.03 2.5 4.56 5.71 4.87v0.27c-0.07 0 -0.14 0 -0.21 0 -1.7 0 -4.4 -1.37 -4.4 -0.88 0 0.43 2.79 2.68 4.62 3.2V23.33c0 0.37 0.3 0.67 0.67 0.67s0.67 -0.3 0.67 -0.67v-4.11c1.83 -0.52 4.62 -2.77 4.62 -3.2 0 -0.49 -2.7 0.88 -4.4 0.88z",fill:"#3E721D",stroke:"none"},{d:"M17.68 4.9c-2.59 -2.94 1 -3.92 -1.73 -3.92 -0.48 0 -1.28 0.29 -2.19 0.79C13.3 0.73 12.68 0 12 0c-1.37 0 -2.48 2.89 -2.58 5.51 -0.74 1.03 -1.24 2.16 -1.24 3.31 0 4.06 1.73 5.88 4.32 5.88 5.18 0 9.1 -5.36 5.18 -9.8z",fill:"#A0041E",stroke:"none"},{d:"M15.82 8.82c0 4.06 -1.73 5.88 -4.32 5.88 -5.18 0 -9.1 -5.37 -5.18 -9.8C8.91 1.96 5.31 0.98 8.04 0.98c1.73 0 7.78 3.78 7.78 7.84z",fill:"#BE1931",stroke:"none"}]},{id:"emoji-skull",cat:"emoji",zh:"\u9AB7\u9AC5",en:"Skull",kw:"skull \u9AB7\u9AC5 \u6B7B\u4EA1 \u6050\u6016 \u5413\u4EBA",ink:A,layers:[{d:"M22.67 10.67C22.67 4 17.89 0 12 0 6.11 0 1.33 4 1.33 10.67c0 3.72 0 6.93 4 8.43V22c0 1.1 0.9 2 2 2s2 -0.9 2 -2v-2.1c0.22 0.02 0.44 0.03 0.67 0.05V22c0 1.1 0.9 2 2 2s2 -0.9 2 -2v-2.06c0.23 -0.01 0.45 -0.03 0.67 -0.05V22c0 1.1 0.9 2 2 2 1.1 0 2 -0.9 2 -2v-2.91c4 -1.5 4 -4.71 4 -8.43z",fill:"#CCD6DD",stroke:"none"},{d:"M4 9.33A3.33 3.33 0 1 0 10.67 9.33A3.33 3.33 0 1 0 4 9.33Z",fill:"#292F33",stroke:"none"},{d:"M13.33 9.33A3.33 3.33 0 1 0 20 9.33A3.33 3.33 0 1 0 13.33 9.33Z",fill:"#292F33",stroke:"none"},{d:"M13.27 15.37C13.1 14.97 12.6 14.67 12 14.67s-1.1 0.3 -1.27 0.71c-0.42 0.12 -0.73 0.5 -0.73 0.96 0 0.55 0.45 1 1 1 0.44 0 0.8 -0.28 0.94 -0.67 0.02 0 0.04 0 0.06 0s0.04 0 0.06 0c0.14 0.39 0.5 0.67 0.94 0.67 0.55 0 1 -0.45 1 -1 0 -0.46 -0.31 -0.84 -0.73 -0.96z",fill:"#292F33",stroke:"none"}]},{id:"emoji-pig",cat:"emoji",zh:"\u732A\u5934",en:"Pig",kw:"pig \u732A \u732A\u5934 \u53EF\u7231 \u80A5",ink:A,layers:[{d:"M22.8 8.89c0.26 -0.25 0.49 -0.53 0.68 -0.85 1.12 -1.9 0.18 -6.86 -0.39 -7.2 -0.46 -0.27 -3.69 0.7 -5.5 2.09C15.92 1.92 14.02 1.33 12 1.33c-2.01 0 -3.9 0.59 -5.57 1.58C4.62 1.53 1.41 0.56 0.95 0.83c-0.57 0.34 -1.52 5.3 -0.39 7.2 0.19 0.31 0.41 0.59 0.66 0.83C0.44 10.57 0 12.43 0 14.32 0 20.98 5.34 22.67 12 22.67s12 -1.69 12 -8.35c0 -1.89 -0.44 -3.74 -1.2 -5.43z",fill:"#F4ABBA",stroke:"none"},{d:"M4.93 3.98c-1.44 -0.84 -2.93 -1.39 -3.2 -1.23 -0.38 0.22 -0.72 3.33 -0.23 5.51 0.85 -1.66 2.03 -3.12 3.43 -4.28zm17.57 4.28c0.49 -2.18 0.15 -5.29 -0.23 -5.51 -0.27 -0.16 -1.76 0.39 -3.2 1.23 1.41 1.16 2.59 2.63 3.43 4.28zM18.67 15.42c0 2.99 -2.06 6.25 -6.67 6.25 -4.6 0 -6.67 -3.26 -6.67 -6.25S7.4 11.67 12 11.67c4.6 0 6.67 0.76 6.67 3.75z",fill:"#EA596E",stroke:"none"},{d:"M10 16.4c0 1.24 -0.23 1.6 -1 1.6s-1 -0.36 -1 -1.6c0 -1.24 0.23 -1.6 1 -1.6s1 0.36 1 1.6zm6 0c0 1.24 -0.23 1.6 -1 1.6s-1 -0.36 -1 -1.6c0 -1.24 0.23 -1.6 1 -1.6s1 0.36 1 1.6z",fill:"#662113",stroke:"none"},{d:"M3.33 11.33A1.33 1.33 0 1 0 6 11.33A1.33 1.33 0 1 0 3.33 11.33Z",fill:"#292F33",stroke:"none"},{d:"M18 11.33A1.33 1.33 0 1 0 20.67 11.33A1.33 1.33 0 1 0 18 11.33Z",fill:"#292F33",stroke:"none"}]},{id:"emoji-gift",cat:"emoji",zh:"\u793C\u7269",en:"Gift",kw:"gift present \u793C\u7269 \u60CA\u559C \u751F\u65E5 \u793C\u76D2",ink:A,layers:[{d:"M22 20.67c0 1.47 -1.2 2.67 -2.67 2.67H4.67c-1.47 0 -2.67 -1.2 -2.67 -2.67V9.33c0 -1.47 1.2 -2.67 2.67 -2.67h14.67c1.47 0 2.67 1.2 2.67 2.67v11.33z",fill:"#FDD888",stroke:"none"},{d:"M24 7.33c0 1.47 -1.2 2.67 -2.67 2.67H2.67c-1.47 0 -2.67 -1.2 -2.67 -2.67s1.2 -2.67 2.67 -2.67h18.67c1.47 0 2.67 1.2 2.67 2.67z",fill:"#FDD888",stroke:"none"},{d:"M2 10h20v1.33H2z",fill:"#FCAB40",stroke:"none"},{d:"M12.67 2h-1.33c-1.1 0 -2 0.9 -2 2v19.33h5.33V4c0 -1.1 -0.9 -2 -2 -2z",fill:"#DA2F47",stroke:"none"},{d:"M10.67 4.67c0.73 0 0.84 -0.34 0.24 -0.76L6.43 0.76c-0.6 -0.42 -1.39 -0.24 -1.75 0.39L3.33 3.51C2.96 4.15 3.27 4.67 4 4.67h6.67zm2.67 0c-0.73 0 -0.84 -0.34 -0.24 -0.76l4.48 -3.14c0.6 -0.42 1.39 -0.24 1.75 0.39l1.34 2.35C21.04 4.15 20.73 4.67 20 4.67H13.33z",fill:"#DA2F47",stroke:"none"}]},{id:"emoji-party",cat:"emoji",zh:"\u5E86\u795D",en:"Party",kw:"party celebrate \u5E86\u795D \u5F69\u5E26 \u6D3E\u5BF9 \u8282\u65E5",ink:A,layers:[{d:"M7.75 4.99c-0.07 0.07 -0.13 0.16 -0.18 0.26l-0.01 -0.01L0.09 22.09l0.01 0.01c-0.14 0.27 0.09 0.82 0.57 1.29 0.48 0.48 1.02 0.71 1.29 0.57l0.01 0.01L18.81 16.49l-0.01 -0.01c0.1 -0.05 0.19 -0.1 0.26 -0.18 1.04 -1.04 -0.65 -4.42 -3.77 -7.54 -3.12 -3.12 -6.5 -4.81 -7.54 -3.77z",fill:"#DD2E44",stroke:"none"},{d:"M8.67 8L0.28 21.67l-0.19 0.42 0.01 0.01c-0.14 0.27 0.09 0.82 0.57 1.29 0.15 0.15 0.32 0.27 0.47 0.37L11.33 11.33l-2.67 -3.33z",fill:"#EA596E",stroke:"none"},{d:"M15.34 8.71c3.11 3.11 4.84 6.43 3.86 7.42 -0.98 0.98 -4.3 -0.75 -7.42 -3.86 -3.11 -3.11 -4.84 -6.44 -3.86 -7.42 0.98 -0.98 4.3 0.75 7.42 3.86z",fill:"#A0041E",stroke:"none"},{d:"M12.39 9.07c-0.13 0.11 -0.31 0.16 -0.49 0.14 -0.58 -0.06 -1.07 -0.26 -1.41 -0.58 -0.36 -0.34 -0.54 -0.79 -0.49 -1.24 0.09 -0.79 0.88 -1.52 2.24 -1.38 0.53 0.06 0.76 -0.11 0.77 -0.19 0.01 -0.08 -0.18 -0.3 -0.71 -0.35 -0.58 -0.06 -1.07 -0.26 -1.41 -0.58 -0.36 -0.34 -0.54 -0.79 -0.49 -1.24 0.09 -0.79 0.88 -1.52 2.24 -1.38 0.39 0.04 0.59 -0.04 0.67 -0.09 0.07 -0.04 0.1 -0.08 0.1 -0.11 0.01 -0.08 -0.18 -0.3 -0.71 -0.35 -0.37 -0.04 -0.63 -0.37 -0.59 -0.73 0.04 -0.37 0.37 -0.63 0.73 -0.59 1.36 0.15 1.98 1.03 1.9 1.82 -0.09 0.8 -0.88 1.52 -2.24 1.38 -0.39 -0.04 -0.59 0.04 -0.67 0.09 -0.07 0.04 -0.1 0.08 -0.1 0.1 -0.01 0.08 0.18 0.3 0.71 0.35 1.36 0.15 1.98 1.03 1.9 1.82 -0.09 0.79 -0.88 1.52 -2.24 1.38 -0.39 -0.04 -0.59 0.04 -0.67 0.09 -0.07 0.04 -0.1 0.08 -0.1 0.11 -0.01 0.08 0.18 0.3 0.71 0.35 0.37 0.04 0.63 0.37 0.59 0.73 -0.02 0.18 -0.11 0.34 -0.24 0.45z",fill:"#AA8DD8",stroke:"none"},{d:"M20.44 15.24c1.32 -0.37 2.22 0.22 2.44 0.99 0.22 0.77 -0.25 1.74 -1.57 2.11 -0.51 0.14 -0.67 0.39 -0.65 0.47 0.02 0.08 0.28 0.21 0.8 0.06 1.31 -0.37 2.22 0.22 2.44 0.99 0.22 0.77 -0.25 1.74 -1.57 2.11 -0.51 0.14 -0.67 0.39 -0.64 0.47 0.02 0.08 0.28 0.21 0.79 0.06 0.35 -0.1 0.72 0.11 0.82 0.46 0.1 0.35 -0.11 0.72 -0.46 0.82 -1.31 0.37 -2.22 -0.22 -2.44 -0.99 -0.22 -0.77 0.25 -1.74 1.57 -2.11 0.51 -0.14 0.67 -0.39 0.64 -0.47 -0.02 -0.08 -0.28 -0.21 -0.79 -0.06 -1.32 0.37 -2.22 -0.21 -2.44 -0.99 -0.22 -0.77 0.25 -1.74 1.57 -2.11 0.51 -0.14 0.67 -0.39 0.64 -0.47 -0.02 -0.08 -0.28 -0.21 -0.79 -0.06 -0.35 0.1 -0.72 -0.11 -0.82 -0.46 -0.1 -0.35 0.11 -0.72 0.46 -0.82z",fill:"#77B255",stroke:"none"},{d:"M15.33 13.44c-0.2 0 -0.39 -0.09 -0.52 -0.25 -0.23 -0.29 -0.18 -0.71 0.1 -0.94 0.15 -0.12 3.61 -2.84 8.51 -2.14 0.36 0.05 0.62 0.39 0.57 0.75 -0.05 0.36 -0.39 0.62 -0.75 0.57 -4.33 -0.61 -7.46 1.84 -7.49 1.86 -0.12 0.1 -0.27 0.15 -0.42 0.15z",fill:"#AA8DD8",stroke:"none"},{d:"M3.84 10.67c-0.06 0 -0.13 -0.01 -0.19 -0.03 -0.35 -0.11 -0.55 -0.48 -0.45 -0.83 0.76 -2.52 1.44 -6.53 0.6 -7.58 -0.09 -0.12 -0.24 -0.24 -0.56 -0.21 -0.63 0.05 -0.57 1.37 -0.57 1.38 0.03 0.37 -0.25 0.69 -0.61 0.71 -0.37 0.02 -0.69 -0.25 -0.71 -0.62 -0.07 -0.92 0.22 -2.69 1.79 -2.81 0.7 -0.05 1.29 0.19 1.7 0.7 1.58 1.97 -0.02 7.67 -0.36 8.79 -0.09 0.29 -0.35 0.47 -0.64 0.47z",fill:"#77B255",stroke:"none"},{d:"M16 6.33A1 1 0 1 0 18 6.33A1 1 0 1 0 16 6.33Z",fill:"#5C913B",stroke:"none"},{d:"M0 12A1.33 1.33 0 1 0 2.67 12A1.33 1.33 0 1 0 0 12Z",fill:"#9266CC",stroke:"none"},{d:"M20.67 13A1 1 0 1 0 22.67 13A1 1 0 1 0 20.67 13Z",fill:"#5C913B",stroke:"none"},{d:"M14.67 21A1 1 0 1 0 16.67 21A1 1 0 1 0 14.67 21Z",fill:"#5C913B",stroke:"none"},{d:"M17.33 2.67A1.33 1.33 0 1 0 20 2.67A1.33 1.33 0 1 0 17.33 2.67Z",fill:"#FFCC4D",stroke:"none"},{d:"M20.67 5.67A1 1 0 1 0 22.67 5.67A1 1 0 1 0 20.67 5.67Z",fill:"#FFCC4D",stroke:"none"},{d:"M18.67 8.33A1 1 0 1 0 20.67 8.33A1 1 0 1 0 18.67 8.33Z",fill:"#FFCC4D",stroke:"none"},{d:"M4 15.67A1 1 0 1 0 6 15.67A1 1 0 1 0 4 15.67Z",fill:"#FFCC4D",stroke:"none"}]},{id:"emoji-thumb-down",cat:"emoji",zh:"\u8E29",en:"Thumbs down",kw:"thumb down \u8E29 \u53CD\u5BF9 \u5DEE\u8BC4 \u4E0D\u559C\u6B22",ink:A,layers:[{d:"M23.3 12.06c0 0.34 -0.08 0.65 -0.21 0.94 -0.89 2.88 -5.08 2.67 -11.03 2.81 -1 0.02 -0.43 1.2 -0.08 3.78 0.23 1.68 -0.85 4.25 -2.67 4.25 -3 0 -0.11 -2.37 -2.77 -8.21 -1.42 -3.13 -4.58 -1.37 -4.58 -4.51V3.97c0 -1.22 0.12 -2.4 1.84 -2.59C5.46 1.19 5.09 0 7.49 0h12.03c1.23 0 2.22 1 2.22 2.22 0 0.51 -0.18 0.97 -0.47 1.35 0.68 0.38 1.15 1.1 1.15 1.93 0 0.51 -0.18 0.97 -0.46 1.34 0.68 0.38 1.15 1.1 1.15 1.93 0 0.61 -0.25 1.16 -0.64 1.56 0.5 0.41 0.83 1.02 0.83 1.72z",fill:"#FFDB5E",stroke:"none"},{d:"M15.35 9.83h5.74c0.78 0 1.51 0.42 1.91 1.09 0.16 0.28 0.07 0.63 -0.2 0.8 -0.28 0.16 -0.63 0.07 -0.8 -0.2 -0.19 -0.32 -0.54 -0.52 -0.91 -0.52h-5.87c-0.58 0 -1.06 0.47 -1.06 1.06s0.47 1.06 1.06 1.06H19.13c0.32 0 0.58 0.26 0.58 0.58s-0.26 0.58 -0.58 0.58h-3.93c-1.23 0 -2.22 -1 -2.22 -2.22 0 -0.68 0.32 -1.29 0.8 -1.7 -0.41 -0.4 -0.67 -0.96 -0.67 -1.58 0 -0.69 0.32 -1.29 0.81 -1.7 -0.41 -0.4 -0.66 -0.96 -0.66 -1.58 0 -0.75 0.37 -1.41 0.94 -1.81 -0.35 -0.39 -0.57 -0.9 -0.57 -1.47 0 -1.23 1 -2.22 2.22 -2.22h3.66c0.78 0 1.51 0.42 1.91 1.09 0.16 0.28 0.07 0.63 -0.2 0.8 -0.28 0.16 -0.64 0.07 -0.8 -0.2 -0.19 -0.32 -0.54 -0.52 -0.91 -0.52h-3.66c-0.58 0 -1.06 0.47 -1.06 1.06s0.47 1.06 1.06 1.06h4.34c0.78 0 1.51 0.42 1.91 1.09 0.16 0.28 0.07 0.64 -0.2 0.8 -0.28 0.17 -0.64 0.07 -0.8 -0.2 -0.19 -0.32 -0.53 -0.52 -0.91 -0.52h-4.71c-0.58 0 -1.06 0.47 -1.06 1.06s0.47 1.06 1.06 1.06h5.39c0.78 0 1.51 0.42 1.91 1.09 0.16 0.28 0.07 0.63 -0.2 0.8 -0.28 0.16 -0.64 0.07 -0.8 -0.2 -0.19 -0.32 -0.53 -0.52 -0.91 -0.52H15.35c-0.58 0 -1.06 0.47 -1.06 1.06s0.47 1.06 1.06 1.06z",fill:"#EE9547",stroke:"none"}]},{id:"emoji-wave",cat:"emoji",zh:"\u6325\u624B",en:"Wave",kw:"wave \u6325\u624B \u518D\u89C1 \u6253\u62DB\u547C \u4F60\u597D",ink:A,layers:[{d:"M3.24 6.1c0.63 -0.44 1.57 -0.35 2.13 0.11l-0.65 -0.94c-0.52 -0.74 -0.33 -1.54 0.41 -2.06 0.74 -0.52 2.84 0.87 2.84 0.87 -0.52 -0.75 -0.43 -1.7 0.32 -2.22 0.75 -0.52 1.78 -0.34 2.3 0.41l6.95 9.81L16.67 20.67l-7.39 -2.69L2.83 8.42c-0.53 -0.75 -0.35 -1.79 0.41 -2.32z",fill:"#EF9645",stroke:"none"},{d:"M1.8 11.56s-0.75 -1.1 0.35 -1.85c1.1 -0.75 1.85 0.35 1.85 0.35l3.5 5.11c0.12 -0.2 0.25 -0.4 0.4 -0.6L3.04 7.47s-0.75 -1.1 0.35 -1.85c1.1 -0.75 1.85 0.35 1.85 0.35l4.57 6.66c0.17 -0.14 0.34 -0.28 0.52 -0.41L5.03 4.49s-0.75 -1.1 0.35 -1.85c1.1 -0.75 1.85 0.35 1.85 0.35l5.3 7.73c0.19 -0.12 0.39 -0.22 0.58 -0.33L8.16 3.15s-0.75 -1.1 0.35 -1.85c1.1 -0.75 1.85 0.35 1.85 0.35l5.24 7.64 0.8 1.16c-3.3 2.26 -3.61 6.52 -1.73 9.27 0.38 0.55 0.93 0.17 0.93 0.17 -2.26 -3.3 -1.57 -7.01 1.73 -9.27L16.34 5.75s-0.36 -1.28 0.92 -1.65c1.28 -0.36 1.65 0.92 1.65 0.92l1.12 3.34c0.45 1.32 0.92 2.64 1.55 3.89 1.77 3.52 0.71 7.89 -2.63 10.19 -3.64 2.5 -8.62 1.57 -11.12 -2.07L1.8 11.56z",fill:"#FFDC5D",stroke:"none"},{d:"M8 21.36C5.33 21.36 2.64 18.67 2.64 16c0 -0.37 -0.27 -0.67 -0.64 -0.67s-0.69 0.3 -0.69 0.67C1.31 20 4 22.69 8 22.69c0.37 0 0.67 -0.33 0.67 -0.69s-0.3 -0.64 -0.67 -0.64z",fill:"#000000",stroke:"none"},{d:"M4.67 22.67c-2 0 -3.33 -1.33 -3.33 -3.33 0 -0.37 -0.3 -0.67 -0.67 -0.67s-0.67 0.3 -0.67 0.67c0 2.67 2 4.67 4.67 4.67 0.37 0 0.67 -0.3 0.67 -0.67s-0.3 -0.67 -0.67 -0.67zM16 1.33c-0.37 0 -0.67 0.3 -0.67 0.67s0.3 0.67 0.67 0.67c2.67 0 5.33 2.39 5.33 5.33 0 0.37 0.3 0.67 0.67 0.67s0.67 -0.3 0.67 -0.67c0 -3.68 -2.67 -6.67 -6.67 -6.67z",fill:"#000000",stroke:"none"},{d:"M19.33 0.03c-0.37 0 -0.67 0.27 -0.67 0.64s0.3 0.69 0.67 0.69c2 0 3.31 1.48 3.31 3.31 0 0.37 0.33 0.67 0.69 0.67s0.64 -0.3 0.64 -0.67C23.97 2.11 22 0.03 19.33 0.03z",fill:"#000000",stroke:"none"}]},{id:"emoji-raise-hand",cat:"emoji",zh:"\u4E3E\u624B",en:"Raise hand",kw:"raise hand \u4E3E\u624B \u63D0\u95EE \u62A5\u5230 \u53C2\u4E0E",ink:A,layers:[{d:"M18 18H6.67v6h14v-3.33c0 -1.47 -1.19 -2.67 -2.67 -2.67z",fill:"#FA743E",stroke:"none"},{d:"M10 14.67v4c0 1.1 0.9 2 2 2s2 -0.9 2 -2v-4h-4z",fill:"#FFDC5D",stroke:"none"},{d:"M17.33 21.33h0.67v2.67h-0.67z",fill:"#DD551F",stroke:"none"},{d:"M14.6 0.84c-1.35 -0.44 -4.51 -0.32 -5.31 0.71 -2.06 0.04 -4.48 1.9 -4.79 4.36 -0.31 2.43 0.39 3.56 0.63 5.39 0.28 2.07 1.45 2.73 2.38 3.01C8.85 16.08 10.28 16 12.67 16c4.67 0 6.89 -3.12 7.09 -8.43 0.12 -3.21 -1.76 -5.64 -5.15 -6.73z",fill:"#FFAC33",stroke:"none"},{d:"M17.27 7.8c-0.45 -0.63 -1.03 -1.13 -2.3 -1.31 0.48 0.22 0.93 0.97 0.99 1.39 0.06 0.42 0.12 0.75 -0.26 0.34 -1.51 -1.67 -3.15 -1.01 -4.77 -2.03 -1.14 -0.71 -1.48 -1.5 -1.48 -1.5s-0.14 1.05 -1.86 2.12c-0.5 0.31 -1.1 1 -1.43 2.02C5.93 9.56 6 10.22 6 11.33c0 3.26 2.69 6 6 6s6 -2.76 6 -6c0 -2.03 -0.21 -2.82 -0.73 -3.53z",fill:"#FFDC5D",stroke:"none"},{d:"M14.67 14.67h-5.33s0.67 1.33 2.67 1.33 2.67 -1.33 2.67 -1.33zm-2 -1.67h-1.33c-0.18 0 -0.33 -0.15 -0.33 -0.33s0.15 -0.33 0.33 -0.33h1.33c0.18 0 0.33 0.15 0.33 0.33s-0.15 0.33 -0.33 0.33z",fill:"#C1694F",stroke:"none"},{d:"M9.33 10.67c-0.37 0 -0.67 -0.3 -0.67 -0.67v-0.67c0 -0.37 0.3 -0.67 0.67 -0.67s0.67 0.3 0.67 0.67v0.67c0 0.37 -0.3 0.67 -0.67 0.67zm5.33 0c-0.37 0 -0.67 -0.3 -0.67 -0.67v-0.67c0 -0.37 0.3 -0.67 0.67 -0.67s0.67 0.3 0.67 0.67v0.67c0 0.37 -0.3 0.67 -0.67 0.67z",fill:"#662113",stroke:"none"},{d:"M8.28 1.96c-0.39 -0.26 -0.92 -0.15 -1.18 0.24L6.67 2.86V1.33c0 -0.74 -0.6 -1.33 -1.33 -1.33H2.67C1.93 0 1.33 0.6 1.33 1.33v5.33s0 0.67 0.67 0.67h4l0.67 -0.67V5.97l1.86 -2.83c0.26 -0.39 0.15 -0.92 -0.25 -1.18z",fill:"#FFDC5D",stroke:"none"},{d:"M2.67 0h0.67v3.33H2.67zm2 0h0.67v3.33H4.67z",fill:"#EF9645",stroke:"none"},{d:"M6 18h2l-1.33 6c-5.33 0 -5.33 -6 -5.33 -6V6.67h5.33L6 18z",fill:"#FA743E",stroke:"none"}]},{id:"emoji-muscle",cat:"emoji",zh:"\u808C\u8089",en:"Muscle",kw:"muscle \u808C\u8089 \u529B\u91CF \u5065\u8EAB \u52A0\u6CB9 \u5F3A\u58EE",ink:A,layers:[{d:"M10.65 6.24h2.53c0.08 -0.13 0.1 -0.29 0.04 -0.45l-2.56 -3.14V6.24z",fill:"#EF9645",stroke:"none"},{d:"M8.54 14.85c-0.04 -0.23 -0.08 -0.45 -0.14 -0.65 -0.41 -1.48 -0.76 -2.11 -0.61 -3.66 0.19 -1.06 0.18 -3.18 2.99 -2.85 0.74 0.09 1.9 0.62 2.56 0.61 0.38 -0.01 0.65 -0.77 0.68 -1.03 0.03 -0.35 -0.58 -0.95 -0.83 -1.04 -0.26 -0.09 -1.34 -0.42 -1.79 -0.55 -0.69 -0.2 -0.66 -1.14 -0.7 -1.47 -0.02 -0.16 0.06 -0.31 0.2 -0.39 0.14 -0.08 0.25 -0.01 0.39 0.08l0.59 0.43c0.33 0.28 -0.58 0.83 -0.34 0.92 0 0 1.17 0.44 1.67 0.53 0.27 0.05 1.22 -1.02 1.28 -1.65 0.04 -0.49 -2.27 -2.72 -3.91 -3.59 -0.58 -0.3 -0.92 -0.48 -1.3 -0.46 -0.46 0.02 -0.6 0.2 -1.17 0.69C5.53 2.97 3.05 7.72 2.68 8.77c-1.5 4.31 -1.73 6.58 -1.78 7.86 -0.03 0.39 -0.05 0.78 -0.05 1.17 0.04 0 -0.67 3.33 0 4s3.55 0.67 3.55 0.67c6.67 2.66 19.05 1.97 19.05 -4.82 0 -8.11 -12.54 -7.04 -14.91 -2.79z",fill:"#FFDC5D",stroke:"none"},{d:"M13.75 21.39c-2.11 -0.22 -3.75 -1.25 -3.84 -1.31 -0.31 -0.2 -0.4 -0.61 -0.2 -0.92s0.61 -0.4 0.92 -0.21c0.03 0.02 2.67 1.66 5.23 0.98 1.42 -0.38 2.58 -1.41 3.45 -3.07 0.17 -0.33 0.58 -0.45 0.9 -0.28 0.33 0.17 0.45 0.57 0.28 0.9 -1.06 2 -2.5 3.26 -4.3 3.74 -0.84 0.22 -1.67 0.25 -2.44 0.17z",fill:"#EF9645",stroke:"none"}]},{id:"emoji-handshake",cat:"emoji",zh:"\u63E1\u624B",en:"Handshake",kw:"handshake \u63E1\u624B \u5408\u4F5C \u8FBE\u6210 \u534F\u8BAE",ink:A,layers:[{d:"M10.95 20.22a1.54 1.54 0 0 0 2.14 -0.38 0.53 0.53 0 0 0 -0.13 -0.74l-1.23 -1.3 2.81 1.97a1 1 0 0 0 1.39 -0.25 1 1 0 0 0 -0.25 -1.39l-2.4 -2.2 3.58 2.51a1 1 0 0 0 1.39 -0.25 1 1 0 0 0 -0.25 -1.39l-3.18 -2.72 3.91 2.74a1 1 0 0 0 1.39 -0.25 1 1 0 0 0 -0.25 -1.39L3.16 7.46l-2.31 3.68c-0.26 0.4 -0.19 0.94 0.18 1.26l5.19 4.45c0.24 0.2 0.48 0.39 0.74 0.57l4 2.8z",fill:"#EF9645",stroke:"none"},{d:"M19.87 14.5 12.33 9.07l-0.04 -0.05 0.04 -0.05 0.04 -0.04 0.57 0.31c0.64 0.41 2.1 1.02 3.2 1.02 0.76 0 1.21 -0.28 1.35 -0.84a0.94 0.94 0 0 0 -0.77 -1.08 4.53 4.53 0 0 1 -1.87 -0.73l-0.37 -0.25c-0.42 -0.28 -0.89 -0.6 -1.24 -0.8 -0.43 -0.26 -0.9 -0.39 -1.44 -0.39 -0.8 0 -1.61 0.28 -2.39 0.55l-0.84 0.29a3.45 3.45 0 0 1 -1.13 0.18c-1.03 0 -2.04 -0.39 -3.01 -0.77l-0.1 -0.04a0.93 0.93 0 0 0 -1.12 0.37L0.9 10.45a0.9 0.9 0 0 0 0.17 1.17l5.19 4.45c0.23 0.2 0.48 0.39 0.73 0.57l4.11 2.88a1.33 1.33 0 0 0 1.86 -0.33 0.54 0.54 0 0 0 -0.13 -0.74l-1.22 -0.86a0.28 0.28 0 0 1 -0.05 -0.41 0.28 0.28 0 0 1 0.38 -0.05l2.65 1.86a0.93 0.93 0 0 0 1.07 -1.53l-2.48 -1.74a0.28 0.28 0 0 1 -0.05 -0.41 0.28 0.28 0 0 1 0.38 -0.05l3.42 2.4a0.93 0.93 0 0 0 1.07 -1.53l-3.25 -2.27a0.28 0.28 0 0 1 -0.05 -0.41 0.25 0.25 0 0 1 0.34 -0.04l3.77 2.64a0.93 0.93 0 0 0 1.07 -1.53z",fill:"#FFDC5D",stroke:"none"},{d:"M11.02 18.62c-0.05 0.18 -0.14 0.33 -0.26 0.45l-0.67 0.66a1 1 0 0 1 -0.96 0.26 1 1 0 0 1 -0.46 -1.67l0.67 -0.66a1 1 0 0 1 0.96 -0.26 1 1 0 0 1 0.71 1.22zM3.99 15.34l1 -1a1 1 0 0 0 -0.3 -1.62 1 1 0 0 0 -1.12 0.21l-1 1a1 1 0 0 0 0.3 1.62 1 1 0 0 0 1.12 -0.21zm3.47 0.03a1 1 0 1 0 -1.41 -1.41L4.05 15.96a1 1 0 1 0 1.41 1.41l2 -2zm1.5 2a1 1 0 0 0 -0.63 -1.7 0.99 0.99 0 0 0 -0.78 0.29L6.22 17.29a1 1 0 0 0 0.63 1.7c0.3 0.02 0.58 -0.09 0.78 -0.29l1.34 -1.33zm11.04 -2.76 0.42 -0.36 -4.61 -7.23 -8.18 1.32a1 1 0 0 0 -0.82 1.16c0.44 1.8 4 0.46 5.57 -0.4l7.62 5.51z",fill:"#EF9645",stroke:"none"},{d:"M11.02 17.95c-0.05 0.18 -0.14 0.33 -0.26 0.45l-0.67 0.66a1 1 0 0 1 -0.96 0.26 1 1 0 0 1 -0.46 -1.67l0.67 -0.66a1 1 0 0 1 0.96 -0.26 1 1 0 0 1 0.71 1.22zM3.99 14.67l1 -1a1 1 0 0 0 -0.3 -1.62 1 1 0 0 0 -1.12 0.21l-1 1a1 1 0 0 0 0.3 1.62 1 1 0 0 0 1.12 -0.21zm3.47 0.03a1 1 0 1 0 -1.41 -1.41L4.05 15.29a1 1 0 1 0 1.41 1.41l2 -2zm1.5 2a1 1 0 0 0 -0.63 -1.7 0.99 0.99 0 0 0 -0.78 0.29L6.22 16.63a1 1 0 0 0 0.63 1.7c0.3 0.02 0.58 -0.09 0.78 -0.29l1.34 -1.33zm14.37 -4.97a0.97 0.97 0 0 0 0.18 -1.26l0 0 -2.31 -4.35a0.99 0.99 0 0 0 -1.2 -0.4c-1.33 0.51 -2.78 1.1 -4.19 0.62l-0.73 -0.25c-1.3 -0.45 -2.71 -0.98 -4 -0.2 -0.46 0.27 -1.16 0.76 -1.61 1.05a4.58 4.58 0 0 1 -1.84 0.72 1 1 0 0 0 -0.82 1.16c0.41 1.67 3.53 0.61 5.23 -0.25a0.65 0.65 0 0 1 0.67 0.05l7.72 5.61 2.91 -2.52z",fill:"#FFCC4D",stroke:"none"}]},{id:"emoji-high-five",cat:"emoji",zh:"\u51FB\u638C",en:"High five",kw:"high five \u51FB\u638C \u5E86\u795D \u5408\u4F5C \u5B8C\u6210",ink:A,layers:[{d:"M21.58 10.81c-0.92 -0.41 -2.24 0.14 -3.17 1.46 -0.61 0.87 -0.79 2.1 -1.59 2.23 -0.31 0.05 -0.47 -0.14 -0.56 -0.41 -0.09 -0.45 -0.07 -1.15 0.1 -2.13l1.83 -8.21c0.15 -0.63 -0.2 -1.23 -1.02 -1.43s-1.44 0.2 -1.58 0.83L13.96 10.59c-0.33 1.64 -0.94 1.35 -0.79 -0.52v0l0.47 -8.73C13.67 0.67 13.15 0.12 12.39 0.09c-0.77 -0.03 -1.32 0.43 -1.36 1.1l-0.45 8.94c-0.1 1.8 -0.74 1.12 -0.88 -0.18L8.67 2.72c-0.11 -0.68 -0.75 -1.15 -1.51 -1.03 -0.77 0.12 -1.23 0.76 -1.12 1.44l1 6.61c0.4 2.52 -0.12 3.22 -0.97 0.48L4.99 6.21c-0.17 -0.64 -0.81 -1.04 -1.61 -0.82 -0.8 0.22 -1.14 0.87 -0.97 1.51l1.04 3.78c0.43 2.72 0.43 3.79 0.43 5.66S4.75 24 11.33 24s7.94 -6.69 8 -7.11c0 0 0.08 -0.99 0.77 -1.91 0.98 -1.31 1.67 -2.1 2.08 -2.58 0.21 -0.24 0.42 -1.14 -0.6 -1.59z",fill:"#FFDC5D",stroke:"none"},{d:"M16.61 14.49c-0.2 -0.08 -0.37 -0.29 -0.39 -0.75 -1.26 0.17 -2.97 0.53 -4.28 1.81 -1.7 1.67 -1.99 3.47 -1.98 4.67 0.01 0.97 0.54 1.43 0.7 -0.01 0.2 -1.82 1.52 -5.43 5.95 -5.73z",fill:"#EF9645",stroke:"none"}]},{id:"emoji-shrug",cat:"emoji",zh:"\u644A\u624B",en:"Shrug",kw:"shrug \u644A\u624B \u65E0\u5948 \u4E0D\u77E5\u9053 \u8038\u80A9",ink:A,layers:[{d:"M14.6 0.84c-1.35 -0.44 -4.51 -0.32 -5.31 0.71 -2.06 0.04 -4.48 1.9 -4.79 4.36 -0.31 2.43 0.39 3.56 0.63 5.39 0.28 2.07 1.45 2.73 2.38 3.01C8.85 16.08 10.28 16 12.67 16c4.67 0 6.89 -3.12 7.09 -8.43 0.12 -3.21 -1.76 -5.64 -5.15 -6.73z",fill:"#FFAC33",stroke:"none"},{d:"M18 14H6c-1.47 0 -2.67 1.19 -2.67 2.67v7.33h17.33V16.67c0 -1.47 -1.19 -2.67 -2.67 -2.67z",fill:"#FA743E",stroke:"none"},{d:"M17.27 7.82c-0.45 -0.63 -1.03 -1.13 -2.3 -1.31 0.48 0.22 0.93 0.97 0.99 1.39 0.06 0.42 0.12 0.75 -0.26 0.34 -1.51 -1.67 -3.15 -1.01 -4.78 -2.03 -1.14 -0.71 -1.48 -1.5 -1.48 -1.5s-0.14 1.05 -1.86 2.12c-0.5 0.31 -1.1 1 -1.43 2.02 -0.24 0.73 -0.16 1.39 -0.16 2.5 0 3.26 2.69 6 6 6s6 -2.76 6 -6c0 -2.03 -0.21 -2.82 -0.73 -3.53z",fill:"#FFDC5D",stroke:"none"},{d:"M6.67 18h0.67v6h-0.67z",fill:"#DD551F",stroke:"none"},{d:"M3.13 17.66l-0.19 -0.04h-0.34c0 -0.04 0.02 -0.07 0.02 -0.11 -0.23 -0.14 -0.36 -0.42 -0.31 -0.7 0.07 -0.36 0.43 -0.59 0.79 -0.52l1.39 0.29h1.12c0.58 0 1.04 0.47 1.04 1.04V18.67H4.17s-0.99 -0.45 -1.03 -1z",fill:"#FCAB40",stroke:"none"},{d:"M0 17.1c0 -0.29 0.23 -0.52 0.52 -0.52l3.13 0.52h2.5c0.29 0 0.52 0.23 0.52 0.52V18.67H3.33L0.52 17.62S0 17.39 0 17.1z",fill:"#FFDC5D",stroke:"none"},{d:"M2.67 24h4v-5.33H3.33z",fill:"#FA743E",stroke:"none"},{d:"M16.67 18h0.67v6h-0.67z",fill:"#DD551F",stroke:"none"},{d:"M20.87 17.66l0.19 -0.04h0.34c0 -0.04 -0.02 -0.07 -0.02 -0.11 0.23 -0.14 0.36 -0.42 0.31 -0.7 -0.07 -0.36 -0.43 -0.59 -0.79 -0.52l-1.39 0.29h-1.12c-0.58 0 -1.04 0.47 -1.04 1.04V18.67h2.5c0 0 0.99 -0.45 1.03 -1z",fill:"#FCAB40",stroke:"none"},{d:"M24 17.1c0 -0.29 -0.23 -0.52 -0.52 -0.52l-3.13 0.52h-2.5c-0.29 0 -0.52 0.23 -0.52 0.52V18.67h3.33l2.81 -1.04s0.52 -0.23 0.52 -0.52z",fill:"#FFDC5D",stroke:"none"},{d:"M21.33 24h-4v-5.33h3.33z",fill:"#FA743E",stroke:"none"},{d:"M12.67 13h-1.33c-0.18 0 -0.33 -0.15 -0.33 -0.33s0.15 -0.33 0.33 -0.33h1.33c0.18 0 0.33 0.15 0.33 0.33s-0.15 0.33 -0.33 0.33zm1 2.33H13.33c-0.18 0 -0.33 -0.15 -0.33 -0.33s0.15 -0.33 0.33 -0.33h0.33c0.18 0 0.33 0.15 0.33 0.33s-0.15 0.33 -0.33 0.33z",fill:"#C1694F",stroke:"none"},{d:"M9.33 10.67c-0.37 0 -0.67 -0.3 -0.67 -0.67v-0.67c0 -0.37 0.3 -0.67 0.67 -0.67s0.67 0.3 0.67 0.67v0.67c0 0.37 -0.3 0.67 -0.67 0.67zm5.33 0c-0.37 0 -0.67 -0.3 -0.67 -0.67v-0.67c0 -0.37 0.3 -0.67 0.67 -0.67s0.67 0.3 0.67 0.67v0.67c0 0.37 -0.3 0.67 -0.67 0.67z",fill:"#662113",stroke:"none"}]},{id:"emoji-rabbit",cat:"emoji",zh:"\u5154\u5934",en:"Rabbit",kw:"rabbit \u5154\u5B50 \u5154 \u53EF\u7231 \u751F\u8096",ink:A,layers:[{d:"M22.53 0c-0.31 -0.12 -5.33 2.65 -6.65 6.09 -0.78 2.03 -1.12 4.04 -1.1 5.41C13.81 10.97 12.84 10.67 12 10.67s-1.81 0.31 -2.79 0.83c0.02 -1.37 -0.32 -3.37 -1.1 -5.41C6.8 2.65 1.78 -0.12 1.47 0c-0.3 0.12 2.85 10.7 4.68 13.89C4.54 15.6 3.33 17.77 3.33 19.89c0 2.16 1.09 3.43 2.67 3.96 1.69 0.57 3.33 -0.63 6 -0.63s4.31 1.2 6 0.63c1.58 -0.53 2.67 -1.8 2.67 -3.96 0 -2.11 -1.2 -4.28 -2.82 -5.99C19.69 10.7 22.84 0.12 22.53 0z",fill:"#99AAB5",stroke:"none"},{d:"M8.46 11.95c-0.12 -1.03 -0.45 -2.37 -0.97 -3.72 -1.02 -2.68 -3.79 -4.83 -4.03 -4.74 -0.21 0.08 1.75 6.76 3.19 9.91 0.58 -0.55 1.19 -1.04 1.82 -1.45zm8.89 1.45c1.44 -3.15 3.4 -9.83 3.19 -9.91 -0.24 -0.09 -3.01 2.06 -4.03 4.74 -0.52 1.36 -0.85 2.7 -0.97 3.72 0.62 0.41 1.24 0.9 1.82 1.45z",fill:"#F4ABBA",stroke:"none"},{d:"M16.67 20c0 1.84 -2.04 3.33 -4.56 3.33 -2.52 0 -4.56 -1.49 -4.56 -3.33s2.04 -3.33 4.56 -3.33C14.63 16.67 16.67 18.16 16.67 20z",fill:"#CCD6DD",stroke:"none"},{d:"M14 20.39c0 1.84 -0.16 2 -2 2 -1.84 0 -2 -0.16 -2 -2 0 -0.67 4 -0.67 4 0z",fill:"#FFF",stroke:"none"},{d:"M7.33 16.22A1 1 0 1 0 9.33 16.22A1 1 0 1 0 7.33 16.22Z",fill:"#292F33",stroke:"none"},{d:"M14.67 16.22A1 1 0 1 0 16.67 16.22A1 1 0 1 0 14.67 16.22Z",fill:"#292F33",stroke:"none"},{d:"M14 17.22c0 1.1 -1.33 2 -2 2s-2 -0.9 -2 -2 4 -1.1 4 0z",fill:"#F4ABBA",stroke:"none"}]},{id:"emoji-cat",cat:"emoji",zh:"\u732B",en:"Cat",kw:"cat \u732B \u732B\u54AA \u53EF\u7231 \u5BA0\u7269",ink:A,layers:[{d:"M21.57 9.33s2.3 -5.87 1.1 -8c-0.4 -0.72 -5.33 1.33 -7.15 3.63 0 0 -1.72 -0.57 -3.52 -0.57s-3.52 0.57 -3.52 0.57C6.67 2.67 1.74 0.62 1.33 1.33 0.14 3.46 2.43 9.33 2.43 9.33c-0.6 1.15 -0.82 2.9 -1.04 4.77 -0.24 2.06 0.23 3.7 0.44 4.06 0.23 0.41 1.42 1.74 2.99 2.87 2.39 1.72 5.98 2.3 7.17 2.3s4.78 -0.57 7.17 -2.3c1.57 -1.13 2.76 -2.46 2.99 -2.87 0.21 -0.36 0.67 -2 0.44 -4.06 -0.22 -1.88 -0.44 -3.63 -1.04 -4.77z",fill:"#FFCC4D",stroke:"none"},{d:"M1.57 1.98c0.13 -0.4 3.57 1.45 4.35 3.6 0 0 -2.54 1.75 -3.02 3.08 0 0 -1.99 -4.69 -1.33 -6.69z",fill:"#F18F26",stroke:"none"},{d:"M3.99 4.84c0 -0.94 3.64 1.82 2.97 2.49s-0.84 0.48 -1.5 1.15S3.99 5.51 3.99 4.84z",fill:"#FFCC4D",stroke:"none"},{d:"M22.43 1.98c-0.13 -0.4 -3.57 1.45 -4.35 3.6 0 0 2.54 1.75 3.02 3.08 0 0 1.99 -4.69 1.33 -6.69z",fill:"#F18F26",stroke:"none"},{d:"M20.01 4.84c0 -0.94 -3.64 1.82 -2.97 2.49s0.84 0.48 1.5 1.15 1.47 -2.97 1.47 -3.64z",fill:"#FFCC4D",stroke:"none"},{d:"M9.33 13.33c0 0.74 -0.6 1.33 -1.33 1.33s-1.33 -0.6 -1.33 -1.33c0 -0.74 0.6 -1.33 1.33 -1.33s1.33 0.6 1.33 1.33zm8 0c0 0.74 -0.6 1.33 -1.33 1.33 -0.74 0 -1.33 -0.6 -1.33 -1.33 0 -0.74 0.6 -1.33 1.33 -1.33s1.33 0.6 1.33 1.33z",fill:"#292F33",stroke:"none"},{d:"M1.47 20.31c-0.1 0 -0.2 -0.04 -0.26 -0.13 -0.11 -0.14 -0.09 -0.35 0.06 -0.47 0.11 -0.08 2.68 -2.08 7.1 -1.74 0.18 0.01 0.32 0.17 0.31 0.36 -0.01 0.18 -0.17 0.33 -0.36 0.31 -4.16 -0.32 -6.61 1.58 -6.63 1.6 -0.06 0.05 -0.13 0.07 -0.21 0.07zm5.91 -3.11c-0.03 0 -0.07 0 -0.1 -0.01 -3.19 -1 -5.82 -0.23 -5.85 -0.22 -0.18 0.05 -0.36 -0.05 -0.42 -0.22 -0.05 -0.18 0.05 -0.36 0.22 -0.41 0.12 -0.03 2.86 -0.83 6.24 0.23 0.18 0.06 0.27 0.24 0.22 0.42 -0.04 0.14 -0.18 0.23 -0.32 0.23zm15.15 3.11c0.1 0 0.2 -0.04 0.26 -0.13 0.11 -0.14 0.09 -0.35 -0.06 -0.47 -0.11 -0.08 -2.68 -2.08 -7.1 -1.74 -0.18 0.01 -0.32 0.17 -0.31 0.36 0.01 0.18 0.17 0.33 0.36 0.31 4.16 -0.32 6.61 1.58 6.63 1.6 0.06 0.05 0.13 0.07 0.21 0.07zm-5.91 -3.11c0.03 0 0.07 0 0.1 -0.01 3.19 -1 5.82 -0.23 5.85 -0.22 0.18 0.05 0.36 -0.05 0.42 -0.22 0.05 -0.18 -0.05 -0.36 -0.22 -0.41 -0.12 -0.03 -2.86 -0.83 -6.24 0.23 -0.18 0.06 -0.27 0.24 -0.22 0.42 0.04 0.14 0.18 0.23 0.32 0.23z",fill:"#FEE7B8",stroke:"none"},{d:"M16.49 20.6c-0.06 -0.17 -0.26 -0.26 -0.43 -0.2 -0.37 0.14 -0.72 0.21 -1.04 0.21 -0.77 0 -1.04 -0.2 -1.36 -0.44 -0.3 -0.23 -0.64 -0.48 -1.33 -0.54v-1.56c0 -0.18 -0.15 -0.33 -0.33 -0.33s-0.33 0.15 -0.33 0.33v1.58c-0.54 0.08 -0.9 0.29 -1.21 0.5 -0.38 0.24 -0.71 0.46 -1.39 0.46 -0.32 0 -0.67 -0.07 -1.04 -0.21 -0.17 -0.06 -0.36 0.02 -0.43 0.2 -0.06 0.17 0.02 0.36 0.2 0.43 0.44 0.16 0.87 0.25 1.27 0.25 0.88 0 1.34 -0.3 1.75 -0.56 0.35 -0.23 0.65 -0.42 1.23 -0.42 0.66 0.01 0.91 0.19 1.21 0.41 0.36 0.27 0.76 0.57 1.76 0.57 0.4 0 0.83 -0.08 1.27 -0.25 0.17 -0.06 0.26 -0.26 0.2 -0.43z",fill:"#67757F",stroke:"none"},{d:"M12.93 16.54h-1.87c-0.43 0 -0.78 0.35 -0.78 0.78 0 0.43 0.35 0.78 0.78 0.78h0.16v0.23c0 0.43 0.35 0.78 0.78 0.78s0.78 -0.35 0.78 -0.78v-0.23h0.16c0.43 0 0.78 -0.35 0.78 -0.78s-0.35 -0.78 -0.78 -0.78z",fill:"#E75A70",stroke:"none"},{d:"M12.01 11.44c-0.18 0 -0.33 -0.15 -0.33 -0.33V5.58c0 -0.18 0.15 -0.33 0.33 -0.33s0.33 0.15 0.33 0.33v5.52c0 0.18 -0.15 0.33 -0.33 0.33zM14 10.38c-0.18 0 -0.33 -0.15 -0.33 -0.33 0 -1.92 0.82 -3.47 0.86 -3.54 0.09 -0.16 0.29 -0.22 0.45 -0.14 0.16 0.09 0.22 0.29 0.14 0.45 -0.01 0.01 -0.78 1.48 -0.78 3.22 0 0.18 -0.15 0.33 -0.33 0.33zm-4 0c-0.18 0 -0.33 -0.15 -0.33 -0.33 0 -1.75 -0.77 -3.21 -0.78 -3.22 -0.09 -0.16 -0.03 -0.36 0.14 -0.45 0.16 -0.09 0.36 -0.03 0.45 0.14 0.04 0.07 0.86 1.62 0.86 3.54 0 0.18 -0.15 0.33 -0.33 0.33z",fill:"#F18F26",stroke:"none"}]},{id:"emoji-dog",cat:"emoji",zh:"\u72D7",en:"Dog",kw:"dog \u72D7 \u5C0F\u72D7 \u5BA0\u7269 \u5FE0\u8BDA",ink:A,layers:[{d:"M10 18v4s0 2 2 2 2 -2 2 -2v-4h-4z",fill:"#DD2E44",stroke:"none"},{d:"M10 22l0 0.02c0.69 -0.02 1.34 -0.18 1.75 -0.86 0.11 -0.19 0.38 -0.19 0.49 0 0.41 0.67 1.06 0.83 1.75 0.86V18h-4v4z",fill:"#BE1931",stroke:"none"},{d:"M21.3 14.41c0 4.18 -3.33 4.18 -3.33 4.18h-12s-3.33 0 -3.33 -4.18c0 -4.48 3.33 -12.41 9.33 -12.41s9.33 8.6 9.33 12.41z",fill:"#D99E82",stroke:"none"},{d:"M12 13.33c-4.67 0 -6.67 2.35 -6.67 4.26 0 2.02 1.64 3.67 3.67 3.67 1.07 0 2.03 -0.44 2.7 -1.84 0.12 -0.26 0.48 -0.26 0.6 0 0.67 1.4 1.63 1.84 2.7 1.84 2.03 0 3.67 -1.64 3.67 -3.67C18.67 15.68 16.67 13.33 12 13.33z",fill:"#F4C7B5",stroke:"none"},{d:"M10 15.26c-0.67 0.67 1.33 2.67 2 2.67s2.67 -2 2 -2.67 -3.33 -0.67 -4 0zM8.67 12.67c-0.73 0 -1.33 -0.6 -1.33 -1.33v-1.33c0 -0.73 0.6 -1.33 1.33 -1.33s1.33 0.6 1.33 1.33v1.33c0 0.73 -0.6 1.33 -1.33 1.33zm6.67 0c-0.73 0 -1.33 -0.6 -1.33 -1.33v-1.33c0 -0.73 0.6 -1.33 1.33 -1.33s1.33 0.6 1.33 1.33v1.33c0 0.73 -0.6 1.33 -1.33 1.33z",fill:"#292F33",stroke:"none"},{d:"M10 2.41C9.29 1.47 7.79 0.59 1.89 2.8 -0.88 3.84 0.47 11.87 2.62 12.39c0.74 0 2.95 0 2.95 -5.9 0 -0.15 0 -0.28 0 -0.42C6.9 4.2 8.33 3.24 10 2.41zm12.11 0.39C16.21 0.59 14.71 1.47 14 2.41c1.67 0.83 3.1 1.79 4.43 3.67 0 0.13 0 0.27 0 0.42 0 5.9 2.21 5.9 2.95 5.9 2.15 -0.52 3.5 -8.55 0.74 -9.59z",fill:"#662113",stroke:"none"},{d:"M15.33 17A0.33 0.33 0 1 0 16 17A0.33 0.33 0 1 0 15.33 17Z",fill:"#D99E82",stroke:"none"},{d:"M7.33 17A0.33 0.33 0 1 0 8 17A0.33 0.33 0 1 0 7.33 17Z",fill:"#D99E82",stroke:"none"},{d:"M16.67 18.33A0.33 0.33 0 1 0 17.33 18.33A0.33 0.33 0 1 0 16.67 18.33Z",fill:"#D99E82",stroke:"none"},{d:"M6.67 18.33A0.33 0.33 0 1 0 7.33 18.33A0.33 0.33 0 1 0 6.67 18.33Z",fill:"#D99E82",stroke:"none"},{d:"M14.67 18.67A0.67 0.67 0 1 0 16 18.67A0.67 0.67 0 1 0 14.67 18.67Z",fill:"#D99E82",stroke:"none"},{d:"M8 18.67A0.67 0.67 0 1 0 9.33 18.67A0.67 0.67 0 1 0 8 18.67Z",fill:"#D99E82",stroke:"none"},{d:"M6.59 4.82c-0.17 -0.45 -0.42 -0.93 -0.78 -1.29 -0.26 -0.26 -0.68 -0.26 -0.94 0s-0.26 0.68 0 0.94c0.38 0.38 0.71 1.29 0.71 1.56 0.1 -0.27 0.56 -0.77 1.01 -1.21zm10.81 0c0.17 -0.45 0.42 -0.93 0.78 -1.29 0.26 -0.26 0.68 -0.26 0.94 0s0.26 0.68 0 0.94c-0.38 0.38 -0.71 1.29 -0.71 1.56 -0.1 -0.27 -0.56 -0.77 -1.01 -1.21z",fill:"#380F09",stroke:"none"}]},{id:"emoji-duck",cat:"emoji",zh:"\u9E2D",en:"Duck",kw:"duck \u9E2D\u5B50 \u9E2D \u840C \u6C34\u79BD",ink:A,layers:[{d:"M8.5 11.83c0.82 1.46 1.24 -0.91 6.21 -1.75s9.15 2.97 9.24 3.61c0.09 0.64 -2.96 6.31 -6.31 6.31H7.17c-2.76 0 -4.68 -4.82 -2.67 -7.63 0 0 3 -2.33 4 -0.54z",fill:"#D99E82",stroke:"none"},{d:"M8.67 12.09C5.35 16.72 4.65 20 7.17 20c-2.76 0 -4.39 -4.13 -2.98 -7.35 0.31 -0.71 1.17 -1.66 1.17 -1.66l2.79 -0.01c0.11 0.21 0.4 0.91 0.53 1.11z",fill:"#C1694F",stroke:"none"},{d:"M13.37 15.17c4.45 -1.79 10.49 -2.11 10.57 -1.47 0.09 0.64 -2.96 6.31 -6.31 6.31H7.88c-2.76 0 0.82 -2.95 5.5 -4.83z",fill:"#E1E8ED",stroke:"none"},{d:"M16.91 14.08c4 -0.87 6.98 -0.85 7.04 -0.39 0.05 0.39 -1.04 2.6 -2.65 4.3 1.47 -1.87 0.95 -4.08 -4.39 -3.91z",fill:"#292F33",stroke:"none"},{d:"M4.75 4.08c1.04 -3.29 6.96 -2.76 6.71 0.46 -0.25 3.22 -4.3 5.24 -2.79 7.55 -1.06 0.92 -3.34 0.61 -4.48 0.56 0.47 -0.9 0.92 -1.75 1.21 -2.27 1.94 -3.49 -1.42 -3.84 -0.65 -6.29z",fill:"#3E721D",stroke:"none"},{d:"M1.26 6.03c0.38 -0.73 0.37 0.07 2.23 0.09 1.04 0.01 0.98 -0.37 1.11 -1.08 0.03 -0.15 0.52 1.08 1.37 1.2 2.37 0.35 1.25 1.29 0 1.51 -0.6 0.1 -1.34 0.21 -2.63 0.1 -1.68 -0.14 -2.51 -1.02 -2.09 -1.83z",fill:"#FFCC4D",stroke:"none"},{d:"M8.33 11.08c0.03 0.42 0.34 1.01 0.34 1.01 -0.68 0.98 -3.76 2.01 -4.9 1.95 0.06 -0.42 0.19 -0.91 0.42 -1.4 1.23 -0.31 3.11 -0.71 4.15 -1.56z",fill:"#F5F8FA",stroke:"none"},{d:"M7.81 4.1c0 0.48 -0.39 0.86 -0.86 0.86s-0.86 -0.39 -0.86 -0.86c0 -0.48 0.39 -0.86 0.86 -0.86s0.86 0.39 0.86 0.86z",fill:"#292F33",stroke:"none"}]},{id:"emoji-panda",cat:"emoji",zh:"\u718A\u732B",en:"Panda",kw:"panda \u718A\u732B \u6EDA\u6EDA \u53EF\u7231 \u56FD\u5B9D",ink:A,layers:[{d:"M0.67 4A4 4 0 1 0 8.67 4A4 4 0 1 0 0.67 4Z",fill:"#272B2B",stroke:"none"},{d:"M15.33 4A4 4 0 1 0 23.33 4A4 4 0 1 0 15.33 4Z",fill:"#272B2B",stroke:"none"},{d:"M2 4A2.67 2.67 0 1 0 7.33 4A2.67 2.67 0 1 0 2 4Z",fill:"#66757F",stroke:"none"},{d:"M16.67 4A2.67 2.67 0 1 0 22 4A2.67 2.67 0 1 0 16.67 4Z",fill:"#66757F",stroke:"none"},{d:"M23.33 14.67c0 4.67 -4.25 8 -11.33 8S0.67 19.33 0.67 14.67C0.67 14.67 1.54 0 12 0s11.33 14.67 11.33 14.67z",fill:"#EEE",stroke:"none"},{d:"M8 20A4 4 0 1 0 16 20A4 4 0 1 0 8 20Z",fill:"#CCD6DD",stroke:"none"},{d:"M9.33 20A2.67 2.67 0 1 0 14.67 20A2.67 2.67 0 1 0 9.33 20Z",fill:"#DD2E44",stroke:"none"},{d:"M13.81 8.44C16.78 6.59 21.33 11.33 17.97 15.11 15.64 17.73 13.33 16.67 13.33 16.67s-1.76 -6.84 0.47 -8.23zm-3.63 0.01C7.21 6.59 2.65 11.34 6.02 15.12c2.33 2.61 4.64 1.55 4.64 1.55s1.76 -6.84 -0.47 -8.23z",fill:"#272B2B",stroke:"none"},{d:"M7.33 11.33s0 -1.33 1.33 -1.33 1.33 1.33 1.33 1.33v1.33s0 1.33 -1.33 1.33 -1.33 -1.33 -1.33 -1.33v-1.33z",fill:"#66757F",stroke:"none"},{d:"M12 13.33S4.67 15.79 4.67 18s1.79 4 4 4c1.39 0 2.62 -0.71 3.33 -1.79C12.72 21.29 13.94 22 15.33 22c2.21 0 4 -1.79 4 -4s-7.33 -4.67 -7.33 -4.67z",fill:"#FFF",stroke:"none"},{d:"M14 11.33s0 -1.33 1.33 -1.33 1.33 1.33 1.33 1.33v1.33s0 1.33 -1.33 1.33 -1.33 -1.33 -1.33 -1.33v-1.33z",fill:"#66757F",stroke:"none"},{d:"M8.75 16.67c-1.08 0.67 2.17 2.67 3.25 2.67s4.33 -2 3.25 -2.67 -5.42 -0.67 -6.5 0z",fill:"#272B2B",stroke:"none"}]},{id:"emoji-tiger",cat:"emoji",zh:"\u8001\u864E",en:"Tiger",kw:"tiger \u8001\u864E \u864E \u751F\u8096 \u5A01\u731B",ink:A,layers:[{d:"M0.67 4A4 4 0 1 0 8.67 4A4 4 0 1 0 0.67 4Z",fill:"#FFCC4D",stroke:"none"},{d:"M8 20A4 4 0 1 0 16 20A4 4 0 1 0 8 20Z",fill:"#FFCC4D",stroke:"none"},{d:"M9.33 20A2.67 2.67 0 1 0 14.67 20A2.67 2.67 0 1 0 9.33 20Z",fill:"#DD2E44",stroke:"none"},{d:"M15.33 4A4 4 0 1 0 23.33 4A4 4 0 1 0 15.33 4Z",fill:"#FFCC4D",stroke:"none"},{d:"M2 4A2.67 2.67 0 1 0 7.33 4A2.67 2.67 0 1 0 2 4Z",fill:"#E6AAAA",stroke:"none"},{d:"M16.67 4A2.67 2.67 0 1 0 22 4A2.67 2.67 0 1 0 16.67 4Z",fill:"#E6AAAA",stroke:"none"},{d:"M22.67 14.67c0 4.67 -3.28 4.67 -3.28 4.67H4.62S1.33 19.33 1.33 14.67C1.33 14.67 2.15 0 12 0c9.85 0 10.67 14.67 10.67 14.67z",fill:"#FFCC4D",stroke:"none"},{d:"M7.33 11.33s0 -1.33 1.33 -1.33 1.33 1.33 1.33 1.33v1.33s0 1.33 -1.33 1.33 -1.33 -1.33 -1.33 -1.33v-1.33zm6.67 0s0 -1.33 1.33 -1.33 1.33 1.33 1.33 1.33v1.33s0 1.33 -1.33 1.33 -1.33 -1.33 -1.33 -1.33v-1.33z",fill:"#272B2B",stroke:"none"},{d:"M15.79 15.33c-1.6 0 -3 0.64 -3.79 1.59C11.22 15.97 9.82 15.33 8.21 15.33 1.33 15.33 1.36 15.61 1.33 17.45c-0.06 3.74 4.42 4.6 6.88 4.55 1.6 -0.04 3 -0.66 3.79 -1.6 0.78 0.94 2.18 1.56 3.79 1.6 2.46 0.05 6.94 -0.81 6.88 -4.55 -0.03 -1.84 0 -2.12 -6.88 -2.12z",fill:"#FFF",stroke:"none"},{d:"M22.44 16.83c0.14 0.19 0.22 0.39 0.23 0.63 0.02 1.27 -0.5 2.2 -1.28 2.88L18 20.67l4.44 -3.84zM10 16.67c-0.67 0.67 1.33 2.67 2 2.67s2.67 -2 2 -2.67 -3.33 -0.67 -4 0zM6.67 2c1.78 1.33 5.33 2.67 5.33 2.67s3.56 -1.33 5.33 -2.67l-5.33 0.67 -5.33 -0.67zm5.33 -0.67s1.1 -0.41 2.38 -1.01C13.65 0.12 12.86 0 12 0s-1.65 0.12 -2.38 0.32C10.9 0.92 12 1.33 12 1.33zm-4.67 4.67c2 1.33 4.67 2.67 4.67 2.67s2.67 -1.33 4.67 -2.67l-4.67 0.67 -4.67 -0.67zm13.76 1.52L18 10l4 0.5c-0.22 -0.93 -0.52 -1.95 -0.91 -2.98zm1.27 4.77L18.67 16h3.89c0.07 -0.4 0.11 -0.83 0.11 -1.33 0 0 -0.05 -0.95 -0.3 -2.37zm-20.74 0C1.39 13.71 1.33 14.67 1.33 14.67c0 0.5 0.04 0.94 0.11 1.33H5.33l-3.7 -3.7zm-0.07 4.53c-0.14 0.19 -0.22 0.39 -0.23 0.63 -0.02 1.27 0.5 2.2 1.28 2.88L6 20.67l-4.44 -3.84zM6 10l-3.1 -2.48c-0.39 1.02 -0.69 2.04 -0.91 2.98L6 10z",fill:"#272B2B",stroke:"none"}]},{id:"emoji-fox",cat:"emoji",zh:"\u72D0\u72F8",en:"Fox",kw:"fox \u72D0\u72F8 \u673A\u667A \u53EF\u7231",ink:A,layers:[{d:"M8.95 6.53c0.44 1.76 -5.78 6.99 -7.5 2.73C0.46 6.8 -0.4 1.62 0.58 1.38c0.99 -0.25 7.93 3.4 8.37 5.16z",fill:"#F4900C",stroke:"none"},{d:"M7.62 6.9c0.64 1.03 -1.22 3.04 -2.25 3.68 -1.03 0.64 -1.93 -0.37 -2.94 -2.94 -0.44 -1.13 -1.11 -4.18 -0.74 -4.41 0.37 -0.23 5.28 2.65 5.92 3.68z",fill:"#A0041E",stroke:"none"},{d:"M15.04 6.53C14.6 8.29 20.82 13.53 22.53 9.27c0.99 -2.47 1.86 -7.64 0.87 -7.89 -0.99 -0.25 -7.93 3.4 -8.37 5.16z",fill:"#F4900C",stroke:"none"},{d:"M16.37 6.9c-0.64 1.03 1.22 3.04 2.25 3.68 1.02 0.64 1.93 -0.37 2.94 -2.94 0.44 -1.13 1.11 -4.18 0.74 -4.41 -0.38 -0.23 -5.28 2.65 -5.92 3.68z",fill:"#A0041E",stroke:"none"},{d:"M21.56 17.94c0 -0.3 -0.13 -0.73 -0.27 -1.12 0.39 0.02 1.01 0.13 1.85 0.54 -0.01 -0.36 -0.08 -0.66 -0.18 -0.93 0.03 0.01 0.05 0.02 0.08 0.04 -0.74 -2.21 -2.21 -3.68 -2.21 -3.68h1.47c-1.55 -3.11 -3.31 -5.34 -5.38 -6.37 -0.93 -0.58 -2.46 -0.89 -4.92 -0.89h0c-2.46 0 -4 0.31 -4.92 0.9 -2.07 1.03 -3.82 3.26 -5.37 6.37H3.17s-1.47 1.47 -2.21 3.68c0.02 -0.01 0.04 -0.02 0.06 -0.03 -0.13 0.26 -0.2 0.56 -0.19 0.92 0.84 -0.42 1.48 -0.53 1.88 -0.55 -0.13 0.34 -0.23 0.7 -0.26 0.98 -0.08 0.25 -0.13 0.54 -0.09 0.9C4.5 17.72 5.5 17.86 6.67 18.44 7.48 20.86 9.47 22.67 12 22.67c2.53 0 4.5 -1.86 5.31 -4.28 0.97 -0.83 2.47 -0.58 4.28 0.28 0.04 -0.28 0.02 -0.52 -0.02 -0.73l0.01 0z",fill:"#F18F26",stroke:"none"},{d:"M20.83 15.73c0 0 0.74 0 2.21 0.74 -0.83 -1.89 -5.02 -2.71 -6.62 -2.19 -0.78 1.3 -0.85 3.34 -2.26 4.41 -1.16 0.95 -3.14 0.97 -4.32 0 -1.56 -1.28 -1.71 -3.88 -2.25 -4.41 -1.6 -0.52 -5.79 0.3 -6.62 2.19 1.47 -0.73 2.2 -0.74 2.21 -0.74 0 0 -0.74 1.47 -0.74 2.21l0 0v0c1.6 -1.05 3.41 -1.51 4.95 -0.3 1.11 5.28 8.2 5.03 9.22 0 1.54 -1.21 3.35 -0.75 4.95 0.3v0l0 0c0 -0.74 -0.73 -2.21 -0.73 -2.21z",fill:"#FFD983",stroke:"none"},{d:"M7.33 11.33s0 -1 1 -1S9.33 11.33 9.33 11.33v1s0 1 -1 1 -1 -1 -1 -1V11.33zm7.33 0s0 -1 1 -1S16.67 11.33 16.67 11.33v1s0 1 -1 1 -1 -1 -1 -1V11.33zm-4.71 7.21c-0.68 0.14 1.36 2.65 2.04 2.65 0.68 0 2.72 -2.51 2.04 -2.65 -0.68 -0.14 -3.4 -0.14 -4.08 0z",fill:"#272B2B",stroke:"none"}]},{id:"emoji-frog",cat:"emoji",zh:"\u9752\u86D9",en:"Frog",kw:"frog \u9752\u86D9 \u86D9 \u7EFF\u8272 \u53EF\u7231",ink:A,layers:[{d:"M24 14.67c0 4.97 -5.37 8 -12 8S0 19.64 0 14.67 5.37 4.67 12 4.67s12 5.03 12 10z",fill:"#C6E5B3",stroke:"none"},{d:"M21.17 8.45C22.08 7.72 22.67 6.59 22.67 5.33c0 -2.21 -1.79 -4 -4 -4 -1.91 0 -3.5 1.34 -3.9 3.12 -0.86 -0.32 -1.79 -0.51 -2.77 -0.51 -0.98 0 -1.91 0.18 -2.77 0.51C8.83 2.67 7.24 1.33 5.33 1.33 3.12 1.33 1.33 3.12 1.33 5.33c0 1.26 0.58 2.38 1.5 3.12C1.07 10.24 0 12.46 0 14.67c0 4.97 5.37 0.67 12 0.67s12 4.3 12 -0.67c0 -2.21 -1.07 -4.43 -2.83 -6.22z",fill:"#77B255",stroke:"none"},{d:"M2.67 5A2.33 2.33 0 1 0 7.33 5A2.33 2.33 0 1 0 2.67 5Z",fill:"#FFF",stroke:"none"},{d:"M4 5A1 1 0 1 0 6 5A1 1 0 1 0 4 5Z",fill:"#292F33",stroke:"none"},{d:"M16.67 5A2.33 2.33 0 1 0 21.33 5A2.33 2.33 0 1 0 16.67 5Z",fill:"#FFF",stroke:"none"},{d:"M18 5A1 1 0 1 0 20 5A1 1 0 1 0 18 5Z",fill:"#292F33",stroke:"none"},{d:"M8.67 13.33A0.67 0.67 0 1 0 10 13.33A0.67 0.67 0 1 0 8.67 13.33Z",fill:"#5C913B",stroke:"none"},{d:"M14 13.33A0.67 0.67 0 1 0 15.33 13.33A0.67 0.67 0 1 0 14 13.33Z",fill:"#5C913B",stroke:"none"}]},{id:"emoji-monkey",cat:"emoji",zh:"\u7334\u5B50",en:"Monkey",kw:"monkey \u7334\u5B50 \u7334 \u751F\u8096 \u673A\u7075",ink:A,layers:[{d:"M0.82 11.63A2.55 3.64 0 1 0 5.91 11.63A2.55 3.64 0 1 0 0.82 11.63Z",fill:"#D79E84",stroke:"none"},{d:"M17.07 11.63A3.64 2.55 0 1 0 24.34 11.63A3.64 2.55 0 1 0 17.07 11.63Z",fill:"#D79E84",stroke:"none"},{d:"M12.68 24h-1.36C6.84 24 2.5 20.57 2.5 15.76c0 -2.75 1.02 -4.12 1.02 -4.12s-0.34 -1.37 -0.34 -2.75C3.18 4.77 7.52 1.33 12 1.33c4.48 0 8.82 4.12 8.82 7.56 0 1.37 -0.34 2.75 -0.34 2.75s1.02 1.37 1.02 4.12C21.5 20.57 17.16 24 12.68 24z",fill:"#BF6952",stroke:"none"},{d:"M20 10.69C20 8.1 17.88 6 15.27 6c-1.27 0 -2.42 0.5 -3.27 1.31C11.15 6.5 10 6 8.73 6 6.12 6 4 8.1 4 10.69c0 1.57 0.78 2.96 1.98 3.81 -0.34 0.83 -0.52 1.73 -0.52 2.69C5.45 20.98 8.39 23.33 12 23.33s6.55 -2.35 6.55 -6.14c0 -0.95 -0.19 -1.86 -0.52 -2.69C19.22 13.66 20 12.27 20 10.69z",fill:"#D79E84",stroke:"none"},{d:"M7.17 11.33A1.5 2.17 0 1 0 10.17 11.33A1.5 2.17 0 1 0 7.17 11.33Z",fill:"#292F33",stroke:"none"},{d:"M13.83 11.33A1.5 2.17 0 1 0 16.83 11.33A1.5 2.17 0 1 0 13.83 11.33Z",fill:"#292F33",stroke:"none"},{d:"M12 21.82c1.89 0 3.5 -1 4.11 -2.41 0.25 -0.58 -0.17 -1.23 -0.81 -1.23h-6.6c-0.63 0 -1.06 0.65 -0.81 1.23 0.61 1.4 2.22 2.41 4.11 2.41z",fill:"#642116",stroke:"none"},{d:"M10.17 15.33A0.67 0.67 0 1 0 11.5 15.33A0.67 0.67 0 1 0 10.17 15.33Z",fill:"#642116",stroke:"none"},{d:"M12.5 15.33A0.67 0.67 0 1 0 13.83 15.33A0.67 0.67 0 1 0 12.5 15.33Z",fill:"#642116",stroke:"none"},{d:"M15.11 0.12s-3.64 -0.73 -5.09 1.45 2.91 0.73 2.91 0.73S13.65 0.12 15.11 0.12z",fill:"#BF6952",stroke:"none"}]},{id:"emoji-cow",cat:"emoji",zh:"\u725B",en:"Cow",kw:"cow \u725B \u5976\u725B \u751F\u8096 \u52E4\u52B3",ink:A,layers:[{d:"M2.67 5.33s-2.67 1.33 -2.67 7.33c0 0 4 -0.67 4.67 -2 0 0 1.33 -8.17 -2 -5.33zm18.66 0.03s2.67 1.33 2.67 7.33c0 0 -4 -0.67 -4.67 -2 0 0 -1.33 -8.17 2 -5.33z",fill:"#99AAB5",stroke:"none"},{d:"M0.67 0.67c-0.67 0.66 0.67 5.33 3.33 6s2.67 -3.33 2 -3.33C3.33 3.33 2.03 -0.67 0.67 0.67zm22.86 0c0.67 0.66 -0.67 5.33 -3.33 6s-2.67 -3.33 -2 -3.33c2.67 0 3.97 -4 5.33 -2.67z",fill:"#FFE8B6",stroke:"none"},{d:"M14.65 20.67h-5.3C5.66 20.67 2.67 17.67 2.67 13.98v-5.97C2.67 4.33 5.66 1.33 9.35 1.33h5.3C18.34 1.33 21.33 4.33 21.33 8.02v5.97C21.33 17.67 18.34 20.67 14.65 20.67z",fill:"#CCD6DD",stroke:"none"},{d:"M23.33 18.67c0 3.68 -2.99 5.33 -6.67 5.33H7.33c-3.68 0 -6.67 -1.65 -6.67 -5.33s2.98 -6.67 6.67 -6.67h9.33c3.68 0 6.67 2.99 6.67 6.67z",fill:"#E6AAAA",stroke:"none"},{d:"M5.33 17.33A1 2 0 1 0 7.33 17.33A1 2 0 1 0 5.33 17.33Z",fill:"#C1694F",stroke:"none"},{d:"M16.67 17.33A1 2 0 1 0 18.67 17.33A1 2 0 1 0 16.67 17.33Z",fill:"#C1694F",stroke:"none"},{d:"M7.33 8s0 -1.33 1.33 -1.33 1.33 1.33 1.33 1.33v1.33s0 1.33 -1.33 1.33 -1.33 -1.33 -1.33 -1.33v-1.33zm6.67 0s0 -1.33 1.33 -1.33 1.33 1.33 1.33 1.33v1.33s0 1.33 -1.33 1.33 -1.33 -1.33 -1.33 -1.33v-1.33z",fill:"#272B2B",stroke:"none"}]},{id:"emoji-sun",cat:"emoji",zh:"\u592A\u9633",en:"Sun",kw:"sun \u592A\u9633 \u6674\u5929 \u9633\u5149 \u5929\u6C14",ink:A,layers:[{d:"M10.67 1.33s0 -1.33 1.33 -1.33 1.33 1.33 1.33 1.33v1.33s0 1.33 -1.33 1.33 -1.33 -1.33 -1.33 -1.33V1.33zm12 9.33s1.33 0 1.33 1.33 -1.33 1.33 -1.33 1.33h-1.33s-1.33 0 -1.33 -1.33 1.33 -1.33 1.33 -1.33h1.33zM2.67 10.67s1.33 0 1.33 1.33 -1.33 1.33 -1.33 1.33H1.33s-1.33 0 -1.33 -1.33 1.33 -1.33 1.33 -1.33h1.33zm3.41 -5.8s0.94 0.94 0 1.89 -1.89 0 -1.89 0L3.25 5.81s-0.94 -0.94 0 -1.89c0.94 -0.94 1.89 0 1.89 0l0.94 0.94zm14 14s0.94 0.94 0 1.89 -1.89 0 -1.89 0l-0.94 -0.94s-0.94 -0.94 0 -1.89 1.89 0 1.89 0l0.94 0.94zm-0.28 -12.11s-0.94 0.94 -1.89 0 0 -1.89 0 -1.89l0.94 -0.94s0.94 -0.94 1.89 0 0 1.89 0 1.89l-0.94 0.94zm-14 14s-0.94 0.94 -1.89 0 0 -1.89 0 -1.89l0.94 -0.94s0.94 -0.94 1.89 0 0 1.89 0 1.89l-0.94 0.94zM10.67 21.33s0 -1.33 1.33 -1.33 1.33 1.33 1.33 1.33v1.33s0 1.33 -1.33 1.33 -1.33 -1.33 -1.33 -1.33v-1.33z",fill:"#FFAC33",stroke:"none"},{d:"M5.33 12A6.67 6.67 0 1 0 18.67 12A6.67 6.67 0 1 0 5.33 12Z",fill:"#FFAC33",stroke:"none"}]},{id:"emoji-moon",cat:"emoji",zh:"\u6708\u4EAE",en:"Moon",kw:"moon \u6708\u4EAE \u591C\u665A \u6708\u8272 \u5F2F\u6708",ink:A,layers:[{d:"M20.21 0.52C21.33 12.67 13.33 21.33 0.52 20.21c5.47 5.14 14.06 5.06 19.4 -0.29C25.27 14.58 25.35 5.98 20.21 0.52z",fill:"#FFD983",stroke:"none"},{d:"M20.47 10.61c-0.3 0.3 -0.3 0.79 0 1.1 0.3 0.3 0.79 0.3 1.1 0 0.3 -0.3 0.3 -0.79 0 -1.1 -0.3 -0.3 -0.79 -0.3 -1.1 0zm-10.68 9.59c-0.45 0.45 -0.45 1.19 0 1.64 0.45 0.45 1.19 0.45 1.64 0 0.45 -0.45 0.45 -1.19 0 -1.64 -0.45 -0.45 -1.19 -0.45 -1.64 0zm9.31 -1.43c-0.76 0.76 -1.98 0.76 -2.74 0 -0.76 -0.76 -0.76 -1.98 0 -2.74 0.76 -0.76 1.98 -0.76 2.74 0 0.76 0.76 0.76 1.98 0 2.74z",fill:"#FFCC4D",stroke:"none"}]},{id:"emoji-star",cat:"emoji",zh:"\u661F\u661F",en:"Star",kw:"star \u661F\u661F \u661F \u91CD\u8981 \u597D\u8BC4",ink:A,layers:[{d:"M18.19 23.08c-0.27 0 -0.54 -0.08 -0.77 -0.25L12 18.95l-5.42 3.89c-0.46 0.33 -1.08 0.33 -1.54 -0.01 -0.46 -0.33 -0.65 -0.92 -0.48 -1.46l2.02 -6.53 -5.37 -3.79c-0.46 -0.34 -0.65 -0.93 -0.47 -1.47 0.18 -0.54 0.68 -0.9 1.24 -0.91L8.63 8.67l2.12 -6.37c0.18 -0.54 0.68 -0.9 1.25 -0.9 0.57 0 1.07 0.36 1.25 0.9L15.33 8.67l6.69 0.01c0.57 0 1.07 0.37 1.24 0.91 0.18 0.54 -0.01 1.13 -0.47 1.47l-5.37 3.79 2.02 6.53c0.17 0.54 -0.02 1.13 -0.48 1.46 -0.23 0.17 -0.5 0.25 -0.77 0.25z",fill:"#FFAC33",stroke:"none"}]},{id:"emoji-cloud",cat:"emoji",zh:"\u4E91\u6735",en:"Cloud",kw:"cloud \u4E91\u6735 \u4E91 \u5929\u6C14 \u8F6F\u7EF5\u7EF5",ink:A,layers:[{d:"M18 5.33c-0.47 0 -0.92 0.07 -1.34 0.2 0 -0.07 0.01 -0.13 0.01 -0.2 0 -2.21 -1.79 -4 -4 -4 -1.85 0 -3.4 1.25 -3.86 2.95C8.35 4.1 7.86 4 7.33 4c-2.21 0 -4 1.79 -4 4 0 2.21 1.79 4 4 4 1.85 0 3.4 -1.25 3.86 -2.95 0.46 0.18 0.95 0.29 1.48 0.29 0.25 0 0.49 -0.03 0.73 -0.07 -0.04 0.24 -0.06 0.48 -0.06 0.74 0 2.58 2.09 4.67 4.67 4.67s4.67 -2.09 4.67 -4.67c0 -2.58 -2.09 -4.67 -4.67 -4.67z",fill:"#CCD6DD",stroke:"none"},{d:"M20.67 14.67c-0.31 0 -0.61 0.06 -0.89 0.14 0.14 -0.35 0.23 -0.73 0.23 -1.14 0 -1.66 -1.34 -3 -3 -3 -0.68 0 -1.3 0.23 -1.8 0.61C14.73 9.4 13.03 8 11 8c-1.89 0 -3.5 1.21 -4.09 2.9C6.41 10.75 5.88 10.67 5.33 10.67c-2.95 0 -5.33 2.39 -5.33 5.33 0 2.95 2.39 5.33 5.33 5.33h15.33c1.84 0 3.33 -1.49 3.33 -3.33s-1.49 -3.33 -3.33 -3.33z",fill:"#E1E8ED",stroke:"none"}]},{id:"emoji-snowman",cat:"emoji",zh:"\u96EA\u4EBA",en:"Snowman",kw:"snowman \u96EA\u4EBA \u51AC\u5929 \u4E0B\u96EA \u5806\u96EA",ink:A,layers:[{d:"M5.33 17.33A6.67 6.67 0 1 0 18.67 17.33A6.67 6.67 0 1 0 5.33 17.33Z",fill:"#E1E8ED",stroke:"none"},{d:"M8 7.33c0 -2.21 1.79 -4 4 -4 2.21 0 4 1.79 4 4s-1.79 4 -4 4c-2.21 0 -4 -1.79 -4 -4z",fill:"#E1E8ED",stroke:"none"},{d:"M15.33 4c0 0.74 -0.6 1.33 -1.33 1.33h-4c-0.74 0 -1.33 -0.6 -1.33 -1.33V1.33c0 -0.74 0.6 -1.33 1.33 -1.33h4c0.74 0 1.33 0.6 1.33 1.33v2.67z",fill:"#414042",stroke:"none"},{d:"M16.67 4.67c0 0.37 -0.3 0.67 -0.67 0.67H8c-0.37 0 -0.67 -0.3 -0.67 -0.67s0.3 -0.67 0.67 -0.67h8c0.37 0 0.67 0.3 0.67 0.67z",fill:"#231F20",stroke:"none"},{d:"M15 10h-6c-0.55 0 -1 0.45 -1 1 0 0.43 0.28 0.8 0.67 0.94V16.67c0 0.37 0.3 0.67 0.67 0.67h0.67c0.37 0 0.67 -0.3 0.67 -0.67v-4.67h4.33c0.55 0 1 -0.45 1 -1s-0.45 -1 -1 -1z",fill:"#DD2E44",stroke:"none"},{d:"M12.67 16c0 0.37 -0.3 0.67 -0.67 0.67 -0.37 0 -0.67 -0.3 -0.67 -0.67 0 -0.37 0.3 -0.67 0.67 -0.67 0.37 0 0.67 0.3 0.67 0.67zm0 3.33c0 0.37 -0.3 0.67 -0.67 0.67 -0.37 0 -0.67 -0.3 -0.67 -0.67 0 -0.37 0.3 -0.67 0.67 -0.67 0.37 0 0.67 0.3 0.67 0.67z",fill:"#414042",stroke:"none"},{d:"M12.67 8c0 0.37 -0.3 0.67 -0.67 0.67 -0.37 0 -0.67 -0.3 -0.67 -0.67 0 -0.37 0.3 -0.67 0.67 -0.67 0.37 0 0.67 0.3 0.67 0.67z",fill:"#F4900C",stroke:"none"},{d:"M10.67 6.67c0 0.37 -0.3 0.67 -0.67 0.67s-0.67 -0.3 -0.67 -0.67c0 -0.37 0.3 -0.67 0.67 -0.67s0.67 0.3 0.67 0.67zm4 0c0 0.37 -0.3 0.67 -0.67 0.67 -0.37 0 -0.67 -0.3 -0.67 -0.67 0 -0.37 0.3 -0.67 0.67 -0.67 0.37 0 0.67 0.3 0.67 0.67z",fill:"#414042",stroke:"none"},{d:"M6.93 13.39l-2.3 -0.99 -0.36 -1.91c-0.07 -0.36 -0.42 -0.6 -0.78 -0.53 -0.36 0.07 -0.6 0.42 -0.53 0.78l0.2 1.03 -0.89 -0.38c-0.34 -0.15 -0.73 0.01 -0.88 0.35 -0.15 0.34 0.01 0.73 0.35 0.88l0.5 0.21 -0.7 0.7c-0.26 0.26 -0.26 0.68 0 0.94 0.13 0.13 0.3 0.2 0.47 0.2s0.34 -0.07 0.47 -0.2l1.08 -1.08 2.85 1.22c0.09 0.04 0.17 0.05 0.26 0.05 0.26 0 0.5 -0.15 0.61 -0.4 0.15 -0.34 -0.01 -0.73 -0.35 -0.88zm15.28 -2.02l-0.98 -0.33 0.57 -0.57c0.26 -0.26 0.26 -0.68 0 -0.94s-0.68 -0.26 -0.94 0l-0.5 0.5 -0.38 -1.52c-0.09 -0.36 -0.45 -0.58 -0.81 -0.48 -0.36 0.09 -0.57 0.45 -0.48 0.81l0.57 2.3 -2.4 2.4c-0.26 0.26 -0.26 0.68 0 0.94 0.13 0.13 0.3 0.19 0.47 0.19s0.34 -0.07 0.47 -0.2l2.38 -2.38 1.61 0.54c0.07 0.02 0.14 0.03 0.21 0.03 0.28 0 0.54 -0.18 0.63 -0.46 0.12 -0.35 -0.07 -0.73 -0.42 -0.84z",fill:"#FFAC33",stroke:"none"}]},{id:"emoji-snowflake",cat:"emoji",zh:"\u96EA\u82B1",en:"Snowflake",kw:"snowflake \u96EA\u82B1 \u51AC\u5929 \u5BD2\u51B7 \u4E0B\u96EA",ink:A,layers:[{d:"M12.67 18.39V5.61l3.22 -3.22s0.47 -0.47 0 -0.94c-0.47 -0.47 -0.94 0 -0.94 0L12.67 3.72V0.67s0 -0.67 -0.67 -0.67 -0.67 0.67 -0.67 0.67v3.06l-2.28 -2.28s-0.47 -0.47 -0.94 0c-0.47 0.47 0 0.94 0 0.94L11.33 5.61v12.78l-3.22 3.22s-0.47 0.47 0 0.94 0.94 0 0.94 0L11.33 20.28V23.33s0 0.67 0.67 0.67 0.67 -0.67 0.67 -0.67v-3.06l2.28 2.28s0.47 0.47 0.94 0 0 -0.94 0 -0.94L12.67 18.39z",fill:"#88C9F9",stroke:"none"},{d:"M23.08 13.91c-0.17 -0.64 -0.82 -0.47 -0.82 -0.47l-4.4 1.18 -11.07 -6.39 -1.18 -4.4s-0.17 -0.64 -0.82 -0.47C4.16 3.53 4.33 4.18 4.33 4.18l0.83 3.11 -2.65 -1.53s-0.58 -0.33 -0.91 0.24c-0.33 0.58 0.24 0.91 0.24 0.91l2.65 1.53 -3.11 0.83s-0.64 0.17 -0.47 0.82c0.17 0.64 0.82 0.47 0.82 0.47l4.4 -1.18 11.07 6.39 1.18 4.4s0.17 0.64 0.82 0.47c0.64 -0.17 0.47 -0.82 0.47 -0.82l-0.83 -3.11 2.65 1.53s0.58 0.33 0.91 -0.24c0.33 -0.58 -0.24 -0.91 -0.24 -0.91l-2.65 -1.53 3.11 -0.83c0 0 0.64 -0.17 0.47 -0.82z",fill:"#88C9F9",stroke:"none"},{d:"M22.61 9.27l-3.11 -0.83 2.65 -1.53s0.58 -0.33 0.24 -0.91c-0.33 -0.58 -0.91 -0.24 -0.91 -0.24l-2.65 1.53 0.83 -3.11s0.17 -0.64 -0.47 -0.82c-0.64 -0.17 -0.82 0.47 -0.82 0.47l-1.18 4.4 -11.07 6.39 -4.4 -1.18s-0.64 -0.17 -0.82 0.47c-0.17 0.64 0.47 0.82 0.47 0.82l3.11 0.83 -2.65 1.53s-0.58 0.33 -0.24 0.91c0.33 0.58 0.91 0.24 0.91 0.24l2.65 -1.53 -0.83 3.11s-0.17 0.64 0.47 0.82c0.64 0.17 0.82 -0.47 0.82 -0.47l1.18 -4.4 11.07 -6.39 4.4 1.18s0.64 0.17 0.82 -0.47c0.17 -0.64 -0.47 -0.82 -0.47 -0.82z",fill:"#88C9F9",stroke:"none"}]},{id:"emoji-clover",cat:"emoji",zh:"\u5E78\u8FD0",en:"Clover",kw:"clover \u56DB\u53F6\u8349 \u5E78\u8FD0 \u597D\u8FD0 \u53F6\u5B50",ink:A,layers:[{d:"M21.7 12.57c-1.4 -1.23 -4.46 -2.18 -6.79 -2.56 2.33 -0.38 5.39 -1.33 6.79 -2.56 1.34 -1.18 1.98 -1.97 1.43 -3.15 -0.38 -0.81 -1.9 -0.89 -2.78 -1.66C19.48 1.87 19.39 0.52 18.47 0.19c-1.34 -0.48 -2.22 0.08 -3.56 1.26 -1.4 1.23 -2.47 3.93 -2.9 5.99 -0.44 -2.05 -1.51 -4.76 -2.9 -5.99C7.76 0.26 6.87 -0.29 5.53 0.19c-0.92 0.33 -1.01 1.68 -1.88 2.45S1.25 3.49 0.87 4.3c-0.55 1.18 0.09 1.96 1.43 3.15 1.4 1.23 4.46 2.18 6.79 2.56 -2.33 0.38 -5.39 1.33 -6.79 2.56 -1.34 1.18 -1.98 1.96 -1.43 3.15 0.38 0.81 1.9 0.89 2.78 1.66 0.87 0.77 0.96 2.12 1.88 2.45 1.34 0.48 2.22 -0.08 3.57 -1.26 1.1 -0.97 2 -2.86 2.54 -4.62 -0.17 3.02 0.35 7.06 2.57 9.51 0.9 0.99 1.6 0.37 1.88 0.12 0.28 -0.24 1.07 -0.94 0.12 -1.88 -2.61 -2.59 -3.51 -5.28 -3.75 -7.43 0.55 1.67 1.4 3.38 2.44 4.3 1.34 1.18 2.23 1.74 3.57 1.26 0.92 -0.33 1.01 -1.68 1.88 -2.45 0.87 -0.77 2.4 -0.85 2.78 -1.66 0.55 -1.18 -0.09 -1.96 -1.43 -3.14z",fill:"#77B255",stroke:"none"}]},{id:"emoji-cherry",cat:"emoji",zh:"\u6A31\u82B1",en:"Cherry blossom",kw:"cherry blossom \u6A31\u82B1 \u6625\u5929 \u82B1 \u6D6A\u6F2B",ink:A,layers:[{d:"M20.87 13.87c2.8 -0.91 3.35 -2.12 2.79 -4.28 -0.63 0.21 -1.4 0 -1.51 -0.35 -0.11 -0.34 0.39 -0.96 1.02 -1.17 -0.82 -2.07 -1.98 -2.73 -4.77 -1.82 -1.07 0.35 -2.16 0.99 -3.1 1.76C15.72 6.88 16 5.65 16 4.52c0 -2.94 -0.98 -3.84 -3.2 -3.98 0 0.67 -0.43 1.33 -0.8 1.33s-0.8 -0.67 -0.8 -1.33C8.98 0.68 8 1.58 8 4.52c0 1.13 0.28 2.36 0.71 3.49 -0.94 -0.76 -2.03 -1.41 -3.1 -1.76 -2.8 -0.91 -3.96 -0.25 -4.77 1.82 0.63 0.21 1.13 0.83 1.02 1.17 -0.11 0.34 -0.88 0.55 -1.51 0.35 -0.56 2.16 0 3.37 2.79 4.28 1.07 0.35 2.33 0.46 3.54 0.4 -1.02 0.66 -1.97 1.5 -2.63 2.41 -1.73 2.38 -1.46 3.69 0.25 5.1 0.39 -0.54 1.14 -0.82 1.43 -0.61 0.29 0.21 0.25 1.01 -0.14 1.55 1.88 1.2 3.2 1.04 4.93 -1.34 0.66 -0.91 1.16 -2.07 1.48 -3.24 0.32 1.17 0.82 2.33 1.48 3.24 1.73 2.38 3.05 2.53 4.93 1.34 -0.39 -0.54 -0.43 -1.33 -0.14 -1.55 0.29 -0.21 1.04 0.07 1.43 0.61 1.72 -1.42 1.98 -2.72 0.25 -5.1 -0.66 -0.91 -1.61 -1.75 -2.63 -2.41 1.21 0.06 2.47 -0.06 3.54 -0.4zM12 13.56c-0.11 -0.19 -0.24 -0.36 -0.39 -0.47 -0.16 -0.11 -0.35 -0.18 -0.57 -0.23 0.15 -0.16 0.27 -0.33 0.33 -0.52 0.06 -0.18 0.07 -0.39 0.04 -0.61 0.2 0.09 0.4 0.15 0.59 0.15s0.39 -0.06 0.6 -0.15c-0.03 0.22 -0.02 0.43 0.04 0.61 0.06 0.18 0.18 0.36 0.33 0.52 -0.22 0.04 -0.41 0.11 -0.57 0.23 -0.16 0.11 -0.29 0.28 -0.39 0.47z",fill:"#F4ABBA",stroke:"none"},{d:"M11.2 12.46c-0.08 0.36 -0.44 0.59 -0.8 0.51l-3.91 -0.87c-0.36 -0.08 -0.59 -0.44 -0.51 -0.8 0.08 -0.36 0.44 -0.59 0.8 -0.51l3.9 0.87c0.36 0.08 0.59 0.44 0.51 0.79zm0.65 0.15c0.08 -0.36 0.44 -0.59 0.8 -0.51l3.9 0.87c0.36 0.08 0.59 0.44 0.51 0.8 -0.08 0.36 -0.44 0.59 -0.8 0.51l-3.9 -0.87c-0.36 -0.08 -0.59 -0.44 -0.51 -0.79z",fill:"#000000",stroke:"none"},{d:"M11.85 12.6c-0.31 0.2 -0.72 0.11 -0.92 -0.21l-2.15 -3.37c-0.2 -0.31 -0.11 -0.72 0.2 -0.92 0.31 -0.2 0.72 -0.11 0.92 0.2l2.15 3.37c0.2 0.31 0.11 0.72 -0.21 0.92zm0.53 0.83c0.31 -0.2 0.72 -0.11 0.92 0.2l2.15 3.37c0.2 0.31 0.11 0.72 -0.21 0.92 -0.31 0.2 -0.72 0.11 -0.92 -0.2l-2.15 -3.37c-0.2 -0.31 -0.1 -0.72 0.2 -0.92z",fill:"#000000",stroke:"none"},{d:"M11.99 11.95c-0.36 -0.08 -0.59 -0.44 -0.51 -0.8l0.87 -3.9c0.08 -0.36 0.43 -0.59 0.79 -0.51 0.36 0.08 0.59 0.44 0.51 0.8l-0.87 3.9c-0.08 0.36 -0.44 0.59 -0.8 0.51zm-0.14 0.65c0.36 0.08 0.59 0.44 0.51 0.79l-0.87 3.9c-0.08 0.36 -0.44 0.59 -0.8 0.51 -0.36 -0.08 -0.59 -0.44 -0.51 -0.8l0.87 -3.9c0.08 -0.36 0.44 -0.59 0.79 -0.51z",fill:"#000000",stroke:"none"},{d:"M11.85 12.6c-0.2 -0.31 -0.11 -0.72 0.2 -0.92l3.37 -2.15c0.31 -0.2 0.72 -0.11 0.92 0.2 0.2 0.31 0.11 0.72 -0.2 0.92l-3.37 2.15c-0.31 0.2 -0.72 0.11 -0.92 -0.2z",fill:"#000000",stroke:"none"},{d:"M11.85 12.6c0.2 0.31 0.11 0.72 -0.2 0.92l-3.37 2.15c-0.31 0.2 -0.72 0.11 -0.92 -0.21 -0.2 -0.31 -0.11 -0.72 0.2 -0.92l3.37 -2.15c0.31 -0.2 0.72 -0.11 0.92 0.2z",fill:"#000000",stroke:"none"},{d:"M14.67 17.04c0.62 -0.39 1.45 -0.21 1.84 0.41 0.4 0.62 0.21 1.45 -0.41 1.84 -0.62 0.4 -1.45 0.21 -1.84 -0.41 -0.39 -0.62 -0.21 -1.45 0.41 -1.84zM9.7 9.23c-0.62 0.4 -1.45 0.21 -1.84 -0.41 -0.4 -0.62 -0.21 -1.45 0.41 -1.84 0.62 -0.4 1.45 -0.21 1.84 0.41 0.4 0.62 0.21 1.45 -0.41 1.84zm1.28 7.28c0.72 0.16 1.17 0.87 1.01 1.59 -0.16 0.72 -0.87 1.17 -1.59 1.01 -0.72 -0.16 -1.17 -0.87 -1.01 -1.59 0.16 -0.72 0.87 -1.17 1.59 -1.01zm2.02 -9.11c-0.72 -0.16 -1.17 -0.87 -1.01 -1.59 0.16 -0.72 0.87 -1.17 1.59 -1.01 0.72 0.16 1.17 0.87 1.01 1.59 -0.16 0.72 -0.87 1.17 -1.59 1.01zm-4.01 7.02c0.39 0.62 0.21 1.45 -0.41 1.84 -0.62 0.4 -1.45 0.21 -1.84 -0.41 -0.4 -0.62 -0.21 -1.44 0.41 -1.84 0.62 -0.39 1.45 -0.21 1.84 0.41zm6.23 -3.96c-0.4 -0.62 -0.21 -1.45 0.41 -1.84 0.62 -0.4 1.45 -0.21 1.84 0.41s0.21 1.45 -0.41 1.84c-0.62 0.4 -1.45 0.21 -1.84 -0.41zm0.53 3.02c0.16 -0.72 0.87 -1.17 1.59 -1.01 0.72 0.16 1.17 0.87 1.01 1.59 -0.16 0.72 -0.87 1.17 -1.59 1.01 -0.72 -0.16 -1.17 -0.87 -1.01 -1.59zm-8.46 -1.88c-0.16 0.72 -0.87 1.17 -1.59 1.01 -0.72 -0.16 -1.17 -0.87 -1.01 -1.59 0.16 -0.72 0.87 -1.17 1.59 -1.01 0.72 0.16 1.17 0.87 1.01 1.59z",fill:"#EA596E",stroke:"none"},{d:"M9.33 12.55A2.67 2.67 0 1 0 14.67 12.55A2.67 2.67 0 1 0 9.33 12.55Z",fill:"#FFCC4D",stroke:"none"}]},{id:"emoji-book",cat:"emoji",zh:"\u4E66",en:"Book",kw:"book \u4E66 \u4E66\u672C \u9605\u8BFB \u5B66\u4E60 \u6559\u6750",ink:A,layers:[{d:"M21.33 4.67H2.67c-1.47 0 -2.67 1.19 -2.67 2.67v10c0 1.47 1.19 2.67 2.67 2.67h7.61c0.35 0.4 0.98 0.67 1.72 0.67s1.38 -0.27 1.72 -0.67H21.33c1.47 0 2.67 -1.19 2.67 -2.67V7.33c0 -1.47 -1.19 -2.67 -2.67 -2.67z",fill:"#269",stroke:"none"},{d:"M13.33 18c0 0.74 -0.6 1.33 -1.33 1.33s-1.33 -0.6 -1.33 -1.33V6c0 -0.74 0.6 -1.33 1.33 -1.33s1.33 0.6 1.33 1.33v12z",fill:"#292F33",stroke:"none"},{d:"M12 17.33c0 0.74 -0.6 1.33 -1.33 1.33H2.67c-0.74 0 -1.33 -0.6 -1.33 -1.33V5.33c0 -0.74 0.6 -1.33 1.33 -1.33h8c0.74 0 1.33 0.6 1.33 1.33v12z",fill:"#99AAB5",stroke:"none"},{d:"M12 17.33c-0.67 -1.33 -2.44 -1.33 -2.67 -1.33 -1.33 0 -3.33 1.33 -5.33 1.33 -0.67 0 -1.33 -0.6 -1.33 -1.33V5.33c0 -0.74 0.67 -1.33 1.33 -1.33 2.17 0 4 -1.33 5.33 -1.33 2 0 2.67 1.26 2.67 2v12.67z",fill:"#E1E8ED",stroke:"none"},{d:"M22.67 17.33c0 0.74 -0.6 1.33 -1.33 1.33H13.33c-0.74 0 -1.33 -0.6 -1.33 -1.33V5.33c0 -0.74 0.6 -1.33 1.33 -1.33h8c0.74 0 1.33 0.6 1.33 1.33v12z",fill:"#99AAB5",stroke:"none"},{d:"M12 17.33c0.67 -1.33 2.44 -1.33 2.67 -1.33 1.33 0 3.33 1.33 5.33 1.33 0.67 0 1.33 -0.6 1.33 -1.33V5.33c0 -0.74 -0.67 -1.33 -1.33 -1.33 -2.17 0 -4 -1.33 -5.33 -1.33 -2 0 -2.67 1.26 -2.67 2v12.67z",fill:"#CCD6DD",stroke:"none"}]},{id:"emoji-bulb",cat:"emoji",zh:"\u706F\u6CE1",en:"Light bulb",kw:"bulb \u706F\u6CE1 \u60F3\u6CD5 \u7075\u611F \u70B9\u5B50",ink:A,layers:[{d:"M19.33 7.37c0 4.29 -3.33 4.96 -3.33 8.96 0 2.07 -2.08 2.24 -3.67 2.24 -1.37 0 -4.39 -0.52 -4.39 -2.24C7.94 12.33 4.67 11.67 4.67 7.37 4.67 3.35 8.19 0.09 12.06 0.09 15.92 0.09 19.33 3.35 19.33 7.37z",fill:"#FFD983",stroke:"none"},{d:"M14.78 21.67c0 0.55 -1.49 1.67 -2.78 1.67 -1.29 0 -2.78 -1.11 -2.78 -1.67 0 -0.55 1.49 -0.33 2.78 -0.33 1.29 0 2.78 -0.22 2.78 0.33z",fill:"#CCD6DD",stroke:"none"},{d:"M15.14 6.86c-0.26 -0.26 -0.68 -0.26 -0.94 0L12 9.06l-2.2 -2.2c-0.26 -0.26 -0.68 -0.26 -0.94 0s-0.26 0.68 0 0.94L11.33 10.28V17.33c0 0.37 0.3 0.67 0.67 0.67s0.67 -0.3 0.67 -0.67V10.28l2.47 -2.47c0.26 -0.26 0.26 -0.68 0 -0.94z",fill:"#FFCC4D",stroke:"none"},{d:"M16 20.67c0 0.74 -0.6 1.33 -1.33 1.33h-5.33c-0.74 0 -1.33 -0.6 -1.33 -1.33v-4h8v4z",fill:"#99AAB5",stroke:"none"},{d:"M8 21.33c-0.32 0 -0.6 -0.23 -0.66 -0.56 -0.06 -0.36 0.18 -0.71 0.55 -0.77l8 -1.33c0.36 -0.07 0.71 0.18 0.77 0.55 0.06 0.36 -0.18 0.71 -0.55 0.77l-8 1.33c-0.04 0.01 -0.07 0.01 -0.11 0.01zm0 -2.67c-0.32 0 -0.6 -0.23 -0.66 -0.56 -0.06 -0.36 0.18 -0.71 0.55 -0.77l8 -1.33c0.36 -0.06 0.71 0.18 0.77 0.55 0.06 0.36 -0.18 0.71 -0.55 0.77l-8 1.33c-0.04 0.01 -0.07 0.01 -0.11 0.01z",fill:"#CCD6DD",stroke:"none"}]},{id:"emoji-cake",cat:"emoji",zh:"\u86CB\u7CD5",en:"Cake",kw:"cake \u86CB\u7CD5 \u751F\u65E5 \u5E86\u795D \u751C\u70B9",ink:A,layers:[{d:"M0 17.33A12 6.67 0 1 0 24 17.33A12 6.67 0 1 0 0 17.33Z",fill:"#8899A6",stroke:"none"},{d:"M0 16.17A12 6.67 0 1 0 24 16.17A12 6.67 0 1 0 0 16.17Z",fill:"#CCD6DD",stroke:"none"},{d:"M21.78 15.79c0 2.84 -4.38 5.14 -9.78 5.14S2.22 18.63 2.22 15.79c0 -2.84 4.38 -5.14 9.78 -5.14 5.4 0 9.78 2.3 9.78 5.14z",fill:"#DD2E44",stroke:"none"},{d:"M21.49 15.03c0 6.57 -18.98 6.57 -18.98 0v-5.84h18.98v5.84z",fill:"#F4ABBA",stroke:"none"},{d:"M11.99 12.11c-5.99 0 -9.48 -2.75 -9.48 -2.75s-0.01 0.62 -0.01 1.12c0 0 0.02 3.27 1.71 3.27 1.64 0 1.52 1.57 2.56 1.73 1.03 0.16 1.14 -0.63 2.42 -0.63s1.5 1.4 2.8 1.4c1.53 0 1.65 -1.4 2.93 -1.4s1.42 0.82 2.26 0.59c1 -0.27 0.54 -1.69 2.59 -1.69 1.69 0 1.74 -3.1 1.74 -3.1 0 -0.51 -0.01 -1.29 -0.01 -1.29s-3.51 2.75 -9.5 2.75z",fill:"#DD2E44",stroke:"none"},{d:"M21.78 8.49c0 2.84 -4.38 5.14 -9.78 5.14S2.22 11.33 2.22 8.49 6.6 3.35 12 3.35c5.4 0 9.78 2.3 9.78 5.14z",fill:"#EA596E",stroke:"none"},{d:"M17.11 9.19c-0.4 0 -0.73 -0.33 -0.73 -0.73V3.35c0 -0.4 0.33 -0.73 0.73 -0.73s0.73 0.33 0.73 0.73v5.11c0 0.4 -0.33 0.73 -0.73 0.73z",fill:"#FFF8E8",stroke:"none"},{d:"M17.11 4.44c-0.77 0 -1.38 -0.35 -1.63 -0.95 -0.21 -0.52 -0.32 -1.63 1.37 -3.32 0.14 -0.14 0.37 -0.14 0.52 0 1.69 1.69 1.59 2.81 1.37 3.32 -0.25 0.59 -0.86 0.95 -1.63 0.95z",fill:"#FAAA35",stroke:"none"},{d:"M12 11.38c-0.4 0 -0.73 -0.33 -0.73 -0.73V5.54c0 -0.4 0.33 -0.73 0.73 -0.73s0.73 0.33 0.73 0.73v5.11c0 0.4 -0.33 0.73 -0.73 0.73z",fill:"#FFF8E8",stroke:"none"},{d:"M12 6.63c-0.77 0 -1.38 -0.35 -1.63 -0.95 -0.21 -0.52 -0.32 -1.63 1.37 -3.32 0.14 -0.14 0.37 -0.14 0.52 0 1.69 1.69 1.59 2.81 1.37 3.32 -0.25 0.59 -0.86 0.95 -1.63 0.95z",fill:"#FAAA35",stroke:"none"},{d:"M6.89 9.19c-0.4 0 -0.73 -0.33 -0.73 -0.73V3.35c0 -0.4 0.33 -0.73 0.73 -0.73s0.73 0.33 0.73 0.73v5.11c0 0.4 -0.33 0.73 -0.73 0.73z",fill:"#FFF8E8",stroke:"none"},{d:"M6.89 4.44c-0.77 0 -1.38 -0.35 -1.63 -0.95 -0.21 -0.52 -0.32 -1.63 1.37 -3.32 0.14 -0.14 0.37 -0.14 0.52 0 1.69 1.69 1.59 2.81 1.37 3.32 -0.25 0.59 -0.86 0.95 -1.63 0.95z",fill:"#FAAA35",stroke:"none"}]},{id:"emoji-pencil",cat:"emoji",zh:"\u94C5\u7B14",en:"Pencil",kw:"pencil \u94C5\u7B14 \u7B14 \u5199\u5B57 \u5B66\u4E60 \u6D82\u9E26",ink:A,layers:[{d:"M23.48 22.4c-0.43 -1.4 -1.14 -4.04 -1.55 -5.04 -0.33 -0.81 -0.65 -1.63 -1.03 -2.01 -0.38 -0.38 -1.04 -0.35 -1.43 0.04 0 0 -1.65 1.12 -2.24 1.86 -0.74 0.59 -1.86 2.24 -1.86 2.24 -0.39 0.39 -0.42 1.04 -0.04 1.43 0.38 0.38 1.2 0.7 2.01 1.03 1 0.41 3.64 1.12 5.04 1.55 0.24 0.07 1.16 -0.85 1.09 -1.09z",fill:"#D99E82",stroke:"none"},{d:"M9.1 3.54c0.77 0.77 0.77 2.01 0 2.78l-2.78 2.78c-0.77 0.77 -2.01 0.77 -2.78 0L0.76 6.32c-0.77 -0.77 -0.77 -2.01 0 -2.78l2.78 -2.78c0.77 -0.77 2.01 -0.77 2.78 0l2.78 2.78z",fill:"#EA596E",stroke:"none"},{d:"M20.9 15.35l-2.78 2.78 -2.78 2.78L4.93 10.48l5.56 -5.56 10.42 10.42z",fill:"#FFCC4D",stroke:"none"},{d:"M21.39 23.18s1.81 0.99 2.29 0.5c0.49 -0.49 -0.51 -2.29 -0.51 -2.29s-1.71 0.03 -1.78 1.79z",fill:"#292F33",stroke:"none"},{d:"M1.46 7.01l5.56 -5.56 3.47 3.47 -5.56 5.56z",fill:"#CCD6DD",stroke:"none"},{d:"M2.15 7.71l5.56 -5.56 0.69 0.69L2.84 8.4zm1.39 1.39l5.56 -5.56 0.69 0.69 -5.56 5.56z",fill:"#99AAB5",stroke:"none"}]},{id:"emoji-poo",cat:"emoji",zh:"\u4FBF\u4FBF",en:"Poo",kw:"poo \u4FBF\u4FBF \u5C4E \u6076\u5FC3 \u641E\u7B11",ink:A,layers:[{d:"M22.36 15.47c0.24 -1.05 0.16 -2.18 -0.31 -3.3 -0.45 -1.08 -1.23 -1.94 -2.18 -2.52 0.21 -0.79 0.16 -1.65 -0.22 -2.5 -0.56 -1.28 -1.77 -2.13 -3.14 -2.37 0.17 -0.38 0.22 -0.86 0.02 -1.44 -0.67 -2 -3.33 -0.67 -5.33 -3.33 -1.63 0.98 -1.98 2.43 -1.92 3.66 -1.61 0.27 -2.53 0.62 -2.53 0.62v0c-0.91 0.37 -1.55 1.26 -1.55 2.29 0 0.59 0.21 1.12 0.55 1.54l-0.46 0.17 0 0c-1.55 0.58 -2.65 1.98 -2.65 3.63 0 0.7 0.2 1.35 0.55 1.92C1.31 14.68 0 16.52 0 18.67c0 2.95 2.46 5.33 5.5 5.33 2.18 0 4.37 -0.47 6.35 -1.11C13.35 23.58 15.65 24 19.11 24 21.81 24 24 21.81 24 19.11c0 -1.45 -0.64 -2.75 -1.64 -3.65z",fill:"#BF6952",stroke:"none"},{d:"M6.67 10.33A2.33 3 0 1 0 11.33 10.33A2.33 3 0 1 0 6.67 10.33Z",fill:"#F5F8FA",stroke:"none"},{d:"M13.33 10.33A2.33 3 0 1 0 18 10.33A2.33 3 0 1 0 13.33 10.33Z",fill:"#F5F8FA",stroke:"none"},{d:"M8 10.33A1.33 1.67 0 1 0 10.67 10.33A1.33 1.67 0 1 0 8 10.33Z",fill:"#292F33",stroke:"none"},{d:"M14 10.33A1.33 1.67 0 1 0 16.67 10.33A1.33 1.67 0 1 0 14 10.33Z",fill:"#292F33",stroke:"none"},{d:"M6.3 16.6C6.13 16.27 6.3 16 6.67 16h12c0.37 0 0.53 0.27 0.37 0.6C19.04 16.6 17.33 20 12.67 20s-6.37 -3.4 -6.37 -3.4z",fill:"#292F33",stroke:"none"},{d:"M12.67 17.33c-1.85 0 -3.44 0.61 -4.19 1.5C9.47 19.47 10.84 20 12.67 20s3.2 -0.53 4.19 -1.16C16.1 17.95 14.51 17.33 12.67 17.33z",fill:"#F2ABBA",stroke:"none"}]},{id:"emoji-ghost",cat:"emoji",zh:"\u5E7D\u7075",en:"Ghost",kw:"ghost \u5E7D\u7075 \u9B3C \u4E07\u5723\u8282 \u5413\u4EBA",ink:A,layers:[{d:"M24 7.33c0 -0.74 -0.6 -1.33 -1.33 -1.33s-1.33 0.6 -1.33 1.33c0 0 -0.01 2.19 -2 2.6V8c0 -4.05 -3.28 -7.33 -7.33 -7.33S4.67 3.95 4.67 8v2.16C1.19 11.2 0 15.49 0 18c0 0.74 0.6 1.33 1.33 1.33s1.33 -0.6 1.33 -1.33c0 0 0 -2.36 2.22 -2.64C5.23 18.59 5.97 22 7.33 22h0.67c2.67 0 2 1.33 4.67 1.33s2 -1.33 4 -1.33 1.6 1.33 4 1.33c1.1 0 2 -0.9 2 -2 0 -0.45 -1.52 -3.33 -2.5 -6.18C23.99 14.23 24 9.72 24 7.33z",fill:"#E1E8ED",stroke:"none"},{d:"M7.33 8A1.33 1.33 0 1 0 10 8A1.33 1.33 0 1 0 7.33 8Z",fill:"#292F33",stroke:"none"},{d:"M12.67 8A2.67 2.67 0 1 0 18 8A2.67 2.67 0 1 0 12.67 8Z",fill:"#292F33",stroke:"none"},{d:"M14 8.67A1.33 1.33 0 1 0 16.67 8.67A1.33 1.33 0 1 0 14 8.67Z",fill:"#9AAAB4",stroke:"none"},{d:"M14.79 12.99c1.77 1.32 2.39 3.47 1.4 4.8 -0.99 1.33 -3.23 1.33 -5 0 -1.77 -1.32 -2.39 -3.47 -1.4 -4.8 0.99 -1.33 3.23 -1.33 5 0z",fill:"#292F33",stroke:"none"}]},{id:"emoji-clown",cat:"emoji",zh:"\u5C0F\u4E11",en:"Clown",kw:"clown \u5C0F\u4E11 \u9A6C\u620F\u56E2 \u641E\u7B11 \u5413\u4EBA",ink:A,layers:[{d:"M18 2A1.33 1.33 0 1 0 20.67 2A1.33 1.33 0 1 0 18 2Z",fill:"#4289C1",stroke:"none"},{d:"M20 5.33A2 2 0 1 0 24 5.33A2 2 0 1 0 20 5.33Z",fill:"#4289C1",stroke:"none"},{d:"M20 2.67A2 2 0 1 0 24 2.67A2 2 0 1 0 20 2.67Z",fill:"#4289C1",stroke:"none"},{d:"M3.33 2A1.33 1.33 0 1 0 6 2A1.33 1.33 0 1 0 3.33 2Z",fill:"#4289C1",stroke:"none"},{d:"M0 5.33A2 2 0 1 0 4 5.33A2 2 0 1 0 0 5.33Z",fill:"#4289C1",stroke:"none"},{d:"M0 2.67A2 2 0 1 0 4 2.67A2 2 0 1 0 0 2.67Z",fill:"#4289C1",stroke:"none"},{d:"M24 12c0 6.63 -5.37 12 -12 12S0 18.63 0 12 5.37 0 12 0s12 5.37 12 12",fill:"#FEE7B8",stroke:"none"},{d:"M18.67 3A1.67 1.67 0 1 0 22 3A1.67 1.67 0 1 0 18.67 3Z",fill:"#4289C1",stroke:"none"},{d:"M20 4.67A1.33 1.33 0 1 0 22.67 4.67A1.33 1.33 0 1 0 20 4.67Z",fill:"#4289C1",stroke:"none"},{d:"M2 3A1.67 1.67 0 1 0 5.33 3A1.67 1.67 0 1 0 2 3Z",fill:"#4289C1",stroke:"none"},{d:"M1.33 4.67A1.33 1.33 0 1 0 4 4.67A1.33 1.33 0 1 0 1.33 4.67Z",fill:"#4289C1",stroke:"none"},{d:"M1.95 14A2.67 2.67 0 1 0 7.29 14A2.67 2.67 0 1 0 1.95 14Z",fill:"#FF7892",stroke:"none"},{d:"M16.62 14A2.67 2.67 0 1 0 21.95 14A2.67 2.67 0 1 0 16.62 14Z",fill:"#FF7892",stroke:"none"},{d:"M18.22 15.75c-0.12 -0.11 -0.3 -0.11 -0.42 -0.02 -0.03 0.02 -2.61 1.93 -5.8 1.93 -3.18 0 -5.77 -1.91 -5.8 -1.93 -0.13 -0.09 -0.3 -0.09 -0.42 0.02 -0.12 0.11 -0.14 0.28 -0.06 0.42C5.8 16.31 7.86 20.67 12 20.67s6.2 -4.35 6.29 -4.5c0.08 -0.14 0.06 -0.31 -0.06 -0.42z",fill:"#DA2F47",stroke:"none"},{d:"M18.22 15.75c-0.12 -0.11 -0.3 -0.11 -0.42 -0.02 -0.03 0.02 -2.61 1.93 -5.8 1.93 -3.18 0 -5.77 -1.91 -5.8 -1.93 -0.13 -0.09 -0.3 -0.09 -0.42 0.02 -0.12 0.11 -0.14 0.28 -0.06 0.42C5.8 16.31 7.86 20.67 12 20.67s6.2 -4.35 6.29 -4.5c0.08 -0.14 0.06 -0.31 -0.06 -0.42z",fill:"none",stroke:"none"},{d:"M6 7.67A1.67 2.33 0 1 0 9.33 7.67A1.67 2.33 0 1 0 6 7.67Z",fill:"#664500",stroke:"none"},{d:"M15.33 7.67A1.67 2.33 0 1 0 18.67 7.67A1.67 2.33 0 1 0 15.33 7.67Z",fill:"#664500",stroke:"none"},{d:"M10 13A2.33 2.33 0 1 0 14.67 13A2.33 2.33 0 1 0 10 13Z",fill:"#BB1A34",stroke:"none"}]},{id:"emoji-soccer",cat:"emoji",zh:"\u8DB3\u7403",en:"Soccer",kw:"soccer football \u8DB3\u7403 \u8FD0\u52A8 \u6BD4\u8D5B",ink:A,layers:[{d:"M0 12A12 12 0 1 0 24 12A12 12 0 1 0 0 12Z",fill:"#F5F8FA",stroke:"none"},{d:"M12 7.33c-0.37 0 -0.67 -0.3 -0.67 -0.67V2c0 -0.37 0.3 -0.67 0.67 -0.67s0.67 0.3 0.67 0.67v4.67c0 0.37 -0.3 0.67 -0.67 0.67zm-4.39 3c-0.07 0 -0.13 -0.01 -0.2 -0.03l-5.36 -1.69c-0.35 -0.11 -0.55 -0.49 -0.43 -0.84 0.11 -0.35 0.49 -0.55 0.84 -0.43l5.36 1.69c0.35 0.11 0.55 0.49 0.43 0.84 -0.09 0.28 -0.35 0.47 -0.64 0.47zm9.08 -0.19c-0.29 0 -0.56 -0.19 -0.64 -0.48 -0.1 -0.35 0.1 -0.72 0.45 -0.83l4.5 -1.31c0.35 -0.1 0.72 0.1 0.83 0.45 0.1 0.35 -0.1 0.72 -0.45 0.83l-4.5 1.31c-0.06 0.02 -0.12 0.03 -0.19 0.03zm1.33 9.97c-0.2 0 -0.4 -0.09 -0.54 -0.27l-3.64 -4.89c-0.22 -0.29 -0.16 -0.71 0.14 -0.93 0.29 -0.22 0.71 -0.16 0.93 0.14l3.64 4.89c0.22 0.29 0.16 0.71 -0.14 0.93 -0.12 0.09 -0.26 0.13 -0.4 0.13zm-12.2 -0.06c-0.13 0 -0.26 -0.04 -0.38 -0.12 -0.3 -0.21 -0.38 -0.63 -0.17 -0.93l3.42 -4.92c0.21 -0.3 0.63 -0.38 0.93 -0.17 0.3 0.21 0.38 0.63 0.17 0.93l-3.42 4.92c-0.13 0.19 -0.34 0.29 -0.55 0.29zM2.33 18.04c-0.29 0 -0.56 -0.2 -0.64 -0.49L0.23 12.17c-0.1 -0.36 0.11 -0.72 0.47 -0.82 0.36 -0.09 0.72 0.11 0.82 0.47l1.46 5.37c0.1 0.36 -0.11 0.72 -0.47 0.82 -0.06 0.02 -0.12 0.02 -0.17 0.02zM14.67 22.67h-6c-0.37 0 -0.67 -0.3 -0.67 -0.67s0.3 -0.67 0.67 -0.67h6c0.37 0 0.67 0.3 0.67 0.67s-0.3 0.67 -0.67 0.67zm6.75 -4.58c-0.05 0 -0.11 -0.01 -0.16 -0.02 -0.36 -0.09 -0.58 -0.45 -0.49 -0.81l1.42 -5.75c0.09 -0.36 0.45 -0.57 0.81 -0.49 0.36 0.09 0.58 0.45 0.49 0.81l-1.42 5.75c-0.08 0.3 -0.35 0.51 -0.65 0.51zM20.21 5.13c-0.11 0 -0.23 -0.03 -0.33 -0.09L14.83 2.12c-0.32 -0.18 -0.43 -0.59 -0.24 -0.91 0.18 -0.32 0.59 -0.43 0.91 -0.24l5.04 2.92c0.32 0.18 0.43 0.59 0.24 0.91 -0.12 0.21 -0.35 0.33 -0.58 0.33zm-16.54 0c-0.21 0 -0.41 -0.1 -0.54 -0.28 -0.21 -0.3 -0.15 -0.72 0.15 -0.93l4.13 -2.96c0.3 -0.21 0.72 -0.15 0.93 0.15 0.21 0.3 0.15 0.72 -0.15 0.93L4.06 5c-0.12 0.08 -0.25 0.13 -0.39 0.13z",fill:"#CCD6DD",stroke:"none"},{d:"M17 9.01l-4.81 -3.39c-0.23 -0.16 -0.54 -0.16 -0.77 0l-4.78 3.44c-0.23 0.17 -0.33 0.46 -0.25 0.73l1.67 5.72c0.08 0.28 0.34 0.48 0.64 0.48H14.67c0.29 0 0.54 -0.18 0.63 -0.45l1.94 -5.78c0.09 -0.28 -0.01 -0.59 -0.25 -0.76zM0.86 13.03c0.04 0 0.08 0 0.12 -0.01 0.2 -0.03 0.37 -0.16 0.46 -0.33l2.25 -4c0.03 -0.06 0.06 -0.13 0.07 -0.19L4.65 4.13c0.04 -0.2 -0.01 -0.4 -0.14 -0.55C4.39 3.42 4.2 3.33 4 3.33h-0.29C1.43 5.52 0 8.59 0 12c0 0.18 0.02 0.35 0.03 0.53l0.4 0.34c0.12 0.1 0.28 0.16 0.43 0.16zm6.22 -11.03c0.07 0.15 0.21 0.25 0.37 0.27l4.25 0.69c0.03 0 0.05 0.01 0.08 0.01 0.03 0 0.05 0 0.08 -0.01l4.06 -0.67c0.13 -0.02 0.25 -0.1 0.33 -0.21 0.08 -0.11 0.11 -0.25 0.08 -0.38l-0.19 -0.96C14.84 0.27 13.45 0 12 0c-1.62 0 -3.16 0.32 -4.56 0.9l-0.35 0.63c-0.08 0.14 -0.08 0.31 -0.01 0.46zm13.68 1.82l-1 -0.06c-0.15 -0.01 -0.3 0.05 -0.41 0.17 -0.1 0.12 -0.15 0.27 -0.12 0.42l0.78 4.13c0.01 0.06 0.03 0.1 0.06 0.15 0.99 1.67 2.1 3.53 2.25 3.85 0.02 0.06 0.04 0.05 0.08 0.1 0.09 0.13 0.25 0.09 0.41 0.09h0c0.13 0 0.22 0.06 1.18 -0.5 0 -0.06 0.01 -0.11 0.01 -0.16 0 -3.17 -1.24 -6.04 -3.24 -8.19zM9.69 22.25c0.01 -0.13 -0.04 -0.26 -0.13 -0.36l-3 -3.33c-0.04 -0.04 -0.09 -0.08 -0.14 -0.11 -3.92 -2.05 -4 -2.07 -4.04 -2.09 -0.05 -0.02 -0.11 -0.03 -0.16 -0.03 -0.36 0 -0.46 0.04 -0.79 1.35 1.49 2.77 4.04 4.88 7.1 5.8l1 -0.89c0.1 -0.09 0.16 -0.21 0.17 -0.35zm11.89 -5.71c-0.13 -0.05 -0.27 -0.05 -0.39 0l-4.06 1.78c-0.07 0.03 -0.13 0.08 -0.18 0.14l-2.83 3.39c-0.09 0.1 -0.13 0.23 -0.11 0.37 0.01 0.13 0.08 0.26 0.18 0.34 0.46 0.37 0.84 0.69 1.18 0.96 2.96 -0.86 5.44 -2.83 6.97 -5.43l-0.47 -1.26c-0.05 -0.13 -0.15 -0.23 -0.27 -0.28z",fill:"#31373D",stroke:"none"}]},{id:"emoji-basketball",cat:"emoji",zh:"\u7BEE\u7403",en:"Basketball",kw:"basketball \u7BEE\u7403 \u8FD0\u52A8 \u6BD4\u8D5B",ink:A,layers:[{d:"M0 12A12 12 0 1 0 24 12A12 12 0 1 0 0 12Z",fill:"#F4900C",stroke:"none"},{d:"M24 11.33h-5.99c0.13 -3.67 1.3 -6.2 3.19 -7.03 -0.3 -0.35 -0.62 -0.68 -0.95 -1 -1.89 1.05 -3.43 3.52 -3.57 8.03H12.67V0h-1.33v11.33h-4.01c-0.14 -4.52 -1.68 -6.98 -3.57 -8.03 -0.33 0.32 -0.66 0.65 -0.95 1C4.69 5.14 5.86 7.66 5.99 11.33H0v1.33h5.99c-0.13 3.67 -1.29 6.2 -3.19 7.03 0.3 0.35 0.62 0.68 0.95 1 1.89 -1.05 3.43 -3.52 3.57 -8.03H11.33v11.33h1.33V12.67h4.01c0.14 4.52 1.68 6.98 3.57 8.03 0.33 -0.32 0.66 -0.65 0.95 -1 -1.89 -0.83 -3.06 -3.36 -3.19 -7.03H24v-1.33z",fill:"#231F20",stroke:"none"}]},{id:"emoji-car",cat:"emoji",zh:"\u6C7D\u8F66",en:"Car",kw:"car \u6C7D\u8F66 \u8F66 \u51FA\u884C \u4EE3\u6B65",ink:A,layers:[{d:"M8.67 21.33h13.33s2 0 2 -2.67c0 -1.33 0 -4 -0.67 -4.67s-5.33 -4.67 -7.33 -4.67h-4c-2 0 -6.67 4.67 -6.67 4.67l-2.67 0.67s-2 0.67 -2 2v2s-0.67 0.23 -0.67 1.3C0 21.33 1.33 21.33 1.33 21.33h7.33z",fill:"#DD2E44",stroke:"none"},{d:"M13.33 10.67h-1.33c-1.33 0 -5.33 4 -5.33 4s3.33 -0.18 6.67 -0.35V10.67zm6.67 2c-0.67 -0.67 -3.33 -2 -4.67 -2h-0.67v3.59c2.67 -0.14 5.05 -0.25 5.33 -0.25 0.67 0 0.67 -0.67 0 -1.33z",fill:"#BBDDF5",stroke:"none"},{d:"M4 20.67A2.67 2.67 0 1 0 9.33 20.67A2.67 2.67 0 1 0 4 20.67Z",fill:"#292F33",stroke:"none"},{d:"M5.33 20.67A1.33 1.33 0 1 0 8 20.67A1.33 1.33 0 1 0 5.33 20.67Z",fill:"#CCD6DD",stroke:"none"},{d:"M15.33 20.67A2.67 2.67 0 1 0 20.67 20.67A2.67 2.67 0 1 0 15.33 20.67Z",fill:"#292F33",stroke:"none"},{d:"M16.67 20.67A1.33 1.33 0 1 0 19.33 20.67A1.33 1.33 0 1 0 16.67 20.67Z",fill:"#CCD6DD",stroke:"none"}]},{id:"emoji-plane",cat:"emoji",zh:"\u98DE\u673A",en:"Plane",kw:"plane \u98DE\u673A \u51FA\u884C \u65C5\u884C \u822A\u7A7A",ink:A,layers:[{d:"M20 15.89c-0.26 0.26 -0.68 0.26 -0.94 0l-0.94 -0.94c-0.26 -0.26 -0.26 -0.68 0 -0.94L20 12.11c0.26 -0.26 0.68 -0.26 0.94 0l0.94 0.94c0.26 0.26 0.26 0.68 0 0.94L20 15.89zm-10 -10c-0.26 0.26 -0.68 0.26 -0.94 0l-0.94 -0.94c-0.26 -0.26 -0.26 -0.68 0 -0.94L10 2.11c0.26 -0.26 0.68 -0.26 0.94 0l0.94 0.94c0.26 0.26 0.26 0.68 0 0.94L10 5.89z",fill:"#66757F",stroke:"none"},{d:"M1.33 14.67c1.33 0 7.33 0.67 7.33 0.67s0.67 6 0.67 7.33 -1.33 1.33 -2 0.67 -2.67 -4 -2.67 -4 -3.33 -2 -4 -2.67 -0.67 -2 0.67 -2zM2.67 4.03C4.67 4 19.33 4.67 19.33 4.67s0.62 14.67 0.64 16.67c0.03 2 -1.84 2.67 -2.57 0S14 10 14 10 4.7 7.06 2.66 6.6C0 6 0.67 4.05 2.67 4.03z",fill:"#55ACEE",stroke:"none"},{d:"M18 2c1.33 -1.33 4.67 -2 5.33 -1.33s0 4 -1.33 5.33 -12.67 12 -12.67 12 -4.33 3 -5.33 2 2 -5.33 2 -5.33S16.67 3.33 18 2z",fill:"#CCD6DD",stroke:"none"},{d:"M9.33 14.67s0.33 0.33 -2.67 3.33 -3.33 2.67 -3.33 2.67 -0.33 -0.33 2.67 -3.33 3.33 -2.67 3.33 -2.67zM19.33 2.67c1.1 0 2 0.9 2 2h0.54c0.08 -0.21 0.13 -0.43 0.13 -0.67 0 -1.1 -0.9 -2 -2 -2 -0.24 0 -0.46 0.05 -0.67 0.13V2.67z",fill:"#66757F",stroke:"none"}]},{id:"emoji-house",cat:"emoji",zh:"\u623F\u5B50",en:"House",kw:"house home \u623F\u5B50 \u5BB6 \u4F4F\u5B85 \u5BB6\u5EAD",ink:A,layers:[{d:"M6.23 9.8h-1.33c-0.18 0 -0.33 -0.15 -0.33 -0.33v-4.67c0 -0.18 0.15 -0.33 0.33 -0.33h1.33c0.18 0 0.33 0.15 0.33 0.33v4.67c0 0.18 -0.15 0.33 -0.33 0.33z",fill:"#A0041E",stroke:"none"},{d:"M3.33 10.67L12 2l8.67 8.67v11.33H3.33z",fill:"#FFE8B6",stroke:"none"},{d:"M12 10.67h0.67v10.67h-0.67z",fill:"#FFCC4D",stroke:"none"},{d:"M20.67 11.33c-0.17 0 -0.34 -0.07 -0.47 -0.2L12 2.94 3.8 11.14c-0.26 0.26 -0.68 0.26 -0.94 0s-0.26 -0.68 0 -0.94l8.67 -8.67c0.26 -0.26 0.68 -0.26 0.94 0l8.67 8.67c0.26 0.26 0.26 0.68 0 0.94 -0.13 0.13 -0.3 0.2 -0.47 0.2z",fill:"#66757F",stroke:"none"},{d:"M12 11.33c-0.17 0 -0.34 -0.07 -0.47 -0.2 -0.26 -0.26 -0.26 -0.68 0 -0.94l4.33 -4.33c0.26 -0.26 0.68 -0.26 0.94 0s0.26 0.68 0 0.94l-4.33 4.33c-0.13 0.13 -0.3 0.2 -0.47 0.2z",fill:"#66757F",stroke:"none"},{d:"M6.67 17.33h2.67v4h-2.67z",fill:"#C1694F",stroke:"none"},{d:"M6.67 11.33h2.67v2.67h-2.67zm8.33 0h2.67v2.67h-2.67zm0 6h2.67v2.67h-2.67z",fill:"#55ACEE",stroke:"none"},{d:"M22.33 22.33c0 0.55 -0.45 1 -1 1H2.67c-0.55 0 -1 -0.45 -1 -1S2.11 21.33 2.67 21.33h18.67c0.55 0 1 0.45 1 1z",fill:"#5C913B",stroke:"none"}]},{id:"emoji-red-packet",cat:"emoji",zh:"\u7EA2\u5305",en:"Red packet",kw:"red packet \u7EA2\u5305 \u6625\u8282 \u5409\u5229 \u538B\u5C81\u94B1",ink:A,layers:[{d:"M14.34 0.27L0.28 14.33c-0.26 0.26 -0.26 0.68 0 0.94l8.44 8.44c0.26 0.26 0.68 0.26 0.94 0l14.06 -14.06L14.34 0.27z",fill:"#FA3C32",stroke:"none"},{d:"M23.71 8.71L15.27 0.27c-0.26 -0.26 -0.68 -0.26 -0.94 0l-0.73 0.73c-0.23 1.77 1.14 4.59 2.96 6.41 1.86 1.86 4.6 3.27 6.38 2.99l0.76 -0.76c0.26 -0.26 0.26 -0.68 0 -0.94z",fill:"#DC282C",stroke:"none"},{d:"M16.57 7.41c-1.82 -1.82 -3.2 -4.64 -2.96 -6.41l-0.87 0.87c0.11 1.83 1.54 4.44 3.23 6.14 1.72 1.72 4.25 3.2 6.09 3.28l0.88 -0.88c-1.78 0.28 -4.53 -1.14 -6.38 -2.99z",fill:"#B3282C",stroke:"none"},{d:"M12.74 11.24c-0.6 -0.6 -1.47 -0.94 -1.99 -0.44 -0.02 0.1 0.06 0.65 0.92 1.51s1.41 0.94 1.51 0.92c0.5 -0.52 0.16 -1.39 -0.44 -1.99zm-0.01 -1.03c-0.06 -0.06 -0.08 -0.16 -0.05 -0.24l0.44 -1.09c0.05 -0.12 0.18 -0.17 0.3 -0.13s0.17 0.18 0.12 0.29l-0.44 1.09c-0.05 0.12 -0.18 0.17 -0.3 0.13 -0.03 -0.01 -0.05 -0.03 -0.08 -0.05zm-1.35 -0.5c-0.04 -0.04 -0.06 -0.09 -0.06 -0.15l-0.06 -1.26c-0.01 -0.12 0.09 -0.23 0.22 -0.24 0.12 -0.01 0.23 0.09 0.24 0.21l0.06 1.26c0.01 0.12 -0.09 0.23 -0.22 0.24 -0.07 0 -0.13 -0.02 -0.17 -0.06zm2.38 1.53c-0.02 -0.02 -0.04 -0.05 -0.05 -0.08 -0.05 -0.12 0.01 -0.25 0.13 -0.3l1.09 -0.44c0.12 -0.05 0.25 0.01 0.29 0.12 0.05 0.12 -0.01 0.25 -0.13 0.3l-1.09 0.44c-0.09 0.04 -0.18 0.01 -0.24 -0.05zm0.5 1.35c-0.04 -0.04 -0.07 -0.1 -0.06 -0.17 0.01 -0.13 0.11 -0.22 0.24 -0.22l1.26 0.06c0.13 0.01 0.22 0.11 0.21 0.24 -0.01 0.13 -0.11 0.22 -0.24 0.22l-1.26 -0.06c-0.06 0 -0.11 -0.03 -0.15 -0.06z",fill:"#000000",stroke:"none"},{d:"M10.44 10.48c-0.5 -0.65 -0.79 -1.12 -0.89 -1.3 -0.27 0.57 -0.26 1.23 0.03 1.95 0.36 0.9 1.06 1.65 1.34 1.93 0.28 0.28 1.03 0.97 1.93 1.34 0.72 0.29 1.38 0.3 1.95 0.03 -0.17 -0.1 -0.65 -0.38 -1.3 -0.89l-0.02 0.02c-0.3 0.3 -1.13 0.08 -2.14 -0.93 -1.01 -1.01 -1.23 -1.84 -0.93 -2.14l0.02 -0.02z",fill:"#000000",stroke:"none"},{d:"M10.59 13.39c-1.18 -1.18 -2.06 -2.8 -1.53 -4.22 -0.2 0.08 -0.45 0.23 -0.73 0.51 -1.61 1.61 -0.08 3.98 0.96 5.02 1.03 1.03 3.41 2.56 5.02 0.96 0.28 -0.28 0.43 -0.53 0.51 -0.73 -1.42 0.53 -3.04 -0.34 -4.22 -1.53z",fill:"#000000",stroke:"none"}]},{id:"emoji-medal",cat:"emoji",zh:"\u5956\u724C",en:"Medal",kw:"medal \u5956\u724C \u5956 \u8363\u8A89 \u7B2C\u4E00\u540D \u83B7\u5956",ink:A,layers:[{d:"M12 5.33l-4.67 -5.33H0l9.33 11.33 7.68 -3.17z",fill:"#55ACEE",stroke:"none"},{d:"M16.67 0l-4.67 5.33 3.59 4.87 0.82 -0.99L24 0z",fill:"#3B88C3",stroke:"none"},{d:"M15.51 10.68c0.05 -0.14 0.09 -0.3 0.09 -0.46 0 -0.74 -0.6 -1.33 -1.33 -1.33h-4.44c-0.74 0 -1.33 0.6 -1.33 1.33 0 0.16 0.03 0.32 0.09 0.46 -2.17 1.22 -3.64 3.54 -3.64 6.2C4.93 20.82 8.11 24 12.04 24c3.93 0 7.11 -3.18 7.11 -7.11 0 -2.67 -1.47 -4.99 -3.64 -6.2z",fill:"#FFAC33",stroke:"none"},{d:"M6.71 16.89A5.33 5.33 0 1 0 17.37 16.89A5.33 5.33 0 1 0 6.71 16.89Z",fill:"#FFD983",stroke:"none"},{d:"M14.19 20.42c-0.09 0 -0.19 -0.03 -0.27 -0.09L12 18.96l-1.91 1.37c-0.16 0.12 -0.38 0.12 -0.54 0 -0.16 -0.12 -0.23 -0.33 -0.17 -0.52l0.71 -2.3 -1.9 -1.34c-0.16 -0.12 -0.23 -0.33 -0.17 -0.52 0.06 -0.19 0.24 -0.32 0.44 -0.32l2.35 0 0.75 -2.25c0.06 -0.19 0.24 -0.32 0.44 -0.32 0.2 0 0.38 0.13 0.44 0.32l0.74 2.25 2.36 0c0.2 0 0.38 0.13 0.44 0.32 0.06 0.19 -0.01 0.4 -0.17 0.52l-1.9 1.34 0.71 2.3c0.06 0.19 -0.01 0.4 -0.17 0.52 -0.08 0.06 -0.18 0.09 -0.27 0.09z",fill:"#FFAC33",stroke:"none"}]},{id:"emoji-tv",cat:"emoji",zh:"\u7535\u89C6",en:"TV",kw:"tv television \u7535\u89C6 \u5C4F\u5E55 \u89C6\u9891 \u8282\u76EE",ink:A,layers:[{d:"M23.33 20.67s0 2.67 -2.67 2.67H3.33c-2.67 0 -2.67 -2.67 -2.67 -2.67V8c0 -2.67 2.67 -2.67 2.67 -2.67h17.33s2.67 0 2.67 2.67v12.67z",fill:"#31373D",stroke:"none"},{d:"M14.2 6.93c0.26 0.26 0.26 0.68 0 0.94s-0.68 0.26 -0.94 0l-6.13 -6.13c-0.26 -0.26 -0.26 -0.68 0 -0.94s0.68 -0.26 0.94 0l6.13 6.13z",fill:"#31373D",stroke:"none"},{d:"M9.8 6.93c-0.26 0.26 -0.26 0.68 0 0.94s0.68 0.26 0.94 0l6.13 -6.13c0.26 -0.26 0.26 -0.68 0 -0.94s-0.68 -0.26 -0.94 0l-6.13 6.13z",fill:"#31373D",stroke:"none"},{d:"M12 7.33c5.33 0 6.67 0.67 7.33 1.33s1.33 2 1.33 5.33 -0.67 4.67 -1.33 5.33 -2 1.33 -7.33 1.33 -6.67 -0.67 -7.33 -1.33 -1.33 -2 -1.33 -5.33 0.67 -4.67 1.33 -5.33 2 -1.33 7.33 -1.33z",fill:"#55ACEE",stroke:"none"},{d:"M20 21A1 1 0 1 0 22 21A1 1 0 1 0 20 21Z",fill:"#66757F",stroke:"none"},{d:"M2 21A1 1 0 1 0 4 21A1 1 0 1 0 2 21Z",fill:"#66757F",stroke:"none"}]},{id:"emoji-no-entry",cat:"emoji",zh:"\u7981\u6B62",en:"No entry",kw:"no entry \u7981\u6B62 \u963B\u6B62 \u505C\u6B62 \u7981\u5165",ink:A,layers:[{d:"M24 12c0 6.63 -5.37 12 -12 12S0 18.63 0 12 5.37 0 12 0s12 5.37 12 12z",fill:"#BE1931",stroke:"none"},{d:"M21.33 13.33c0 0.74 -0.6 1.33 -1.33 1.33H4c-0.74 0 -1.33 -0.6 -1.33 -1.33v-2.67c0 -0.74 0.6 -1.33 1.33 -1.33h16c0.74 0 1.33 0.6 1.33 1.33v2.67z",fill:"#FFF",stroke:"none"}]},{id:"emoji-rocket",cat:"emoji",zh:"\u706B\u7BAD",en:"Rocket",kw:"rocket \u706B\u7BAD \u5347\u7A7A \u53D1\u5C04 \u5FEB\u901F \u542F\u52A8",ink:A,layers:[{d:"M0.67 11.33l5.33 -4.67 10.67 0.67 0.67 10.67 -4.67 5.33s0 -4 -4 -8 -8 -4 -8 -4z",fill:"#A0041E",stroke:"none"},{d:"M0.65 23.33s-0.02 -5.32 1.99 -7.33S10 14.12 10 14.12 10 19.33 8 21.33c-2 2 -7.35 2 -7.35 2z",fill:"#FFAC33",stroke:"none"},{d:"M3.33 18A2.67 2.67 0 1 0 8.67 18A2.67 2.67 0 1 0 3.33 18Z",fill:"#FFCC4D",stroke:"none"},{d:"M24 0s-6.67 0 -14.67 6.67c-4 3.33 -4 9.33 -2.67 10.67s7.33 1.33 10.67 -2.67c6.67 -8 6.67 -14.67 6.67 -14.67z",fill:"#55ACEE",stroke:"none"},{d:"M18 3.33c-1.08 0 -2.01 0.65 -2.43 1.57 0.33 -0.15 0.7 -0.24 1.09 -0.24 1.47 0 2.67 1.19 2.67 2.67 0 0.39 -0.09 0.76 -0.24 1.09 0.93 -0.42 1.57 -1.34 1.57 -2.43 0 -1.47 -1.19 -2.67 -2.67 -2.67z",fill:"#000000",stroke:"none"},{d:"M5.33 18.67s0 -2.67 0.67 -3.33 8.67 -7.33 9.33 -6.67 -6 8.67 -6.67 9.33S5.33 18.67 5.33 18.67z",fill:"#A0041E",stroke:"none"}]},{id:"emoji-ship",cat:"emoji",zh:"\u8239",en:"Ship",kw:"ship \u8239 \u8F6E\u8239 \u51FA\u6D77 \u822A\u884C",ink:A,layers:[{d:"M10.67 0h2.67v3.33h-2.67z",fill:"#292F33",stroke:"none"},{d:"M10.67 1.33h2.67v2.67h-2.67z",fill:"#D1D3D4",stroke:"none"},{d:"M12 1.33h1.33v2.67h-1.33z",fill:"#A7A9AC",stroke:"none"},{d:"M12 12.67H3.33s0.9 5.33 3.25 9.33C8.93 26 12 22 12 22s3.07 4 5.42 0C19.76 18 20.67 12.67 20.67 12.67H12z",fill:"#66757F",stroke:"none"},{d:"M12 12.67H3.33s0.9 5.33 3.25 9.33C8.93 26 12 22 12 22V12.67z",fill:"#99AAB5",stroke:"none"},{d:"M0 20h24v4H0z",fill:"#55ACEE",stroke:"none"},{d:"M20 6h-1.63l-0.16 -2.67H5.79l-0.16 2.67H4v4h1.39l-0.16 2.67h13.54l-0.16 -2.67H20z",fill:"#E6E7E8",stroke:"none"},{d:"M6.67 10h10.67v2.67H6.67z",fill:"#D1D3D4",stroke:"none"},{d:"M5.33 7.33h13.33v1.33H5.33z",fill:"#6D6E71",stroke:"none"},{d:"M6.67 4.67h10.67v1.33H6.67z",fill:"#BCBEC0",stroke:"none"},{d:"M3.94 15.33h16.12c0.13 -0.5 0.25 -0.95 0.33 -1.33H3.61c0.09 0.38 0.2 0.84 0.33 1.33z",fill:"#BE1931",stroke:"none"},{d:"M12 15.33h8.06c0.13 -0.5 0.25 -0.95 0.33 -1.33H12v1.33z",fill:"#A0041E",stroke:"none"},{d:"M8 11.33h8v1.33H8z",fill:"#BCBEC0",stroke:"none"},{d:"M10.67 0h1.33v1.33h-1.33z",fill:"#58595B",stroke:"none"}]},{id:"emoji-trophy",cat:"emoji",zh:"\u5956\u676F",en:"Trophy",kw:"trophy \u5956\u676F \u51A0\u519B \u80DC\u5229 \u8363\u8A89 \u83B7\u5956",ink:A,layers:[{d:"M3.42 3.33h4C8.15 3.33 8.67 3.26 8.67 4V2.67c0 -0.74 -0.52 -1.33 -1.25 -1.33h-5.33c-1.33 0 -2.39 1.42 -2 3.33 0 0 1.19 6.25 1.28 6.64C1.58 12.33 2.78 13.33 4.05 13.33h4.64c0.74 0 -0.03 -1.26 -0.03 -2v-1.33c0 0.74 -0.52 1.33 -1.25 1.33h-2.67c-0.74 0 -1.22 -0.69 -1.33 -1.33S2.36 5.11 2.36 5.11C2.14 3.83 2.68 3.33 3.42 3.33zm17.21 0h-4C15.89 3.33 14.67 3.26 14.67 4V2.67c0 -0.74 1.22 -1.33 1.96 -1.33h5.33c1.33 0 2.39 1.42 2 3.33 0 0 -1.09 6.28 -1.18 6.67 -0.24 1 -1.36 2 -2.67 2h-4.76C14.61 13.33 14.67 12.07 14.67 11.33v-1.33c0 0.74 1.22 1.33 1.96 1.33h2.67c0.74 0 1.22 -0.69 1.33 -1.33s1.06 -4.89 1.06 -4.89C21.9 3.83 21.36 3.33 20.62 3.33zM13.89 14.67c0 -4.64 -1.81 0 -1.81 0s-2 -4.64 -2 0 -2.19 6.67 -2.19 6.67h8.19c0 0 -2.19 -2.03 -2.19 -6.67z",fill:"#FFAC33",stroke:"none"},{d:"M19.42 4.38c0 4.52 -4.51 12.13 -7.33 12.13 -2.82 0 -7.33 -7.61 -7.33 -12.13 0 -3.46 0.67 -4.21 2 -4.21 0.92 0 4.02 -0.02 5.33 -0.02l4.67 0c1.94 0 2.67 0.46 2.67 4.23z",fill:"#FFCC4D",stroke:"none"},{d:"M18 22c0 0.74 0.15 1.33 -0.58 1.33h-10.67C6.01 23.33 6 22.74 6 22v-0.67c0 -0.74 0.78 -1.33 1.47 -1.33h9.28c0.69 0 1.25 0.6 1.25 1.33v0.67z",fill:"#C1694F",stroke:"none"},{d:"M19.33 23.08c0 0.51 0.11 0.92 -0.83 0.92H5.67C4.8 24 4.67 23.59 4.67 23.08v-0.17C4.67 22.41 5.16 22 5.67 22h12.83c0.51 0 0.83 0.41 0.83 0.92v0.17z",fill:"#C1694F",stroke:"none"}]},{id:"emoji-balloon",cat:"emoji",zh:"\u6C14\u7403",en:"Balloon",kw:"balloon \u6C14\u7403 \u5E86\u795D \u6D3E\u5BF9 \u7AE5\u5E74",ink:A,layers:[{d:"M18.67 24c-0.3 0 -0.57 -0.2 -0.65 -0.51 -0.02 -0.09 -0.62 -2.29 -2.85 -2.85C12.04 19.86 12 15.52 12 15.33c0 -0.37 0.3 -0.67 0.67 -0.67 0.37 0.02 0.67 0.3 0.67 0.66 0 0.04 0.04 3.49 2.16 4.02 3.02 0.75 3.79 3.69 3.82 3.82 0.09 0.36 -0.13 0.72 -0.48 0.81 -0.05 0.01 -0.11 0.02 -0.16 0.02z",fill:"#FCAB40",stroke:"none"},{d:"M12 16.67c-0.73 0 -1.07 -0.54 -0.74 -1.19l0.81 -1.61c0.33 -0.66 0.86 -0.66 1.19 0l0.81 1.61C14.4 16.13 14.07 16.67 13.33 16.67h-1.33z",fill:"#BB1A34",stroke:"none"},{d:"M18.67 6c0 4 -4.67 8 -6 8s-6 -4 -6 -8c0 -3.87 3.05 -6 6 -6s6 2.13 6 6z",fill:"#BB1A34",stroke:"none"},{d:"M13.33 14.67h-1.33c-0.37 0 -0.67 -0.3 -0.67 -0.67s0.3 -0.67 0.67 -0.67h1.33c0.37 0 0.67 0.3 0.67 0.67s-0.3 0.67 -0.67 0.67z",fill:"#FCAB40",stroke:"none"}]},{id:"emoji-bus",cat:"emoji",zh:"\u516C\u4EA4",en:"Bus",kw:"bus \u516C\u4EA4\u8F66 \u516C\u4EA4 \u51FA\u884C \u4EA4\u901A",ink:A,layers:[{d:"M0 14v4.67c0 1.1 0.9 2 2 2h20c1.1 0 2 -0.9 2 -2v-4.67H0z",fill:"#808285",stroke:"none"},{d:"M24 14.67v-6c0 -1.1 -2.23 -2 -3.33 -2H7.33c-5.33 0 -7.33 1.56 -7.33 2.67v5.33h24z",fill:"#CCD6DD",stroke:"none"},{d:"M0 14.67h24v2H0z",fill:"#939598",stroke:"none"},{d:"M4.67 16.67c-2.04 0 -3.72 1.53 -3.97 3.51 0.35 0.3 0.8 0.49 1.3 0.49h6.67c0 -2.21 -1.79 -4 -4 -4zm18.63 3.51C23.06 18.2 21.38 16.67 19.33 16.67c-2.21 0 -4 1.79 -4 4h6.67c0.5 0 0.95 -0.19 1.3 -0.49z",fill:"#BCBEC0",stroke:"none"},{d:"M2 20.67A2.67 2.67 0 1 0 7.33 20.67A2.67 2.67 0 1 0 2 20.67Z",fill:"#000000",stroke:"none"},{d:"M3.33 20.67A1.33 1.33 0 1 0 6 20.67A1.33 1.33 0 1 0 3.33 20.67Z",fill:"#99AAB5",stroke:"none"},{d:"M16.67 20.67A2.67 2.67 0 1 0 22 20.67A2.67 2.67 0 1 0 16.67 20.67Z",fill:"#000000",stroke:"none"},{d:"M18 20.67A1.33 1.33 0 1 0 20.67 20.67A1.33 1.33 0 1 0 18 20.67Z",fill:"#99AAB5",stroke:"none"},{d:"M0 16.67h0.67v1.33H0zm23.33 -1.33h0.67v1.33h-0.67z",fill:"#F4900C",stroke:"none"},{d:"M0.67 8.67h23.33v6.67H0.67z",fill:"#58595B",stroke:"none"},{d:"M1.33 8.67H0.23C0.07 8.9 0 9.12 0 9.33v7.33h1.33c0.74 0 1.33 -0.6 1.33 -1.33v-5.33c0 -0.74 -0.6 -1.33 -1.33 -1.33z",fill:"#292F33",stroke:"none"},{d:"M20.67 13.33c0 0.37 -0.3 0.67 -0.67 0.67H4.67c-0.37 0 -0.67 -0.3 -0.67 -0.67v-2.67c0 -0.37 0.3 -0.67 0.67 -0.67h15.33c0.37 0 0.67 0.3 0.67 0.67v2.67z",fill:"#55ACEE",stroke:"none"},{d:"M23.33 12.67h0.67v1.33h-0.67z",fill:"#FFAC33",stroke:"none"},{d:"M0.67 10H0v5.33h0.67c0.37 0 0.67 -0.3 0.67 -0.67v-4c0 -0.37 -0.3 -0.67 -0.67 -0.67z",fill:"#55ACEE",stroke:"none"}]},{id:"emoji-bike",cat:"emoji",zh:"\u81EA\u884C\u8F66",en:"Bicycle",kw:"bike bicycle \u81EA\u884C\u8F66 \u9A91\u884C \u8FD0\u52A8",ink:A,layers:[{d:"M4.67 16c1.3 0 2.42 0.76 2.97 1.85l2.32 -1.16C8.99 14.71 6.96 13.33 4.61 13.33c-0.87 0 -1.69 0.19 -2.43 0.52l1.11 2.45C3.71 16.11 4.17 16 4.67 16zm14.67 0c0.98 0 1.85 0.43 2.46 1.1l1.93 -1.76C22.63 14.11 21.05 13.33 19.28 13.33c-2.38 0 -4.43 1.41 -5.38 3.43l2.43 1.15C16.86 16.79 18 16 19.33 16z",fill:"#EA596E",stroke:"none"},{d:"M4.67 14.67c-2.58 0 -4.67 2.09 -4.67 4.67s2.09 4.67 4.67 4.67 4.67 -2.09 4.67 -4.67 -2.09 -4.67 -4.67 -4.67zm0 8c-1.84 0 -3.33 -1.49 -3.33 -3.33s1.49 -3.33 3.33 -3.33 3.33 1.49 3.33 3.33 -1.49 3.33 -3.33 3.33zm14.67 -8c-2.58 0 -4.67 2.09 -4.67 4.67s2.09 4.67 4.67 4.67c2.58 0 4.67 -2.09 4.67 -4.67s-2.09 -4.67 -4.67 -4.67zm0 8c-1.84 0 -3.33 -1.49 -3.33 -3.33s1.49 -3.33 3.33 -3.33c1.84 0 3.33 1.49 3.33 3.33s-1.49 3.33 -3.33 3.33z",fill:"#292F33",stroke:"none"},{d:"M19.99 19.28c0 -0.04 -0.01 -0.09 -0.03 -0.13 -0.01 -0.04 -0.03 -0.08 -0.05 -0.12 -0.01 -0.02 -0.01 -0.03 -0.02 -0.05l-4.67 -7.33c-0.2 -0.31 -0.61 -0.4 -0.92 -0.2 -0.2 0.13 -0.3 0.34 -0.3 0.56H8c-0.37 0 -0.67 0.3 -0.67 0.67 0 0.37 0.3 0.67 0.67 0.67h6.67c0.02 0 0.03 -0.01 0.05 -0.01L18.12 18.67H12c-0.37 0 -0.67 0.3 -0.67 0.67s0.3 0.67 0.67 0.67h7.33c0.08 0 0.15 -0.02 0.23 -0.05 0.02 -0.01 0.04 -0.02 0.06 -0.03 0.02 -0.01 0.04 -0.02 0.06 -0.03 0.02 -0.01 0.03 -0.03 0.05 -0.05 0.04 -0.03 0.07 -0.06 0.1 -0.1 0.03 -0.03 0.05 -0.07 0.07 -0.1 0.02 -0.04 0.04 -0.07 0.05 -0.11 0.01 -0.04 0.02 -0.09 0.03 -0.13 0 -0.02 0.01 -0.04 0.01 -0.07 0 -0.02 -0.01 -0.03 -0.01 -0.05z",fill:"#DD2E44",stroke:"none"},{d:"M14.39 10.67l-1.93 5.41 -3.95 -4.52c-0.24 -0.28 -0.66 -0.31 -0.94 -0.06 -0.28 0.24 -0.3 0.66 -0.06 0.94l4.44 5.08 -0.57 1.59c-0.12 0.35 0.06 0.73 0.4 0.85 0.07 0.03 0.15 0.04 0.22 0.04 0.27 0 0.53 -0.17 0.63 -0.44L15.8 10.67h-1.42z",fill:"#DD2E44",stroke:"none"},{d:"M4.67 20c-0.1 0 -0.2 -0.02 -0.3 -0.07 -0.33 -0.16 -0.46 -0.57 -0.3 -0.89l2.04 -4.07C6.12 14.95 7.33 13.1 7.33 11.33c0 -2.16 -1.53 -2.7 -1.54 -2.7 -0.35 -0.12 -0.54 -0.49 -0.42 -0.84 0.12 -0.35 0.49 -0.54 0.84 -0.42C6.31 7.4 8.67 8.22 8.67 11.33c0 2.05 -1.22 4.03 -1.42 4.33l-1.98 3.97C5.15 19.87 4.91 20 4.67 20z",fill:"#DD2E44",stroke:"none"},{d:"M9.74 9.11c-0.04 0 -0.07 0 -0.11 -0.01l-4 -0.67c-0.36 -0.06 -0.61 -0.4 -0.55 -0.77 0.06 -0.36 0.4 -0.61 0.77 -0.55l4 0.67c0.36 0.06 0.61 0.4 0.55 0.77 -0.05 0.33 -0.34 0.56 -0.66 0.56zM17.59 11.33c-0.02 0 -0.04 0 -0.06 0l-3.78 -0.47c-0.25 -0.03 -0.43 -0.25 -0.41 -0.5 0.02 -0.25 0.22 -0.44 0.47 -0.44 0.03 0 2.71 -0.01 3.99 -0.87 0.17 -0.11 0.39 -0.1 0.55 0.02 0.16 0.12 0.22 0.33 0.16 0.53l-0.47 1.42c-0.06 0.2 -0.25 0.32 -0.45 0.32z",fill:"#292F33",stroke:"none"},{d:"M13.33 19.33c0 0.74 -0.6 1.33 -1.33 1.33 -0.74 0 -1.33 -0.6 -1.33 -1.33s0.6 -1.33 1.33 -1.33c0.74 0 1.33 0.6 1.33 1.33z",fill:"#66757F",stroke:"none"}]},{id:"emoji-beer",cat:"emoji",zh:"\u5564\u9152",en:"Beer",kw:"beer \u5564\u9152 \u5E72\u676F \u805A\u4F1A \u559D\u9152",ink:A,layers:[{d:"M20.67 3.81h-4v2.67h2.67s1.33 0 1.33 1.33v8c0 1.33 -1.33 1.33 -1.33 1.33h-2.67v2.67h4c1.47 0 2.67 -1.2 2.67 -2.67v-10.67c0 -1.47 -1.2 -2.67 -2.67 -2.67z",fill:"#FFAC33",stroke:"none"},{d:"M18 4H2v17.33c0 1.47 1.19 2.67 2.67 2.67h10.67c1.47 0 2.67 -1.19 2.67 -2.67V4z",fill:"#FFCC4D",stroke:"none"},{d:"M5.67 21.33c-0.37 0 -0.67 -0.3 -0.67 -0.67V10c0 -0.37 0.3 -0.67 0.67 -0.67s0.67 0.3 0.67 0.67v10.67c0 0.37 -0.3 0.67 -0.67 0.67zm4.33 0c-0.37 0 -0.67 -0.3 -0.67 -0.67V10c0 -0.37 0.3 -0.67 0.67 -0.67s0.67 0.3 0.67 0.67v10.67c0 0.37 -0.3 0.67 -0.67 0.67zm4.33 0c-0.37 0 -0.67 -0.3 -0.67 -0.67V10c0 -0.37 0.3 -0.67 0.67 -0.67s0.67 0.3 0.67 0.67v10.67c0 0.37 -0.3 0.67 -0.67 0.67z",fill:"#F4900C",stroke:"none"},{d:"M2 3.33v4.96c0.39 0.23 0.85 0.37 1.33 0.37 1.12 0 2.07 -0.69 2.47 -1.66 0.23 0.2 0.53 0.33 0.87 0.33 0.45 0 0.85 -0.23 1.09 -0.57C8.23 7.51 9.06 8 10 8c0.87 0 1.63 -0.42 2.12 -1.06C12.36 7.56 12.96 8 13.67 8c0.63 0 1.18 -0.36 1.46 -0.88l0.1 -0.24c0.33 0.18 0.71 0.29 1.11 0.29 0.65 0 1.24 -0.27 1.67 -0.7V3.33H2z",fill:"#FFAC33",stroke:"none"},{d:"M16 0H2.67C1.56 0 0.67 0.9 0.67 2v2.67c0 1.47 1.19 2.67 2.67 2.67 1.12 0 2.07 -0.69 2.47 -1.66 0.23 0.2 0.53 0.33 0.87 0.33 0.45 0 0.85 -0.23 1.09 -0.57C8.23 6.17 9.06 6.67 10 6.67c0.87 0 1.63 -0.42 2.12 -1.06C12.36 6.23 12.96 6.67 13.67 6.67c0.63 0 1.18 -0.36 1.46 -0.88 0.27 0.13 0.56 0.21 0.87 0.21 1.1 0 2 -0.9 2 -2V2c0 -1.1 -0.9 -2 -2 -2z",fill:"#EEE",stroke:"none"}]},{id:"emoji-coffee",cat:"emoji",zh:"\u5496\u5561",en:"Coffee",kw:"coffee \u5496\u5561 \u70ED\u996E \u63D0\u795E \u4E0B\u5348\u8336",ink:A,layers:[{d:"M0 17.33A12 6.67 0 1 0 24 17.33A12 6.67 0 1 0 0 17.33Z",fill:"#99AAB5",stroke:"none"},{d:"M0 16A12 6.67 0 1 0 24 16A12 6.67 0 1 0 0 16Z",fill:"#CCD6DD",stroke:"none"},{d:"M12 20.67C2.03 20.67 0.67 10.67 0.67 8h22.67c0 1.33 -1.31 12.67 -11.33 12.67z",fill:"#F5F8FA",stroke:"none"},{d:"M22.92 6.43c1.63 -6.75 -6.52 -5.14 -8.14 -3.87 -0.89 -0.1 -1.82 -0.16 -2.79 -0.16 -6.26 0 -11.33 2.15 -11.33 5.63C0.67 11.51 5.74 14.33 12 14.33s11.33 -2.82 11.33 -6.3c0 -0.58 -0.15 -1.11 -0.41 -1.61zm-1.67 -1.79c-0.9 -0.63 -2.07 -1.13 -3.41 -1.5 1.25 -0.38 3.03 -0.21 3.41 1.5z",fill:"#CCD6DD",stroke:"none"},{d:"M2 8.67A10 4.67 0 1 0 22 8.67A10 4.67 0 1 0 2 8.67Z",fill:"#8A4B38",stroke:"none"},{d:"M13.33 11.33c-0.17 0 -0.34 -0.07 -0.47 -0.2 -1.56 -1.56 -1.58 -3.26 -0.08 -5.51 0.49 -0.74 0.6 -1.5 0.32 -2.25 -0.31 -0.82 -0.96 -1.33 -1.15 -1.38 -0.37 0 -0.64 -0.3 -0.64 -0.66 0 -0.37 0.33 -0.66 0.7 -0.66 0.66 0 1.6 0.77 2.12 1.75 0.69 1.29 0.61 2.69 -0.23 3.95 -1.31 1.96 -1.02 2.89 -0.08 3.83 0.26 0.26 0.26 0.68 0 0.94 -0.13 0.13 -0.3 0.2 -0.47 0.2zm-4 -1.33c-0.17 0 -0.34 -0.07 -0.47 -0.2 -1.56 -1.56 -1.58 -3.26 -0.08 -5.51 0.48 -0.73 0.6 -1.39 0.33 -1.96 -0.3 -0.64 -0.95 -0.98 -1.12 -1 -0.37 0 -0.66 -0.3 -0.66 -0.67 0 -0.37 0.31 -0.67 0.67 -0.67 0.66 0 1.72 0.65 2.24 1.62 0.32 0.6 0.7 1.84 -0.35 3.42 -1.31 1.96 -1.02 2.89 -0.08 3.83 0.26 0.26 0.26 0.68 0 0.94 -0.13 0.13 -0.3 0.2 -0.47 0.2z",fill:"#D99E82",stroke:"none"}]},{id:"emoji-apple",cat:"emoji",zh:"\u82F9\u679C",en:"Apple",kw:"apple \u82F9\u679C \u6C34\u679C \u5065\u5EB7",ink:A,layers:[{d:"M16 4.67c-2 0 -2 0.67 -4 0.67s-2 -0.67 -4 -0.67c-2.67 0 -6 1.33 -6 6 0 7.33 4 13.33 6.67 13.33 2 0 2 -0.67 3.33 -0.67s1.33 0.67 3.33 0.67c2.67 0 6.67 -6 6.67 -13.33 0 -4.67 -3.33 -6 -6 -6z",fill:"#DD2E44",stroke:"none"},{d:"M12.67 4.67s2 -2.67 5.33 -2.67c2.67 0 4 1.33 4 1.33s-2.67 2 -4.67 2 -4.67 -0.67 -4.67 -0.67z",fill:"#77B255",stroke:"none"},{d:"M12 6.67c-0.37 0 -0.67 -0.3 -0.67 -0.67 0 -2.29 0.8 -4.41 2.2 -5.8 0.26 -0.26 0.68 -0.26 0.94 0s0.26 0.68 0 0.94C13.32 2.28 12.67 4.06 12.67 6c0 0.37 -0.3 0.67 -0.67 0.67z",fill:"#662113",stroke:"none"}]},{id:"emoji-watermelon",cat:"emoji",zh:"\u897F\u74DC",en:"Watermelon",kw:"watermelon \u897F\u74DC \u6C34\u679C \u590F\u5929 \u89E3\u6691",ink:A,layers:[{d:"M1.65 4.38C1.02 5.8 0.67 7.36 0.67 9 0.67 15.44 6.04 20.67 12.67 20.67c5.16 0 9.55 -3.18 11.25 -7.63L1.65 4.38z",fill:"#5C913B",stroke:"none"},{d:"M2.89 4.86C2.32 6.13 2 7.53 2 9c0 5.73 4.78 10.37 10.67 10.37 4.6 0 8.51 -2.84 10.01 -6.81L2.89 4.86z",fill:"#FFE8B6",stroke:"none"},{d:"M4.13 5.35C3.62 6.46 3.33 7.7 3.33 9c0 5.01 4.18 9.07 9.33 9.07 4.04 0 7.47 -2.5 8.77 -6L4.13 5.35z",fill:"#DD2E44",stroke:"none"},{d:"M6.61 9.52c-0.2 0.31 -0.49 0.47 -0.65 0.37 -0.15 -0.1 -0.11 -0.43 0.09 -0.74 0.2 -0.31 0.49 -0.47 0.65 -0.37 0.15 0.1 0.11 0.43 -0.09 0.74zm4 0.67c-0.2 0.31 -0.49 0.47 -0.65 0.37 -0.15 -0.1 -0.11 -0.43 0.09 -0.74 0.2 -0.31 0.49 -0.47 0.65 -0.37 0.15 0.1 0.11 0.43 -0.09 0.74zm3.39 3.12c0.03 0.37 -0.09 0.68 -0.27 0.69 -0.18 0.02 -0.36 -0.27 -0.39 -0.63 -0.03 -0.37 0.09 -0.68 0.27 -0.69 0.18 -0.02 0.36 0.27 0.39 0.63zm-6 -1.33c0.03 0.37 -0.09 0.68 -0.27 0.69 -0.18 0.02 -0.36 -0.27 -0.39 -0.63 -0.03 -0.37 0.09 -0.68 0.27 -0.69 0.18 -0.02 0.36 0.27 0.39 0.63zm2.6 3.56c-0.22 0.29 -0.52 0.44 -0.67 0.33 -0.15 -0.11 -0.09 -0.44 0.14 -0.73 0.22 -0.29 0.52 -0.44 0.67 -0.33 0.15 0.11 0.09 0.44 -0.14 0.73zm5.36 0.3c0.18 0.32 0.2 0.65 0.04 0.74 -0.16 0.09 -0.44 -0.1 -0.62 -0.42 -0.18 -0.32 -0.2 -0.65 -0.04 -0.74 0.16 -0.09 0.44 0.09 0.62 0.42zm-4.68 -3.35c0.2 0.31 0.24 0.64 0.09 0.74 -0.15 0.1 -0.44 -0.07 -0.64 -0.37 -0.2 -0.31 -0.24 -0.64 -0.09 -0.74 0.15 -0.1 0.44 0.06 0.64 0.37zm5.99 1.05c-0.22 0.29 -0.52 0.44 -0.67 0.33 -0.15 -0.11 -0.09 -0.44 0.14 -0.73 0.22 -0.29 0.52 -0.44 0.67 -0.33 0.15 0.11 0.09 0.44 -0.14 0.73z",fill:"#000000",stroke:"none"}]},{id:"emoji-music",cat:"emoji",zh:"\u97F3\u4E50",en:"Music",kw:"music note \u97F3\u4E50 \u97F3\u7B26 \u6B4C\u66F2 \u65CB\u5F8B",ink:A,layers:[{d:"M22.81 0.14L7.86 1.86C7.2 1.94 6.67 2.54 6.67 3.2v12.52C6.06 15.48 5.38 15.33 4.67 15.33c-2.58 0 -4.67 1.79 -4.67 4 0 2.21 2.09 4 4.67 4s4.67 -1.79 4.67 -4V7.03l12 -1.38v8.75c-0.61 -0.25 -1.28 -0.39 -2 -0.39 -2.58 0 -4.67 1.79 -4.67 4 0 2.21 2.09 4 4.67 4s4.67 -1.79 4.67 -4V1.2c0 -0.66 -0.54 -1.14 -1.19 -1.06z",fill:"#5DADEC",stroke:"none"}]},{id:"emoji-camera",cat:"emoji",zh:"\u76F8\u673A",en:"Camera",kw:"camera \u76F8\u673A \u62CD\u7167 \u7167\u7247 \u6444\u5F71",ink:A,layers:[{d:"M2.67 3.33s0 -0.67 0.67 -0.67h4s0.67 0 0.67 0.67v1.33H2.67V3.33z",fill:"#66757F",stroke:"none"},{d:"M0 6.67s0 -2.67 2.67 -2.67h18.67s2.67 0 2.67 2.67v12s0 2.67 -2.67 2.67H2.67s-2.67 0 -2.67 -2.67V6.67z",fill:"#31373D",stroke:"none"},{d:"M7.33 12.67A6.67 6.67 0 1 0 20.67 12.67A6.67 6.67 0 1 0 7.33 12.67Z",fill:"#CCD6DD",stroke:"none"},{d:"M8.67 12.67A5.33 5.33 0 1 0 19.33 12.67A5.33 5.33 0 1 0 8.67 12.67Z",fill:"#31373D",stroke:"none"},{d:"M10.67 12.67A3.33 3.33 0 1 0 17.33 12.67A3.33 3.33 0 1 0 10.67 12.67Z",fill:"#3B88C3",stroke:"none"},{d:"M20.67 6.33A1 1 0 1 0 22.67 6.33A1 1 0 1 0 20.67 6.33Z",fill:"#FFF",stroke:"none"},{d:"M8 6.33c0 0.55 -0.45 1 -1 1h-3.33C3.11 7.33 2.67 6.89 2.67 6.33S3.11 5.33 3.67 5.33h3.33c0.55 0 1 0.45 1 1z",fill:"#F5F8FA",stroke:"none"}]},{id:"emoji-laptop",cat:"emoji",zh:"\u7535\u8111",en:"Laptop",kw:"laptop computer \u7535\u8111 \u7B14\u8BB0\u672C \u529E\u516C \u5DE5\u4F5C",ink:A,layers:[{d:"M22.67 19.4c-0.28 -0.64 -0.6 -1.34 -1.33 -1.34h-0.67c0.74 0 1.33 -0.6 1.33 -1.34V5.34C22 4.6 21.4 4 20.67 4H3.33c-0.74 0 -1.33 0.6 -1.33 1.34V16.72c0 0.74 0.6 1.34 1.33 1.34H2.67c-0.74 0 -1.11 0.67 -1.33 1.34l-1.33 3.26C0 23.4 0.6 24 1.33 24h21.33c0.74 0 1.33 -0.6 1.33 -1.34l-1.33 -3.26z",fill:"#CCD6DD",stroke:"none"},{d:"M0.01 22.72l0 0.04 0.11 0.46C0.33 23.68 0.79 24 1.33 24h21.33c0.72 0 1.3 -0.57 1.33 -1.28H0.01z",fill:"#9AAAB4",stroke:"none"},{d:"M20.67 16.05c0 0.37 -0.3 0.67 -0.67 0.67H4c-0.37 0 -0.67 -0.3 -0.67 -0.67V6.01c0 -0.37 0.3 -0.67 0.67 -0.67h16c0.37 0 0.67 0.3 0.67 0.67v10.04z",fill:"#5DADEC",stroke:"none"},{d:"M21.94 20.69l-0.51 -1.45c-0.16 -0.31 -0.42 -0.56 -0.79 -0.56H3.41c-0.37 0 -0.6 0.27 -0.77 0.69l-0.46 1.32c-0.15 0.4 0.3 0.67 0.67 0.67h5.05s0.62 -0.03 0.74 -0.41c0.13 -0.43 0.28 -1.08 0.31 -1.2 0.05 -0.18 0.26 -0.35 0.57 -0.35h5.72c0.33 0 0.5 0.17 0.54 0.38 0.03 0.14 0.21 0.76 0.29 1.19 0.07 0.38 0.81 0.39 0.81 0.39h4.4c0.37 0 0.81 -0.31 0.67 -0.67z",fill:"#AEBBC1",stroke:"none"},{d:"M14.92 22.08h-5.19c-0.25 0 -0.36 -0.23 -0.32 -0.45 0.04 -0.22 0.24 -1.2 0.26 -1.31 0.02 -0.11 0.18 -0.25 0.35 -0.25h4.68c0.2 0 0.33 0.11 0.37 0.33 0.04 0.22 0.2 1.09 0.21 1.29 0.01 0.2 -0.11 0.39 -0.35 0.39z",fill:"#9AAAB4",stroke:"none"}]},{id:"emoji-phone",cat:"emoji",zh:"\u624B\u673A",en:"Phone",kw:"phone \u624B\u673A \u79FB\u52A8 \u901A\u8BAF \u7535\u8BDD",ink:A,layers:[{d:"M7.33 24s-2.67 0 -2.67 -2.67V2.67s0 -2.67 2.67 -2.67h9.33s2.67 0 2.67 2.67v18.67s0 2.67 -2.67 2.67H7.33z",fill:"#31373D",stroke:"none"},{d:"M6 3.33h12v17.33H6z",fill:"#55ACEE",stroke:"none"}]},{id:"emoji-money",cat:"emoji",zh:"\u91D1\u94B1",en:"Money",kw:"money \u94B1 \u91D1\u94B1 \u8D22\u5BCC \u6709\u94B1 \u53D1\u8D22",ink:A,layers:[{d:"M21.27 15.96C20.87 11.55 18.67 9.33 18.67 9.33l-4 -5.33h-5.33l-4 5.33s-0.95 0.96 -1.71 2.85C2.3 12.62 1.33 13.86 1.33 15.33c0 0.97 0.42 1.83 1.07 2.44C2.16 18.24 2 18.76 2 19.33c0 1.31 0.76 2.42 1.85 2.97C4.71 23.59 5.85 24 6.67 24h10.67c0.92 0 2.25 -0.52 3.12 -2.21C21.74 21.33 22.67 20.11 22.67 18.67c0 -1.12 -0.56 -2.1 -1.4 -2.71zM12 4c0.37 0 0.71 -0.11 1 -0.28 0.3 0.17 0.63 0.28 1 0.28 1.1 0 2.67 -1.56 2.67 -2.67 0 0 0 -1.33 -1.33 -1.33 -0.53 0 -0.67 0.67 -1.33 0.67s-0.67 -0.67 -2 -0.67 -1.33 0.67 -2 0.67 -0.81 -0.67 -1.33 -0.67c-1.33 0 -1.33 1.33 -1.33 1.33 0 1.1 1.56 2.67 2.67 2.67 0.37 0 0.7 -0.11 1 -0.28 0.3 0.17 0.63 0.28 1 0.28z",fill:"#FDD888",stroke:"none"},{d:"M16 4c0 0.37 -0.3 0.67 -0.67 0.67H8.67c-0.37 0 -0.67 -0.3 -0.67 -0.67s0.3 -0.67 0.67 -0.67h6.67c0.37 0 0.67 0.3 0.67 0.67z",fill:"#BF6952",stroke:"none"},{d:"M15.93 16.36c0 -2.98 -5.72 -2.79 -5.72 -4.59 0 -0.87 0.87 -1.3 1.87 -1.3 1.69 0 1.99 1.05 2.76 1.05 0.54 0 0.8 -0.33 0.8 -0.7 0 -0.86 -1.35 -1.5 -2.64 -1.73V8.27c0 -0.52 -0.43 -0.93 -0.97 -0.93 -0.54 0 -0.97 0.42 -0.97 0.93v0.86c-1.41 0.31 -2.62 1.25 -2.62 2.78 0 2.87 5.72 2.75 5.72 4.76 0 0.7 -0.79 1.4 -2.07 1.4 -1.93 0 -2.58 -1.26 -3.36 -1.26 -0.38 0 -0.72 0.31 -0.72 0.78 0 0.74 1.29 1.63 3.07 1.88l0 0.01v0.93c0 0.51 0.43 0.93 0.97 0.93 0.54 0 0.97 -0.42 0.97 -0.93v-0.93c0 -0.01 -0.01 -0.02 -0.01 -0.03 1.6 -0.29 2.93 -1.29 2.93 -3.08z",fill:"#67757F",stroke:"none"}]},{id:"emoji-gem",cat:"emoji",zh:"\u94BB\u77F3",en:"Gem",kw:"gem diamond \u94BB\u77F3 \u73E0\u5B9D \u73CD\u8D35 \u5962\u4F88\u54C1",ink:A,layers:[{d:"M8.67 2H4.67l-4.67 6h6.67z",fill:"#BDDDF4",stroke:"none"},{d:"M24 8l-4.67 -6h-4l2 6z",fill:"#5DADEC",stroke:"none"},{d:"M17.33 8h6.67L12 22z",fill:"#4289C1",stroke:"none"},{d:"M6.67 8H0l12 14zm2 -6l-2 6h10.67l-2 -6z",fill:"#8CCAF7",stroke:"none"},{d:"M12 22l-5.33 -14h10.67z",fill:"#5DADEC",stroke:"none"}]},{id:"emoji-alarm",cat:"emoji",zh:"\u95F9\u949F",en:"Alarm",kw:"alarm clock \u95F9\u949F \u65F6\u95F4 \u63D0\u9192 \u65E9\u8D77",ink:A,layers:[{d:"M13.33 4.03c0 0.74 -0.6 1.34 -1.33 1.34s-1.33 -0.6 -1.33 -1.34V1.34C10.67 0.6 11.27 0 12 0s1.33 0.6 1.33 1.34v2.69z",fill:"#FFCC4D",stroke:"none"},{d:"M6.12 24c-0.15 0 -0.3 -0.03 -0.44 -0.11 -0.49 -0.25 -0.69 -0.85 -0.44 -1.35l5.96 -12.08c0.17 -0.34 0.51 -0.56 0.89 -0.56s0.72 0.22 0.89 0.56l5.96 12.08c0.25 0.5 0.05 1.1 -0.44 1.35 -0.49 0.25 -1.09 0.05 -1.33 -0.45L12.08 13.16l-5.07 10.28c-0.17 0.35 -0.53 0.56 -0.89 0.56z",fill:"#FFAC33",stroke:"none"},{d:"M12.08 13.59c-0.18 0 -0.34 -0.07 -0.47 -0.2L2.34 4c-0.26 -0.26 -0.26 -0.69 0 -0.95s0.68 -0.26 0.94 0L12.08 11.97 20.88 3.05c0.26 -0.26 0.68 -0.26 0.94 0 0.26 0.26 0.26 0.69 0 0.95l-9.27 9.4c-0.12 0.13 -0.29 0.2 -0.47 0.2z",fill:"#58595B",stroke:"none"},{d:"M22.68 12.92c0 5.93 -4.74 10.74 -10.6 10.74 -5.85 0 -10.6 -4.81 -10.6 -10.74 0 -5.93 4.74 -10.74 10.6 -10.74 5.85 0 10.6 4.81 10.6 10.74z",fill:"#DD2E44",stroke:"none"},{d:"M20.03 12.92c0 4.45 -3.56 8.06 -7.95 8.06 -4.39 0 -7.95 -3.61 -7.95 -8.06C4.13 8.47 7.69 4.87 12.08 4.87c4.39 0 7.95 3.61 7.95 8.06z",fill:"#E6E7E8",stroke:"none"},{d:"M20.03 0.84c-1.1 0 -2.09 0.45 -2.81 1.18l5.62 5.7C23.56 6.99 24 5.98 24 4.87c0 -2.22 -1.78 -4.03 -3.97 -4.03zm-16.05 0c1.1 0 2.09 0.45 2.81 1.18l-5.62 5.7C0.44 6.99 0 5.98 0 4.87c0 -2.22 1.78 -4.03 3.97 -4.03z",fill:"#FFCC4D",stroke:"none"},{d:"M15.33 13.33h-3.33c-0.37 0 -0.67 -0.3 -0.67 -0.67v-6c0 -0.37 0.3 -0.67 0.67 -0.67s0.67 0.3 0.67 0.67v5.33h2.67c0.37 0 0.67 0.3 0.67 0.67 0 0.37 -0.3 0.67 -0.67 0.67z",fill:"#414042",stroke:"none"}]},{id:"emoji-calendar",cat:"emoji",zh:"\u65E5\u5386",en:"Calendar",kw:"calendar \u65E5\u5386 \u65E5\u671F \u65E5\u7A0B \u6392\u671F",ink:A,layers:[{d:"M24 21.33c0 1.47 -1.19 2.67 -2.67 2.67H2.67c-1.47 0 -2.67 -1.19 -2.67 -2.67V6c0 -1.47 1.19 -2.67 2.67 -2.67h18.67c1.47 0 2.67 1.19 2.67 2.67v15.33z",fill:"#E0E7EC",stroke:"none"},{d:"M15.77 12.75H11.91c-0.81 0 -1.12 -0.53 -1.12 -1.04 0 -0.53 0.29 -1.04 1.12 -1.04h5.46c0.77 0 1.09 0.69 1.09 1.09 0 0.3 -0.17 0.62 -0.35 0.99l-3.74 7.6c-0.42 0.84 -0.59 1.14 -1.27 1.14 -0.83 0 -1.25 -0.63 -1.25 -1.07 0 -0.18 0.05 -0.32 0.15 -0.53l3.77 -7.14zM7.26 12.67h-0.33c-0.72 0 -1.03 -0.49 -1.03 -1 0 -0.53 0.38 -1 1.03 -1h1.34c0.65 0 1.01 0.47 1.01 1.07V20.31c0 0.75 -0.37 1.18 -1.02 1.18s-1 -0.42 -1 -1.18V12.67z",fill:"#66757F",stroke:"none"},{d:"M22.67 0h-2.18c0.11 0.2 0.18 0.42 0.18 0.67 0 0.74 -0.6 1.33 -1.33 1.33s-1.33 -0.6 -1.33 -1.33c0 -0.24 0.07 -0.47 0.18 -0.67H5.82C5.93 0.2 6 0.42 6 0.67c0 0.74 -0.6 1.33 -1.33 1.33s-1.33 -0.6 -1.33 -1.33c0 -0.24 0.07 -0.47 0.18 -0.67H1.33C0.6 0 0 0.6 0 1.33v7.33h24V1.33c0 -0.74 -0.6 -1.33 -1.33 -1.33z",fill:"#DD2F45",stroke:"none"},{d:"M8.79 3.07c0 -0.33 0.21 -0.52 0.5 -0.52 0.29 0 0.5 0.19 0.5 0.52v3.34h1.19c0.34 0 0.49 0.25 0.48 0.48 -0.01 0.22 -0.19 0.44 -0.48 0.44h-1.67c-0.33 0 -0.52 -0.21 -0.52 -0.55V3.07zm-4.61 0c0 -0.33 0.21 -0.52 0.5 -0.52s0.5 0.19 0.5 0.52v2.33c0 0.61 0.39 1.1 1.03 1.1 0.61 0 1.02 -0.51 1.02 -1.1V3.07c0 -0.33 0.21 -0.52 0.5 -0.52s0.5 0.19 0.5 0.52v2.38c0 1.12 -0.92 1.97 -2.02 1.97 -1.11 0 -2.03 -0.83 -2.03 -1.97V3.07zM3.66 6c0 1.12 -0.71 1.41 -1.32 1.41 -0.46 0 -1.23 -0.18 -1.23 -0.76 0 -0.18 0.15 -0.41 0.37 -0.41 0.27 0 0.5 0.25 0.8 0.25 0.37 0 0.37 -0.35 0.37 -0.56V3.07c0 -0.33 0.21 -0.52 0.5 -0.52 0.29 0 0.5 0.19 0.5 0.52v2.93z",fill:"#F5F8FA",stroke:"none"},{d:"M21.33 6.67c0 0.37 0.3 0.67 0.67 0.67s0.67 -0.3 0.67 -0.67 -0.3 -0.67 -0.67 -0.67 -0.67 0.3 -0.67 0.67m0 -2c0 0.37 0.3 0.67 0.67 0.67s0.67 -0.3 0.67 -0.67 -0.3 -0.67 -0.67 -0.67 -0.67 0.3 -0.67 0.67m-2 2c0 0.37 0.3 0.67 0.67 0.67s0.67 -0.3 0.67 -0.67 -0.3 -0.67 -0.67 -0.67 -0.67 0.3 -0.67 0.67m0 -2c0 0.37 0.3 0.67 0.67 0.67s0.67 -0.3 0.67 -0.67 -0.3 -0.67 -0.67 -0.67 -0.67 0.3 -0.67 0.67m-2 2c0 0.37 0.3 0.67 0.67 0.67s0.67 -0.3 0.67 -0.67 -0.3 -0.67 -0.67 -0.67 -0.67 0.3 -0.67 0.67m0 -2c0 0.37 0.3 0.67 0.67 0.67s0.67 -0.3 0.67 -0.67 -0.3 -0.67 -0.67 -0.67 -0.67 0.3 -0.67 0.67m-2 0c0 0.37 0.3 0.67 0.67 0.67s0.67 -0.3 0.67 -0.67 -0.3 -0.67 -0.67 -0.67 -0.67 0.3 -0.67 0.67m0 2c0 0.37 0.3 0.67 0.67 0.67s0.67 -0.3 0.67 -0.67 -0.3 -0.67 -0.67 -0.67 -0.67 0.3 -0.67 0.67",fill:"#F4ABBA",stroke:"none"}]},{id:"emoji-bubble",cat:"emoji",zh:"\u5BF9\u8BDD",en:"Speech bubble",kw:"speech bubble \u5BF9\u8BDD \u804A\u5929\u6C14\u6CE1 \u8BC4\u8BBA \u7559\u8A00",ink:A,layers:[{d:"M12 0.67C5.37 0.67 0 4.85 0 10c0 2.91 1.72 5.51 4.4 7.22C4.05 18.76 3.24 21.05 1.33 23.33c3.84 -0.64 6.29 -2.51 7.81 -4.28 0.92 0.17 1.87 0.28 2.86 0.28 6.63 0 12 -4.18 12 -9.33S18.63 0.67 12 0.67z",fill:"#BDDDF4",stroke:"none"},{d:"M10.67 10A1.33 1.33 0 1 0 13.33 10A1.33 1.33 0 1 0 10.67 10Z",fill:"#2A6797",stroke:"none"},{d:"M16 10A1.33 1.33 0 1 0 18.67 10A1.33 1.33 0 1 0 16 10Z",fill:"#2A6797",stroke:"none"},{d:"M5.33 10A1.33 1.33 0 1 0 8 10A1.33 1.33 0 1 0 5.33 10Z",fill:"#2A6797",stroke:"none"}]}];var E="#334155",_="#4C93FB",mi="#2F6FE0",Q="#38C976",fo="#2AA25E",le="#FFC43D";var ot="#F2555A",rt="#2BC4CE";var Mt="#93A6BA";var ln="#3A4A5A",ee="#FFFFFF",U="#E9F2FF",B="sticker",H=(r,e,t,i,n)=>`M${r+n} ${e}H${r+t-n}A${n} ${n} 0 0 1 ${r+t} ${e+n}V${e+i-n}A${n} ${n} 0 0 1 ${r+t-n} ${e+i}H${r+n}A${n} ${n} 0 0 1 ${r} ${e+i-n}V${e+n}A${n} ${n} 0 0 1 ${r+n} ${e}Z`,ge=(r,e,t,i)=>`M${r} ${e}H${r+t}V${e+i}H${r}Z`,$=(r,e,t)=>`M${r-t} ${e}A${t} ${t} 0 1 0 ${r+t} ${e}A${t} ${t} 0 1 0 ${r-t} ${e}Z`,cn=(r,e,t,i,n)=>`M${r} ${e+i}V${e+n}A${n} ${n} 0 0 1 ${r+n} ${e}H${r+t-n}A${n} ${n} 0 0 1 ${r+t} ${e+n}V${e+i}Z`,D=(r,e,t=1.5)=>({d:r,fill:e,stroke:E,w:t}),T=(r,e=E,t=1.5)=>({d:r,fill:"none",stroke:e,w:t}),F=(r,e)=>({d:r,fill:e,stroke:"none"}),Ge=(r,e,t)=>r.map(([i,n])=>F($(i,n,e),t)),bt=(r,e)=>Array.from({length:r},(t,i)=>e(i)),fi=[{id:"sticker-money",cat:B,zh:"\u949E\u7968",en:"Money",kw:"money cash bill \u949E\u7968 \u94B1 \u73B0\u91D1 \u5546\u52A1 \u5DE5\u8D44 \u652F\u4ED8",layers:[D(H(2.4,6.5,19.2,11,1.6),Q),T($(12,12,2.9)),...Ge([[5.4,9.1],[18.6,14.9]],.7,fo)]},{id:"sticker-briefcase",cat:B,zh:"\u516C\u6587\u5305",en:"Briefcase",kw:"briefcase work case \u516C\u6587\u5305 \u5DE5\u4F5C \u5546\u52A1 \u9762\u8BD5 office",layers:[T("M9 8.2V6.7C9 5.2 10.2 4.2 12 4.2C13.8 4.2 15 5.2 15 6.7V8.2",E,1.6),D(H(3,8,18,11.6,2),_),T("M3.2 12.4H20.8",E,1.2),D(H(10.2,11,3.6,3,.7),le,1.2)]},{id:"sticker-calculator",cat:B,zh:"\u8BA1\u7B97\u5668",en:"Calculator",kw:"calculator calc compute \u8BA1\u7B97\u5668 \u8BA1\u7B97 \u8D22\u52A1 \u4F1A\u8BA1 \u5546\u52A1",layers:[D(H(5,3,14,18,2),_),D(H(7.2,5.2,9.6,4,.8),U,1.1),...bt(6,r=>D($(8+r%3*4,12.1+Math.floor(r/3)*3.2,.95),U,1)),D(H(7.4,17.6,9.2,1.8,.6),Q,1.1)]},{id:"sticker-chat",cat:B,zh:"\u5BF9\u8BDD\u6C14\u6CE1",en:"Chat bubble",kw:"chat message talk \u5BF9\u8BDD \u6C14\u6CE1 \u6D88\u606F \u6C9F\u901A \u4EA4\u6D41 \u5BA2\u670D",layers:[D("M8.6 16.8L6.6 20.8L12.2 17.4Z",Q,1.4),D(H(3,4.6,18,12.4,3.2),Q),...Ge([[8.4,10.8],[12,10.8],[15.6,10.8]],1.15,ee)]},{id:"sticker-coffee",cat:B,zh:"\u5496\u5561",en:"Coffee",kw:"coffee tea cup \u5496\u5561 \u8336 \u676F \u4F11\u606F \u5546\u52A1 \u63D0\u795E",layers:[T("M9.4 7.6C10.2 6.7 10.2 5.7 9.4 4.8",E,1.2),T("M12.4 7.6C13.2 6.7 13.2 5.7 12.4 4.8",E,1.2),T("M16.6 10.6H17.6C19 10.6 20 11.6 20 13C20 14.4 19 15.4 17.6 15.4H16.6",E,1.5),D(H(5.5,9,11.1,8.2,1.6),ee),D(H(3.6,18.6,16.8,1.8,.9),ee,1.3)]},{id:"sticker-notebook",cat:B,zh:"\u8D26\u672C",en:"Ledger",kw:"ledger notebook book account \u8D26\u672C \u7B14\u8BB0\u672C \u8BB0\u8D26 \u5546\u52A1 \u8BB0\u5F55",layers:[D(H(5,3,14,18,2),ot),F(H(5,3,3,18,1.6),"#CE424C"),D("M13.2 3.4H16.2V9.6L14.7 8.4L13.2 9.6Z",le,1.2),T("M9.3 12.6H16.2",E,1.2),T("M9.3 15.6H16.2",E,1.2)]},{id:"sticker-clock",cat:B,zh:"\u65F6\u949F",en:"Clock",kw:"clock time watch \u65F6\u949F \u65F6\u95F4 \u8BA1\u65F6 \u5546\u52A1 \u65E5\u7A0B",layers:[D($(12,12,8.6),_),F($(12,12,6.5),ee),T("M12 7.6V12L15.1 13.9",E,1.6)]},{id:"sticker-mail",cat:B,zh:"\u90AE\u4EF6",en:"Mail",kw:"mail email envelope \u90AE\u4EF6 \u4FE1\u5C01 \u6D88\u606F \u901A\u77E5 \u5546\u52A1",layers:[D(H(3,5.5,18,13,2),_),T("M3.6 7.2L12 13.2L20.4 7.2",E,1.5)]},{id:"sticker-folder",cat:B,zh:"\u6587\u4EF6\u5939",en:"Folder",kw:"folder directory \u6587\u4EF6\u5939 \u76EE\u5F55 \u5F52\u6863 \u5546\u52A1 \u8D44\u6599",layers:[D("M3 6.4H9.3L11.4 9.2H21V19.4H3Z",le),F(cn(3,6.4,8.4,3,1.2),"#EBAF1F")]},{id:"sticker-presentation",cat:B,zh:"\u6F14\u793A",en:"Presentation",kw:"presentation slide board chart \u6F14\u793A \u6C47\u62A5 \u5E7B\u706F\u7247 \u5546\u52A1 \u770B\u677F",layers:[D(H(3,3.6,18,12.2,1.6),ee),F(ge(6.6,10.2,2.1,3.4),_),F(ge(10,7.6,2.1,6),Q),F(ge(13.4,9.2,2.1,4.4),le),T("M12 15.9V20",E,1.5),T("M8 20.4H16",E,1.5)]},{id:"sticker-monitor",cat:B,zh:"\u663E\u793A\u5668",en:"Monitor",kw:"monitor screen display \u663E\u793A\u5668 \u5C4F\u5E55 \u7535\u8111 \u529E\u516C \u5546\u52A1",layers:[D(H(3,4.6,18,12.4,1.6),rt),F(H(5,6.6,14,8.4,1),U),D(H(7,18.6,10,1.8,.9),rt,1.2),F(ge(10.6,17,2.8,2.2),rt)]},{id:"sticker-newspaper",cat:B,zh:"\u62A5\u7EB8",en:"Newspaper",kw:"newspaper news \u62A5\u7EB8 \u65B0\u95FB \u8D44\u8BAF \u5546\u52A1 \u9605\u8BFB",layers:[D(H(4,4.8,16,14.4,1.4),ee),F(H(6.4,7.2,11.2,2.4,.5),_),T("M6.4 12.4H11.2",E,1.1),T("M6.4 15H11.2",E,1.1),T("M6.4 17.4H11.2",E,1.1),T("M13.4 12.4H17.6",E,1.1),T("M13.4 15H17.6",E,1.1)]},{id:"sticker-sticky",cat:B,zh:"\u4FBF\u7B7E",en:"Sticky note",kw:"sticky note memo \u4FBF\u7B7E \u4FBF\u5229\u8D34 \u5907\u5FD8 \u8BB0\u5F55 \u5546\u52A1",layers:[D(H(4,4,16,16,1.6),le),F("M14.6 20L20 14.6H14.6Z","#EBAF1F"),T("M14.6 20L20 14.6H14.6Z",E,1.2),T("M7 9H15.4",E,1.2),T("M7 12.6H15.4",E,1.2)]},{id:"sticker-form",cat:B,zh:"\u8868\u5355",en:"Form",kw:"form doc file \u8868\u5355 \u5355\u636E \u6587\u6863 \u62A5\u8868 \u5546\u52A1",layers:[D("M6.4 3.4H13.4L18 8V20.6H6.4Z",ee),F("M13.4 3.4L18 8H13.4Z","#D6E4F7"),T("M13.4 3.4L18 8H13.4Z",E,1.2),T("M9 11.2H15.4V16.4H9Z",E,1.1),T("M9 13.8H15.4",E,1.1),T("M12.2 11.2V16.4",E,1.1)]},{id:"sticker-printer",cat:B,zh:"\u6253\u5370\u673A",en:"Printer",kw:"printer print \u6253\u5370\u673A \u6253\u5370 \u590D\u5370 \u529E\u516C \u5546\u52A1",layers:[D("M7 8V3.4H17V8Z",U,1.4),D(H(3.4,8,17.2,8.2,1.6),Mt),D(H(6.8,14.4,10.4,6.2,1),ee,1.3),F(ge(8.6,16.4,6.6,1),_),F($(17.6,10.6,.9),Q)]},{id:"sticker-checklist",cat:B,zh:"\u6E05\u5355",en:"Checklist",kw:"checklist todo task \u6E05\u5355 \u5F85\u529E \u4EFB\u52A1 \u52FE\u9009 \u5546\u52A1",layers:[D(H(5,3,14,18,1.6),ee),T("M7.8 9L9.4 10.7L12 7.6",Q,1.6),T("M7.8 14.6L9.4 16.3L12 13.2",Q,1.6),T("M13.6 9.4H16.4",E,1.1),T("M13.6 15H16.4",E,1.1)]},{id:"sticker-image",cat:B,zh:"\u56FE\u7247",en:"Image",kw:"image photo picture \u56FE\u7247 \u7167\u7247 \u76F8\u518C \u5A92\u4F53 \u5546\u52A1",layers:[D(H(3,4.5,18,15,2),_),F(H(5,6.5,14,11,1.2),U),F($(8.4,9.6,1.5),le),F("M5.4 17.4L10 12.2L13.2 15.6L15.4 13.4L18.6 17.4Z",Q)]},{id:"sticker-magnifier",cat:B,zh:"\u653E\u5927\u955C",en:"Magnifier",kw:"search magnifier zoom \u653E\u5927\u955C \u641C\u7D22 \u67E5\u627E \u68C0\u7D22 \u5546\u52A1",layers:[D($(10.4,10.4,6),"#BFDCFB"),F($(10.4,10.4,4.1),U),T("M14.9 14.9L20.4 20.4",E,2.3)]},{id:"sticker-target",cat:B,zh:"\u9776\u5FC3",en:"Target",kw:"target goal aim \u9776\u5FC3 \u76EE\u6807 \u9776 \u547D\u4E2D \u5546\u52A1",layers:[D($(12,12,8.6),ot),F($(12,12,5.6),ee),F($(12,12,2.6),ot)]},{id:"sticker-dollar",cat:B,zh:"\u91D1\u5E01",en:"Dollar",kw:"dollar money coin \u91D1\u5E01 \u7F8E\u5143 \u94B1 \u91D1\u989D \u5546\u52A1 \u8D22\u52A1",layers:[D($(12,12,8.6),le),T($(12,12,6.3),"#D89A11",1.2),T("M12 7.4V16.6","#D89A11",1.5),T("M14.6 9.6C14 8.8 13.1 8.4 12 8.4C10.6 8.4 9.8 9.2 9.8 10.2C9.8 12 14.2 11.3 14.2 13.4C14.2 14.5 13.2 15.6 12 15.6C10.9 15.6 9.9 15.1 9.4 14.3","#D89A11",1.4)]},{id:"sticker-mic",cat:B,zh:"\u9EA6\u514B\u98CE",en:"Microphone",kw:"mic microphone voice \u9EA6\u514B\u98CE \u8BED\u97F3 \u5F55\u97F3 \u8BB2\u8BDD \u5546\u52A1",layers:[D(H(9,3.2,6,11,3),rt),T("M10.1 6.2H13.9",ee,1),T("M10.1 8.7H13.9",ee,1),T("M10.1 11.2H13.9",ee,1),T("M6.6 11.4C6.6 14.9 9 17.4 12 17.4C15 17.4 17.4 14.9 17.4 11.4",E,1.5),T("M12 17.4V20.6",E,1.5),T("M8.6 20.8H15.4",E,1.5)]},{id:"sticker-badge",cat:B,zh:"\u5DE5\u724C",en:"ID badge",kw:"badge id card staff \u5DE5\u724C \u8BC1\u4EF6 \u5458\u5DE5 \u540D\u7247 \u5546\u52A1",layers:[D(H(4,3.4,16,17.2,2),rt),F(H(9.6,2.4,4.8,2.4,.8),ee),F($(12,9.4,2.7),U),F("M7.6 17.4C7.6 14.9 9.6 13.6 12 13.6C14.4 13.6 16.4 14.9 16.4 17.4Z",U)]},{id:"sticker-shield",cat:B,zh:"\u8BA4\u8BC1",en:"Certified",kw:"certified shield verify \u8BA4\u8BC1 \u5B89\u5168 \u4FDD\u969C \u5408\u89C4 \u5546\u52A1",layers:[D("M12 3.2L19 6V12C19 16.2 16.1 19.4 12 20.8C7.9 19.4 5 16.2 5 12V6Z",Q),T("M9 12.1L11.3 14.4L15.3 9.8",ee,1.8)]},{id:"sticker-calendar",cat:B,zh:"\u65E5\u5386",en:"Calendar",kw:"calendar date schedule \u65E5\u5386 \u65E5\u7A0B \u65E5\u671F \u6392\u671F \u5546\u52A1",layers:[D(H(3.4,5,17.2,15.4,2),ee),D(cn(3.4,5,17.2,4.2,2),ot,1.5),T("M8 3.4V6.6",E,1.5),T("M16 3.4V6.6",E,1.5),...Ge([[8,13.4],[12,13.4],[16,13.4],[8,17],[12,17]],1,_)]},{id:"sticker-team",cat:B,zh:"\u56E2\u961F",en:"Team",kw:"team people group \u56E2\u961F \u6210\u5458 \u534F\u4F5C \u5C0F\u7EC4 \u5546\u52A1",layers:[D("M13.6 18.6C13.6 15.5 15.4 13.8 17.4 13.8C19.8 13.8 21.6 15.5 21.6 18.6Z",mi),D($(17.4,10.2,2.6),le),D("M2.4 18.6C2.4 15 5 13 8.4 13C11.8 13 14.4 15 14.4 18.6Z",_),D($(8.4,8.8,3.1),le)]},{id:"sticker-meeting",cat:B,zh:"\u89C6\u9891\u4F1A\u8BAE",en:"Video meeting",kw:"meeting video call conference \u4F1A\u8BAE \u89C6\u9891 \u901A\u8BDD \u8FDC\u7A0B \u5546\u52A1",layers:[D(H(3,4.4,18,12.2,1.6),_),F(H(4.6,6,14.8,9,1),U),F($(12,9,1.7),le),F("M8.4 15C8.4 12.9 10.1 11.8 12 11.8C13.9 11.8 15.6 12.9 15.6 15Z",le),T("M12 16.6V19.6",E,1.4),T("M8.6 19.8H15.4",E,1.4)]},{id:"sticker-chart-bar",cat:B,zh:"\u67F1\u72B6\u56FE",en:"Bar chart",kw:"bar chart column \u67F1\u72B6\u56FE \u7EDF\u8BA1 \u6570\u636E \u62A5\u8868 \u5546\u52A1",layers:[T("M4 4.4V19.6H19.6",E,1.5),D(H(6.2,11.6,2.6,7.4,.6),_),D(H(10.6,7.6,2.6,11.4,.6),Q),D(H(15,13,2.6,6,.6),le)]},{id:"sticker-chart-line",cat:B,zh:"\u6298\u7EBF\u56FE",en:"Line chart",kw:"line chart trend \u6298\u7EBF\u56FE \u8D8B\u52BF \u589E\u957F \u6570\u636E \u5546\u52A1",layers:[T("M4 4.4V19.6H19.6",E,1.5),T("M6.6 15.6L10.6 10.4L13.6 13.4L18 7.4",_,1.8),...Ge([[6.6,15.6],[10.6,10.4],[13.6,13.4],[18,7.4]],1.2,mi)]},{id:"sticker-server",cat:B,zh:"\u670D\u52A1\u5668",en:"Server",kw:"server rack host \u670D\u52A1\u5668 \u4E3B\u673A \u673A\u623F \u79D1\u6280 \u8FD0\u7EF4",layers:[D(H(4,3.8,16,6.4,1.4),_),D(H(4,13.8,16,6.4,1.4),_),F(ge(6.6,6,7,1.4),U),F(ge(6.6,16,7,1.4),U),F($(17.2,7,.9),Q),F($(17.2,17,.9),Q)]},{id:"sticker-network",cat:B,zh:"\u4EA4\u6362\u673A",en:"Network switch",kw:"switch network port \u4EA4\u6362\u673A \u7F51\u7EDC \u7AEF\u53E3 \u79D1\u6280 \u673A\u623F",layers:[D(H(3,4.6,18,6.8,1.4),rt),...Ge([[7,8],[10,8],[13,8],[16,8]],.85,U),T("M8.6 11.4V14.6",E,1.3),T("M15.4 11.4V14.6",E,1.3),D(H(6,14.6,5,3.4,.7),le,1.2),D(H(13,14.6,5,3.4,.7),le,1.2)]},{id:"sticker-chip",cat:B,zh:"\u82AF\u7247",en:"Chip",kw:"chip cpu processor \u82AF\u7247 \u5904\u7406\u5668 \u7B97\u529B \u79D1\u6280 \u786C\u4EF6",layers:[...bt(4,r=>T(`M${9+r*2} 3.4V6`,E,1.2)),...bt(4,r=>T(`M${9+r*2} 18V20.6`,E,1.2)),...bt(4,r=>T(`M3.4 ${9+r*2}H6`,E,1.2)),...bt(4,r=>T(`M18 ${9+r*2}H20.6`,E,1.2)),D(H(6,6,12,12,1.6),Q),T(H(9,9,6,6,.8),E,1.2)]},{id:"sticker-browser",cat:B,zh:"\u6D4F\u89C8\u5668",en:"Browser",kw:"browser web page window \u6D4F\u89C8\u5668 \u7F51\u9875 \u7A97\u53E3 \u79D1\u6280 \u524D\u7AEF",layers:[D(H(3,4.4,18,15.2,2),ee),D(cn(3,4.4,18,4,2),_,1.5),...Ge([[5.6,6.4],[7.6,6.4],[9.6,6.4]],.7,ee),F(ge(5.4,10.6,5.6,6.4),U),F(ge(12.6,10.6,6,2.6),U),F(ge(12.6,14.4,6,2.6),U)]},{id:"sticker-code",cat:B,zh:"\u4EE3\u7801",en:"Code",kw:"code coding dev \u4EE3\u7801 \u7F16\u7A0B \u5F00\u53D1 \u79D1\u6280 \u524D\u7AEF",layers:[D(H(3,4.4,18,15.2,2),ln),T("M9.6 9L6.4 12L9.6 15",Q,1.7),T("M14.4 9L17.6 12L14.4 15",Q,1.7),T("M13.2 8.6L10.8 15.4",le,1.6)]},{id:"sticker-terminal",cat:B,zh:"\u7EC8\u7AEF",en:"Terminal",kw:"terminal shell cli \u7EC8\u7AEF \u547D\u4EE4\u884C \u547D\u4EE4 \u79D1\u6280 \u8FD0\u7EF4",layers:[D(H(3,4.4,18,15.2,2),ln),T("M6.6 9.4L9.2 12L6.6 14.6",ee,1.7),F(ge(11.2,13.4,5,1.5),Q)]},{id:"sticker-router",cat:B,zh:"\u8DEF\u7531\u5668",en:"Router",kw:"router wifi gateway \u8DEF\u7531\u5668 \u7F51\u7EDC \u4E0A\u7F51 \u79D1\u6280 \u786C\u4EF6",layers:[T("M7 12V6.4",E,1.4),T("M12 12V4.8",E,1.4),T("M17 12V6.4",E,1.4),D(H(3,12,18,7.4,1.6),_),F($(7,15.7,.95),Q),F($(12,15.7,.95),le),F($(17,15.7,.95),Q)]},{id:"sticker-wifi",cat:B,zh:"\u65E0\u7EBF\u7F51\u7EDC",en:"Wi-Fi",kw:"wifi wireless signal \u65E0\u7EBF \u7F51\u7EDC \u4FE1\u53F7 wifi \u79D1\u6280",layers:[T("M3.4 9.4C8 4.9 16 4.9 20.6 9.4",_,1.8),T("M6.4 12.8C9.5 9.7 14.5 9.7 17.6 12.8",_,1.8),T("M9.4 16.1C10.8 14.7 13.2 14.7 14.6 16.1",_,1.8),F($(12,19.2,1.5),_)]},{id:"sticker-cloud",cat:B,zh:"\u4E91\u670D\u52A1",en:"Cloud",kw:"cloud saas server \u4E91 \u4E91\u670D\u52A1 \u5B58\u50A8 \u79D1\u6280 \u4E0A\u4E91",layers:[D("M7 18.6H16.6A3.9 3.9 0 0 0 17.1 10.9A5.6 5.6 0 0 0 6.6 9.6A4.3 4.3 0 0 0 7 18.6Z",_)]},{id:"sticker-globe",cat:B,zh:"\u5730\u7403",en:"Globe",kw:"globe world global \u5730\u7403 \u4E16\u754C \u5168\u7403 \u7F51\u7EDC \u79D1\u6280",layers:[D($(12,12,8.6),_),T("M3.4 12H20.6",U,1.3),T("M12 3.4C14.4 5.7 15.6 8.7 15.6 12C15.6 15.3 14.4 18.3 12 20.6C9.6 18.3 8.4 15.3 8.4 12C8.4 8.7 9.6 5.7 12 3.4Z",U,1.3)]},{id:"sticker-usb",cat:B,zh:"\u4F18\u76D8",en:"USB drive",kw:"usb disk drive \u4F18\u76D8 U\u76D8 \u5B58\u50A8 \u79D1\u6280 \u786C\u4EF6",layers:[T("M10.4 13V9.4",E,1.4),T("M13.6 13V9.4",E,1.4),D(H(9.4,3.6,5.2,6,1),Mt),...Ge([[11,5.6],[13,5.6]],.55,U),D(H(8,13,8,7.6,1.4),_),F(ge(10.4,15.2,3.2,3.2),U)]},{id:"sticker-tablet",cat:B,zh:"\u5E73\u677F",en:"Tablet",kw:"tablet pad device \u5E73\u677F \u89E6\u5C4F \u8BBE\u5907 \u79D1\u6280 \u79FB\u52A8",layers:[D(H(6,3,12,18,2),_),F(H(7.6,4.8,8.8,12,1),U),F($(12,18.6,.9),U)]},{id:"sticker-vr",cat:B,zh:"VR \u773C\u955C",en:"VR headset",kw:"vr headset glasses \u773C\u955C \u865A\u62DF\u73B0\u5B9E \u79D1\u6280 \u8BBE\u5907",layers:[D("M3 9.6C3 8.3 4 7.3 5.3 7.3H18.7C20 7.3 21 8.3 21 9.6V14.4C21 15.7 20 16.7 18.7 16.7H15.2C14.2 16.7 13.4 16.1 12.9 15.3L12 13.9L11.1 15.3C10.6 16.1 9.8 16.7 8.8 16.7H5.3C4 16.7 3 15.7 3 14.4Z",ln),F($(7.8,12,1.9),_),F($(16.2,12,1.9),_)]},{id:"sticker-watch",cat:B,zh:"\u667A\u80FD\u624B\u8868",en:"Smart watch",kw:"watch smartwatch wearable \u624B\u8868 \u667A\u80FD\u624B\u8868 \u7A7F\u6234 \u79D1\u6280",layers:[F(H(9,2.2,6,3.6,1.2),Mt),F(H(9,18.2,6,3.6,1.2),Mt),D(H(6.6,6,10.8,12,3),ot),F(H(8.2,7.6,7.6,8.8,2.2),U),F("M12 13.6C12 13.6 9.3 11.9 9.3 10.3C9.3 9.4 10 8.8 10.8 8.8C11.3 8.8 11.8 9.1 12 9.5C12.2 9.1 12.7 8.8 13.2 8.8C14 8.8 14.7 9.4 14.7 10.3C14.7 11.9 12 13.6 12 13.6Z",ot)]},{id:"sticker-headset",cat:B,zh:"\u8033\u673A\u5BA2\u670D",en:"Headset",kw:"headset support service \u8033\u673A \u5BA2\u670D \u901A\u8BDD \u652F\u6301 \u79D1\u6280",layers:[T("M4.6 13.2V11.8A7.4 7.4 0 0 1 19.4 11.8V13.2",E,1.7),D(H(3,12.6,3.6,6.2,1.2),_),D(H(17.4,12.6,3.6,6.2,1.2),_),T("M19.2 18.8C19.2 20.1 18 20.8 16.4 20.8H14.2",E,1.4)]},{id:"sticker-plug",cat:B,zh:"\u5145\u7535",en:"Charging",kw:"charging plug power \u5145\u7535 \u63D2\u5934 \u7535\u91CF \u7535\u6E90 \u79D1\u6280",layers:[T("M10 10.6V5.2",E,1.6),T("M14 10.6V5.2",E,1.6),D(H(7.6,10.6,8.8,7.8,1.6),Mt),T("M12 18.4V21.8",E,1.7)]}];var c=r=>({d:r,fill:"none",stroke:"ink",w:2}),yo=r=>({d:r,fill:"ink",stroke:"none"});var yi=[{id:"weather",labelKey:"iconCat.weather"},{id:"transport",labelKey:"iconCat.transport"},{id:"nature",labelKey:"iconCat.nature"},{id:"building",labelKey:"iconCat.building"},{id:"medical",labelKey:"iconCat.medical"},{id:"shopping",labelKey:"iconCat.shopping"},{id:"science",labelKey:"iconCat.science"},{id:"animal",labelKey:"iconCat.animal"},{id:"time",labelKey:"iconCat.time"},{id:"edit",labelKey:"iconCat.edit"},{id:"food",labelKey:"iconCat.food"},{id:"communication",labelKey:"iconCat.communication"}],Mi=[{id:"lc-sun",cat:"weather",zh:"\u592A\u9633",en:"Sun",kw:"sun \u592A\u9633 \u6674 \u65E5\u51FA \u9633\u5149",layers:[c("M8 12A4 4 0 1 0 16 12A4 4 0 1 0 8 12Z"),c("M12 2v2"),c("M12 20v2"),c("m4.93 4.93 1.41 1.41"),c("m17.66 17.66 1.41 1.41"),c("M2 12h2"),c("M20 12h2"),c("m6.34 17.66-1.41 1.41"),c("m19.07 4.93-1.41 1.41")]},{id:"lc-moon",cat:"weather",zh:"\u6708\u4EAE",en:"Moon",kw:"moon \u6708\u4EAE \u591C\u95F4 \u6708",layers:[c("M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z")]},{id:"lc-cloud",cat:"weather",zh:"\u4E91",en:"Cloud",kw:"cloud \u4E91 \u5929\u6C14",layers:[c("M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z")]},{id:"lc-cloud-sun",cat:"weather",zh:"\u591A\u4E91\u6674",en:"Cloud sun",kw:"cloud sun \u591A\u4E91 \u6674 \u5929\u6C14",layers:[c("M12 2v2"),c("m4.93 4.93 1.41 1.41"),c("M20 12h2"),c("m19.07 4.93-1.41 1.41"),c("M15.947 12.65a4 4 0 0 0-5.925-4.128"),c("M13 22H7a5 5 0 1 1 4.9-6H13a3 3 0 0 1 0 6Z")]},{id:"lc-cloud-moon",cat:"weather",zh:"\u591A\u4E91\u591C",en:"Cloud moon",kw:"cloud moon \u591A\u4E91 \u591C\u665A",layers:[c("M10.188 8.5A6 6 0 0 1 16 4a1 1 0 0 0 6 6 6 6 0 0 1-3 5.197"),c("M13 16a3 3 0 1 1 0 6H7a5 5 0 1 1 4.9-6Z")]},{id:"lc-cloud-rain",cat:"weather",zh:"\u96E8",en:"Cloud rain",kw:"rain \u96E8 \u4E0B\u96E8 \u5929\u6C14",layers:[c("M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"),c("M16 14v6"),c("M8 14v6"),c("M12 16v6")]},{id:"lc-cloud-rain-wind",cat:"weather",zh:"\u98CE\u96E8",en:"Cloud rain wind",kw:"rain wind \u98CE\u96E8 \u5929\u6C14",layers:[c("M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"),c("m9.2 22 3-7"),c("m9 13-3 7"),c("m17 13-3 7")]},{id:"lc-cloud-snow",cat:"weather",zh:"\u96EA",en:"Cloud snow",kw:"snow \u96EA \u4E0B\u96EA \u5929\u6C14",layers:[c("M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"),c("M8 15h.01"),c("M8 19h.01"),c("M12 17h.01"),c("M12 21h.01"),c("M16 15h.01"),c("M16 19h.01")]},{id:"lc-cloud-hail",cat:"weather",zh:"\u51B0\u96F9",en:"Cloud hail",kw:"hail \u51B0\u96F9 \u5929\u6C14",layers:[c("M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"),c("M16 14v2"),c("M8 14v2"),c("M16 20h.01"),c("M8 20h.01"),c("M12 16v2"),c("M12 22h.01")]},{id:"lc-cloud-lightning",cat:"weather",zh:"\u96F7\u9635\u96E8",en:"Cloud lightning",kw:"thunder \u96F7 \u95EA\u7535 \u5929\u6C14",layers:[c("M6 16.326A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 .5 8.973"),c("m13 12-3 5h4l-3 5")]},{id:"lc-cloud-fog",cat:"weather",zh:"\u96FE",en:"Cloud fog",kw:"fog \u96FE \u5929\u6C14",layers:[c("M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"),c("M16 17H7"),c("M17 21H9")]},{id:"lc-cloud-drizzle",cat:"weather",zh:"\u6BDB\u6BDB\u96E8",en:"Cloud drizzle",kw:"drizzle \u6BDB\u6BDB\u96E8 \u5929\u6C14",layers:[c("M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"),c("M8 19v1"),c("M8 14v1"),c("M16 19v1"),c("M16 14v1"),c("M12 21v1"),c("M12 16v1")]},{id:"lc-wind",cat:"weather",zh:"\u98CE",en:"Wind",kw:"wind \u98CE \u6C14\u6D41",layers:[c("M12.8 19.6A2 2 0 1 0 14 16H2"),c("M17.5 8a2.5 2.5 0 1 1 2 4H2"),c("M9.8 4.4A2 2 0 1 1 11 8H2")]},{id:"lc-wind-arrow-down",cat:"weather",zh:"\u4E0B\u65CB\u98CE",en:"Wind down",kw:"wind down \u98CE \u5411\u4E0B",layers:[c("M10 2v8"),c("M12.8 21.6A2 2 0 1 0 14 18H2"),c("M17.5 10a2.5 2.5 0 1 1 2 4H2"),c("m6 6 4 4 4-4")]},{id:"lc-zap",cat:"weather",zh:"\u95EA\u7535",en:"Zap",kw:"lightning \u95EA\u7535 \u7535 \u80FD\u91CF",layers:[c("M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z")]},{id:"lc-zap-off",cat:"weather",zh:"\u65E0\u7535",en:"Zap off",kw:"lightning off \u65E0\u7535 \u65AD\u7535",layers:[c("M10.513 4.856 13.12 2.17a.5.5 0 0 1 .86.46l-1.377 4.317"),c("M15.656 10H20a1 1 0 0 1 .78 1.63l-1.72 1.773"),c("M16.273 16.273 10.88 21.83a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14H4a1 1 0 0 1-.78-1.63l4.507-4.643"),c("m2 2 20 20")]},{id:"lc-umbrella",cat:"weather",zh:"\u96E8\u4F1E",en:"Umbrella",kw:"umbrella \u4F1E \u96E8",layers:[c("M22 12a10.06 10.06 1 0 0-20 0Z"),c("M12 12v8a2 2 0 0 0 4 0"),c("M12 2v1")]},{id:"lc-rainbow",cat:"weather",zh:"\u5F69\u8679",en:"Rainbow",kw:"rainbow \u5F69\u8679",layers:[c("M22 17a10 10 0 0 0-20 0"),c("M6 17a6 6 0 0 1 12 0"),c("M10 17a2 2 0 0 1 4 0")]},{id:"lc-snowflake",cat:"weather",zh:"\u96EA\u82B1",en:"Snowflake",kw:"snowflake \u96EA\u82B1 \u51AC\u5929",layers:[c("M2 12L22 12"),c("M12 2L12 22"),c("m20 16-4-4 4-4"),c("m4 8 4 4-4 4"),c("m16 4-4 4-4-4"),c("m8 20 4-4 4 4")]},{id:"lc-thermometer",cat:"weather",zh:"\u6E29\u5EA6\u8BA1",en:"Thermometer",kw:"thermometer \u6E29\u5EA6 \u4F53\u6E29",layers:[c("M14 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z")]},{id:"lc-thermometer-sun",cat:"weather",zh:"\u9AD8\u6E29",en:"Hot",kw:"hot \u9AD8\u6E29 \u70ED \u6E29\u5EA6",layers:[c("M12 9a4 4 0 0 0-2 7.5"),c("M12 3v2"),c("m6.6 18.4-1.4 1.4"),c("M20 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z"),c("M4 13H2"),c("M6.34 7.34 4.93 5.93")]},{id:"lc-thermometer-snowflake",cat:"weather",zh:"\u4F4E\u6E29",en:"Cold",kw:"cold \u4F4E\u6E29 \u51B7 \u6E29\u5EA6",layers:[c("M2 12h10"),c("M9 4v16"),c("m3 9 3 3-3 3"),c("M12 6 9 9 6 6"),c("m6 18 3-3 1.5 1.5"),c("M20 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z")]},{id:"lc-tornado",cat:"weather",zh:"\u9F99\u5377\u98CE",en:"Tornado",kw:"tornado \u9F99\u5377\u98CE \u98D3\u98CE",layers:[c("M21 4H3"),c("M18 8H6"),c("M19 12H9"),c("M16 16h-6"),c("M11 20H9")]},{id:"lc-droplet",cat:"weather",zh:"\u6C34\u6EF4",en:"Droplet",kw:"drop \u6C34\u6EF4 \u6DB2\u4F53",layers:[c("M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z")]},{id:"lc-waves",cat:"weather",zh:"\u6CE2\u6D6A",en:"Waves",kw:"wave \u6CE2\u6D6A \u6D77\u6D6A \u6C34",layers:[c("M2 6c.6.5 1.2 1 2.5 1C7 7 7 5 9.5 5c2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1"),c("M2 12c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1"),c("M2 18c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1")]},{id:"lc-sunrise",cat:"weather",zh:"\u65E5\u51FA",en:"Sunrise",kw:"sunrise \u65E5\u51FA \u6E05\u6668",layers:[c("M12 2v8"),c("m4.93 10.93 1.41 1.41"),c("M2 18h2"),c("M20 18h2"),c("m19.07 10.93-1.41 1.41"),c("M22 22H2"),c("m8 6 4-4 4 4"),c("M16 18a4 4 0 0 0-8 0")]},{id:"lc-sunset",cat:"weather",zh:"\u65E5\u843D",en:"Sunset",kw:"sunset \u65E5\u843D \u9EC4\u660F",layers:[c("M12 10V2"),c("m4.93 10.93 1.41 1.41"),c("M2 18h2"),c("M20 18h2"),c("m19.07 10.93-1.41 1.41"),c("M22 22H2"),c("m16 6-4 4-4-4"),c("M16 18a4 4 0 0 0-8 0")]},{id:"lc-sun-moon",cat:"weather",zh:"\u663C\u591C",en:"Sun moon",kw:"day night \u663C\u591C",layers:[c("M12 8a2.83 2.83 0 0 0 4 4 4 4 0 1 1-4-4"),c("M12 2v2"),c("M12 20v2"),c("m4.9 4.9 1.4 1.4"),c("m17.7 17.7 1.4 1.4"),c("M2 12h2"),c("M20 12h2"),c("m6.3 17.7-1.4 1.4"),c("m19.1 4.9-1.4 1.4")]},{id:"lc-sparkles",cat:"weather",zh:"\u95EA\u5149",en:"Sparkles",kw:"sparkle \u95EA\u5149 \u661F\u5149 \u7279\u6548",layers:[c("M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"),c("M20 3v4"),c("M22 5h-4"),c("M4 17v2"),c("M5 18H3")]},{id:"lc-car",cat:"transport",zh:"\u6C7D\u8F66",en:"Car",kw:"car \u6C7D\u8F66 \u8F66\u8F86 \u4EA4\u901A",layers:[c("M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2"),c("M5 17A2 2 0 1 0 9 17A2 2 0 1 0 5 17Z"),c("M9 17h6"),c("M15 17A2 2 0 1 0 19 17A2 2 0 1 0 15 17Z")]},{id:"lc-car-front",cat:"transport",zh:"\u5C0F\u6C7D\u8F66",en:"Car front",kw:"car \u6C7D\u8F66 \u6B63\u9762",layers:[c("m21 8-2 2-1.5-3.7A2 2 0 0 0 15.646 5H8.4a2 2 0 0 0-1.903 1.257L5 10 3 8"),c("M7 14h.01"),c("M17 14h.01"),c("M5 10H19A2 2 0 0 1 21 12V16A2 2 0 0 1 19 18H5A2 2 0 0 1 3 16V12A2 2 0 0 1 5 10Z"),c("M5 18v2"),c("M19 18v2")]},{id:"lc-bus",cat:"transport",zh:"\u516C\u4EA4\u8F66",en:"Bus",kw:"bus \u516C\u4EA4 \u4EA4\u901A",layers:[c("M8 6v6"),c("M15 6v6"),c("M2 12h19.6"),c("M18 18h3s.5-1.7.8-2.8c.1-.4.2-.8.2-1.2 0-.4-.1-.8-.2-1.2l-1.4-5C20.1 6.8 19.1 6 18 6H4a2 2 0 0 0-2 2v10h3"),c("M5 18A2 2 0 1 0 9 18A2 2 0 1 0 5 18Z"),c("M9 18h5"),c("M14 18A2 2 0 1 0 18 18A2 2 0 1 0 14 18Z")]},{id:"lc-bike",cat:"transport",zh:"\u81EA\u884C\u8F66",en:"Bike",kw:"bike \u81EA\u884C\u8F66 \u5355\u8F66 \u4EA4\u901A",layers:[c("M15 17.5A3.5 3.5 0 1 0 22 17.5A3.5 3.5 0 1 0 15 17.5Z"),c("M2 17.5A3.5 3.5 0 1 0 9 17.5A3.5 3.5 0 1 0 2 17.5Z"),c("M14 5A1 1 0 1 0 16 5A1 1 0 1 0 14 5Z"),c("M12 17.5V14l-3-3 4-3 2 3h2")]},{id:"lc-truck",cat:"transport",zh:"\u5361\u8F66",en:"Truck",kw:"truck \u5361\u8F66 \u8D27\u8FD0 \u4EA4\u901A",layers:[c("M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2"),c("M15 18H9"),c("M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14"),c("M15 18A2 2 0 1 0 19 18A2 2 0 1 0 15 18Z"),c("M5 18A2 2 0 1 0 9 18A2 2 0 1 0 5 18Z")]},{id:"lc-plane",cat:"transport",zh:"\u98DE\u673A",en:"Plane",kw:"plane \u98DE\u673A \u822A\u73ED \u4EA4\u901A",layers:[c("M17.8 19.2 16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z")]},{id:"lc-plane-takeoff",cat:"transport",zh:"\u8D77\u98DE",en:"Plane takeoff",kw:"takeoff \u8D77\u98DE \u822A\u73ED",layers:[c("M2 22h20"),c("M6.36 17.4 4 17l-2-4 1.1-.55a2 2 0 0 1 1.8 0l.17.1a2 2 0 0 0 1.8 0L8 12 5 6l.9-.45a2 2 0 0 1 2.09.2l4.02 3a2 2 0 0 0 2.1.2l4.19-2.06a2.41 2.41 0 0 1 1.73-.17L21 7a1.4 1.4 0 0 1 .87 1.99l-.38.76c-.23.46-.6.84-1.07 1.08L7.58 17.2a2 2 0 0 1-1.22.18Z")]},{id:"lc-ship",cat:"transport",zh:"\u8F6E\u8239",en:"Ship",kw:"ship \u8239 \u8F6E\u8239 \u4EA4\u901A",layers:[c("M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1 .6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1"),c("M19.38 20A11.6 11.6 0 0 0 21 14l-9-4-9 4c0 2.9.94 5.34 2.81 7.76"),c("M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6"),c("M12 10v4"),c("M12 2v3")]},{id:"lc-sailboat",cat:"transport",zh:"\u5E06\u8239",en:"Sailboat",kw:"sailboat \u5E06\u8239 \u8239",layers:[c("M22 18H2a4 4 0 0 0 4 4h12a4 4 0 0 0 4-4Z"),c("M21 14 10 2 3 14h18Z"),c("M10 2v16")]},{id:"lc-rocket",cat:"transport",zh:"\u706B\u7BAD",en:"Rocket",kw:"rocket \u706B\u7BAD \u53D1\u5C04 \u79D1\u6280",layers:[c("M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z"),c("m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z"),c("M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0"),c("M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5")]},{id:"lc-train-front",cat:"transport",zh:"\u706B\u8F66",en:"Train",kw:"train \u706B\u8F66 \u94C1\u8DEF \u4EA4\u901A",layers:[c("M8 3.1V7a4 4 0 0 0 8 0V3.1"),c("m9 15-1-1"),c("m15 15 1-1"),c("M9 19c-2.8 0-5-2.2-5-5v-4a8 8 0 0 1 16 0v4c0 2.8-2.2 5-5 5Z"),c("m8 19-2 3"),c("m16 19 2 3")]},{id:"lc-train-track",cat:"transport",zh:"\u94C1\u8F68",en:"Train track",kw:"rail \u94C1\u8F68 \u94C1\u8DEF",layers:[c("M2 17 17 2"),c("m2 14 8 8"),c("m5 11 8 8"),c("m8 8 8 8"),c("m11 5 8 8"),c("m14 2 8 8"),c("M7 22 22 7")]},{id:"lc-traffic-cone",cat:"transport",zh:"\u9525\u6876",en:"Traffic cone",kw:"cone \u8DEF\u969C \u65BD\u5DE5",layers:[c("M9.3 6.2a4.55 4.55 0 0 0 5.4 0"),c("M7.9 10.7c.9.8 2.4 1.3 4.1 1.3s3.2-.5 4.1-1.3"),c("M13.9 3.5a1.93 1.93 0 0 0-3.8-.1l-3 10c-.1.2-.1.4-.1.6 0 1.7 2.2 3 5 3s5-1.3 5-3c0-.2 0-.4-.1-.5Z"),c("m7.5 12.2-4.7 2.7c-.5.3-.8.7-.8 1.1s.3.8.8 1.1l7.6 4.5c.9.5 2.1.5 3 0l7.6-4.5c.7-.3 1-.7 1-1.1s-.3-.8-.8-1.1l-4.7-2.8")]},{id:"lc-fuel",cat:"transport",zh:"\u52A0\u6CB9",en:"Fuel",kw:"fuel \u6CB9 \u52A0\u6CB9\u7AD9 \u6C7D\u6CB9",layers:[c("M3 22L15 22"),c("M4 9L14 9"),c("M14 22V4a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v18"),c("M14 13h2a2 2 0 0 1 2 2v2a2 2 0 0 0 2 2a2 2 0 0 0 2-2V9.83a2 2 0 0 0-.59-1.42L18 5")]},{id:"lc-map-pin",cat:"transport",zh:"\u5B9A\u4F4D\u9488",en:"Map pin",kw:"pin \u5B9A\u4F4D \u5730\u70B9 \u5730\u56FE",layers:[c("M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"),c("M9 10A3 3 0 1 0 15 10A3 3 0 1 0 9 10Z")]},{id:"lc-navigation",cat:"transport",zh:"\u5BFC\u822A",en:"Navigation",kw:"navigation \u5BFC\u822A \u65B9\u5411",layers:[c("M3 11L22 2L13 21L11 13L3 11Z")]},{id:"lc-compass",cat:"transport",zh:"\u6307\u5357\u9488",en:"Compass",kw:"compass \u6307\u5357\u9488 \u65B9\u5411",layers:[c("m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z"),c("M2 12A10 10 0 1 0 22 12A10 10 0 1 0 2 12Z")]},{id:"lc-route",cat:"transport",zh:"\u8DEF\u7EBF",en:"Route",kw:"route \u8DEF\u7EBF \u8DEF\u5F84 \u5BFC\u822A",layers:[c("M3 19A3 3 0 1 0 9 19A3 3 0 1 0 3 19Z"),c("M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15"),c("M15 5A3 3 0 1 0 21 5A3 3 0 1 0 15 5Z")]},{id:"lc-parking-meter",cat:"transport",zh:"\u505C\u8F66",en:"Parking",kw:"parking \u505C\u8F66 \u8F66\u4F4D",layers:[c("M11 15h2"),c("M12 12v3"),c("M12 19v3"),c("M15.282 19a1 1 0 0 0 .948-.68l2.37-6.988a7 7 0 1 0-13.2 0l2.37 6.988a1 1 0 0 0 .948.68z"),c("M9 9a3 3 0 1 1 6 0")]},{id:"lc-locate-fixed",cat:"transport",zh:"\u5B9A\u4F4D",en:"Locate",kw:"locate \u5B9A\u4F4D \u4F4D\u7F6E",layers:[c("M2 12L5 12"),c("M19 12L22 12"),c("M12 2L12 5"),c("M12 19L12 22"),c("M5 12A7 7 0 1 0 19 12A7 7 0 1 0 5 12Z"),c("M9 12A3 3 0 1 0 15 12A3 3 0 1 0 9 12Z")]},{id:"lc-tree-pine",cat:"nature",zh:"\u677E\u6811",en:"Pine",kw:"pine \u677E\u6811 \u6811 \u81EA\u7136",layers:[c("m17 14 3 3.3a1 1 0 0 1-.7 1.7H4.7a1 1 0 0 1-.7-1.7L7 14h-.3a1 1 0 0 1-.7-1.7L9 9h-.2A1 1 0 0 1 8 7.3L12 3l4 4.3a1 1 0 0 1-.8 1.7H15l3 3.3a1 1 0 0 1-.7 1.7H17Z"),c("M12 22v-3")]},{id:"lc-tree-deciduous",cat:"nature",zh:"\u9614\u53F6\u6811",en:"Tree",kw:"tree \u6811 \u81EA\u7136",layers:[c("M8 19a4 4 0 0 1-2.24-7.32A3.5 3.5 0 0 1 9 6.03V6a3 3 0 1 1 6 0v.04a3.5 3.5 0 0 1 3.24 5.65A4 4 0 0 1 16 19Z"),c("M12 19v3")]},{id:"lc-tree-palm",cat:"nature",zh:"\u68D5\u6988\u6811",en:"Palm",kw:"palm \u68D5\u6988 \u6811 \u70ED\u5E26",layers:[c("M13 8c0-2.76-2.46-5-5.5-5S2 5.24 2 8h2l1-1 1 1h4"),c("M13 7.14A5.82 5.82 0 0 1 16.5 6c3.04 0 5.5 2.24 5.5 5h-3l-1-1-1 1h-3"),c("M5.89 9.71c-2.15 2.15-2.3 5.47-.35 7.43l4.24-4.25.7-.7.71-.71 2.12-2.12c-1.95-1.96-5.27-1.8-7.42.35"),c("M11 15.5c.5 2.5-.17 4.5-1 6.5h4c2-5.5-.5-12-1-14")]},{id:"lc-trees",cat:"nature",zh:"\u6811\u6797",en:"Trees",kw:"trees \u6811\u6797 \u81EA\u7136",layers:[c("M10 10v.2A3 3 0 0 1 8.9 16H5a3 3 0 0 1-1-5.8V10a3 3 0 0 1 6 0Z"),c("M7 16v6"),c("M13 19v3"),c("M12 19h8.3a1 1 0 0 0 .7-1.7L18 14h.3a1 1 0 0 0 .7-1.7L16 9h.2a1 1 0 0 0 .8-1.7L13 3l-1.4 1.5")]},{id:"lc-flower",cat:"nature",zh:"\u82B1",en:"Flower",kw:"flower \u82B1 \u690D\u7269",layers:[c("M9 12A3 3 0 1 0 15 12A3 3 0 1 0 9 12Z"),c("M12 16.5A4.5 4.5 0 1 1 7.5 12 4.5 4.5 0 1 1 12 7.5a4.5 4.5 0 1 1 4.5 4.5 4.5 4.5 0 1 1-4.5 4.5"),c("M12 7.5V9"),c("M7.5 12H9"),c("M16.5 12H15"),c("M12 16.5V15"),c("m8 8 1.88 1.88"),c("M14.12 9.88 16 8"),c("m8 16 1.88-1.88"),c("M14.12 14.12 16 16")]},{id:"lc-flower-2",cat:"nature",zh:"\u5C0F\u82B1",en:"Flower 2",kw:"flower \u82B1 \u690D\u7269",layers:[c("M12 5a3 3 0 1 1 3 3m-3-3a3 3 0 1 0-3 3m3-3v1M9 8a3 3 0 1 0 3 3M9 8h1m5 0a3 3 0 1 1-3 3m3-3h-1m-2 3v-1"),c("M10 8A2 2 0 1 0 14 8A2 2 0 1 0 10 8Z"),c("M12 10v12"),c("M12 22c4.2 0 7-1.667 7-5-4.2 0-7 1.667-7 5Z"),c("M12 22c-4.2 0-7-1.667-7-5 4.2 0 7 1.667 7 5Z")]},{id:"lc-leaf",cat:"nature",zh:"\u53F6\u5B50",en:"Leaf",kw:"leaf \u53F6 \u53F6\u5B50 \u690D\u7269",layers:[c("M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z"),c("M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12")]},{id:"lc-leafy-green",cat:"nature",zh:"\u7EFF\u53F6",en:"Leafy",kw:"leaf green \u7EFF\u53F6 \u852C\u83DC",layers:[c("M2 22c1.25-.987 2.27-1.975 3.9-2.2a5.56 5.56 0 0 1 3.8 1.5 4 4 0 0 0 6.187-2.353 3.5 3.5 0 0 0 3.69-5.116A3.5 3.5 0 0 0 20.95 8 3.5 3.5 0 1 0 16 3.05a3.5 3.5 0 0 0-5.831 1.373 3.5 3.5 0 0 0-5.116 3.69 4 4 0 0 0-2.348 6.155C3.499 15.42 4.409 16.712 4.2 18.1 3.926 19.743 3.014 20.732 2 22"),c("M2 22 17 7")]},{id:"lc-mountain",cat:"nature",zh:"\u5C71",en:"Mountain",kw:"mountain \u5C71 \u5C71\u5CF0",layers:[c("m8 3 4 8 5-5 5 15H2L8 3z")]},{id:"lc-mountain-snow",cat:"nature",zh:"\u96EA\u5C71",en:"Snow mountain",kw:"snow mountain \u96EA\u5C71",layers:[c("m8 3 4 8 5-5 5 15H2L8 3z"),c("M4.14 15.08c2.62-1.57 5.24-1.43 7.86.42 2.74 1.94 5.49 2 8.23.19")]},{id:"lc-flame",cat:"nature",zh:"\u706B\u7130",en:"Flame",kw:"flame \u706B \u706B\u7130 \u71C3\u70E7",layers:[c("M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z")]},{id:"lc-flame-kindling",cat:"nature",zh:"\u70B9\u71C3",en:"Kindling",kw:"fire \u70B9\u71C3 \u706B",layers:[c("M12 2c1 3 2.5 3.5 3.5 4.5A5 5 0 0 1 17 10a5 5 0 1 1-10 0c0-.3 0-.6.1-.9a2 2 0 1 0 3.3-2C8 4.5 11 2 12 2Z"),c("m5 22 14-4"),c("m5 18 14 4")]},{id:"lc-sprout",cat:"nature",zh:"\u5AE9\u82BD",en:"Sprout",kw:"sprout \u5AE9\u82BD \u53D1\u82BD \u690D\u7269",layers:[c("M7 20h10"),c("M10 20c5.5-2.5.8-6.4 3-10"),c("M9.5 9.4c1.1.8 1.8 2.2 2.3 3.7-2 .4-3.5.4-4.8-.3-1.2-.6-2.3-1.9-3-4.2 2.8-.5 4.4 0 5.5.8z"),c("M14.1 6a7 7 0 0 0-1.1 4c1.9-.1 3.3-.6 4.3-1.4 1-1 1.6-2.3 1.7-4.6-2.7.1-4 1-4.9 2z")]},{id:"lc-shell",cat:"nature",zh:"\u8D1D\u58F3",en:"Shell",kw:"shell \u8D1D\u58F3 \u6D77",layers:[c("M14 11a2 2 0 1 1-4 0 4 4 0 0 1 8 0 6 6 0 0 1-12 0 8 8 0 0 1 16 0 10 10 0 1 1-20 0 11.93 11.93 0 0 1 2.42-7.22 2 2 0 1 1 3.16 2.44")]},{id:"lc-bird",cat:"nature",zh:"\u9E1F",en:"Bird",kw:"bird \u9E1F \u52A8\u7269",layers:[c("M16 7h.01"),c("M3.4 18H12a8 8 0 0 0 8-8V7a4 4 0 0 0-7.28-2.3L2 20"),c("m20 7 2 .5-2 .5"),c("M10 18v3"),c("M14 17.75V21"),c("M7 18a6 6 0 0 0 3.84-10.61")]},{id:"lc-fish",cat:"nature",zh:"\u9C7C",en:"Fish",kw:"fish \u9C7C \u52A8\u7269",layers:[c("M6.5 12c.94-3.46 4.94-6 8.5-6 3.56 0 6.06 2.54 7 6-.94 3.47-3.44 6-7 6s-7.56-2.53-8.5-6Z"),c("M18 12v.5"),c("M16 17.93a9.77 9.77 0 0 1 0-11.86"),c("M7 10.67C7 8 5.58 5.97 2.73 5.5c-1 1.5-1 5 .23 6.5-1.24 1.5-1.24 5-.23 6.5C5.58 18.03 7 16 7 13.33"),c("M10.46 7.26C10.2 5.88 9.17 4.24 8 3h5.8a2 2 0 0 1 1.98 1.67l.23 1.4"),c("m16.01 17.93-.23 1.4A2 2 0 0 1 13.8 21H9.5a5.96 5.96 0 0 0 1.49-3.98")]},{id:"lc-bug",cat:"nature",zh:"\u866B\u5B50",en:"Bug",kw:"bug \u866B \u9519\u8BEF \u7A0B\u5E8F",layers:[c("m8 2 1.88 1.88"),c("M14.12 3.88 16 2"),c("M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"),c("M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"),c("M12 20v-9"),c("M6.53 9C4.6 8.8 3 7.1 3 5"),c("M6 13H2"),c("M3 21c0-2.1 1.7-3.9 3.8-4"),c("M20.97 5c0 2.1-1.6 3.8-3.5 4"),c("M22 13h-4"),c("M17.2 17c2.1.1 3.8 1.9 3.8 4")]},{id:"lc-building",cat:"building",zh:"\u5927\u697C",en:"Building",kw:"building \u5EFA\u7B51 \u5927\u697C \u529E\u516C",layers:[c("M6 2H18A2 2 0 0 1 20 4V20A2 2 0 0 1 18 22H6A2 2 0 0 1 4 20V4A2 2 0 0 1 6 2Z"),c("M9 22v-4h6v4"),c("M8 6h.01"),c("M16 6h.01"),c("M12 6h.01"),c("M12 10h.01"),c("M12 14h.01"),c("M16 10h.01"),c("M16 14h.01"),c("M8 10h.01"),c("M8 14h.01")]},{id:"lc-building-2",cat:"building",zh:"\u5199\u5B57\u697C",en:"Building 2",kw:"building \u5199\u5B57\u697C \u529E\u516C",layers:[c("M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z"),c("M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2"),c("M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2"),c("M10 6h4"),c("M10 10h4"),c("M10 14h4"),c("M10 18h4")]},{id:"lc-house",cat:"building",zh:"\u623F\u5B50",en:"House",kw:"house \u5BB6 \u623F\u5B50 \u4F4F\u5B85",layers:[c("M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8"),c("M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z")]},{id:"lc-store",cat:"building",zh:"\u5546\u5E97",en:"Store",kw:"store \u5546\u5E97 \u5E97\u94FA \u96F6\u552E",layers:[c("m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7"),c("M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8"),c("M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4"),c("M2 7h20"),c("M22 7v3a2 2 0 0 1-2 2a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 16 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 12 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 8 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 4 12a2 2 0 0 1-2-2V7")]},{id:"lc-factory",cat:"building",zh:"\u5DE5\u5382",en:"Factory",kw:"factory \u5DE5\u5382 \u751F\u4EA7",layers:[c("M2 20a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8l-7 5V8l-7 5V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z"),c("M17 18h1"),c("M12 18h1"),c("M7 18h1")]},{id:"lc-school",cat:"building",zh:"\u5B66\u6821",en:"School",kw:"school \u5B66\u6821 \u6559\u80B2",layers:[c("M14 22v-4a2 2 0 1 0-4 0v4"),c("m18 10 3.447 1.724a1 1 0 0 1 .553.894V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-7.382a1 1 0 0 1 .553-.894L6 10"),c("M18 5v17"),c("m4 6 7.106-3.553a2 2 0 0 1 1.788 0L20 6"),c("M6 5v17"),c("M10 9A2 2 0 1 0 14 9A2 2 0 1 0 10 9Z")]},{id:"lc-hospital",cat:"building",zh:"\u533B\u9662",en:"Hospital",kw:"hospital \u533B\u9662 \u533B\u7597",layers:[c("M12 6v4"),c("M14 14h-4"),c("M14 18h-4"),c("M14 8h-4"),c("M18 12h2a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-9a2 2 0 0 1 2-2h2"),c("M18 22V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v18")]},{id:"lc-landmark",cat:"building",zh:"\u5730\u6807",en:"Landmark",kw:"landmark \u5730\u6807 \u94F6\u884C \u7EAA\u5FF5\u7891",layers:[c("M3 22L21 22"),c("M6 18L6 11"),c("M10 18L10 11"),c("M14 18L14 11"),c("M18 18L18 11"),c("M12 2L20 7L4 7Z")]},{id:"lc-library",cat:"building",zh:"\u56FE\u4E66\u9986",en:"Library",kw:"library \u56FE\u4E66\u9986 \u4E66\u7C4D",layers:[c("m16 6 4 14"),c("M12 6v14"),c("M8 8v12"),c("M4 4v16")]},{id:"lc-hotel",cat:"building",zh:"\u9152\u5E97",en:"Hotel",kw:"hotel \u9152\u5E97 \u4F4F\u5BBF",layers:[c("M10 22v-6.57"),c("M12 11h.01"),c("M12 7h.01"),c("M14 15.43V22"),c("M15 16a5 5 0 0 0-6 0"),c("M16 11h.01"),c("M16 7h.01"),c("M8 11h.01"),c("M8 7h.01"),c("M6 2H18A2 2 0 0 1 20 4V20A2 2 0 0 1 18 22H6A2 2 0 0 1 4 20V4A2 2 0 0 1 6 2Z")]},{id:"lc-warehouse",cat:"building",zh:"\u4ED3\u5E93",en:"Warehouse",kw:"warehouse \u4ED3\u5E93 \u5B58\u50A8",layers:[c("M22 8.35V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8.35A2 2 0 0 1 3.26 6.5l8-3.2a2 2 0 0 1 1.48 0l8 3.2A2 2 0 0 1 22 8.35Z"),c("M6 18h12"),c("M6 14h12"),c("M6 10H18V22H6Z")]},{id:"lc-castle",cat:"building",zh:"\u57CE\u5821",en:"Castle",kw:"castle \u57CE\u5821 \u5BAB\u6BBF",layers:[c("M22 20v-9H2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2Z"),c("M18 11V4H6v7"),c("M15 22v-4a3 3 0 0 0-3-3a3 3 0 0 0-3 3v4"),c("M22 11V9"),c("M2 11V9"),c("M6 4V2"),c("M18 4V2"),c("M10 4V2"),c("M14 4V2")]},{id:"lc-church",cat:"building",zh:"\u6559\u5802",en:"Church",kw:"church \u6559\u5802 \u5B97\u6559",layers:[c("M10 9h4"),c("M12 7v5"),c("M14 22v-4a2 2 0 0 0-4 0v4"),c("M18 22V5.618a1 1 0 0 0-.553-.894l-4.553-2.277a2 2 0 0 0-1.788 0L6.553 4.724A1 1 0 0 0 6 5.618V22"),c("m18 7 3.447 1.724a1 1 0 0 1 .553.894V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9.618a1 1 0 0 1 .553-.894L6 7")]},{id:"lc-tent",cat:"building",zh:"\u5E10\u7BF7",en:"Tent",kw:"tent \u5E10\u7BF7 \u9732\u8425",layers:[c("M3.5 21 14 3"),c("M20.5 21 10 3"),c("M15.5 21 12 15l-3.5 6"),c("M2 21h20")]},{id:"lc-door-open",cat:"building",zh:"\u95E8",en:"Door",kw:"door \u95E8 \u5165\u53E3",layers:[c("M13 4h3a2 2 0 0 1 2 2v14"),c("M2 20h3"),c("M13 20h9"),c("M10 12v.01"),c("M13 4.562v16.157a1 1 0 0 1-1.242.97L5 20V5.562a2 2 0 0 1 1.515-1.94l4-1A2 2 0 0 1 13 4.561Z")]},{id:"lc-heart-pulse",cat:"medical",zh:"\u5FC3\u7387",en:"Heart pulse",kw:"heart pulse \u5FC3\u7387 \u5FC3\u8DF3 \u533B\u7597",layers:[c("M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z"),c("M3.22 12H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27")]},{id:"lc-heart-handshake",cat:"medical",zh:"\u7231\u5FC3",en:"Heart handshake",kw:"heart \u7231\u5FC3 \u533B\u7597 \u5173\u6000",layers:[c("M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z"),c("M12 5 9.04 7.96a2.17 2.17 0 0 0 0 3.08c.82.82 2.13.85 3 .07l2.07-1.9a2.82 2.82 0 0 1 3.79 0l2.96 2.66"),c("m18 15-2-2"),c("m15 18-2-2")]},{id:"lc-stethoscope",cat:"medical",zh:"\u542C\u8BCA\u5668",en:"Stethoscope",kw:"stethoscope \u542C\u8BCA\u5668 \u533B\u751F",layers:[c("M11 2v2"),c("M5 2v2"),c("M5 3H4a2 2 0 0 0-2 2v4a6 6 0 0 0 12 0V5a2 2 0 0 0-2-2h-1"),c("M8 15a6 6 0 0 0 12 0v-3"),c("M18 10A2 2 0 1 0 22 10A2 2 0 1 0 18 10Z")]},{id:"lc-pill",cat:"medical",zh:"\u836F\u4E38",en:"Pill",kw:"pill \u836F \u836F\u4E38 \u533B\u7597",layers:[c("m10.5 20.5 10-10a4.95 4.95 0 1 0-7-7l-10 10a4.95 4.95 0 1 0 7 7Z"),c("m8.5 8.5 7 7")]},{id:"lc-pill-bottle",cat:"medical",zh:"\u836F\u74F6",en:"Pill bottle",kw:"pill bottle \u836F\u74F6 \u533B\u7597",layers:[c("M18 11h-4a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h4"),c("M6 7v13a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7"),c("M5 2H19A1 1 0 0 1 20 3V6A1 1 0 0 1 19 7H5A1 1 0 0 1 4 6V3A1 1 0 0 1 5 2Z")]},{id:"lc-activity",cat:"medical",zh:"\u6D3B\u52A8",en:"Activity",kw:"activity \u6D3B\u52A8 \u5FC3\u7387 \u6CE2\u52A8",layers:[c("M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2")]},{id:"lc-syringe",cat:"medical",zh:"\u6CE8\u5C04\u5668",en:"Syringe",kw:"syringe \u9488 \u6CE8\u5C04 \u75AB\u82D7",layers:[c("m18 2 4 4"),c("m17 7 3-3"),c("M19 9 8.7 19.3c-1 1-2.5 1-3.4 0l-.6-.6c-1-1-1-2.5 0-3.4L15 5"),c("m9 11 4 4"),c("m5 19-3 3"),c("m14 4 6 6")]},{id:"lc-microscope",cat:"medical",zh:"\u663E\u5FAE\u955C",en:"Microscope",kw:"microscope \u663E\u5FAE\u955C \u5B9E\u9A8C",layers:[c("M6 18h8"),c("M3 22h18"),c("M14 22a7 7 0 1 0 0-14h-1"),c("M9 14h2"),c("M9 12a2 2 0 0 1-2-2V6h6v4a2 2 0 0 1-2 2Z"),c("M12 6V3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v3")]},{id:"lc-dna",cat:"medical",zh:"DNA",en:"DNA",kw:"dna \u57FA\u56E0 \u751F\u7269 \u79D1\u5B66",layers:[c("m10 16 1.5 1.5"),c("m14 8-1.5-1.5"),c("M15 2c-1.798 1.998-2.518 3.995-2.807 5.993"),c("m16.5 10.5 1 1"),c("m17 6-2.891-2.891"),c("M2 15c6.667-6 13.333 0 20-6"),c("m20 9 .891.891"),c("M3.109 14.109 4 15"),c("m6.5 12.5 1 1"),c("m7 18 2.891 2.891"),c("M9 22c1.798-1.998 2.518-3.995 2.807-5.993")]},{id:"lc-brain",cat:"medical",zh:"\u5927\u8111",en:"Brain",kw:"brain \u8111 \u5927\u8111 \u601D\u8003",layers:[c("M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"),c("M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z"),c("M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4"),c("M17.599 6.5a3 3 0 0 0 .399-1.375"),c("M6.003 5.125A3 3 0 0 0 6.401 6.5"),c("M3.477 10.896a4 4 0 0 1 .585-.396"),c("M19.938 10.5a4 4 0 0 1 .585.396"),c("M6 18a4 4 0 0 1-1.967-.516"),c("M19.967 17.484A4 4 0 0 1 18 18")]},{id:"lc-bone",cat:"medical",zh:"\u9AA8\u5934",en:"Bone",kw:"bone \u9AA8\u5934 \u9AA8\u79D1",layers:[c("M17 10c.7-.7 1.69 0 2.5 0a2.5 2.5 0 1 0 0-5 .5.5 0 0 1-.5-.5 2.5 2.5 0 1 0-5 0c0 .81.7 1.8 0 2.5l-7 7c-.7.7-1.69 0-2.5 0a2.5 2.5 0 0 0 0 5c.28 0 .5.22.5.5a2.5 2.5 0 1 0 5 0c0-.81-.7-1.8 0-2.5Z")]},{id:"lc-shield-plus",cat:"medical",zh:"\u533B\u7597\u76FE",en:"Medical shield",kw:"shield plus \u533B\u7597 \u9632\u62A4",layers:[c("M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"),c("M9 12h6"),c("M12 9v6")]},{id:"lc-bandage",cat:"medical",zh:"\u7EF7\u5E26",en:"Bandage",kw:"bandage \u7EF7\u5E26 \u4F24\u53E3",layers:[c("M10 10.01h.01"),c("M10 14.01h.01"),c("M14 10.01h.01"),c("M14 14.01h.01"),c("M18 6v11.5"),c("M6 6v12"),c("M4 6H20A2 2 0 0 1 22 8V16A2 2 0 0 1 20 18H4A2 2 0 0 1 2 16V8A2 2 0 0 1 4 6Z")]},{id:"lc-cross",cat:"medical",zh:"\u5341\u5B57",en:"Cross",kw:"cross \u5341\u5B57 \u533B\u7597 \u6025\u6551",layers:[c("M4 9a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h4a1 1 0 0 1 1 1v4a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-4a1 1 0 0 1 1-1h4a2 2 0 0 0 2-2v-2a2 2 0 0 0-2-2h-4a1 1 0 0 1-1-1V4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4a1 1 0 0 1-1 1z")]},{id:"lc-shopping-cart",cat:"shopping",zh:"\u8D2D\u7269\u8F66",en:"Cart",kw:"cart \u8D2D\u7269\u8F66 \u8D2D\u7269",layers:[c("M7 21A1 1 0 1 0 9 21A1 1 0 1 0 7 21Z"),c("M18 21A1 1 0 1 0 20 21A1 1 0 1 0 18 21Z"),c("M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12")]},{id:"lc-shopping-bag",cat:"shopping",zh:"\u8D2D\u7269\u888B",en:"Bag",kw:"bag \u8D2D\u7269\u888B \u5546\u5E97",layers:[c("M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z"),c("M3 6h18"),c("M16 10a4 4 0 0 1-8 0")]},{id:"lc-shopping-basket",cat:"shopping",zh:"\u8D2D\u7269\u7BEE",en:"Basket",kw:"basket \u8D2D\u7269\u7BEE \u8D85\u5E02",layers:[c("m15 11-1 9"),c("m19 11-4-7"),c("M2 11h20"),c("m3.5 11 1.6 7.4a2 2 0 0 0 2 1.6h9.8a2 2 0 0 0 2-1.6l1.7-7.4"),c("M4.5 15.5h15"),c("m5 11 4-7"),c("m9 11 1 9")]},{id:"lc-credit-card",cat:"shopping",zh:"\u94F6\u884C\u5361",en:"Credit card",kw:"credit card \u4FE1\u7528\u5361 \u652F\u4ED8",layers:[c("M4 5H20A2 2 0 0 1 22 7V17A2 2 0 0 1 20 19H4A2 2 0 0 1 2 17V7A2 2 0 0 1 4 5Z"),c("M2 10L22 10")]},{id:"lc-tag",cat:"shopping",zh:"\u6807\u7B7E",en:"Tag",kw:"tag \u6807\u7B7E \u4EF7\u683C",layers:[c("M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z"),yo("M7 7.5A0.5 0.5 0 1 0 8 7.5A0.5 0.5 0 1 0 7 7.5Z")]},{id:"lc-ticket",cat:"shopping",zh:"\u95E8\u7968",en:"Ticket",kw:"ticket \u7968 \u95E8\u7968 \u5238",layers:[c("M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z"),c("M13 5v2"),c("M13 17v2"),c("M13 11v2")]},{id:"lc-ticket-percent",cat:"shopping",zh:"\u6298\u6263\u5238",en:"Discount",kw:"discount \u6298\u6263 \u4F18\u60E0\u5238",layers:[c("M2 9a3 3 0 1 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 1 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z"),c("M9 9h.01"),c("m15 9-6 6"),c("M15 15h.01")]},{id:"lc-gift",cat:"shopping",zh:"\u793C\u7269",en:"Gift",kw:"gift \u793C\u7269 \u793C\u54C1 \u60CA\u559C",layers:[c("M4 8H20A1 1 0 0 1 21 9V11A1 1 0 0 1 20 12H4A1 1 0 0 1 3 11V9A1 1 0 0 1 4 8Z"),c("M12 8v13"),c("M19 12v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-7"),c("M7.5 8a2.5 2.5 0 0 1 0-5A4.8 8 0 0 1 12 8a4.8 8 0 0 1 4.5-5 2.5 2.5 0 0 1 0 5")]},{id:"lc-package",cat:"shopping",zh:"\u5305\u88F9",en:"Package",kw:"package \u5305\u88F9 \u5FEB\u9012 \u7269\u6D41",layers:[c("M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z"),c("M12 22V12"),c("m3.3 7 7.703 4.734a2 2 0 0 0 1.994 0L20.7 7"),c("m7.5 4.27 9 5.15")]},{id:"lc-box",cat:"shopping",zh:"\u76D2\u5B50",en:"Box",kw:"box \u76D2\u5B50 \u5305\u88C5",layers:[c("M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z"),c("m3.3 7 8.7 5 8.7-5"),c("M12 22V12")]},{id:"lc-coins",cat:"shopping",zh:"\u786C\u5E01",en:"Coins",kw:"coins \u786C\u5E01 \u94B1 \u8D27\u5E01",layers:[c("M2 8A6 6 0 1 0 14 8A6 6 0 1 0 2 8Z"),c("M18.09 10.37A6 6 0 1 1 10.34 18"),c("M7 6h1v4"),c("m16.71 13.88.7.71-2.82 2.82")]},{id:"lc-dollar-sign",cat:"shopping",zh:"\u7F8E\u5143",en:"Dollar",kw:"dollar \u7F8E\u5143 \u94B1 \u8D27\u5E01",layers:[c("M12 2L12 22"),c("M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6")]},{id:"lc-percent",cat:"shopping",zh:"\u767E\u5206\u6BD4",en:"Percent",kw:"percent \u767E\u5206\u6BD4 \u6298\u6263",layers:[c("M19 5L5 19"),c("M4 6.5A2.5 2.5 0 1 0 9 6.5A2.5 2.5 0 1 0 4 6.5Z"),c("M15 17.5A2.5 2.5 0 1 0 20 17.5A2.5 2.5 0 1 0 15 17.5Z")]},{id:"lc-receipt",cat:"shopping",zh:"\u6536\u636E",en:"Receipt",kw:"receipt \u6536\u636E \u53D1\u7968 \u8D26\u5355",layers:[c("M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z"),c("M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8"),c("M12 17.5v-11")]},{id:"lc-trophy",cat:"shopping",zh:"\u5956\u676F",en:"Trophy",kw:"trophy \u5956\u676F \u51A0\u519B \u6210\u5C31",layers:[c("M6 9H4.5a2.5 2.5 0 0 1 0-5H6"),c("M18 9h1.5a2.5 2.5 0 0 0 0-5H18"),c("M4 22h16"),c("M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22"),c("M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22"),c("M18 2H6v7a6 6 0 0 0 12 0V2Z")]},{id:"lc-wallet",cat:"shopping",zh:"\u94B1\u5305",en:"Wallet",kw:"wallet \u94B1\u5305 \u94B1",layers:[c("M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1"),c("M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4")]},{id:"lc-piggy-bank",cat:"shopping",zh:"\u5B58\u94B1\u7F50",en:"Piggy bank",kw:"piggy bank \u5B58\u94B1 \u50A8\u84C4",layers:[c("M19 5c-1.5 0-2.8 1.4-3 2-3.5-1.5-11-.3-11 5 0 1.8 0 3 2 4.5V20h4v-2h3v2h4v-4c1-.5 1.7-1 2-2h2v-4h-2c0-1-.5-1.5-1-2V5z"),c("M2 9v1c0 1.1.9 2 2 2h1"),c("M16 11h.01")]},{id:"lc-badge-percent",cat:"shopping",zh:"\u7279\u4EF7",en:"Sale",kw:"sale \u7279\u4EF7 \u4FC3\u9500 \u6253\u6298",layers:[c("M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"),c("m15 9-6 6"),c("M9 9h.01"),c("M15 15h.01")]},{id:"lc-atom",cat:"science",zh:"\u539F\u5B50",en:"Atom",kw:"atom \u539F\u5B50 \u7269\u7406 \u79D1\u5B66",layers:[c("M11 12A1 1 0 1 0 13 12A1 1 0 1 0 11 12Z"),c("M20.2 20.2c2.04-2.03.02-7.36-4.5-11.9-4.54-4.52-9.87-6.54-11.9-4.5-2.04 2.03-.02 7.36 4.5 11.9 4.54 4.52 9.87 6.54 11.9 4.5Z"),c("M15.7 15.7c4.52-4.54 6.54-9.87 4.5-11.9-2.03-2.04-7.36-.02-11.9 4.5-4.52 4.54-6.54 9.87-4.5 11.9 2.03 2.04 7.36.02 11.9-4.5Z")]},{id:"lc-flask-conical",cat:"science",zh:"\u70E7\u74F6",en:"Flask",kw:"flask \u70E7\u74F6 \u5316\u5B66 \u5B9E\u9A8C",layers:[c("M10 2v7.527a2 2 0 0 1-.211.896L4.72 20.55a1 1 0 0 0 .9 1.45h12.76a1 1 0 0 0 .9-1.45l-5.069-10.127A2 2 0 0 1 14 9.527V2"),c("M8.5 2h7"),c("M7 16h10")]},{id:"lc-beaker",cat:"science",zh:"\u70E7\u676F",en:"Beaker",kw:"beaker \u70E7\u676F \u5316\u5B66",layers:[c("M4.5 3h15"),c("M6 3v16a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V3"),c("M6 14h12")]},{id:"lc-test-tube",cat:"science",zh:"\u8BD5\u7BA1",en:"Test tube",kw:"test tube \u8BD5\u7BA1 \u5B9E\u9A8C",layers:[c("M14.5 2v17.5c0 1.4-1.1 2.5-2.5 2.5c-1.4 0-2.5-1.1-2.5-2.5V2"),c("M8.5 2h7"),c("M14.5 16h-5")]},{id:"lc-calculator",cat:"science",zh:"\u8BA1\u7B97\u5668",en:"Calculator",kw:"calculator \u8BA1\u7B97\u5668 \u6570\u5B66",layers:[c("M6 2H18A2 2 0 0 1 20 4V20A2 2 0 0 1 18 22H6A2 2 0 0 1 4 20V4A2 2 0 0 1 6 2Z"),c("M8 6L16 6"),c("M16 14L16 18"),c("M16 10h.01"),c("M12 10h.01"),c("M8 10h.01"),c("M12 14h.01"),c("M8 14h.01"),c("M12 18h.01"),c("M8 18h.01")]},{id:"lc-circuit-board",cat:"science",zh:"\u7535\u8DEF\u677F",en:"Circuit",kw:"circuit \u7535\u8DEF\u677F \u7535\u5B50",layers:[c("M5 3H19A2 2 0 0 1 21 5V19A2 2 0 0 1 19 21H5A2 2 0 0 1 3 19V5A2 2 0 0 1 5 3Z"),c("M11 9h4a2 2 0 0 0 2-2V3"),c("M7 9A2 2 0 1 0 11 9A2 2 0 1 0 7 9Z"),c("M7 21v-4a2 2 0 0 1 2-2h4"),c("M13 15A2 2 0 1 0 17 15A2 2 0 1 0 13 15Z")]},{id:"lc-cpu",cat:"science",zh:"CPU",en:"CPU",kw:"cpu \u5904\u7406\u5668 \u82AF\u7247 \u8BA1\u7B97",layers:[c("M6 4H18A2 2 0 0 1 20 6V18A2 2 0 0 1 18 20H6A2 2 0 0 1 4 18V6A2 2 0 0 1 6 4Z"),c("M10 9H14A1 1 0 0 1 15 10V14A1 1 0 0 1 14 15H10A1 1 0 0 1 9 14V10A1 1 0 0 1 10 9Z"),c("M15 2v2"),c("M15 20v2"),c("M2 15h2"),c("M2 9h2"),c("M20 15h2"),c("M20 9h2"),c("M9 2v2"),c("M9 20v2")]},{id:"lc-microchip",cat:"science",zh:"\u5FAE\u82AF\u7247",en:"Microchip",kw:"microchip \u82AF\u7247 \u7535\u5B50",layers:[c("M18 12h2"),c("M18 16h2"),c("M18 20h2"),c("M18 4h2"),c("M18 8h2"),c("M4 12h2"),c("M4 16h2"),c("M4 20h2"),c("M4 4h2"),c("M4 8h2"),c("M8 2a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2h-1.5c-.276 0-.494.227-.562.495a2 2 0 0 1-3.876 0C9.994 2.227 9.776 2 9.5 2z")]},{id:"lc-telescope",cat:"science",zh:"\u671B\u8FDC\u955C",en:"Telescope",kw:"telescope \u671B\u8FDC\u955C \u5929\u6587",layers:[c("m10.065 12.493-6.18 1.318a.934.934 0 0 1-1.108-.702l-.537-2.15a1.07 1.07 0 0 1 .691-1.265l13.504-4.44"),c("m13.56 11.747 4.332-.924"),c("m16 21-3.105-6.21"),c("M16.485 5.94a2 2 0 0 1 1.455-2.425l1.09-.272a1 1 0 0 1 1.212.727l1.515 6.06a1 1 0 0 1-.727 1.213l-1.09.272a2 2 0 0 1-2.425-1.455z"),c("m6.158 8.633 1.114 4.456"),c("m8 21 3.105-6.21"),c("M10 13A2 2 0 1 0 14 13A2 2 0 1 0 10 13Z")]},{id:"lc-orbit",cat:"science",zh:"\u8F68\u9053",en:"Orbit",kw:"orbit \u8F68\u9053 \u884C\u661F \u5929\u6587",layers:[c("M9 12A3 3 0 1 0 15 12A3 3 0 1 0 9 12Z"),c("M17 5A2 2 0 1 0 21 5A2 2 0 1 0 17 5Z"),c("M3 19A2 2 0 1 0 7 19A2 2 0 1 0 3 19Z"),c("M10.4 21.9a10 10 0 0 0 9.941-15.416"),c("M13.5 2.1a10 10 0 0 0-9.841 15.416")]},{id:"lc-radar",cat:"science",zh:"\u96F7\u8FBE",en:"Radar",kw:"radar \u96F7\u8FBE \u63A2\u6D4B",layers:[c("M19.07 4.93A10 10 0 0 0 6.99 3.34"),c("M4 6h.01"),c("M2.29 9.62A10 10 0 1 0 21.31 8.35"),c("M16.24 7.76A6 6 0 1 0 8.23 16.67"),c("M12 18h.01"),c("M17.99 11.66A6 6 0 0 1 15.77 16.67"),c("M10 12A2 2 0 1 0 14 12A2 2 0 1 0 10 12Z"),c("m13.41 10.59 5.66-5.66")]},{id:"lc-graduation-cap",cat:"science",zh:"\u6BD5\u4E1A",en:"Graduation",kw:"graduation \u6BD5\u4E1A \u5B66\u4F4D \u6559\u80B2",layers:[c("M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z"),c("M22 10v6"),c("M6 12.5V16a6 3 0 0 0 12 0v-3.5")]},{id:"lc-book-open",cat:"science",zh:"\u4E66\u672C",en:"Book",kw:"book \u4E66 \u9605\u8BFB \u5B66\u4E60",layers:[c("M12 7v14"),c("M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z")]},{id:"lc-ruler",cat:"science",zh:"\u5C3A\u5B50",en:"Ruler",kw:"ruler \u5C3A \u6D4B\u91CF \u7ED8\u56FE",layers:[c("M21.3 15.3a2.4 2.4 0 0 1 0 3.4l-2.6 2.6a2.4 2.4 0 0 1-3.4 0L2.7 8.7a2.41 2.41 0 0 1 0-3.4l2.6-2.6a2.41 2.41 0 0 1 3.4 0Z"),c("m14.5 12.5 2-2"),c("m11.5 9.5 2-2"),c("m8.5 6.5 2-2"),c("m17.5 15.5 2-2")]},{id:"lc-brain-circuit",cat:"science",zh:"\u667A\u80FD",en:"AI brain",kw:"ai brain \u667A\u80FD \u795E\u7ECF \u8BA1\u7B97",layers:[c("M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"),c("M9 13a4.5 4.5 0 0 0 3-4"),c("M6.003 5.125A3 3 0 0 0 6.401 6.5"),c("M3.477 10.896a4 4 0 0 1 .585-.396"),c("M6 18a4 4 0 0 1-1.967-.516"),c("M12 13h4"),c("M12 18h6a2 2 0 0 1 2 2v1"),c("M12 8h8"),c("M16 8V5a2 2 0 0 1 2-2"),c("M15.5 13A0.5 0.5 0 1 0 16.5 13A0.5 0.5 0 1 0 15.5 13Z"),c("M17.5 3A0.5 0.5 0 1 0 18.5 3A0.5 0.5 0 1 0 17.5 3Z"),c("M19.5 21A0.5 0.5 0 1 0 20.5 21A0.5 0.5 0 1 0 19.5 21Z"),c("M19.5 8A0.5 0.5 0 1 0 20.5 8A0.5 0.5 0 1 0 19.5 8Z")]},{id:"lc-cat",cat:"animal",zh:"\u732B",en:"Cat",kw:"cat \u732B \u5BA0\u7269 \u52A8\u7269",layers:[c("M12 5c.67 0 1.35.09 2 .26 1.78-2 5.03-2.84 6.42-2.26 1.4.58-.42 7-.42 7 .57 1.07 1 2.24 1 3.44C21 17.9 16.97 21 12 21s-9-3-9-7.56c0-1.25.5-2.4 1-3.44 0 0-1.89-6.42-.5-7 1.39-.58 4.72.23 6.5 2.23A9.04 9.04 0 0 1 12 5Z"),c("M8 14v.5"),c("M16 14v.5"),c("M11.25 16.25h1.5L12 17l-.75-.75Z")]},{id:"lc-dog",cat:"animal",zh:"\u72D7",en:"Dog",kw:"dog \u72D7 \u5BA0\u7269 \u52A8\u7269",layers:[c("M11.25 16.25h1.5L12 17z"),c("M16 14v.5"),c("M4.42 11.247A13.152 13.152 0 0 0 4 14.556C4 18.728 7.582 21 12 21s8-2.272 8-6.444a11.702 11.702 0 0 0-.493-3.309"),c("M8 14v.5"),c("M8.5 8.5c-.384 1.05-1.083 2.028-2.344 2.5-1.931.722-3.576-.297-3.656-1-.113-.994 1.177-6.53 4-7 1.923-.321 3.651.845 3.651 2.235A7.497 7.497 0 0 1 14 5.277c0-1.39 1.844-2.598 3.767-2.277 2.823.47 4.113 6.006 4 7-.08.703-1.725 1.722-3.656 1-1.261-.472-1.855-1.45-2.239-2.5")]},{id:"lc-rabbit",cat:"animal",zh:"\u5154\u5B50",en:"Rabbit",kw:"rabbit \u5154 \u5154\u5B50 \u52A8\u7269",layers:[c("M13 16a3 3 0 0 1 2.24 5"),c("M18 12h.01"),c("M18 21h-8a4 4 0 0 1-4-4 7 7 0 0 1 7-7h.2L9.6 6.4a1 1 0 1 1 2.8-2.8L15.8 7h.2c3.3 0 6 2.7 6 6v1a2 2 0 0 1-2 2h-1a3 3 0 0 0-3 3"),c("M20 8.54V4a2 2 0 1 0-4 0v3"),c("M7.612 12.524a3 3 0 1 0-1.6 4.3")]},{id:"lc-turtle",cat:"animal",zh:"\u4E4C\u9F9F",en:"Turtle",kw:"turtle \u4E4C\u9F9F \u52A8\u7269",layers:[c("m12 10 2 4v3a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-3a8 8 0 1 0-16 0v3a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-3l2-4h4Z"),c("M4.82 7.9 8 10"),c("M15.18 7.9 12 10"),c("M16.93 10H20a2 2 0 0 1 0 4H2")]},{id:"lc-mouse",cat:"animal",zh:"\u8001\u9F20",en:"Mouse",kw:"mouse \u9F20 \u52A8\u7269",layers:[c("M12 2H12A7 7 0 0 1 19 9V15A7 7 0 0 1 12 22H12A7 7 0 0 1 5 15V9A7 7 0 0 1 12 2Z"),c("M12 6v4")]},{id:"lc-worm",cat:"animal",zh:"\u86AF\u8693",en:"Worm",kw:"worm \u866B \u86AF\u8693",layers:[c("m19 12-1.5 3"),c("M19.63 18.81 22 20"),c("M6.47 8.23a1.68 1.68 0 0 1 2.44 1.93l-.64 2.08a6.76 6.76 0 0 0 10.16 7.67l.42-.27a1 1 0 1 0-2.73-4.21l-.42.27a1.76 1.76 0 0 1-2.63-1.99l.64-2.08A6.66 6.66 0 0 0 3.94 3.9l-.7.4a1 1 0 1 0 2.55 4.34z")]},{id:"lc-paw-print",cat:"animal",zh:"\u722A\u5370",en:"Paw",kw:"paw \u722A\u5370 \u5BA0\u7269 \u52A8\u7269",layers:[c("M9 4A2 2 0 1 0 13 4A2 2 0 1 0 9 4Z"),c("M16 8A2 2 0 1 0 20 8A2 2 0 1 0 16 8Z"),c("M18 16A2 2 0 1 0 22 16A2 2 0 1 0 18 16Z"),c("M9 10a5 5 0 0 1 5 5v3.5a3.5 3.5 0 0 1-6.84 1.045Q6.52 17.48 4.46 16.84A3.5 3.5 0 0 1 5.5 10Z")]},{id:"lc-beef",cat:"animal",zh:"\u725B\u8089",en:"Beef",kw:"beef \u725B \u8089 \u98DF\u7269",layers:[c("M10 8.5A2.5 2.5 0 1 0 15 8.5A2.5 2.5 0 1 0 10 8.5Z"),c("M12.5 2a6.5 6.5 0 0 0-6.22 4.6c-1.1 3.13-.78 3.9-3.18 6.08A3 3 0 0 0 5 18c4 0 8.4-1.8 11.4-4.3A6.5 6.5 0 0 0 12.5 2Z"),c("m18.5 6 2.19 4.5a6.48 6.48 0 0 1 .31 2 6.49 6.49 0 0 1-2.6 5.2C15.4 20.2 11 22 7 22a3 3 0 0 1-2.68-1.66L2.4 16.5")]},{id:"lc-clock",cat:"time",zh:"\u65F6\u949F",en:"Clock",kw:"clock \u65F6\u949F \u65F6\u95F4",layers:[c("M2 12A10 10 0 1 0 22 12A10 10 0 1 0 2 12Z"),c("M12 6L12 12L16 14")]},{id:"lc-alarm-clock",cat:"time",zh:"\u95F9\u949F",en:"Alarm",kw:"alarm \u95F9\u949F \u63D0\u9192 \u65F6\u95F4",layers:[c("M4 13A8 8 0 1 0 20 13A8 8 0 1 0 4 13Z"),c("M12 9v4l2 2"),c("M5 3 2 6"),c("m22 6-3-3"),c("M6.38 18.7 4 21"),c("M17.64 18.67 20 21")]},{id:"lc-timer",cat:"time",zh:"\u8BA1\u65F6\u5668",en:"Timer",kw:"timer \u8BA1\u65F6 \u79D2\u8868",layers:[c("M10 2L14 2"),c("M12 14L15 11"),c("M4 14A8 8 0 1 0 20 14A8 8 0 1 0 4 14Z")]},{id:"lc-hourglass",cat:"time",zh:"\u6C99\u6F0F",en:"Hourglass",kw:"hourglass \u6C99\u6F0F \u65F6\u95F4",layers:[c("M5 22h14"),c("M5 2h14"),c("M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22"),c("M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2")]},{id:"lc-history",cat:"time",zh:"\u5386\u53F2",en:"History",kw:"history \u5386\u53F2 \u8FC7\u5F80",layers:[c("M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"),c("M3 3v5h5"),c("M12 7v5l4 2")]},{id:"lc-watch",cat:"time",zh:"\u624B\u8868",en:"Watch",kw:"watch \u624B\u8868 \u65F6\u95F4",layers:[c("M6 12A6 6 0 1 0 18 12A6 6 0 1 0 6 12Z"),c("M12 10L12 12L13 13"),c("m16.13 7.66-.81-4.05a2 2 0 0 0-2-1.61h-2.68a2 2 0 0 0-2 1.61l-.78 4.05"),c("m7.88 16.36.8 4a2 2 0 0 0 2 1.61h2.72a2 2 0 0 0 2-1.61l.81-4.05")]},{id:"lc-calendar",cat:"time",zh:"\u65E5\u5386",en:"Calendar",kw:"calendar \u65E5\u5386 \u65E5\u671F",layers:[c("M8 2v4"),c("M16 2v4"),c("M5 4H19A2 2 0 0 1 21 6V20A2 2 0 0 1 19 22H5A2 2 0 0 1 3 20V6A2 2 0 0 1 5 4Z"),c("M3 10h18")]},{id:"lc-calendar-days",cat:"time",zh:"\u6708\u5386",en:"Calendar days",kw:"calendar days \u6708\u5386 \u65E5\u7A0B",layers:[c("M8 2v4"),c("M16 2v4"),c("M5 4H19A2 2 0 0 1 21 6V20A2 2 0 0 1 19 22H5A2 2 0 0 1 3 20V6A2 2 0 0 1 5 4Z"),c("M3 10h18"),c("M8 14h.01"),c("M12 14h.01"),c("M16 14h.01"),c("M8 18h.01"),c("M12 18h.01"),c("M16 18h.01")]},{id:"lc-calendar-check",cat:"time",zh:"\u5DF2\u6392\u671F",en:"Scheduled",kw:"calendar check \u6392\u671F \u786E\u8BA4",layers:[c("M8 2v4"),c("M16 2v4"),c("M5 4H19A2 2 0 0 1 21 6V20A2 2 0 0 1 19 22H5A2 2 0 0 1 3 20V6A2 2 0 0 1 5 4Z"),c("M3 10h18"),c("m9 16 2 2 4-4")]},{id:"lc-calendar-plus",cat:"time",zh:"\u52A0\u65E5\u7A0B",en:"Add event",kw:"calendar plus \u65B0\u589E \u65E5\u7A0B",layers:[c("M8 2v4"),c("M16 2v4"),c("M21 13V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8"),c("M3 10h18"),c("M16 19h6"),c("M19 16v6")]},{id:"lc-calendar-clock",cat:"time",zh:"\u65E5\u7A0B",en:"Calendar time",kw:"calendar time \u65E5\u7A0B \u65F6\u95F4",layers:[c("M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5"),c("M16 2v4"),c("M8 2v4"),c("M3 10h5"),c("M17.5 17.5 16 16.3V14"),c("M10 16A6 6 0 1 0 22 16A6 6 0 1 0 10 16Z")]},{id:"lc-calendar-range",cat:"time",zh:"\u533A\u95F4",en:"Range",kw:"calendar range \u65E5\u671F\u533A\u95F4",layers:[c("M5 4H19A2 2 0 0 1 21 6V20A2 2 0 0 1 19 22H5A2 2 0 0 1 3 20V6A2 2 0 0 1 5 4Z"),c("M16 2v4"),c("M3 10h18"),c("M8 2v4"),c("M17 14h-6"),c("M13 18H7"),c("M7 14h.01"),c("M17 18h.01")]},{id:"lc-scissors",cat:"edit",zh:"\u526A\u5200",en:"Scissors",kw:"scissors \u526A\u5207 \u526A\u5200 \u7F16\u8F91",layers:[c("M3 6A3 3 0 1 0 9 6A3 3 0 1 0 3 6Z"),c("M8.12 8.12 12 12"),c("M20 4 8.12 15.88"),c("M3 18A3 3 0 1 0 9 18A3 3 0 1 0 3 18Z"),c("M14.8 14.8 20 20")]},{id:"lc-copy",cat:"edit",zh:"\u590D\u5236",en:"Copy",kw:"copy \u590D\u5236 \u7F16\u8F91",layers:[c("M10 8H20A2 2 0 0 1 22 10V20A2 2 0 0 1 20 22H10A2 2 0 0 1 8 20V10A2 2 0 0 1 10 8Z"),c("M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2")]},{id:"lc-clipboard-copy",cat:"edit",zh:"\u590D\u5236\u5230\u526A\u8D34\u677F",en:"Clipboard copy",kw:"clipboard copy \u590D\u5236 \u7C98\u8D34",layers:[c("M9 2H15A1 1 0 0 1 16 3V5A1 1 0 0 1 15 6H9A1 1 0 0 1 8 5V3A1 1 0 0 1 9 2Z"),c("M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2"),c("M16 4h2a2 2 0 0 1 2 2v4"),c("M21 14H11"),c("m15 10-4 4 4 4")]},{id:"lc-pencil",cat:"edit",zh:"\u94C5\u7B14",en:"Pencil",kw:"pencil \u94C5\u7B14 \u7F16\u8F91 \u5199",layers:[c("M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"),c("m15 5 4 4")]},{id:"lc-pen-tool",cat:"edit",zh:"\u94A2\u7B14",en:"Pen tool",kw:"pen tool \u94A2\u7B14 \u7ED8\u56FE",layers:[c("M15.707 21.293a1 1 0 0 1-1.414 0l-1.586-1.586a1 1 0 0 1 0-1.414l5.586-5.586a1 1 0 0 1 1.414 0l1.586 1.586a1 1 0 0 1 0 1.414z"),c("m18 13-1.375-6.874a1 1 0 0 0-.746-.776L3.235 2.028a1 1 0 0 0-1.207 1.207L5.35 15.879a1 1 0 0 0 .776.746L13 18"),c("m2.3 2.3 7.286 7.286"),c("M9 11A2 2 0 1 0 13 11A2 2 0 1 0 9 11Z")]},{id:"lc-highlighter",cat:"edit",zh:"\u8367\u5149\u7B14",en:"Highlighter",kw:"highlighter \u8367\u5149\u7B14 \u6807\u8BB0",layers:[c("m9 11-6 6v3h9l3-3"),c("m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4")]},{id:"lc-brush",cat:"edit",zh:"\u753B\u7B14",en:"Brush",kw:"brush \u753B\u7B14 \u7ED8\u753B",layers:[c("m9.06 11.9 8.07-8.06a2.85 2.85 0 1 1 4.03 4.03l-8.06 8.08"),c("M7.07 14.94c-1.66 0-3 1.35-3 3.02 0 1.33-2.5 1.52-2 2.02 1.08 1.1 2.49 2.02 4 2.02 2.2 0 4-1.8 4-4.04a3.01 3.01 0 0 0-3-3.02z")]},{id:"lc-eraser",cat:"edit",zh:"\u6A61\u76AE",en:"Eraser",kw:"eraser \u6A61\u76AE \u64E6\u9664",layers:[c("m7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21"),c("M22 21H7"),c("m5 11 9 9")]},{id:"lc-crop",cat:"edit",zh:"\u88C1\u526A",en:"Crop",kw:"crop \u88C1\u526A \u7F16\u8F91 \u56FE\u7247",layers:[c("M6 2v14a2 2 0 0 0 2 2h14"),c("M18 22V8a2 2 0 0 0-2-2H2")]},{id:"lc-rotate-cw",cat:"edit",zh:"\u987A\u65F6\u9488",en:"Rotate",kw:"rotate \u65CB\u8F6C \u987A\u65F6\u9488 \u7F16\u8F91",layers:[c("M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"),c("M21 3v5h-5")]},{id:"lc-zoom-in",cat:"edit",zh:"\u653E\u5927",en:"Zoom in",kw:"zoom in \u653E\u5927 \u67E5\u770B",layers:[c("M3 11A8 8 0 1 0 19 11A8 8 0 1 0 3 11Z"),c("M21 21L16.65 16.65"),c("M11 8L11 14"),c("M8 11L14 11")]},{id:"lc-zoom-out",cat:"edit",zh:"\u7F29\u5C0F",en:"Zoom out",kw:"zoom out \u7F29\u5C0F \u67E5\u770B",layers:[c("M3 11A8 8 0 1 0 19 11A8 8 0 1 0 3 11Z"),c("M21 21L16.65 16.65"),c("M8 11L14 11")]},{id:"lc-trash-2",cat:"edit",zh:"\u5220\u9664",en:"Trash",kw:"trash \u5220\u9664 \u5783\u573E\u6876",layers:[c("M3 6h18"),c("M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"),c("M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"),c("M10 11L10 17"),c("M14 11L14 17")]},{id:"lc-undo",cat:"edit",zh:"\u64A4\u9500",en:"Undo",kw:"undo \u64A4\u9500 \u8FD4\u56DE",layers:[c("M3 7v6h6"),c("M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13")]},{id:"lc-redo",cat:"edit",zh:"\u91CD\u505A",en:"Redo",kw:"redo \u91CD\u505A \u6062\u590D",layers:[c("M21 7v6h-6"),c("M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7")]},{id:"lc-plus",cat:"edit",zh:"\u52A0\u53F7",en:"Plus",kw:"plus \u52A0 \u65B0\u589E \u6DFB\u52A0",layers:[c("M5 12h14"),c("M12 5v14")]},{id:"lc-minus",cat:"edit",zh:"\u51CF\u53F7",en:"Minus",kw:"minus \u51CF \u79FB\u9664",layers:[c("M5 12h14")]},{id:"lc-check",cat:"edit",zh:"\u5BF9\u52FE",en:"Check",kw:"check \u5BF9\u52FE \u5B8C\u6210 \u786E\u8BA4",layers:[c("M20 6 9 17l-5-5")]},{id:"lc-text",cat:"edit",zh:"\u6587\u672C",en:"Text",kw:"text \u6587\u5B57 \u6587\u672C \u7F16\u8F91",layers:[c("M17 6.1H3"),c("M21 12.1H3"),c("M15.1 18H3")]},{id:"lc-type",cat:"edit",zh:"\u5B57\u4F53",en:"Type",kw:"type \u5B57\u4F53 \u6587\u5B57",layers:[c("M4 7L4 4L20 4L20 7"),c("M9 20L15 20"),c("M12 4L12 20")]},{id:"lc-coffee",cat:"food",zh:"\u5496\u5561",en:"Coffee",kw:"coffee \u5496\u5561 \u996E\u54C1",layers:[c("M10 2v2"),c("M14 2v2"),c("M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1"),c("M6 2v2")]},{id:"lc-cup-soda",cat:"food",zh:"\u6C7D\u6C34",en:"Soda",kw:"soda \u6C7D\u6C34 \u996E\u6599",layers:[c("m6 8 1.75 12.28a2 2 0 0 0 2 1.72h4.54a2 2 0 0 0 2-1.72L18 8"),c("M5 8h14"),c("M7 15a6.47 6.47 0 0 1 5 0 6.47 6.47 0 0 0 5 0"),c("m12 8 1-6h2")]},{id:"lc-pizza",cat:"food",zh:"\u62AB\u8428",en:"Pizza",kw:"pizza \u62AB\u8428 \u98DF\u7269",layers:[c("m12 14-1 1"),c("m13.75 18.25-1.25 1.42"),c("M17.775 5.654a15.68 15.68 0 0 0-12.121 12.12"),c("M18.8 9.3a1 1 0 0 0 2.1 7.7"),c("M21.964 20.732a1 1 0 0 1-1.232 1.232l-18-5a1 1 0 0 1-.695-1.232A19.68 19.68 0 0 1 15.732 2.037a1 1 0 0 1 1.232.695z")]},{id:"lc-apple",cat:"food",zh:"\u82F9\u679C",en:"Apple",kw:"apple \u82F9\u679C \u6C34\u679C",layers:[c("M12 20.94c1.5 0 2.75 1.06 4 1.06 3 0 6-8 6-12.22A4.91 4.91 0 0 0 17 5c-2.22 0-4 1.44-5 2-1-.56-2.78-2-5-2a4.9 4.9 0 0 0-5 4.78C2 14 5 22 8 22c1.25 0 2.5-1.06 4-1.06Z"),c("M10 2c1 .5 2 2 2 5")]},{id:"lc-carrot",cat:"food",zh:"\u80E1\u841D\u535C",en:"Carrot",kw:"carrot \u80E1\u841D\u535C \u852C\u83DC",layers:[c("M2.27 21.7s9.87-3.5 12.73-6.36a4.5 4.5 0 0 0-6.36-6.37C5.77 11.84 2.27 21.7 2.27 21.7zM8.64 14l-2.05-2.04M15.34 15l-2.46-2.46"),c("M22 9s-1.33-2-3.5-2C16.86 7 15 9 15 9s1.33 2 3.5 2S22 9 22 9z"),c("M15 2s-2 1.33-2 3.5S15 9 15 9s2-1.84 2-3.5C17 3.33 15 2 15 2z")]},{id:"lc-sandwich",cat:"food",zh:"\u4E09\u660E\u6CBB",en:"Sandwich",kw:"sandwich \u4E09\u660E\u6CBB \u98DF\u7269",layers:[c("m2.37 11.223 8.372-6.777a2 2 0 0 1 2.516 0l8.371 6.777"),c("M21 15a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-5.25"),c("M3 15a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h9"),c("m6.67 15 6.13 4.6a2 2 0 0 0 2.8-.4l3.15-4.2"),c("M3 11H21A1 1 0 0 1 22 12V14A1 1 0 0 1 21 15H3A1 1 0 0 1 2 14V12A1 1 0 0 1 3 11Z")]},{id:"lc-ice-cream-cone",cat:"food",zh:"\u751C\u7B52",en:"Ice cream",kw:"ice cream \u51B0\u6DC7\u6DCB \u751C\u54C1",layers:[c("m7 11 4.08 10.35a1 1 0 0 0 1.84 0L17 11"),c("M17 7A5 5 0 0 0 7 7"),c("M17 7a2 2 0 0 1 0 4H7a2 2 0 0 1 0-4")]},{id:"lc-wine",cat:"food",zh:"\u7EA2\u9152",en:"Wine",kw:"wine \u7EA2\u9152 \u9152 \u996E\u54C1",layers:[c("M8 22h8"),c("M7 10h10"),c("M12 15v7"),c("M12 15a5 5 0 0 0 5-5c0-2-.5-4-2-8H9c-1.5 4-2 6-2 8a5 5 0 0 0 5 5Z")]},{id:"lc-beer",cat:"food",zh:"\u5564\u9152",en:"Beer",kw:"beer \u5564\u9152 \u996E\u54C1",layers:[c("M17 11h1a3 3 0 0 1 0 6h-1"),c("M9 12v6"),c("M13 12v6"),c("M14 7.5c-1 0-1.44.5-3 .5s-2-.5-3-.5-1.72.5-2.5.5a2.5 2.5 0 0 1 0-5c.78 0 1.57.5 2.5.5S9.44 2 11 2s2 1.5 3 1.5 1.72-.5 2.5-.5a2.5 2.5 0 0 1 0 5c-.78 0-1.5-.5-2.5-.5Z"),c("M5 8v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8")]},{id:"lc-utensils",cat:"food",zh:"\u9910\u5177",en:"Utensils",kw:"utensils \u9910\u5177 \u5403\u996D",layers:[c("M3 2v7c0 1.1.9 2 2 2h4a2 2 0 0 0 2-2V2"),c("M7 2v20"),c("M21 15V2a5 5 0 0 0-5 5v6c0 1.1.9 2 2 2h3Zm0 0v7")]},{id:"lc-chef-hat",cat:"food",zh:"\u53A8\u5E08\u5E3D",en:"Chef",kw:"chef \u53A8\u5E08 \u9910\u996E",layers:[c("M17 21a1 1 0 0 0 1-1v-5.35c0-.457.316-.844.727-1.041a4 4 0 0 0-2.134-7.589 5 5 0 0 0-9.186 0 4 4 0 0 0-2.134 7.588c.411.198.727.585.727 1.041V20a1 1 0 0 0 1 1Z"),c("M6 17h12")]},{id:"lc-egg",cat:"food",zh:"\u9E21\u86CB",en:"Egg",kw:"egg \u9E21\u86CB \u98DF\u7269",layers:[c("M12 22c6.23-.05 7.87-5.57 7.5-10-.36-4.34-3.95-9.96-7.5-10-3.55.04-7.14 5.66-7.5 10-.37 4.43 1.27 9.95 7.5 10z")]},{id:"lc-cake",cat:"food",zh:"\u86CB\u7CD5",en:"Cake",kw:"cake \u86CB\u7CD5 \u751C\u54C1 \u751F\u65E5",layers:[c("M20 21v-8a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8"),c("M4 16s.5-1 2-1 2.5 2 4 2 2.5-2 4-2 2.5 2 4 2 2-1 2-1"),c("M2 21h20"),c("M7 8v3"),c("M12 8v3"),c("M17 8v3"),c("M7 4h.01"),c("M12 4h.01"),c("M17 4h.01")]},{id:"lc-banana",cat:"food",zh:"\u9999\u8549",en:"Banana",kw:"banana \u9999\u8549 \u6C34\u679C",layers:[c("M4 13c3.5-2 8-2 10 2a5.5 5.5 0 0 1 8 5"),c("M5.15 17.89c5.52-1.52 8.65-6.89 7-12C11.55 4 11.5 2 13 2c3.22 0 5 5.5 5 8 0 6.5-4.2 12-10.49 12C5.11 22 2 22 2 20c0-1.5 1.14-1.55 3.15-2.11Z")]},{id:"lc-grape",cat:"food",zh:"\u8461\u8404",en:"Grape",kw:"grape \u8461\u8404 \u6C34\u679C",layers:[c("M22 5V2l-5.89 5.89"),c("M13.600000000000001 15.89A3 3 0 1 0 19.6 15.89A3 3 0 1 0 13.600000000000001 15.89Z"),c("M5.109999999999999 7.4A3 3 0 1 0 11.11 7.4A3 3 0 1 0 5.109999999999999 7.4Z"),c("M9.35 11.65A3 3 0 1 0 15.35 11.65A3 3 0 1 0 9.35 11.65Z"),c("M10.91 5.85A3 3 0 1 0 16.91 5.85A3 3 0 1 0 10.91 5.85Z"),c("M15.149999999999999 10.09A3 3 0 1 0 21.15 10.09A3 3 0 1 0 15.149999999999999 10.09Z"),c("M3.5599999999999996 13.2A3 3 0 1 0 9.559999999999999 13.2A3 3 0 1 0 3.5599999999999996 13.2Z"),c("M7.800000000000001 17.44A3 3 0 1 0 13.8 17.44A3 3 0 1 0 7.800000000000001 17.44Z"),c("M2 19A3 3 0 1 0 8 19A3 3 0 1 0 2 19Z")]},{id:"lc-cookie",cat:"food",zh:"\u997C\u5E72",en:"Cookie",kw:"cookie \u997C\u5E72 \u751C\u54C1",layers:[c("M12 2a10 10 0 1 0 10 10 4 4 0 0 1-5-5 4 4 0 0 1-5-5"),c("M8.5 8.5v.01"),c("M16 15.5v.01"),c("M12 12v.01"),c("M11 17v.01"),c("M7 14v.01")]},{id:"lc-croissant",cat:"food",zh:"\u53EF\u9882",en:"Croissant",kw:"croissant \u53EF\u9882 \u9762\u5305",layers:[c("m4.6 13.11 5.79-3.21c1.89-1.05 4.79 1.78 3.71 3.71l-3.22 5.81C8.8 23.16.79 15.23 4.6 13.11Z"),c("m10.5 9.5-1-2.29C9.2 6.48 8.8 6 8 6H4.5C2.79 6 2 6.5 2 8.5a7.71 7.71 0 0 0 2 4.83"),c("M8 6c0-1.55.24-4-2-4-2 0-2.5 2.17-2.5 4"),c("m14.5 13.5 2.29 1c.73.3 1.21.7 1.21 1.5v3.5c0 1.71-.5 2.5-2.5 2.5a7.71 7.71 0 0 1-4.83-2"),c("M18 16c1.55 0 4-.24 4 2 0 2-2.17 2.5-4 2.5")]},{id:"lc-salad",cat:"food",zh:"\u6C99\u62C9",en:"Salad",kw:"salad \u6C99\u62C9 \u852C\u83DC",layers:[c("M7 21h10"),c("M12 21a9 9 0 0 0 9-9H3a9 9 0 0 0 9 9Z"),c("M11.38 12a2.4 2.4 0 0 1-.4-4.77 2.4 2.4 0 0 1 3.2-2.77 2.4 2.4 0 0 1 3.47-.63 2.4 2.4 0 0 1 3.37 3.37 2.4 2.4 0 0 1-1.1 3.7 2.51 2.51 0 0 1 .03 1.1"),c("m13 12 4-4"),c("M10.9 7.25A3.99 3.99 0 0 0 4 10c0 .73.2 1.41.54 2")]},{id:"lc-soup",cat:"food",zh:"\u6C64",en:"Soup",kw:"soup \u6C64 \u98DF\u7269",layers:[c("M12 21a9 9 0 0 0 9-9H3a9 9 0 0 0 9 9Z"),c("M7 21h10"),c("M19.5 12 22 6"),c("M16.25 3c.27.1.8.53.75 1.36-.06.83-.93 1.2-1 2.02-.05.78.34 1.24.73 1.62"),c("M11.25 3c.27.1.8.53.74 1.36-.05.83-.93 1.2-.98 2.02-.06.78.33 1.24.72 1.62"),c("M6.25 3c.27.1.8.53.75 1.36-.06.83-.93 1.2-1 2.02-.05.78.34 1.24.74 1.62")]},{id:"lc-drumstick",cat:"food",zh:"\u9E21\u817F",en:"Drumstick",kw:"drumstick \u9E21\u817F \u8089 \u98DF\u7269",layers:[c("M15.4 15.63a7.875 6 135 1 1 6.23-6.23 4.5 3.43 135 0 0-6.23 6.23"),c("m8.29 12.71-2.6 2.6a2.5 2.5 0 1 0-1.65 4.65A2.5 2.5 0 1 0 8.7 18.3l2.59-2.59")]},{id:"lc-cherry",cat:"food",zh:"\u6A31\u6843",en:"Cherry",kw:"cherry \u6A31\u6843 \u6C34\u679C",layers:[c("M2 17a5 5 0 0 0 10 0c0-2.76-2.5-5-5-3-2.5-2-5 .24-5 3Z"),c("M12 17a5 5 0 0 0 10 0c0-2.76-2.5-5-5-3-2.5-2-5 .24-5 3Z"),c("M7 14c3.22-2.91 4.29-8.75 5-12 1.66 2.38 4.94 9 5 12"),c("M22 9c-4.29 0-7.14-2.33-10-7 5.71 0 10 4.67 10 7Z")]},{id:"lc-phone-call",cat:"communication",zh:"\u6765\u7535",en:"Phone call",kw:"phone call \u6765\u7535 \u901A\u8BDD",layers:[c("M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"),c("M14.05 2a9 9 0 0 1 8 7.94"),c("M14.05 6A5 5 0 0 1 18 10")]},{id:"lc-wifi",cat:"communication",zh:"\u65E0\u7EBF",en:"Wi-Fi",kw:"wifi \u65E0\u7EBF \u7F51\u7EDC \u4FE1\u53F7",layers:[c("M12 20h.01"),c("M2 8.82a15 15 0 0 1 20 0"),c("M5 12.859a10 10 0 0 1 14 0"),c("M8.5 16.429a5 5 0 0 1 7 0")]},{id:"lc-bluetooth",cat:"communication",zh:"\u84DD\u7259",en:"Bluetooth",kw:"bluetooth \u84DD\u7259 \u8FDE\u63A5",layers:[c("m7 7 10 10-5 5V2l5 5L7 17")]},{id:"lc-message-circle",cat:"communication",zh:"\u6D88\u606F",en:"Message",kw:"message \u6D88\u606F \u804A\u5929 \u6C9F\u901A",layers:[c("M7.9 20A9 9 0 1 0 4 16.1L2 22Z")]},{id:"lc-mailbox",cat:"communication",zh:"\u4FE1\u7BB1",en:"Mailbox",kw:"mailbox \u4FE1\u7BB1 \u90AE\u4EF6",layers:[c("M22 17a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9.5C2 7 4 5 6.5 5H18c2.2 0 4 1.8 4 4v8Z"),c("M15 9L18 9L18 11"),c("M6.5 5C9 5 11 7 11 9.5V17a2 2 0 0 1-2 2"),c("M6 10L7 10")]},{id:"lc-send",cat:"communication",zh:"\u53D1\u9001",en:"Send",kw:"send \u53D1\u9001 \u63D0\u4EA4 \u6D88\u606F",layers:[c("M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z"),c("m21.854 2.147-10.94 10.939")]},{id:"lc-rss",cat:"communication",zh:"\u8BA2\u9605",en:"RSS",kw:"rss \u8BA2\u9605 \u6E90",layers:[c("M4 11a9 9 0 0 1 9 9"),c("M4 4a16 16 0 0 1 16 16"),c("M4 19A1 1 0 1 0 6 19A1 1 0 1 0 4 19Z")]},{id:"lc-antenna",cat:"communication",zh:"\u5929\u7EBF",en:"Antenna",kw:"antenna \u5929\u7EBF \u4FE1\u53F7 \u5E7F\u64AD",layers:[c("M2 12 7 2"),c("m7 12 5-10"),c("m12 12 5-10"),c("m17 12 5-10"),c("M4.5 7h15"),c("M12 16v6")]}];var Mo=[{id:"status",labelKey:"iconCat.status"},{id:"number",labelKey:"iconCat.number"},{id:"emoji",labelKey:"iconCat.emoji"},{id:"sticker",labelKey:"iconCat.sticker"},{id:"device",labelKey:"iconCat.device"},{id:"tech",labelKey:"iconCat.tech"},{id:"chart",labelKey:"iconCat.chart"},{id:"office",labelKey:"iconCat.office"},{id:"media",labelKey:"iconCat.media"},{id:"arrow",labelKey:"iconCat.arrow"},{id:"misc",labelKey:"iconCat.misc"},...yi],M=(r,e)=>({d:r,fill:"none",...e?{w:e}:{}}),wt=(r,e="ink")=>({d:r,fill:e,stroke:"none"}),j=(r,e,t)=>`M${r-t} ${e}A${t} ${t} 0 1 0 ${r+t} ${e}A${t} ${t} 0 1 0 ${r-t} ${e}Z`,bo=["#e11d48","#f97316","#eab308","#22c55e","#14b8a6","#0ea5e9","#6366f1","#a855f7","#ec4899","#64748b"],wo=["\u96F6","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D","\u4E03","\u516B","\u4E5D"],xo=["Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine"],So=bo.map((r,e)=>({id:`num-${e}`,cat:"number",zh:`\u6570\u5B57 ${e}`,en:`${xo[e]} badge`,kw:`number badge \u6570\u5B57 \u5FBD\u6807 \u5E8F\u53F7 ${wo[e]} ${e}`,layers:[],disc:r,label:{text:String(e),color:"#ffffff",size:13}})),xt=[{id:"check-circle",cat:"status",zh:"\u901A\u8FC7",en:"Check circle",kw:"check ok success done \u5B8C\u6210 \u5BF9\u52FE \u6210\u529F \u901A\u8FC7 \u6B63\u786E",layers:[M(j(12,12,9)),M("M7.6 12.3L10.6 15.3L16.3 8.9")]},{id:"alert-circle",cat:"status",zh:"\u8B66\u544A",en:"Alert circle",kw:"alert warning danger \u8B66\u544A \u6CE8\u610F \u5371\u9669 \u611F\u53F9\u53F7",layers:[M(j(12,12,9)),M("M12 7.4V13"),M("M12 16.4H12.01",2.2)]},{id:"question-circle",cat:"status",zh:"\u7591\u95EE",en:"Question circle",kw:"question help faq \u7591\u95EE \u5E2E\u52A9 \u95EE\u53F7",layers:[M(j(12,12,9)),M("M9.4 9.4A2.7 2.7 0 0 1 14.7 10C14.7 11.8 12 12.2 12 14"),M("M12 16.6H12.01",2.2)]},{id:"close-circle",cat:"status",zh:"\u5931\u8D25",en:"Close circle",kw:"close fail error cancel \u5931\u8D25 \u5173\u95ED \u9519\u8BEF \u53C9",layers:[M(j(12,12,9)),M("M9.2 9.2L14.8 14.8"),M("M14.8 9.2L9.2 14.8")]},{id:"info-circle",cat:"status",zh:"\u4FE1\u606F",en:"Info circle",kw:"info note tip \u4FE1\u606F \u63D0\u793A \u8BF4\u660E",layers:[M(j(12,12,9)),M("M12 11V16.4"),M("M12 7.6H12.01",2.2)]},{id:"star",cat:"status",zh:"\u661F\u6807",en:"Star",kw:"star favorite bookmark \u661F \u6536\u85CF \u6807\u8BB0 \u91CD\u70B9",layers:[M("M12 3.4L14.7 8.9L20.7 9.8L16.3 14L17.4 20L12 17.1L6.6 20L7.7 14L3.3 9.8L9.3 8.9Z")]},{id:"flag",cat:"status",zh:"\u65D7\u6807",en:"Flag",kw:"flag mark milestone \u65D7\u5E1C \u6807\u8BB0 \u91CC\u7A0B\u7891",layers:[M("M5.5 20.5V4"),M("M5.5 5H16.5L14.8 8.6L16.5 12.2H5.5")]},{id:"heart",cat:"status",zh:"\u559C\u6B22",en:"Heart",kw:"heart like love \u5FC3 \u559C\u6B22 \u70B9\u8D5E \u6536\u85CF",layers:[M("M12 20.2C12 20.2 4.8 15.6 4.8 10.4A4 4 0 0 1 12 7.7A4 4 0 0 1 19.2 10.4C19.2 15.6 12 20.2 12 20.2Z")]},...So,{id:"cloud",cat:"tech",zh:"\u4E91",en:"Cloud",kw:"cloud saas \u4E91 \u670D\u52A1 \u8BA1\u7B97 \u5929\u6C14",layers:[M("M7 18.5H16.6A3.6 3.6 0 0 0 17.1 11.3A5.4 5.4 0 0 0 6.8 9.9A4 4 0 0 0 7 18.5Z")]},{id:"cloud-up",cat:"tech",zh:"\u4E91\u4E0A\u4F20",en:"Cloud upload",kw:"cloud upload sync \u4E91 \u4E0A\u4F20 \u540C\u6B65 \u5BFC\u5165",layers:[M("M7 18.5H16.6A3.6 3.6 0 0 0 17.1 11.3A5.4 5.4 0 0 0 6.8 9.9A4 4 0 0 0 7 18.5Z"),M("M12 17V11.4"),M("M9.8 13.6L12 11.4L14.2 13.6")]},{id:"cloud-down",cat:"tech",zh:"\u4E91\u4E0B\u8F7D",en:"Cloud download",kw:"cloud download \u4E91 \u4E0B\u8F7D \u5BFC\u51FA \u62C9\u53D6",layers:[M("M7 18.5H16.6A3.6 3.6 0 0 0 17.1 11.3A5.4 5.4 0 0 0 6.8 9.9A4 4 0 0 0 7 18.5Z"),M("M12 11.2V17"),M("M9.8 14.8L12 17L14.2 14.8")]},{id:"server",cat:"tech",zh:"\u670D\u52A1\u5668",en:"Server",kw:"server host machine \u670D\u52A1\u5668 \u4E3B\u673A \u673A\u623F \u5B9E\u4F8B",layers:[M("M4 5H20V10H4Z"),M("M4 14H20V19H4Z"),M("M7.6 7.5H7.61",2.2),M("M7.6 16.5H7.61",2.2),M("M11 7.5H16.5"),M("M11 16.5H16.5")]},{id:"database",cat:"tech",zh:"\u6570\u636E\u5E93",en:"Database",kw:"database db storage mysql \u6570\u636E\u5E93 \u5B58\u50A8 \u8868 \u6570\u636E",layers:[M("M4 6.4C4 5 7.6 3.9 12 3.9C16.4 3.9 20 5 20 6.4C20 7.8 16.4 8.9 12 8.9C7.6 8.9 4 7.8 4 6.4Z"),M("M4 6.4V17.6C4 19 7.6 20.1 12 20.1C16.4 20.1 20 19 20 17.6V6.4"),M("M4 12C4 13.4 7.6 14.5 12 14.5C16.4 14.5 20 13.4 20 12")]},{id:"chip",cat:"tech",zh:"\u82AF\u7247",en:"Chip",kw:"chip cpu gpu ai \u82AF\u7247 \u5904\u7406\u5668 \u7B97\u529B \u6A21\u578B",layers:[M("M8 8H16V16H8Z"),M("M12 4V8"),M("M12 16V20"),M("M4 12H8"),M("M16 12H20"),M("M10 4V8"),M("M14 4V8"),M("M10 16V20"),M("M14 16V20"),M("M4 10H8"),M("M4 14H8"),M("M16 10H20"),M("M16 14H20")]},{id:"terminal",cat:"tech",zh:"\u547D\u4EE4\u884C",en:"Terminal",kw:"terminal shell cli code \u547D\u4EE4\u884C \u7EC8\u7AEF \u547D\u4EE4 ssh",layers:[M("M4 5H20V19H4Z"),M("M7.6 9.4L10.2 12L7.6 14.6"),M("M13 14.8H16.6")]},{id:"globe",cat:"tech",zh:"\u7F51\u7EDC",en:"Network",kw:"network internet globe cdn \u7F51\u7EDC \u5168\u7403 \u4E92\u8054\u7F51 \u62D3\u6251",layers:[M(j(12,12,8.6)),M("M3.4 12H20.6"),M("M12 3.4C14.4 5.7 15.6 8.7 15.6 12C15.6 15.3 14.4 18.3 12 20.6C9.6 18.3 8.4 15.3 8.4 12C8.4 8.7 9.6 5.7 12 3.4Z")]},{id:"shield",cat:"tech",zh:"\u5B89\u5168",en:"Shield",kw:"shield security safe privacy \u5B89\u5168 \u9632\u62A4 \u76FE \u52A0\u5BC6 \u5408\u89C4",layers:[M("M12 3.4L19 6V12C19 16 16 19.2 12 20.6C8 19.2 5 16 5 12V6Z"),M("M9 12.2L11.2 14.4L15.2 9.9")]},{id:"bar-chart",cat:"chart",zh:"\u67F1\u72B6\u56FE",en:"Bar chart",kw:"bar chart column \u67F1\u72B6 \u56FE\u8868 \u7EDF\u8BA1 \u6570\u636E",layers:[M("M4.5 20H19.5"),M("M7.5 20V11.5"),M("M12 20V5.5"),M("M16.5 20V14")]},{id:"line-chart",cat:"chart",zh:"\u6298\u7EBF\u56FE",en:"Line chart",kw:"line chart trend \u6298\u7EBF \u8D8B\u52BF \u589E\u957F \u56FE\u8868",layers:[M("M4.5 4.5V19.5H19.5"),M("M7.5 15.6L11 11.4L14 13.9L18.4 8")]},{id:"pie-chart",cat:"chart",zh:"\u997C\u56FE",en:"Pie chart",kw:"pie chart share \u997C\u56FE \u5360\u6BD4 \u4EFD\u989D \u56FE\u8868",layers:[M(j(12,12,8.6)),M("M12 12V3.4"),M("M12 12L19.4 16.2")]},{id:"gauge",cat:"chart",zh:"\u4EEA\u8868\u76D8",en:"Gauge",kw:"gauge dashboard monitor \u4EEA\u8868\u76D8 \u76D1\u63A7 \u6027\u80FD \u6C34\u4F4D",layers:[M("M3.6 17.6A8.8 8.8 0 0 1 20.4 17.6"),M("M12 17.6L15.8 12.4"),M("M12 5.6V7.4"),M("M5.6 8.4L6.9 9.7"),M("M18.4 8.4L17.1 9.7")]},{id:"table",cat:"chart",zh:"\u6570\u636E\u8868",en:"Table",kw:"table grid sheet data \u8868\u683C \u6570\u636E \u7F51\u683C \u660E\u7EC6",layers:[M("M4 5H20V19H4Z"),M("M4 9.8H20"),M("M9.6 5V19"),M("M15.2 9.8V19")]},{id:"funnel",cat:"chart",zh:"\u6F0F\u6597",en:"Funnel",kw:"funnel filter convert \u6F0F\u6597 \u8F6C\u5316 \u7B5B\u9009 \u6D41\u7A0B",layers:[M("M4 5H20L14 12.2V18.6L10 16.6V12.2Z")]},{id:"target",cat:"chart",zh:"\u76EE\u6807",en:"Target",kw:"target goal okr kpi \u76EE\u6807 \u9776\u5FC3 \u6307\u6807 \u5B8C\u6210\u5EA6",layers:[M(j(12,12,8.6)),M(j(12,12,4.6)),wt(j(12,12,1.5))]},{id:"trend-up",cat:"chart",zh:"\u589E\u957F",en:"Trend up",kw:"growth up increase kpi \u589E\u957F \u4E0A\u5347 \u63D0\u5347 \u4E0A\u6DA8",layers:[M("M4 17.5L9.2 12.2L12.6 15.4L20 7.8"),M("M15.4 7.8H20V12.4")]},{id:"doc",cat:"office",zh:"\u6587\u6863",en:"Document",kw:"doc file page \u6587\u6863 \u6587\u4EF6 \u9875\u9762 \u62A5\u544A \u9700\u6C42",layers:[M("M6.5 3.5H13.5L17.5 7.5V20.5H6.5Z"),M("M13.4 3.6V7.6H17.4"),M("M9.5 12.5H14.5"),M("M9.5 16H14.5")]},{id:"sheet",cat:"office",zh:"\u8868\u683C",en:"Spreadsheet",kw:"excel sheet cell \u8868\u683C \u5355\u5143\u683C \u62A5\u8868 \u8BA1\u7B97",layers:[M("M6.5 3.5H13.5L17.5 7.5V20.5H6.5Z"),M("M13.4 3.6V7.6H17.4"),M("M9.5 11.5H14.5M9.5 15H14.5M9.5 18.2H12.5")]},{id:"slide",cat:"office",zh:"\u6F14\u793A",en:"Slide",kw:"slide ppt presentation \u6F14\u793A \u5E7B\u706F\u7247 ppt \u6C47\u62A5",layers:[M("M4 5H20V15.5H4Z"),M("M12 15.5V19"),M("M8.8 20.5H15.2")]},{id:"folder",cat:"office",zh:"\u6587\u4EF6\u5939",en:"Folder",kw:"folder directory \u6587\u4EF6\u5939 \u76EE\u5F55 \u5F52\u6863 \u9879\u76EE",layers:[M("M4 6.5H9.6L11.6 9H20V19H4Z")]},{id:"mail",cat:"office",zh:"\u90AE\u4EF6",en:"Mail",kw:"mail email message \u90AE\u4EF6 \u6D88\u606F \u901A\u77E5 \u90AE\u7BB1",layers:[M("M3.5 6H20.5V18H3.5Z"),M("M3.7 6.4L12 12.6L20.3 6.4")]},{id:"calendar",cat:"office",zh:"\u65E5\u5386",en:"Calendar",kw:"calendar date schedule \u65E5\u5386 \u65E5\u7A0B \u65E5\u671F \u6392\u671F",layers:[M("M4 6.5H20V19.5H4Z"),M("M4 10.8H20"),M("M8.4 3.8V7.4"),M("M15.6 3.8V7.4"),M("M8 14.4H10.4")]},{id:"clipboard",cat:"office",zh:"\u526A\u8D34\u677F",en:"Clipboard",kw:"clipboard copy paste \u526A\u8D34\u677F \u590D\u5236 \u7C98\u8D34 \u6E05\u5355",layers:[M("M7.5 5H5.5V20.5H18.5V5H16.5"),M("M9.5 3.5H14.5V6.6H9.5Z"),M("M8.6 12H15.4"),M("M8.6 16H13")]},{id:"paperclip",cat:"office",zh:"\u9644\u4EF6",en:"Attachment",kw:"attach paperclip file \u9644\u4EF6 \u4E0A\u4F20 \u6587\u4EF6 \u9644\u52A0",layers:[M("M16.6 7.4V15.6A4.6 4.6 0 0 1 7.4 15.6V7A2.9 2.9 0 0 1 13.2 7V15.8A1.3 1.3 0 0 1 10.6 15.8V8.2")]},{id:"image",cat:"media",zh:"\u56FE\u7247",en:"Image",kw:"image photo picture \u56FE\u7247 \u7167\u7247 \u56FE \u76F8\u518C",layers:[M("M4 5H20V19H4Z"),M(j(9,9.8,1.7)),M("M4.4 16.8L9 12.2L12.6 15.6L15.4 12.8L19.6 17")]},{id:"video",cat:"media",zh:"\u89C6\u9891",en:"Video",kw:"video movie play \u89C6\u9891 \u5F71\u7247 \u64AD\u653E \u5F55\u5236",layers:[M("M4 6.5H14.6V17.5H4Z"),M("M14.6 10.6L20 7.8V16.2L14.6 13.4Z")]},{id:"mic",cat:"media",zh:"\u9EA6\u514B\u98CE",en:"Microphone",kw:"mic voice audio record \u9EA6\u514B\u98CE \u8BED\u97F3 \u5F55\u97F3 \u97F3\u9891",layers:[M("M12 4.2A2.9 2.9 0 0 1 14.9 7.1V11.9A2.9 2.9 0 0 1 9.1 11.9V7.1A2.9 2.9 0 0 1 12 4.2Z"),M("M6.4 11.5A5.6 5.6 0 0 0 17.6 11.5"),M("M12 17.1V20.4")]},{id:"camera",cat:"media",zh:"\u6444\u50CF\u5934",en:"Camera",kw:"camera photo live \u6444\u50CF\u5934 \u62CD\u7167 \u76F4\u64AD \u4F1A\u8BAE",layers:[M("M4 7.5H7.8L9.3 5H14.7L16.2 7.5H20V19.5H4Z"),M(j(12,13.4,3.3))]},{id:"chat",cat:"media",zh:"\u5BF9\u8BDD",en:"Chat",kw:"chat message comment \u5BF9\u8BDD \u8BC4\u8BBA \u6D88\u606F \u6C9F\u901A \u53CD\u9988",layers:[M("M4.5 5.5H19.5V15.5H11L7 19.5V15.5H4.5Z")]},{id:"user",cat:"media",zh:"\u6210\u5458",en:"User",kw:"user person member \u7528\u6237 \u6210\u5458 \u4EBA \u8D26\u53F7 \u8D1F\u8D23\u4EBA",layers:[M(j(12,8.4,3.7)),M("M5.4 20.4C6 16.7 8.7 14.6 12 14.6C15.3 14.6 18 16.7 18.6 20.4")]},{id:"users",cat:"media",zh:"\u6210\u5458\u7EC4",en:"User group",kw:"users team group \u56E2\u961F \u7FA4\u7EC4 \u6210\u5458 \u7EC4\u7EC7 \u534F\u4F5C",layers:[M(j(9.6,8.6,3.1)),M("M3.6 19.8C4.1 16.8 6.4 15 9.6 15C12.8 15 15.1 16.8 15.6 19.8"),M("M16.4 6A3.1 3.1 0 0 1 16.4 11.2"),M("M17.6 15.2C19.5 15.8 20.7 17.4 21 19.8")]},{id:"bell",cat:"media",zh:"\u901A\u77E5",en:"Bell",kw:"bell notification alert \u901A\u77E5 \u63D0\u9192 \u6D88\u606F \u544A\u8B66",layers:[M("M6.6 16.6V11.4A5.4 5.4 0 0 1 17.4 11.4V16.6L19 19.4H5L6.6 16.6Z"),M("M10.2 19.6A1.9 1.9 0 0 0 13.8 19.6")]},{id:"arrow-up",cat:"arrow",zh:"\u5411\u4E0A",en:"Arrow up",kw:"up arrow top \u4E0A \u5411\u4E0A \u7BAD\u5934 \u4E0A\u5347",layers:[M("M12 20.5V4"),M("M6 10L12 4L18 10")]},{id:"arrow-down",cat:"arrow",zh:"\u5411\u4E0B",en:"Arrow down",kw:"down arrow bottom \u4E0B \u5411\u4E0B \u7BAD\u5934 \u4E0B\u964D",layers:[M("M12 3.5V20"),M("M6 14L12 20L18 14")]},{id:"arrow-left",cat:"arrow",zh:"\u5411\u5DE6",en:"Arrow left",kw:"left arrow back \u5DE6 \u5411\u5DE6 \u7BAD\u5934 \u8FD4\u56DE",layers:[M("M20.5 12H4"),M("M10 6L4 12L10 18")]},{id:"arrow-right",cat:"arrow",zh:"\u5411\u53F3",en:"Arrow right",kw:"right arrow next \u53F3 \u5411\u53F3 \u7BAD\u5934 \u524D\u8FDB",layers:[M("M3.5 12H20"),M("M14 6L20 12L14 18")]},{id:"refresh",cat:"arrow",zh:"\u5237\u65B0",en:"Refresh",kw:"refresh reload retry \u5237\u65B0 \u91CD\u8BD5 \u91CD\u65B0\u52A0\u8F7D",layers:[M("M19.6 12A7.6 7.6 0 1 1 17 6.1"),M("M19.9 4.2V8.4H15.7")]},{id:"sync",cat:"arrow",zh:"\u53CC\u5411\u540C\u6B65",en:"Sync",kw:"sync exchange swap \u540C\u6B65 \u4EA4\u6362 \u53CC\u5411 \u4E92\u8F6C",layers:[M("M4 9.2H19L15.6 5.8"),M("M20 14.8H5L8.4 18.2")]},{id:"upload",cat:"arrow",zh:"\u4E0A\u4F20",en:"Upload",kw:"upload import push \u4E0A\u4F20 \u5BFC\u5165 \u53D1\u5E03 \u63D0\u4EA4",layers:[M("M12 16.5V4.6"),M("M7.4 9.2L12 4.6L16.6 9.2"),M("M4.5 20H19.5")]},{id:"download",cat:"arrow",zh:"\u4E0B\u8F7D",en:"Download",kw:"download export pull \u4E0B\u8F7D \u5BFC\u51FA \u62C9\u53D6 \u4FDD\u5B58",layers:[M("M12 4V15.9"),M("M7.4 11.3L12 15.9L16.6 11.3"),M("M4.5 20H19.5")]},{id:"bulb",cat:"misc",zh:"\u60F3\u6CD5",en:"Idea",kw:"idea bulb tip \u60F3\u6CD5 \u521B\u610F \u63D0\u793A \u8981\u70B9 \u7075\u611F",layers:[M("M8.8 15.6A6 6 0 1 1 15.2 15.6V17.4H8.8Z"),M("M9.8 20.2H14.2")]},{id:"settings",cat:"misc",zh:"\u8BBE\u7F6E",en:"Settings",kw:"settings config option \u8BBE\u7F6E \u914D\u7F6E \u53C2\u6570 \u9009\u9879",layers:[M("M4 7.5H20"),M("M4 12H20"),M("M4 16.5H20"),M(j(9,7.5,1.9)),M(j(15.4,12,1.9)),M(j(8,16.5,1.9))]},{id:"key",cat:"misc",zh:"\u5BC6\u94A5",en:"Key",kw:"key token secret \u5BC6\u94A5 \u4EE4\u724C \u6743\u9650 \u5BC6\u7801",layers:[M(j(8.6,8.6,4.6)),M("M11.9 11.9L20 20"),M("M15.6 15.6L17.6 13.6"),M("M18 18L20 16")]},{id:"lock",cat:"misc",zh:"\u9501\u5B9A",en:"Lock",kw:"lock secure private \u9501 \u52A0\u5BC6 \u79C1\u6709 \u5B89\u5168",layers:[M("M6.4 10.6H17.6V20.4H6.4Z"),M("M9.2 10.6V7.8A2.8 2.8 0 0 1 14.8 7.8V10.6")]},{id:"eye",cat:"misc",zh:"\u67E5\u770B",en:"Eye",kw:"eye view preview \u67E5\u770B \u9884\u89C8 \u53EF\u89C1 \u89C2\u5BDF",layers:[M("M2.8 12C2.8 12 6.6 6.4 12 6.4C17.4 6.4 21.2 12 21.2 12C21.2 12 17.4 17.6 12 17.6C6.6 17.6 2.8 12 2.8 12Z"),M(j(12,12,2.6))]},{id:"lightning",cat:"misc",zh:"\u9AD8\u6548",en:"Lightning",kw:"fast flash speed \u95EA\u7535 \u5FEB\u901F \u9AD8\u6548 \u6027\u80FD",layers:[M("M13.6 2.8L6 13.6H10.8L10.4 21.2L18 10.4H13.2Z")]},{id:"pin",cat:"misc",zh:"\u5B9A\u4F4D",en:"Location",kw:"location pin map \u5B9A\u4F4D \u4F4D\u7F6E \u5730\u56FE \u5730\u5740",layers:[M("M12 21C12 21 18.6 15.1 18.6 10.4A6.6 6.6 0 0 0 5.4 10.4C5.4 15.1 12 21 12 21Z"),M(j(12,10.4,2.5))]},{id:"link",cat:"misc",zh:"\u94FE\u63A5",en:"Link",kw:"link url chain \u94FE\u63A5 \u7F51\u5740 \u5F15\u7528 \u8DF3\u8F6C",layers:[M("M10.4 13.6A4.2 4.2 0 0 0 16.4 13.6L19.2 10.8A4.2 4.2 0 0 0 13.2 4.8L11.8 6.2"),M("M13.6 10.4A4.2 4.2 0 0 0 7.6 10.4L4.8 13.2A4.2 4.2 0 0 0 10.8 19.2L12.2 17.8")]},...gi,...fi,{id:"device-desktop",cat:"device",zh:"\u53F0\u5F0F\u7535\u8111",en:"Desktop",kw:"desktop monitor computer pc \u53F0\u5F0F \u7535\u8111 \u663E\u793A\u5668 \u5C4F\u5E55 \u8BA1\u7B97\u673A",layers:[M("M4.5 4.5H19.5V15.5H4.5Z"),M("M12 15.5V19.3"),M("M8.2 19.5H15.8")]},{id:"device-laptop",cat:"device",zh:"\u7B14\u8BB0\u672C",en:"Laptop",kw:"laptop notebook computer \u7B14\u8BB0\u672C \u4FBF\u643A \u7535\u8111 \u7B14\u8BB0\u672C\u7535\u8111",layers:[M("M6.5 5H17.5V14.5H6.5Z"),M("M8.5 14.5L7.4 17.5"),M("M15.5 14.5L16.6 17.5"),M("M4.5 17.5H19.5")]},{id:"device-phone",cat:"device",zh:"\u624B\u673A",en:"Phone",kw:"phone mobile smartphone \u624B\u673A \u79FB\u52A8 \u7535\u8BDD \u82F9\u679C \u5B89\u5353",layers:[M("M8 3.5H16A1.6 1.6 0 0 1 17.6 5.1V18.9A1.6 1.6 0 0 1 16 20.5H8A1.6 1.6 0 0 1 6.4 18.9V5.1A1.6 1.6 0 0 1 8 3.5Z"),M("M10.4 17.6H13.6")]},{id:"device-tablet",cat:"device",zh:"\u5E73\u677F",en:"Tablet",kw:"tablet ipad \u5E73\u677F \u57AB\u5B50 \u89E6\u5C4F",layers:[M("M5.5 4.5H18.5A1.6 1.6 0 0 1 20.1 6.1V17.9A1.6 1.6 0 0 1 18.5 19.5H5.5A1.6 1.6 0 0 1 3.9 17.9V6.1A1.6 1.6 0 0 1 5.5 4.5Z"),wt(j(12,16.8,1))]},{id:"device-keyboard",cat:"device",zh:"\u952E\u76D8",en:"Keyboard",kw:"keyboard typing \u952E\u76D8 \u6253\u5B57 \u8F93\u5165 \u5916\u8BBE",layers:[M("M3.5 7H20.5V17H3.5Z"),M("M6.3 10H6.31",2.2),M("M9.1 10H9.11",2.2),M("M11.9 10H11.91",2.2),M("M14.7 10H14.71",2.2),M("M17.5 10H17.51",2.2),M("M8 14.2H16")]},{id:"device-mouse",cat:"device",zh:"\u9F20\u6807",en:"Mouse",kw:"mouse click \u9F20\u6807 \u70B9\u51FB \u6EDA\u8F6E \u5916\u8BBE",layers:[M("M12 3.5C15.3 3.5 17 5.7 17 8.9V14.1C17 17.3 15.3 20.5 12 20.5C8.7 20.5 7 17.3 7 14.1V8.9C7 5.7 8.7 3.5 12 3.5Z"),M("M12 3.5V8.8"),M("M7 8.8H17")]},{id:"device-printer",cat:"device",zh:"\u6253\u5370\u673A",en:"Printer",kw:"printer print \u6253\u5370\u673A \u6253\u5370 \u590D\u5370 \u8F93\u51FA",layers:[M("M7.5 7.5V3.5H16.5V7.5"),M("M4.5 7.5H19.5V14.5H4.5Z"),M("M8 14.5V20.5H16V14.5"),M("M17.2 10.2H17.21",2.2)]},{id:"device-headset",cat:"device",zh:"\u8033\u673A",en:"Headset",kw:"headset headphone earphone \u8033\u673A \u901A\u8BDD \u5BA2\u670D \u8BED\u97F3",layers:[M("M4.5 13.4V12A7.5 7.5 0 0 1 19.5 12V13.4"),M("M4.5 12.4H6.6A1.6 1.6 0 0 1 8.2 14V16.8A1.6 1.6 0 0 1 6.6 18.4H6.1A1.6 1.6 0 0 1 4.5 16.8Z"),M("M19.5 12.4H17.4A1.6 1.6 0 0 0 15.8 14V16.8A1.6 1.6 0 0 0 17.4 18.4H17.9A1.6 1.6 0 0 0 19.5 16.8Z")]},{id:"device-router",cat:"device",zh:"\u8DEF\u7531\u5668",en:"Router",kw:"router wifi network \u8DEF\u7531\u5668 \u65E0\u7EBF \u7F51\u7EDC \u4FE1\u53F7 \u4E0A\u7F51",layers:[M("M4 13.5H20V19.5H4Z"),M("M7.5 13.5V6"),M("M16.5 13.5V6"),M("M7 16.5H7.01",2.2),M("M10.2 16.5H10.21",2.2)]},{id:"device-usb",cat:"device",zh:"\u4F18\u76D8",en:"USB drive",kw:"usb disk drive \u4F18\u76D8 U\u76D8 \u5B58\u50A8 \u95EA\u5B58 \u63D2\u5165",layers:[M("M9.5 3.5H14.5V8H9.5Z"),M("M8.5 8H15.5V17A3.5 3.5 0 0 1 12 20.5A3.5 3.5 0 0 1 8.5 17Z"),M("M11 5.5H11.01",2.2),M("M13 5.5H13.01",2.2)]},{id:"device-wifi",cat:"device",zh:"\u65E0\u7EBF\u7F51\u7EDC",en:"Wi-Fi",kw:"wifi wireless signal \u65E0\u7EBF \u7F51\u7EDC \u4FE1\u53F7 wifi \u70ED\u70B9",layers:[M("M3.8 9.6C8.2 5.2 15.8 5.2 20.2 9.6"),M("M6.6 12.7C9.6 9.7 14.4 9.7 17.4 12.7"),M("M9.4 15.7C10.8 14.3 13.2 14.3 14.6 15.7"),wt(j(12,18.5,1.35))]},{id:"device-battery",cat:"device",zh:"\u7535\u91CF",en:"Battery",kw:"battery power charge \u7535\u91CF \u7535\u6C60 \u5145\u7535 \u80FD\u91CF",layers:[M("M3.5 8.5H18.5V15.5H3.5Z"),M("M20.5 10.5V13.5",2.2),wt("M6 10.4H8.7V13.6H6Z"),wt("M10.3 10.4H13V13.6H10.3Z")]},...Mi],bi=new Map(xt.map(r=>[r.id,r]));function Ue(r){return bi.get(r)}function hn(r){return bi.has(r)}function ko(r){return xt.filter(e=>e.cat===r)}function Co(r){let e=r.trim().toLowerCase();if(!e)return xt;let t=e.split(/\s+/),i=o=>{let s=`${o.zh} ${o.en} ${o.kw??""}`.toLowerCase();return t.every(a=>s.includes(a))},n=o=>`${o.zh} ${o.en}`.toLowerCase().includes(e);return xt.filter(i).sort((o,s)=>Number(n(s))-Number(n(o)))}var dn=48,wi="star",te=24,St="#3b82f6",xi={status:"#f59e0b",number:"#ef4444",emoji:"#ec4899",sticker:"#f43f5e",device:"#64748b",tech:"#0ea5e9",chart:"#6366f1",office:"#2563eb",media:"#8b5cf6",arrow:"#14b8a6",misc:"#94a3b8",weather:"#06b6d4",transport:"#0d9488",nature:"#22c55e",building:"#78716c",medical:"#e11d48",shopping:"#db2777",science:"#7c3aed",animal:"#a16207",time:"#0891b2",edit:"#475569",food:"#ea580c",communication:"#16a34a"};function un(r){return r.ink??xi[r.cat]??St}var Ct=14,Ie=10,At=4,st=1.3,Ao=10,pn=40,gn=24,je=140,We=36;var mn="#f1f3f5",o0="#d9dce1",r0="#1f2937",vo=18,Io=22,zo=4;function Le(r,e){let t=e.x-r.x,i=e.y-r.y,n=Math.cos(r.rotation),o=Math.sin(r.rotation);return {x:t*n+i*o+r.width/2,y:-t*o+i*n+r.height/2}}function To(r,e){let t=e.x-r.width/2,i=e.y-r.height/2,n=Math.cos(r.rotation),o=Math.sin(r.rotation);return {x:r.x+t*n-i*o,y:r.y+t*o+i*n}}function s0(r,e){let t=18/e,i=22/e,n=4/e;return {x:-r.width/2-n-t,y:-r.height/2+2/e,width:t,height:i}}function at(r,e,t,i=3){let n=Le(r,e),o={x:n.x-r.width/2,y:n.y-r.height/2},s=s0(r,t),a=i/t;return o.x>=s.x-a&&o.x<=s.x+s.width+a&&o.y>=s.y-a&&o.y<=s.y+s.height+a}function Do(r,e,t=0){let i=Le(r,e);return i.x>=-t&&i.x<=r.width+t&&i.y>=-t&&i.y<=r.height+t}function vt(r,e){let t=r.cells[0]?.length??0,i=r.cells.length,n=t-1,o=0;for(let a=0;a<t;a++)if(o+=r.colWidths[a]??140,e.x<o){n=a;break}e.x<=0&&(n=0);let s=i-1;o=0;for(let a=0;a<i;a++)if(o+=r.rowHeights[a]??36,e.y<o){s=a;break}return e.y<=0&&(s=0),{row:Math.max(0,s),col:Math.max(0,n)}}function fn(r,e,t,i,n){let o=Math.min(e,i),s=Math.max(e,i),a=Math.min(t,n),l=Math.max(t,n),h=r.colWidths.slice(0,a).reduce((g,m)=>g+m,0),d=r.rowHeights.slice(0,o).reduce((g,m)=>g+m,0),u=r.colWidths.slice(a,l+1).reduce((g,m)=>g+m,0),p=r.rowHeights.slice(o,s+1).reduce((g,m)=>g+m,0);return {x:h-r.width/2,y:d-r.height/2,width:u,height:p}}function lt(r){return r.reduce((e,t)=>e+t,0)}function ct(r){return r.reduce((e,t)=>e+t,0)}function It(r,e,t){let i=r*e;return i<=t?t/2-i/2+e/2:4+e/2}function zt(r,e,t=true){return Array.from({length:r},(i,n)=>Array.from({length:e},()=>n===0&&t?{text:"",bold:true,fillColor:mn}:{text:""}))}var Lo=["textColor","fontSize","bold","align","fillColor"];function Si(r){if(!r)return null;let e={},t=false;for(let i of Lo){let n=r[i];n!==void 0&&(e[i]=n,t=true);}return t?e:null}function ki(r,e){return {text:"",...Si(r)??Si(e)??{}}}var kt;function Ho(r,e){return kt===void 0&&(kt=typeof document<"u"?document.createElement("canvas").getContext("2d"):null),kt?(kt.font=e,kt.measureText(r).width):r.length*8}function Ci(r,e,t,i){if(!r||i<=0)return 1;let n=`${t?"bold ":""}${e}px sans-serif`,o=0;for(let s of r.split(`
|
|
2
|
-
`)){if(!s){o+=1;continue}let a="",l=0;for(let
|
|
3
|
-
`));for(let p=o;p<=s;p++)for(let g=a;g<=l;g++)(p!==o||g!==a)&&(h[p][g]={text:""});return h}function a0(r,e,t){let i=r[e]?.[t];if(!i||!i.rowSpan&&!i.colSpan)return r;let n=Me(r);return Ai(n[e][t]),n}function bn(r,e,t){let i=r.cells[e]?.[t];if(!i)return {row:e,col:t};if((i.rowSpan??1)>1||(i.colSpan??1)>1)return {row:e,col:t};for(let n=e;n>=0;n--)for(let o=t;o>=0;o--){let s=r.cells[n]?.[o];if(!s)continue;let a=s.rowSpan??1,l=s.colSpan??1;if(!(a===1&&l===1)&&n<=e&&e<=n+a-1&&o<=t&&t<=o+l-1)return {row:n,col:o}}return {row:e,col:t}}function Tt(r,e,t,i,n){let o=Math.min(e,i),s=Math.max(e,i),a=Math.min(t,n),l=Math.max(t,n),h=true,d=0;for(;h&&d++<32;){h=false;for(let u=0;u<r.cells.length;u++)for(let p=0;p<(r.cells[u]?.length??0);p++){let g=r.cells[u][p],m=g.rowSpan??1,f=g.colSpan??1;if(m===1&&f===1)continue;let y=u+m-1,k=p+f-1;u<=s&&y>=o&&p<=l&&k>=a&&(u<o&&(o=u,h=true),y>s&&(s=y,h=true),p<a&&(a=p,h=true),k>l&&(l=k,h=true));}}return {r1:o,c1:a,r2:s,c2:l}}function Eo(r,e,t,i,n){let o=Math.min(e,i),s=Math.max(e,i),a=Math.min(t,n),l=Math.max(t,n);for(let h=o;h<=s;h++)for(let d=a;d<=l;d++){let u=r.cells[h]?.[d];if(u&&((u.rowSpan??1)>1||(u.colSpan??1)>1))return true}return false}function wn(r,e,t,i,n){let o=Math.min(e,i),s=Math.max(e,i),a=Math.min(t,n),l=Math.max(t,n),h=r.cells,d=false;for(let u=o;u<=s;u++)for(let p=a;p<=l;p++){let g=h[u]?.[p];g&&((g.rowSpan??1)>1||(g.colSpan??1)>1)&&(h=a0(h,u,p),d=true);}return d?h:r.cells}function l0(r,e,t){let i=r.length,n=Math.max(0,Math.min(i,t)),o=r[0]?.length??0,s=Me(r);if(n<i)for(let g=0;g<i;g++)for(let m=0;m<(s[g]?.length??0);m++){let f=s[g][m],y=f.rowSpan??1;y>1&&g<n&&n<g+y&&(f.rowSpan=y+1);}let a=(()=>{let g=r[0]?.[0];return i>1&&!!g&&(g.bold===true||g.fillColor===mn)})(),l=n===0?0:n-1;l===0&&a&&(l=1);let h=r[l],d=r[Math.min(n,i-1)],u=Array.from({length:o},(g,m)=>ki(h?.[m],d?.[m]));s.splice(n,0,u);let p=[...e];return p.splice(n,0,e[l]??36),{cells:s,rowHeights:p}}function c0(r,e,t){let i=r[0]?.length??0,n=Math.max(0,Math.min(i,t)),o=Me(r);for(let h=0;h<o.length;h++){let d=o[h];for(let u=0;u<d.length;u++){let p=d[u],g=p.colSpan??1;g>1&&u<n&&n<u+g&&(p.colSpan=g+1);}}let s=n>0?n-1:0,a=n<i?n:i-1;for(let h=0;h<o.length;h++)o[h].splice(n,0,ki(r[h]?.[s],r[h]?.[a]));let l=[...e];return l.splice(n,0,e[s]??140),{cells:o,colWidths:l}}function h0(r,e,t){let i=r.length;if(i<=1)return null;let n=Math.max(0,Math.min(i-1,t)),o=Me(r),s=o[n];for(let l=0;l<(s?.length??0);l++){let h=s[l],d=h.rowSpan??1;d>1&&o[n+1]?.[l]&&(o[n+1][l]={text:h.text,textColor:h.textColor,fontSize:h.fontSize,bold:h.bold,fillColor:h.fillColor,align:h.align,rowSpan:d-1>1?d-1:void 0,colSpan:h.colSpan});}for(let l=0;l<n;l++)for(let h=0;h<(o[l]?.length??0);h++){let d=o[l][h],u=d.rowSpan??1;u>1&&l+u>n&&(d.rowSpan=u-1>1?u-1:void 0);}o.splice(n,1);let a=[...e];return a.splice(n,1),{cells:o,rowHeights:a}}function d0(r,e,t){let i=r[0]?.length??0;if(i<=1)return null;let n=Math.max(0,Math.min(i-1,t)),o=Me(r);for(let a=0;a<o.length;a++){let l=o[a],h=l[n];if(h){let d=h.colSpan??1;d>1&&l[n+1]&&(l[n+1]={text:h.text,textColor:h.textColor,fontSize:h.fontSize,bold:h.bold,fillColor:h.fillColor,align:h.align,rowSpan:h.rowSpan,colSpan:d-1>1?d-1:void 0});}for(let d=0;d<n;d++){let u=l[d],p=u.colSpan??1;p>1&&d+p>n&&(u.colSpan=p-1>1?p-1:void 0);}l.splice(n,1);}let s=[...e];return s.splice(n,1),{cells:o,colWidths:s}}function ue(r,e,t){let i=r.cells[e]?.[t],n=i?.rowSpan??1,o=i?.colSpan??1,s=r.colWidths.slice(0,t).reduce((d,u)=>d+u,0),a=r.rowHeights.slice(0,e).reduce((d,u)=>d+u,0),l=r.colWidths.slice(t,t+o).reduce((d,u)=>d+u,0),h=r.rowHeights.slice(e,e+n).reduce((d,u)=>d+u,0);return {ox:s,oy:a,width:l,height:h}}function xn(r,e,t){if(e<0||t<0||e>r.width||t>r.height)return null;let i=Ke(r.cells),n=-1,o=0;for(let a=0;a<r.rowHeights.length;a++)if(o+=r.rowHeights[a],t<o){n=a;break}n===-1&&(n=r.rowHeights.length-1);let s=-1;o=0;for(let a=0;a<r.colWidths.length;a++)if(o+=r.colWidths[a],e<o){s=a;break}if(s===-1&&(s=r.colWidths.length-1),i[n]?.[s])for(let a=0;a<=n;a++)for(let l=0;l<=s;l++){let h=r.cells[a]?.[l],d=h?.rowSpan??1,u=h?.colSpan??1;if((d>1||u>1)&&a+d>n&&l+u>s)return {row:a,col:l}}return {row:n,col:s}}var Ro={strokeColor:"#1f2937",fillColor:"#f8fafc",fillOpacity:.9,strokeWidth:2,strokeDash:null},kn={rectangle:{width:120,height:60},"rounded-rectangle":{width:120,height:60,borderRadius:8},circle:{width:80,height:80},ellipse:{width:100,height:70},diamond:{width:100,height:80},triangle:{width:100,height:90},hexagon:{width:100,height:90},parallelogram:{width:120,height:60},trapezoid:{width:120,height:70},pentagon:{width:100,height:90},octagon:{width:100,height:90},star:{width:100,height:100},cylinder:{width:100,height:110},cloud:{width:140,height:90},heart:{width:100,height:95},"block-arrow-right":{width:140,height:80},"block-arrow-left":{width:140,height:80},"block-arrow-up":{width:80,height:140},"block-arrow-down":{width:80,height:140},"block-arrow-double":{width:150,height:80},"right-triangle":{width:100,height:90},cross:{width:90,height:90},"speech-rect":{width:130,height:92},"speech-round":{width:130,height:92},cube:{width:110,height:110},sector:{width:100,height:100},delay:{width:120,height:80},"predefined-process":{width:130,height:80},document:{width:120,height:90},stadium:{width:130,height:60},"class-catalog":{width:160,height:90},chevron:{width:110,height:80},"brace-left":{width:220,height:120},"brace-right":{width:220,height:120},envelope:{width:120,height:84},checkbox:{width:90,height:90},"triangular-pyramid":{width:100,height:100},"quadrangular-pyramid":{width:110,height:110},cuboid:{width:150,height:90},sphere:{width:100,height:100},ellipsoid:{width:130,height:90},pie:{width:130,height:90},"hollow-pie":{width:130,height:90},"sticky-note":{width:140,height:140},icon:{width:48,height:48},image:{width:320,height:240}},ce=14,G=22,xe=36,de=14,O=8,Cn=160,Vo=["rectangle","rounded-rectangle","circle","ellipse","diamond","triangle","hexagon","parallelogram","trapezoid","pentagon","octagon","star","cylinder","cloud","heart","block-arrow-right","block-arrow-left","block-arrow-up","block-arrow-down","block-arrow-double","right-triangle","cross","speech-rect","speech-round","cube","sector","delay","predefined-process","document","stadium","class-catalog","chevron","brace-left","brace-right","envelope","checkbox","triangular-pyramid","quadrangular-pyramid","cuboid","sphere","ellipsoid","pie","hollow-pie","sticky-note","icon","uml-class","uml-interface","mind-map","table","image"];function u0(r){return Vo.includes(r)}function He(r,e,t,i,n){let o=`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,s=kn[r]||{width:120,height:60},a=n?.width??s.width,l=n?.height??s.height,h=n?n.width/2:s.radius??a/2,d=s.borderRadius??8,u=t??{...Ro};switch(r){case "rounded-rectangle":return {id:o,type:"rounded-rectangle",x:e.x,y:e.y,width:a,height:l,borderRadius:d,rotation:0,style:u};case "circle":return {id:o,type:"circle",x:e.x,y:e.y,radius:h,rotation:0,style:u};case "ellipse":return {id:o,type:"ellipse",x:e.x,y:e.y,width:a,height:l,rotation:0,style:u};case "diamond":return {id:o,type:"diamond",x:e.x,y:e.y,width:a,height:l,rotation:0,style:u};case "triangle":return {id:o,type:"triangle",x:e.x,y:e.y,width:a,height:l,rotation:0,style:u};case "hexagon":return {id:o,type:"hexagon",x:e.x,y:e.y,width:a,height:l,rotation:0,style:u};case "parallelogram":return {id:o,type:"parallelogram",x:e.x,y:e.y,width:a,height:l,rotation:0,style:u};case "trapezoid":return {id:o,type:"trapezoid",x:e.x,y:e.y,width:a,height:l,rotation:0,style:u};case "pentagon":return {id:o,type:"pentagon",x:e.x,y:e.y,width:a,height:l,rotation:0,style:u};case "octagon":return {id:o,type:"octagon",x:e.x,y:e.y,width:a,height:l,rotation:0,style:u};case "star":return {id:o,type:"star",x:e.x,y:e.y,width:a,height:l,rotation:0,style:u};case "icon":return {id:o,type:"icon",iconId:wi,x:e.x,y:e.y,width:a,height:l,rotation:0,style:{...u,strokeColor:St,fillColor:St,fillOpacity:1}};case "image":return {id:o,type:"image",src:"",x:e.x,y:e.y,width:a,height:l,rotation:0,borderRadius:4,style:{...u,strokeColor:"transparent",fillColor:"#f3f4f6",fillOpacity:1}};case "sticky-note":return {id:o,type:"sticky-note",x:e.x,y:e.y,width:a,height:l,rotation:0,style:ui(u,i)};case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":return {id:o,type:r,x:e.x,y:e.y,width:a,height:l,rotation:0,style:u};case "uml-class":{let p="ClassName",g=[{id:`attr_${Date.now()}_1`,visibility:"+",name:"field",type:"string"}],m=[{id:`meth_${Date.now()}_1`,visibility:"+",name:"method",params:"param",returnType:"void"}],{width:f,height:y}=n??g0(p,g,m);return {id:o,type:"uml-class",x:e.x,y:e.y,width:f,height:y,className:p,attributes:g,methods:m,rotation:0,style:{...u,fillColor:"#ffffff"}}}case "uml-interface":{let p="Interface",g=[{id:`meth_${Date.now()}_1`,visibility:"+",name:"method",params:"type",returnType:"type"}],{width:m,height:f}=n??An(p,g);return {id:o,type:"uml-interface",x:e.x,y:e.y,width:m,height:f,className:p,methods:g,rotation:0,style:{...u,fillColor:"#ffffff"}}}case "mind-map":{let p=y=>`mm_${y}_${Date.now()}_${Math.random().toString(36).substr(2,6)}`,g={id:p("root"),text:fe("mindmap.defaultRoot"),children:[{id:p("b1"),text:fe("mindmap.defaultBranch")},{id:p("b2"),text:fe("mindmap.defaultBranch")},{id:p("b3"),text:fe("mindmap.defaultBranch")}]},{width:m,height:f}=Z(g);return {id:o,type:"mind-map",x:e.x,y:e.y,width:m,height:f,root:g,rotation:0,style:{...u,fillColor:"#ffffff"}}}case "table":{let p=[140,140,140],g=[36,36,36];return {id:o,type:"table",x:e.x,y:e.y,width:lt(p),height:ct(g),colWidths:p,rowHeights:g,cells:zt(3,3,false),rotation:0,style:{...u,fillColor:"#ffffff",strokeWidth:2}}}default:return {id:o,type:"rectangle",x:e.x,y:e.y,width:a,height:l,rotation:0,style:u}}}var Fo=new Set(["table","mind-map"]);function p0(r,e){if(!(!e||e.type!==r)&&!Fo.has(r)){if(r==="circle"){let t=e.radius;return typeof t=="number"&&t>0?{width:t*2,height:t*2}:void 0}if("width"in e&&"height"in e){let{width:t,height:i}=e;if(t>0&&i>0)return {width:t,height:i}}}}function g0(r,e,t){let i=ce*.6,n=[r];for(let u of e)n.push($e(u));for(let u of t)n.push(ve(u));let s=Math.max(...n.map(u=>u.length),0)*i+de*2,a=Math.max(Cn,s),l=e.length>0?e.length*G+O*2:O*2,h=t.length>0?t.length*G+O*2:O*2,d=xe+l+h;return {width:a,height:d}}function An(r,e){let t=ce*.6,i=[r,...e.map(a=>ve(a))],n=Math.max(...i.map(a=>a.length),0),o=Math.max(Cn,n*t+de*2),s=e.length>0?e.length*G+O*2:O*2;return {width:o,height:xe+s}}var Bo=new Set(["rectangle","rounded-rectangle","circle","ellipse","diamond","triangle","hexagon","parallelogram","trapezoid","pentagon","octagon","star","cylinder","cloud","heart","block-arrow-right","block-arrow-left","block-arrow-up","block-arrow-down","block-arrow-double","right-triangle","cross","speech-rect","speech-round","cube","sector","delay","predefined-process","document","stadium","class-catalog","chevron","brace-left","brace-right","envelope","checkbox","triangular-pyramid","quadrangular-pyramid","cuboid","sphere","ellipsoid","pie","hollow-pie","sticky-note","icon"]),Sn=12,No=5,R=class extends ne{type;pressPoint=null;draftId=null;dragging=false;constructor(e,t){super(e),this.type=t;}onPointerDown(e,t){let i=this.type==="sticky-note"?this.context.getStickyNoteColor():void 0;this.pressPoint=e,this.dragging=false,this.draftId=null;let n=He(this.type,e,void 0,i);this.context.commitHistory(),this.context.addShape(n),this.context.selectShape(n.id,false),this.draftId=n.id;}onPointerMove(e,t){if(!this.pressPoint||!this.draftId||!Bo.has(this.type))return;let i=e.x-this.pressPoint.x,n=e.y-this.pressPoint.y;if(!this.dragging){let u=this.context.getCamera().getZoom();if(Math.hypot(i,n)*u<No)return;this.dragging=true;}if(!this.context.getShapes().find(u=>u.id===this.draftId))return;let s=kn[this.type]||{width:120,height:60},a=i===0?0:i<0?-1:1,l=n===0?0:n<0?-1:1;if(this.type==="circle"){let u=Math.max(Math.abs(i),Math.abs(n))/2;this.context.updateShape(this.draftId,{x:this.pressPoint.x+a*u,y:this.pressPoint.y+l*u,radius:Math.max(u,Sn/2)});return}let h=Math.abs(i),d=Math.abs(n);if(t.shiftKey){let u=s.height/s.width;h/s.width>=d/(s.width*u)?d=h*u:h=d/u;}h=Math.max(h,Sn),d=Math.max(d,Sn),this.context.updateShape(this.draftId,{x:this.pressPoint.x+a*h/2,y:this.pressPoint.y+l*d/2,width:h,height:d,...this.type==="rounded-rectangle"?{borderRadius:Math.min(16,(s.borderRadius??8)*Math.max(1,h/s.width))}:{}});}onPointerUp(e,t){this.pressPoint=null,this.draftId=null,this.dragging=false,this.context.setActiveTool("select");}onKeyDown(e){if(e.key==="Escape"&&this.dragging&&this.pressPoint&&this.draftId){let t=kn[this.type]||{width:120,height:60};this.context.getShapes().find(n=>n.id===this.draftId)&&(this.type==="circle"?this.context.updateShape(this.draftId,{x:this.pressPoint.x,y:this.pressPoint.y,radius:t.radius??t.width/2}):this.context.updateShape(this.draftId,{x:this.pressPoint.x,y:this.pressPoint.y,width:t.width,height:t.height,...this.type==="rounded-rectangle"?{borderRadius:t.borderRadius??8}:{}})),this.pressPoint=null,this.draftId=null,this.dragging=false;}}onKeyUp(e){}hasTransientState(){return this.dragging}cancelTransient(){return this.dragging?(this.pressPoint=null,this.draftId=null,this.dragging=false,true):false}getCursor(e){return this.context.getMindMapCursorHitAtPoint(e)?"pointer":"crosshair"}};var vn={n:"top",e:"right",s:"bottom",w:"left"},Dt={top:{x:0,y:-1},bottom:{x:0,y:1},left:{x:-1,y:0},right:{x:1,y:0}};function f0(r,e,t){return Lt(r,e,t?Dt[vn[t]]:void 0)}function Lt(r,e,t){let i=e.x-r.x,n=e.y-r.y;return t&&t.x!==0?i>=0?"left":"right":t&&t.y!==0?n>=0?"top":"bottom":Math.abs(i)>=Math.abs(n)?i>=0?"left":"right":n>=0?"top":"bottom"}function vi(r,e,t){switch(t){case "top":return {x:r.x,y:r.y-e.height/2};case "bottom":return {x:r.x,y:r.y+e.height/2};case "left":return {x:r.x-e.width/2,y:r.y};case "right":return {x:r.x+e.width/2,y:r.y}}}function re(r,e,t,i=.5){let n=Math.min(r.x,e.x),o=Math.max(r.x,e.x),s=Math.min(r.y,e.y),a=Math.max(r.y,e.y);return n<t.x+t.width-i&&o>t.x+i&&s<t.y+t.height-i&&a>t.y+i}function m0(r,e,t,i,n){let o=t==="x"?e.x:e.y,s=t==="x"?e.x+e.width:e.y+e.height;if(r>o&&r<s){let a=o-n,l=s+n;return Math.abs(i-a)<=Math.abs(i-l)?a:l}return r}function Ii(r,e,t,i,n,o){let s=e.x-r.x,a=e.y-r.y;if((Math.abs(s)<1||Math.abs(a)<1)&&!(n?.box&&re(r,e,n.box)||o?.box&&re(r,e,o.box)))return [e];let l=r.x+s/2,h=r.y+a/2,d=(g,m)=>{if(!m)return false;let f=r;for(let y of g){if(re(f,y,m))return true;f=y;}return false},u=g=>{if(!(g==="H"?!!n?.n&&n.n.x!==0&&!!o?.n&&o.n.x!==0:!!n?.n&&n.n.y!==0&&!!o?.n&&o.n.y!==0))return null;let f=[n?.box,o?.box].filter(x=>!!x);if(f.length===0)return null;if(g==="H"){let x=Math.min(r.y,e.y,...f.map(Y=>Y.y))-i,C=Math.max(r.y,e.y,...f.map(Y=>Y.y+Y.height))+i,z=Math.abs(r.y-x)+Math.abs(e.y-x),L=Math.abs(r.y-C)+Math.abs(e.y-C),P=z<=L?x:C,N=[{x:r.x,y:P},{x:e.x,y:P},e];return d(N,n?.box)||d(N,o?.box)?null:N}let y=Math.min(r.x,e.x,...f.map(x=>x.x))-i,k=Math.max(r.x,e.x,...f.map(x=>x.x+x.width))+i,S=Math.abs(r.x-y)+Math.abs(e.x-y),v=Math.abs(r.x-k)+Math.abs(e.x-k),I=S<=v?y:k,w=[{x:I,y:r.y},{x:I,y:e.y},e];return d(w,n?.box)||d(w,o?.box)?null:w},p=g=>{let m;g==="H"?(m=Math.max(r.x,Math.min(l,e.x)),n?.box&&n.n&&n.n.x!==0&&(n.n.x<0&&m>r.x&&(m=r.x),n.n.x>0&&m<r.x&&(m=r.x)),o?.box&&o.n&&o.n.x!==0&&(o.n.x<0&&m>e.x&&(m=e.x),o.n.x>0&&m<e.x&&(m=e.x)),n?.box&&re({x:m,y:r.y},{x:m,y:e.y},n.box)&&(m=n.n&&n.n.x!==0?r.x:m0(m,n.box,"x",e.x,i)),o?.box&&re({x:m,y:r.y},{x:m,y:e.y},o.box)&&(m=o.n&&o.n.x!==0?e.x:m0(m,o.box,"x",r.x,i)),n?.box&&re(r,{x:m,y:r.y},n.box)?m=r.x:o?.box&&re({x:m,y:e.y},e,o.box)&&(m=e.x)):(m=Math.max(r.y,Math.min(h,e.y)),n?.box&&n.n&&n.n.y!==0&&(n.n.y<0&&m>r.y&&(m=r.y),n.n.y>0&&m<r.y&&(m=r.y)),o?.box&&o.n&&o.n.y!==0&&(o.n.y<0&&m>e.y&&(m=e.y),o.n.y>0&&m<e.y&&(m=e.y)),n?.box&&re({x:r.x,y:m},{x:e.x,y:m},n.box)&&(m=n.n&&n.n.y!==0?r.y:m0(m,n.box,"y",e.y,i)),o?.box&&re({x:r.x,y:m},{x:e.x,y:m},o.box)&&(m=o.n&&o.n.y!==0?e.y:m0(m,o.box,"y",r.y,i)),n?.box&&re(r,{x:r.x,y:m},n.box)?m=r.y:o?.box&&re({x:e.x,y:m},e,o.box)&&(m=e.y));let f=g==="H"?[{x:m,y:r.y},{x:m,y:e.y},e]:[{x:r.x,y:m},{x:e.x,y:m},e],y=!!n?.box&&(re(r,f[0],n.box)||re(f[0],f[1],n.box)||re(f[1],e,n.box))||!!o?.box&&(re(r,f[0],o.box)||re(f[0],f[1],o.box)||re(f[1],e,o.box));return {pts:f,crosses:y}};if(t){let g=p(t);if(g.crosses&&(n?.box||o?.box)){let m=p(t==="H"?"V":"H");if(!m.crosses)return m.pts;let f=u(t);if(f)return f}return g.pts}return Math.abs(s)>=Math.abs(a)?[{x:l,y:r.y},{x:l,y:e.y},e]:[{x:r.x,y:h},{x:e.x,y:h},e]}var In=24;function _o(r,e){if(r.length<2)return r;let t=r[r.length-1],i=r[r.length-2],n=Math.abs(t.y-i.y)<1e-6;if(e==="H"?n:!n)return r;let o=e==="H"?{x:i.x,y:t.y}:{x:t.x,y:i.y},s=r.slice(0,-1);return s.push(o,t),s}function Ht(r,e={},t=In,i=r.length===2){if(r.length<2)return r;let n=[];n.push(r[0]);let o=r.length-1,s=t,a=r[0],l=r[o];e.fromN&&e.toN&&(e.fromN.x!==0&&e.toN.x!==0?s=Math.min(s,Math.abs(l.x-a.x)/2):e.fromN.y!==0&&e.toN.y!==0&&(s=Math.min(s,Math.abs(l.y-a.y)/2)));for(let h=1;h<r.length;h++){let d=r[h-1],u=r[h],p=h===1,g=h===o,m=p&&e.fromN?{x:d.x+e.fromN.x*s,y:d.y+e.fromN.y*s}:d,f=g&&e.toN?{x:u.x+e.toN.x*s,y:u.y+e.toN.y*s}:u;p&&e.fromN&&n.push(m);let y=p?e.fromN:void 0,k=g?e.toN:void 0,S=k?k.x!==0?"H":"V":y?y.x!==0?"H":"V":void 0,v=i&&p&&e.fromN&&e.fromBox?{box:e.fromBox,n:e.fromN}:void 0,I=i&&g&&e.toN&&e.toBox?{box:e.toBox,n:e.toN}:void 0,w=Ii(m,f,S,s,v,I);S&&(w=_o(w,S));for(let x of w)n.push(x);g&&e.toN&&n.push(u);}return ft(n)}var zn=14,Tn=200,y0=class extends ne{type="eraser";erasing=false;lastPoint=null;erasedIds=new Set;onPointerDown(e){this.erasing=true,this.lastPoint=e,this.erasedIds.clear(),this.context.commitHistory(),this.context.setEraserPoint(e),this.eraseAt(e);}onPointerMove(e){if(!this.erasing||!this.lastPoint)return;let t=this.lastPoint,i=Math.hypot(e.x-t.x,e.y-t.y),n=Math.max(1,Math.ceil(i/Math.max(this.brushRadius()*.5,1)));for(let o=1;o<=n;o++){let s=o/n;this.eraseAt({x:t.x+(e.x-t.x)*s,y:t.y+(e.y-t.y)*s});}this.lastPoint=e,this.context.setEraserPoint(e);}onPointerUp(){this.erasing=false,this.lastPoint=null,this.erasedIds.clear(),this.context.setEraserPoint(null);}onKeyDown(){}onKeyUp(){}getCursor(){return this.erasing?"grabbing":"crosshair"}dispose(){this.erasing=false,this.lastPoint=null,this.erasedIds.clear(),this.context.setEraserPoint(null);}brushRadius(){return zn/this.context.getCamera().getZoom()}eraseAt(e){let t=this.context.getShapesInBrushRadius(e,this.brushRadius());for(let i of t)this.erasedIds.has(i.id)||(this.erasedIds.add(i.id),this.context.eraseShape(i.id));}};var ut=[3,2.2];function be(r,e,t){let i=o=>(o-.5)*e,n=o=>(o-.5)*t;return r.map(o=>o[0]==="Z"?o:o[0]==="M"||o[0]==="L"?[o[0],i(o[1]),n(o[2])]:["C",i(o[1]),n(o[2]),i(o[3]),n(o[4]),i(o[5]),n(o[6])])}function K(r,e,t,i,n,o,s){let a=[],l=o-n,h=Math.max(1,Math.ceil(Math.abs(l)/90)),d=l/h,u=4/3*Math.tan(d*Math.PI/180/4),p=f=>{let y=f*Math.PI/180;return [r+t*Math.cos(y),e+i*Math.sin(y)]},[g,m]=p(n);a.push(s?["M",g,m]:["L",g,m]);for(let f=0;f<h;f++){let y=n+d*f,k=y+d,S=y*Math.PI/180,v=k*Math.PI/180,[I,w]=p(y),[x,C]=p(k);a.push(["C",I-u*t*Math.sin(S),w+u*i*Math.cos(S),x+u*t*Math.sin(v),C-u*i*Math.cos(v),x,C]);}return a}function $o(r){let e=1/0,t=1/0,i=-1/0,n=-1/0,o=(g,m)=>{g<e&&(e=g),m<t&&(t=m),g>i&&(i=g),m>n&&(n=m);},s=0,a=0,l=0,h=0;for(let g of r){if(g[0]==="Z"){o(l,h);continue}if(g[0]==="M"||g[0]==="L"){s=g[1],a=g[2],g[0]==="M"&&(l=s,h=a),o(s,a);continue}let m=g[1],f=g[2],y=g[3],k=g[4],S=g[5],v=g[6];for(let I=0;I<=12;I++){let w=I/12,x=1-w,C=x*x*x,z=3*x*x*w,L=3*x*w*w,P=w*w*w;o(C*s+z*m+L*y+P*S,C*a+z*f+L*k+P*v);}s=S,a=v;}let d=i-e||1,u=n-t||1,p=(g,m)=>[(g-e)/d,(m-t)/u];return r.map(g=>{if(g[0]==="Z")return g;if(g[0]==="M"||g[0]==="L"){let[I,w]=p(g[1],g[2]);return [g[0],I,w]}let[m,f]=p(g[1],g[2]),[y,k]=p(g[3],g[4]),[S,v]=p(g[5],g[6]);return ["C",m,f,y,k,S,v]})}function Zo(){let r={x:.24,y:.7,r:.24},e={x:.5,y:.48,r:.36},t={x:.76,y:.7,r:.24},i=[...K(r.x,r.y,r.r,r.r,90,246,true),...K(e.x,e.y,e.r,e.r,180,360,false),...K(t.x,t.y,t.r,t.r,294,450,false),["Z"]];return $o(i)}var ae=.14,Hn=.5523,ht=ae*Hn,Pt=1-ae,dt=.5-.5*Hn,Oo={outline:[["M",0,ae],["L",0,Pt],["C",0,Pt+ht,dt,1,.5,1],["C",1-dt,1,1,Pt+ht,1,Pt],["L",1,ae],["C",1,ae-ht,1-dt,0,.5,0],["C",dt,0,0,ae-ht,0,ae],["Z"]],seams:[[["M",0,ae],["C",0,ae+ht,dt,ae*2,.5,ae*2],["C",1-dt,ae*2,1,ae+ht,1,ae]]],hiddenSeams:[K(.5,Pt,.5,ae,180,360,true)]},Go={outline:Zo()},Uo={outline:[["M",.5,.97],["C",.5,.97,.03,.66,.03,.35],["C",.03,.17,.16,.04,.31,.04],["C",.41,.04,.47,.1,.5,.17],["C",.53,.1,.59,.04,.69,.04],["C",.84,.04,.97,.17,.97,.35],["C",.97,.66,.5,.97,.5,.97],["Z"]]},M0=[["M",0,.25],["L",.58,.25],["L",.58,0],["L",1,.5],["L",.58,1],["L",.58,.75],["L",0,.75],["Z"]];function Dn(r,e){let t=(i,n)=>{switch(e){case "down":return [1-n,i];case "left":return [1-i,1-n];case "up":return [n,1-i];default:return [i,n]}};return r.map(i=>{if(i[0]==="Z")return i;if(i[0]==="M"||i[0]==="L"){let[d,u]=t(i[1],i[2]);return [i[0],d,u]}let[n,o]=t(i[1],i[2]),[s,a]=t(i[3],i[4]),[l,h]=t(i[5],i[6]);return ["C",n,o,s,a,l,h]})}var b0={right:M0,left:Dn(M0,"left"),up:Dn(M0,"up"),down:Dn(M0,"down")},jo={outline:[["M",0,0],["L",0,1],["L",1,1],["Z"]]},Wo={outline:[["M",.34,0],["L",.66,0],["L",.66,.34],["L",1,.34],["L",1,.66],["L",.66,.66],["L",.66,1],["L",.34,1],["L",.34,.66],["L",0,.66],["L",0,.34],["L",.34,.34],["Z"]]},Ko={outline:[["M",0,.5],["L",.22,.13],["L",.22,.34],["L",.78,.34],["L",.78,.13],["L",1,.5],["L",.78,.87],["L",.78,.66],["L",.22,.66],["L",.22,.87],["Z"]]},Yo={outline:[["M",0,0],["L",1,0],["L",1,.8],["L",.32,.8],["L",.2,1],["L",.15,.8],["L",0,.8],["Z"]]},Xo={outline:[...K(.5,.4,.5,.4,100,-228,true),["L",.19,1],["Z"]]},zi={outline:[["M",.5,0],["L",1,.25],["L",1,.75],["L",.5,1],["L",0,.75],["L",0,.25],["Z"]],seams:[[["M",.5,.5],["L",.5,1]],[["M",.5,.5],["L",0,.25]],[["M",.5,.5],["L",1,.25]]],hiddenSeams:[[["M",.5,.5],["L",.5,0]],[["M",.5,.5],["L",0,.75]],[["M",.5,.5],["L",1,.75]]]},qo={outline:[...K(.5,.5,.5,.5,0,-270,true),["L",.5,.5],["Z"]]},Jo={outline:[["M",0,0],...K(.6,.5,.4,.5,270,450,false),["L",0,1],["Z"]]},Qo={outline:[["M",0,0],["L",1,0],["L",1,1],["L",0,1],["Z"]],seams:[[["M",.12,0],["L",.12,1]],[["M",.88,0],["L",.88,1]]]},e1={outline:[["M",0,0],["L",1,0],["L",1,.84],["C",.72,1.06,.28,.62,0,.84],["Z"]]},t1={outline:[["M",0,0],["L",1,0],["L",1,1-pe],["L",1-pe,1],["L",0,1],["Z"]],shadow:pi,overlays:[{cmds:[["M",1-pe,1],["L",1-pe,1-pe],["L",1,1-pe],["Z"]],fill:"auto",deriveFill:di}]},n1={outline:[["M",0,0],["L",.45,0],["L",1,.5],["L",.45,1],["L",0,1],["L",.42,.5],["Z"]]};function i1(r){let e=t=>1-t;return r.map(t=>t[0]==="Z"?t:t[0]==="M"||t[0]==="L"?[t[0],e(t[1]),t[2]]:["C",e(t[1]),t[2],e(t[3]),t[4],e(t[5]),t[6]])}var Et=.16,Di={outline:[["M",.015,.02],["C",.075,.02,.1,.08,.1,.2],["C",.1,.36,.125,.5,.16,.5],["C",.125,.5,.1,.64,.1,.8],["C",.1,.92,.075,.98,.015,.98]],strokeOnly:true},o1={outline:i1(Di.outline),strokeOnly:true};function x0(r){if(r.type!=="brace-left"&&r.type!=="brace-right")return 0;let e=(r.width??0)*Et/2;return r.type==="brace-left"?e:-e}var r1={outline:[["M",0,0],["L",1,0],["L",1,1],["L",0,1],["Z"]],seams:[[["M",.1,0],["L",.1,1]],[["M",.9,0],["L",.9,1]]]},s1={outline:[["M",0,0],["L",1,0],["L",1,1],["L",0,1],["Z"]],seams:[[["M",0,0],["L",1,1]],[["M",1,0],["L",0,1]]]},se=.12,Pe=se*Hn,a1={outline:[["M",se,0],["L",1-se,0],["C",1-se+Pe,0,1,Pe,1,se],["L",1,1-se],["C",1,1-se+Pe,1-se+Pe,1,1-se,1],["L",se,1],["C",se-Pe,1,0,1-se+Pe,0,1-se],["L",0,se],["C",0,se-Pe,se-Pe,0,se,0],["Z"]],seams:[[["M",.26,.53],["L",.43,.72],["L",.77,.29]]]},l1={outline:[["M",.5,.03],["L",.94,.75],["L",.5,.97],["L",.06,.75],["Z"]],seams:[[["M",.5,.03],["L",.5,.97]]],hiddenSeams:[[["M",.06,.75],["L",.94,.75]]]},c1={outline:[["M",.5,.03],["L",.96,.74],["L",.5,.97],["L",.04,.74],["Z"]],seams:[[["M",.5,.03],["L",.5,.97]]],hiddenSeams:[[["M",.5,.51],["L",.04,.74]],[["M",.5,.51],["L",.96,.74]]]},h1={outline:K(.5,.5,.5,.5,0,360,true),seams:[K(.5,.5,.5,ae,0,180,true)],hiddenSeams:[K(.5,.5,.5,ae,180,360,true)]},ze=.5,Se=.35,Ee=.3,oe=Se;function Ti(r){let e=r*Math.PI/180;return [["M",.5,oe],["L",.5+ze*Math.cos(e),oe+Se*Math.sin(e)]]}var d1={outline:[...K(.5,oe,ze,Se,180,0,true),["L",1,oe+Ee],...K(.5,oe+Ee,ze,Se,0,180,false),["L",0,oe],["Z"]],seams:[K(.5,oe,ze,Se,180,360,true),Ti(300),Ti(120)],hiddenSeams:[K(.5,oe+Ee,ze,Se,180,360,true)]},w0=.2,Ln=.14,u1={outline:[...K(.5,oe,ze,Se,180,0,true),["L",1,oe+Ee],...K(.5,oe+Ee,ze,Se,0,180,false),["L",0,oe],["Z"],...K(.5,oe,w0,Ln,0,180,true),["L",.5-w0,oe+Ee],...K(.5,oe+Ee,w0,Ln,180,0,false),["Z"]],seams:[K(.5,oe,ze,Se,180,360,true),K(.5,oe,w0,Ln,180,360,true)],hiddenSeams:[K(.5,oe+Ee,ze,Se,180,360,true)]};function Rt(r){switch(r){case "cylinder":return Oo;case "envelope":return s1;case "checkbox":return a1;case "cuboid":return zi;case "triangular-pyramid":return l1;case "quadrangular-pyramid":return c1;case "sphere":case "ellipsoid":return h1;case "pie":return d1;case "hollow-pie":return u1;case "cloud":return Go;case "heart":return Uo;case "class-catalog":return r1;case "block-arrow-right":return {outline:b0.right};case "block-arrow-left":return {outline:b0.left};case "block-arrow-up":return {outline:b0.up};case "block-arrow-down":return {outline:b0.down};case "block-arrow-double":return Ko;case "right-triangle":return jo;case "cross":return Wo;case "speech-rect":return Yo;case "speech-round":return Xo;case "cube":return zi;case "sector":return qo;case "delay":return Jo;case "predefined-process":return Qo;case "document":return e1;case "sticky-note":return t1;case "chevron":return n1;case "brace-left":return Di;case "brace-right":return o1;default:return}}var Ye=class r{ctx;width=0;height=0;dpr=window.devicePixelRatio||1;showGrid=false;textLayoutCache=new Map;tableSelection=null;setTableSelection(e){this.tableSelection=e;}hoverShapeId=null;static TEXT_CACHE_LIMIT=500;constructor(e,t){let i=e.getContext("2d");if(!i)throw new Error("Failed to get Canvas 2D context");this.ctx=i,typeof t=="number"&&t>0&&(this.dpr=t);}resize(e,t){let i=Math.max(1,Math.round(e*this.dpr)/this.dpr),n=Math.max(1,Math.round(t*this.dpr)/this.dpr);this.width=i,this.height=n;let o=Math.round(i*this.dpr),s=Math.round(n*this.dpr);(this.ctx.canvas.width!==o||this.ctx.canvas.height!==s)&&(this.ctx.canvas.width=o,this.ctx.canvas.height=s,this.ctx.canvas.style.width=`${i}px`,this.ctx.canvas.style.height=`${n}px`);}setShowGrid(e){this.showGrid=e;}render(e,t,i,n,o,s,a,l,h,d,u,p,g,m,f){let y=this.ctx,k=t.getZoom(),S=t.x,v=t.y;this.hoverShapeId=g??null,y.setTransform(1,0,0,1,0,0),y.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),y.setLineDash([]),y.lineCap="butt",y.lineJoin="miter",y.globalAlpha=1,p&&(y.fillStyle=p,y.fillRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height));let I=this.dpr*k;y.setTransform(I,0,0,I,I*S,I*v),this.showGrid&&this.drawGrid(y,k,S,v);let w=null;for(let C of e)if(C.type==="arrow"&&(C.startBinding||C.endBinding)){w=new Map,e.forEach(z=>w.set(z.id,z));break}let x=w??new Map;if(e.forEach(C=>{y.save();let z=f?.get(C.id);z!==void 0&&(y.globalAlpha=y.globalAlpha*Math.max(0,Math.min(1,z))),y.translate(C.x,C.y),y.rotate(C.rotation),(C.flipX||C.flipY)&&y.scale(C.flipX?-1:1,C.flipY?-1:1);let L=i.has(C.id);this.drawShape(y,C,L,k,x,h,d,u),y.restore();}),i.size>0&&this.drawGroupFrames(y,e,i,k),this.drawGroupLockBadges(y,e,k),a&&this.drawGenerationPreview(y,a,k,e,x),g&&!i.has(g)){let C=e.find(z=>z.id===g);C&&this.drawConnectionDots(y,this.getShapeWorldBounds(C),k,.6);}if(m&&!i.has(m)){let C=e.find(z=>z.id===m);if(C){let z=this.getConnectorRoute(C,x);z.length>=2&&this.drawLinearHighlight(y,z,k,.22,9);}}n&&this.drawBrushRect(y,n,k),o&&o.length>0&&this.drawSnapGuides(y,o,k),s&&this.drawConnectingTargetHighlight(y,s,e,k),l&&this.drawEraserBrush(y,l,k),y.setTransform(1,0,0,1,0,0);}drawEraserBrush(e,t,i){let n=zn/i;e.beginPath(),e.arc(t.x,t.y,n,0,Math.PI*2),e.fillStyle=J(V.primary,.12),e.fill(),e.strokeStyle=J(V.primary,.55),e.lineWidth=1.5/i,e.stroke();}drawConnectingTargetHighlight(e,t,i,n){let o=i.find(h=>h.id===t);if(!o||o.type==="line"||o.type==="arrow"||o.type==="draw")return;let s=this.getShapeWorldBounds(o),a=[{x:s.x+s.width/2,y:s.y},{x:s.x+s.width,y:s.y+s.height/2},{x:s.x+s.width/2,y:s.y+s.height},{x:s.x,y:s.y+s.height/2}],l=6/n;e.save(),a.forEach(h=>{e.beginPath(),e.arc(h.x,h.y,l,0,Math.PI*2),e.fillStyle=V.selection.handleFill,e.fill(),e.strokeStyle=V.primary,e.lineWidth=2/n,e.stroke();}),e.restore();}getShapeWorldBounds(e){let t=this.getShapeBounds(e);return {x:e.x+t.x,y:e.y+t.y,width:t.width,height:t.height}}drawBrushRect(e,t,i){e.save(),e.fillStyle=V.brushFill,e.strokeStyle=V.brushStroke,e.lineWidth=1.5/i,e.setLineDash([4/i,4/i]),e.beginPath(),e.rect(t.x,t.y,t.width,t.height),e.fill(),e.stroke(),e.restore();}drawGrid(e,t,i,n){let o=-i,s=-n,a=o+this.width/t,l=s+this.height/t,h=20;for(;h*t<10;)h*=2;let d=this.dpr*t,u=Math.max(1,Math.round(h*d)),p=(k,S)=>(k%S+S)%S,g=p(Math.round(i*d),u)+.5,m=p(Math.round(n*d),u)+.5,f=this.width*this.dpr,y=this.height*this.dpr;e.strokeStyle=V.grid,e.lineWidth=1/d,e.setLineDash([]),e.beginPath();for(let k=g;k<=f;k+=u){let S=k/d-i;e.moveTo(S,s),e.lineTo(S,l);}for(let k=m;k<=y;k+=u){let S=k/d-n;e.moveTo(o,S),e.lineTo(a,S);}e.stroke();}drawShape(e,t,i,n,o,s,a,l){switch(this.applyStyle(e,t.style,n),t.type){case "rectangle":this.drawRectangle(e,t,i);break;case "rounded-rectangle":this.drawRoundedRectangle(e,t,i);break;case "circle":this.drawCircle(e,t,i);break;case "ellipse":this.drawEllipse(e,t,i);break;case "diamond":this.drawDiamond(e,t,i);break;case "triangle":this.drawTriangle(e,t,i);break;case "hexagon":this.drawHexagon(e,t,i);break;case "parallelogram":this.drawParallelogram(e,t,i);break;case "trapezoid":this.drawTrapezoid(e,t,i);break;case "pentagon":this.drawPentagon(e,t,i);break;case "octagon":this.drawOctagon(e,t,i);break;case "star":this.drawStar(e,t,i);break;case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "sticky-note":this.drawPathShape(e,t,i,n);break;case "stadium":this.drawStadium(e,t,i);break;case "uml-class":this.drawUmlClass(e,t,i);break;case "uml-interface":this.drawUmlInterface(e,t,i);break;case "mind-map":this.drawMindMap(e,t,i,s,a,l);break;case "table":this.drawTable(e,t,n);break;case "icon":this.drawIcon(e,t);break;case "image":this.drawImageShape(e,t);break;case "line":this.drawLine(e,t,o,i,n);break;case "arrow":this.drawArrow(e,t,o,i,n);break;case "text":this.drawText(e,t);break;case "draw":this.drawFreehand(e,t);break}if(t.text&&t.type!=="text"&&t.type!=="line"&&t.type!=="arrow"&&t.type!=="draw"&&t.type!=="table"&&(t.flipX||t.flipY?(e.save(),e.scale(t.flipX?-1:1,t.flipY?-1:1),this.drawShapeText(e,t),e.restore()):this.drawShapeText(e,t)),i){let h=t.type==="line"||t.type==="arrow";t.type==="mind-map"||(h?this.drawSelectionHandles(e,t,n,o):(this.drawSelectionOutline(e,t,n),this.drawSelectionHandles(e,t,n)));}t.type==="table"&&(i||this.hoverShapeId===t.id)&&this.drawTableMoveHandle(e,t,n),t.locked&&!t.groupId&&this.drawLockBadge(e,t,n);}drawTableMoveHandle(e,t,i){let n=s0(t,i),o=4/i;e.save(),e.setLineDash([]),e.fillStyle="#ffffff",e.strokeStyle=J(V.selection.outline,.55),e.lineWidth=1/i,e.beginPath(),e.roundRect(n.x,n.y,n.width,n.height,o),e.fill(),e.stroke(),e.fillStyle=J(V.selection.outline,.85);let s=1.4/i,a=n.width/3,l=n.height/4;for(let h=1;h<=2;h++)for(let d=1;d<=3;d++)e.beginPath(),e.arc(n.x+a*h,n.y+l*d,s,0,Math.PI*2),e.fill();e.restore();}applyStyle(e,t,i){let n=t.strokeOpacity??1;e.strokeStyle=n<1&&t.strokeColor!=="transparent"?J(t.strokeColor,n):t.strokeColor,e.lineWidth=t.strokeWidth/i,e.lineCap="round",e.lineJoin="round";let o=t.fillOpacity??1;o<1&&t.fillColor!=="transparent"?e.fillStyle=J(t.fillColor,o):e.fillStyle=t.fillColor,t.strokeDash?e.setLineDash(t.strokeDash):e.setLineDash([]);}drawRectangle(e,t,i){e.beginPath(),e.rect(-t.width/2,-t.height/2,t.width,t.height),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawRoundedRectangle(e,t,i){let{width:n,height:o,borderRadius:s}=t;e.beginPath(),e.roundRect(-n/2,-o/2,n,o,s),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawStadium(e,t,i){let{width:n,height:o}=t;e.beginPath(),e.roundRect(-n/2,-o/2,n,o,Math.min(n,o)/2),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawCircle(e,t,i){e.beginPath(),e.arc(0,0,t.radius,0,Math.PI*2),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawEllipse(e,t,i){e.beginPath(),e.ellipse(0,0,t.width/2,t.height/2,0,0,Math.PI*2),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawDiamond(e,t,i){e.beginPath(),e.moveTo(0,-t.height/2),e.lineTo(t.width/2,0),e.lineTo(0,t.height/2),e.lineTo(-t.width/2,0),e.closePath(),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawTriangle(e,t,i){e.beginPath(),e.moveTo(0,-t.height/2),e.lineTo(t.width/2,t.height/2),e.lineTo(-t.width/2,t.height/2),e.closePath(),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawHexagon(e,t,i){let n=t.width/2,o=t.height/2;e.beginPath();for(let s=0;s<6;s++){let a=s*Math.PI/3-Math.PI/2,l=n*Math.cos(a),h=o*Math.sin(a);s===0?e.moveTo(l,h):e.lineTo(l,h);}e.closePath(),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawParallelogram(e,t,i){let{width:n,height:o}=t,s=n*.2;e.beginPath(),e.moveTo(-n/2+s,-o/2),e.lineTo(n/2,-o/2),e.lineTo(n/2-s,o/2),e.lineTo(-n/2,o/2),e.closePath(),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawTrapezoid(e,t,i){let{width:n,height:o}=t,s=n*.15;e.beginPath(),e.moveTo(-n/2+s,-o/2),e.lineTo(n/2-s,-o/2),e.lineTo(n/2,o/2),e.lineTo(-n/2,o/2),e.closePath(),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawPentagon(e,t,i){let n=t.width/2,o=t.height/2;e.beginPath();for(let s=0;s<5;s++){let a=s*2*Math.PI/5-Math.PI/2,l=n*Math.cos(a),h=o*Math.sin(a);s===0?e.moveTo(l,h):e.lineTo(l,h);}e.closePath(),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawOctagon(e,t,i){let n=t.width/2,o=t.height/2;e.beginPath();for(let s=0;s<8;s++){let a=s*Math.PI/4-Math.PI/8,l=n*Math.cos(a),h=o*Math.sin(a);s===0?e.moveTo(l,h):e.lineTo(l,h);}e.closePath(),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawStar(e,t,i){let n=t.width/2,o=t.height/2,s=5,a=.4;e.beginPath();for(let l=0;l<s*2;l++){let h=l*Math.PI/s-Math.PI/2,d=l%2===0?1:a,u=n*d*Math.cos(h),p=o*d*Math.sin(h);l===0?e.moveTo(u,p):e.lineTo(u,p);}e.closePath(),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawPathShape(e,t,i,n){let o=Rt(t.type);if(o){if(this.tracePath(e,be(o.outline,t.width,t.height)),!o.strokeOnly&&t.style.fillColor!=="transparent"&&(o.shadow?(e.save(),e.shadowColor=J(o.shadow.color,o.shadow.opacity??.2),e.shadowBlur=o.shadow.blur,e.shadowOffsetX=o.shadow.offsetX??0,e.shadowOffsetY=o.shadow.offsetY??0,e.fill(),e.restore()):e.fill()),e.stroke(),o.overlays){let s=e.fillStyle;for(let a of o.overlays){let l=a.fill??"auto";if(l!=="none"){let h=l==="auto"?a.deriveFill?a.deriveFill(t.style.fillColor):t.style.fillColor:l;if(h&&h!=="transparent"){let d=t.style.fillOpacity??1;e.fillStyle=d<1?J(h,d):h,this.tracePath(e,be(a.cmds,t.width,t.height)),e.fill();}}a.stroke!==false&&(this.tracePath(e,be(a.cmds,t.width,t.height)),e.stroke());}e.fillStyle=s;}if(o.seams)for(let s of o.seams)this.tracePath(e,be(s,t.width,t.height)),e.stroke();if(o.hiddenSeams){let s=t.style.strokeWidth||1;e.setLineDash([s*ut[0]/n,s*ut[1]/n]);for(let a of o.hiddenSeams)this.tracePath(e,be(a,t.width,t.height)),e.stroke();e.setLineDash([]);}}}tracePath(e,t){e.beginPath();for(let i of t)switch(i[0]){case "M":e.moveTo(i[1],i[2]);break;case "L":e.lineTo(i[1],i[2]);break;case "C":e.bezierCurveTo(i[1],i[2],i[3],i[4],i[5],i[6]);break;case "Z":e.closePath();break}}drawImageShape(e,t){let i=t.width,n=t.height;if(!(i>0)||!(n>0))return;let o=-i/2,s=-n/2,a=Math.max(0,Math.min(t.borderRadius??0,i/2,n/2)),l=t.src?Ut(t.src):null,h=!!t.src&&V0(t.src);e.save(),a>0&&(e.beginPath(),e.roundRect(o,s,i,n,a),e.clip()),l?e.drawImage(l.img,o,s,i,n):(e.fillStyle=h?"#fee2e2":"#f3f4f6",e.fillRect(o,s,i,n),e.strokeStyle=h?"#fca5a5":"#e5e7eb",e.lineWidth=1,e.beginPath(),e.moveTo(o,s),e.lineTo(o+i,s+n),e.moveTo(o+i,s),e.lineTo(o,s+n),e.stroke()),e.restore();let d=t.style.strokeWidth??0;t.style.strokeColor&&t.style.strokeColor!=="transparent"&&d>0&&(e.save(),e.beginPath(),a>0?e.roundRect(o,s,i,n,a):e.rect(o,s,i,n),e.strokeStyle=t.style.strokeColor,e.lineWidth=d,e.stroke(),e.restore());}drawIcon(e,t){let i=Ue(t.iconId),n=t.style.fillColor!=="transparent"?t.style.fillColor:t.textColor||"#1f2937";if(e.save(),e.translate(-t.width/2,-t.height/2),e.scale(t.width/te,t.height/te),e.lineCap="round",e.lineJoin="round",!i){e.strokeStyle=n,e.lineWidth=1.4,e.setLineDash([3,3]),e.strokeRect(4,4,te-8,te-8),e.setLineDash([]),e.restore();return}i.disc&&(e.beginPath(),e.arc(te/2,te/2,te/2-1,0,Math.PI*2),e.fillStyle=i.disc,e.fill());for(let s of i.layers){let a=new Path2D(s.d),l=s.fill??"ink",h=s.stroke??"ink";l!=="none"&&(e.fillStyle=l==="ink"?n:l,e.fill(a)),h!=="none"&&(e.strokeStyle=h==="ink"?n:h,e.lineWidth=s.w??1.8,e.stroke(a));}let o=i.label;o&&(e.fillStyle=o.color,e.font=`${o.size??13}px sans-serif`,e.textAlign="center",e.textBaseline="middle",e.fillText(o.text,te/2,te/2+.5)),e.restore();}drawUmlClass(e,t,i){let{width:n,height:o,className:s,attributes:a,methods:l}=t,h=n/2,d=o/2,u=xe,p=a.length>0?a.length*G+O*2:O*2;e.beginPath(),e.rect(-h,-d,n,o),t.style.fillColor!=="transparent"&&(e.fillStyle=t.style.fillColor,e.fill()),e.stroke(),e.beginPath(),e.moveTo(-h,-d+u),e.lineTo(h,-d+u),e.moveTo(-h,-d+u+p),e.lineTo(h,-d+u+p),e.stroke(),e.save(),e.textBaseline="middle";let g=n-de*2,m=S=>{if(e.measureText(S).width<=g)return S;let v="\u2026",I=0,w=S.length;for(;I<w;){let x=I+w+1>>1;e.measureText(S.slice(0,x)+v).width<=g?I=x:w=x-1;}return S.slice(0,I)+v},f=(S,v,I,w,x,C,z)=>{let L=w||ce,P=x||"#1f2937";e.font=`${L}px sans-serif`,e.fillStyle=P,e.textAlign=z;let N=m(S);if(e.fillText(N,v,I),C){let Y=e.measureText(N).width,me=v;e.strokeStyle=P,e.beginPath(),e.moveTo(me,I),e.lineTo(me+Y,I),e.stroke();}};e.font=`bold ${t.fontSize||ce}px sans-serif`,e.textAlign="center",e.fillStyle=t.textColor||"#1f2937",e.fillText(m(s),0,-d+u/2);let y=-d+u+O+G/2;a.forEach((S,v)=>{let I=$e(S);I&&f(I,-h+de,y+v*G,S.fontSize||t.fontSize||0,S.textColor||t.textColor||"",!!S.strikethrough,"left");});let k=-d+u+p+O+G/2;l.forEach((S,v)=>{let I=ve(S);I&&f(I,-h+de,k+v*G,S.fontSize||t.fontSize||0,S.textColor||t.textColor||"",!!S.strikethrough,"left");}),e.restore();}drawTable(e,t,i){let{width:n,height:o}=t,s=n/2,a=o/2,l=Ke(t.cells);t.style.fillColor!=="transparent"&&(e.beginPath(),e.rect(-s,-a,n,o),e.fillStyle=t.style.fillColor,e.fill());for(let h=0;h<t.cells.length;h++)for(let d=0;d<(t.cells[h]?.length??0);d++){if(l[h]?.[d])continue;let u=t.cells[h][d];if(!u.fillColor)continue;let p=ue(t,h,d);e.fillStyle=u.fillColor,e.fillRect(p.ox-s,p.oy-a,p.width,p.height);}e.save(),e.strokeStyle=o0,e.lineWidth=1/i;for(let h=1;h<t.rowHeights.length;h++){let d=-a+t.rowHeights.slice(0,h).reduce((p,g)=>p+g,0),u=[];for(let p=0;p<h;p++)for(let g=0;g<(t.cells[p]?.length??0);g++){let f=t.cells[p][g].rowSpan??1;if(f>1&&p+f>h){let y=ue(t,p,g);u.push([y.ox-s,y.ox-s+y.width]);}}this.drawSegmentsWithGaps(e,-s,s,d,u,true);}for(let h=1;h<t.colWidths.length;h++){let d=-s+t.colWidths.slice(0,h).reduce((p,g)=>p+g,0),u=[];for(let p=0;p<h;p++)for(let g=0;g<t.cells.length;g++){let m=t.cells[g]?.[p];if(!m)continue;let f=m.colSpan??1;if(f>1&&p+f>h){let y=ue(t,g,p);u.push([y.oy-a,y.oy-a+y.height]);}}this.drawSegmentsWithGaps(e,-a,a,d,u,false);}e.restore(),e.beginPath(),e.rect(-s,-a,n,o),e.stroke(),e.save(),e.textBaseline="middle";for(let h=0;h<t.cells.length;h++)for(let d=0;d<(t.cells[h]?.length??0);d++){if(l[h]?.[d])continue;let u=t.cells[h][d];if(!u.text)continue;let p=ue(t,h,d),g=u.fontSize||t.fontSize||14;e.font=`${u.bold?"bold ":""}${g}px sans-serif`,e.fillStyle=u.textColor||t.textColor||r0;let m=p.width-20,f=p.height-8,y=g*1.3,k=this.getDisplayLines(e,t,u.text,g,m,Math.max(y,f),`cell:${u.bold?"b":"n"}`),S=p.ox-s,v=p.oy-a,I=v+It(k.length,y,p.height);e.save(),e.beginPath(),e.rect(S,v,p.width,p.height),e.clip(),k.forEach((w,x)=>{let C=I+x*y;u.align==="center"?(e.textAlign="center",e.fillText(w,S+p.width/2,C)):u.align==="right"?(e.textAlign="right",e.fillText(w,S+p.width-10,C)):(e.textAlign="left",e.fillText(w,S+10,C));}),e.restore();}if(e.restore(),this.tableSelection&&this.tableSelection.shapeId===t.id){let h=this.tableSelection,d=Tt(t,h.anchor.row,h.anchor.col,h.focus.row,h.focus.col),u=fn(t,d.r1,d.c1,d.r2,d.c2);e.save(),e.fillStyle=J(V.primary,.12),e.beginPath(),e.rect(u.x,u.y,u.width,u.height),e.fill(),e.strokeStyle=V.primary,e.lineWidth=1.5/i,e.setLineDash([]),e.stroke(),e.restore();}}drawSegmentsWithGaps(e,t,i,n,o,s){let a=[...o].sort((h,d)=>h[0]-d[0]),l=t;for(let[h,d]of a)if(h>l&&this.strokeGridSegment(e,l,Math.min(h,i),n,s),l=Math.max(l,d),l>=i)break;l<i&&this.strokeGridSegment(e,l,i,n,s);}strokeGridSegment(e,t,i,n,o){i-t<.5||(e.beginPath(),o?(e.moveTo(t,n),e.lineTo(i,n)):(e.moveTo(n,t),e.lineTo(n,i)),e.stroke());}drawUmlInterface(e,t,i){let{width:n,height:o,className:s,methods:a}=t,l=n/2,h=o/2,d=xe;e.beginPath(),e.rect(-l,-h,n,o),t.style.fillColor!=="transparent"&&(e.fillStyle=t.style.fillColor,e.fill()),e.stroke(),e.beginPath(),e.moveTo(-l,-h+d),e.lineTo(l,-h+d),e.stroke(),e.save(),e.textBaseline="middle";let u=n-de*2,p=y=>{if(e.measureText(y).width<=u)return y;let k="\u2026",S=0,v=y.length;for(;S<v;){let I=S+v+1>>1;e.measureText(y.slice(0,I)+k).width<=u?S=I:v=I-1;}return y.slice(0,S)+k},g=(y,k,S,v,I,w,x)=>{let C=v||ce,z=I||"#1f2937";e.font=`${C}px sans-serif`,e.fillStyle=z,e.textAlign=x;let L=p(y);if(e.fillText(L,k,S),w){let P=e.measureText(L).width,N=k;e.strokeStyle=z,e.beginPath(),e.moveTo(N,S),e.lineTo(N+P,S),e.stroke();}};e.font=`bold ${t.fontSize||ce}px sans-serif`,e.textAlign="center",e.fillStyle=t.textColor||"#1f2937";let m=`<<${s||"Interface"}>>`;e.fillText(p(m),0,-h+d/2);let f=-h+d+O+G/2;a.forEach((y,k)=>{let S=ve(y);S&&g(S,-l+de,f+k*G,y.fontSize||t.fontSize||0,y.textColor||t.textColor||"",!!y.strikethrough,"left");}),e.restore();}static DEFAULT_CORNER_RADIUS=10;static CONNECTION_LEAD=24;drawMindMap(e,t,i,n,o,s){let l=Z(t.root).positions;this.drawMindMapConnections(e,t.root,l),this.drawMindMapNodes(e,t,l,i,n,o),this.drawMindMapReorderIndicator(e,t,l,s);}drawMindMapConnections(e,t,i){let n=o=>{if(o.collapsed)return;let s=i.get(o.id);if(s)for(let a of o.children??[]){let l=i.get(a.id);if(!l)continue;let h=Ze(a,l.depth);e.strokeStyle=h,e.lineWidth=2,e.lineCap="round",e.beginPath();let d=l.direction,u,p,g,m;if(d==="right"?(u=s.x+s.width/2,p=s.y,g=l.x-l.width/2,m=l.y):d==="left"?(u=s.x-s.width/2,p=s.y,g=l.x+l.width/2,m=l.y):d==="down"?(u=s.x,p=s.y+s.height/2,g=l.x,m=l.y-l.height/2):(u=s.x,p=s.y-s.height/2,g=l.x,m=l.y+l.height/2),e.moveTo(u,p),d==="right"||d==="left"){let f=(u+g)/2;e.bezierCurveTo(f,p,f,m,g,m);}else {let f=(p+m)/2;e.bezierCurveTo(u,f,g,f,g,m);}e.stroke(),n(a);}};n(t);}drawMindMapNodes(e,t,i,n,o,s){let a=t.root,l=h=>{let d=i.get(h.id);if(!d)return;let u=Ze(h,d.depth),p=d.width/2,g=d.height/2;if(e.fillStyle="#ffffff",e.strokeStyle=u,e.lineWidth=2,e.beginPath(),e.roundRect(d.x-p,d.y-g,d.width,d.height,6),e.fill(),e.stroke(),s&&s.shapeId===t.id&&s.nodeId===h.id&&(e.fillStyle=J(V.primary,.06),e.strokeStyle=J(V.primary,.55),e.lineWidth=2,e.beginPath(),e.roundRect(d.x-p,d.y-g,d.width,d.height,6),e.fill(),e.stroke()),o&&o.shapeId===t.id&&o.nodeId===h.id&&(e.fillStyle=J(V.primary,.12),e.strokeStyle=V.primary,e.lineWidth=2.5,e.beginPath(),e.roundRect(d.x-p,d.y-g,d.width,d.height,6),e.fill(),e.stroke()),!!(h.children&&h.children.length>0)){let C=n0(d,d.direction);e.fillStyle="#ffffff",e.strokeStyle=u,e.lineWidth=2,e.beginPath(),e.arc(C.x,C.y,8,0,Math.PI*2),e.fill(),e.stroke(),e.fillStyle=u,e.font="bold 13px sans-serif",e.textAlign="center",e.textBaseline="middle",e.fillText(h.collapsed?"+":"\u2212",C.x,C.y+.5);}if(h.note){let C=h.noteColor??u;e.font="11px sans-serif";let z=Math.min(e.measureText(h.note).width+12,130),L=16;e.fillStyle=C,e.beginPath(),e.roundRect(d.x-p,d.y-g-L+2,z,L,4),e.fill(),e.fillStyle="#ffffff",e.font="11px sans-serif",e.textAlign="left",e.textBaseline="middle",e.fillText(e.measureText(h.note).width+12>130?h.note.slice(0,12)+"\u2026":h.note,d.x-p+6,d.y-g-L/2+2);}e.font=`${14}px sans-serif`;let k=h.icon?18:0,S=d.width-k-(h.icon?8:0)-16,v=this.ellipsizeText(e,h.text||"",S),I=e.measureText(v).width,w=k+(k?8:0)+I,x=d.x-w/2;if(e.textBaseline="middle",h.icon&&(e.font="16px sans-serif",e.textAlign="left",e.fillStyle="#1f2937",e.fillText(h.icon,x,d.y+1),x+=k+8),e.font=`${14}px sans-serif`,e.textAlign="left",e.fillStyle="#1f2937",e.fillText(v,x,d.y),!h.collapsed)for(let C of h.children??[])l(C);};if(l(a),n){let h=s&&s.shapeId===t.id?s.nodeId:o&&o.shapeId===t.id?o.nodeId:null;h&&this.drawMindMapHandles(e,tn(a,h));}}drawMindMapReorderIndicator(e,t,i,n){if(!n||n.shapeId!==t.id)return;let{targetIndex:o,direction:s,siblingIds:a,nodeId:l,childParentId:h}=n,d=ye(s),u=i.get(l);if(!u)return;let p=u.width,g=u.height,m=16,f=48;if(h){let x=i.get(h);x&&(e.save(),e.setLineDash([4,4]),e.lineWidth=2,e.strokeStyle=V.primary,e.beginPath(),e.roundRect(x.x-x.width/2-5,x.y-x.height/2-5,x.width+10,x.height+10,8),e.stroke(),e.restore());}let y=a.map(x=>({id:x,pos:i.get(x)})).filter(x=>!!x.pos).sort((x,C)=>d?x.pos.y-C.pos.y:x.pos.x-C.pos.x),k=y.findIndex(x=>x.id===l);if(k!==-1&&o===k)return;let S=y.filter(x=>x.id!==l).map(x=>x.pos),v=o;v<0&&(v=0),v>S.length&&(v=S.length);let I,w;if(S.length===0){if(!h)return;let x=i.get(h);if(!x)return;let C=d?x.y:x.x,z=d?s==="right"?x.x+x.width/2+f+p/2:x.x-x.width/2-f-p/2:s==="down"?x.y+x.height/2+f+g/2:x.y-x.height/2-f-g/2;I=d?z:C,w=d?C:z;}else {let x=(()=>{if(v<=0){let P=S[0];return d?P.y-P.height/2-m-g/2:P.x-P.width/2-m-p/2}if(v>=S.length){let P=S[S.length-1];return d?P.y+P.height/2+m+g/2:P.x+P.width/2+m+p/2}let z=S[v-1],L=S[v];return d?(z.y+z.height/2+L.y-L.height/2)/2:(z.x+z.width/2+L.x-L.width/2)/2})(),C=(()=>{if(d){let L=s==="right"?S[0].x-S[0].width/2:S[0].x+S[0].width/2;return s==="right"?L+p/2:L-p/2}let z=s==="down"?S[0].y-S[0].height/2:S[0].y+S[0].height/2;return s==="down"?z+g/2:z-g/2})();I=d?C:x,w=d?x:C;}if(h){let x=i.get(h);if(x){let C=d?s==="right"?x.x+x.width/2:x.x-x.width/2:x.x,z=d?x.y:s==="down"?x.y+x.height/2:x.y-x.height/2,L=d?s==="right"?I-p/2:I+p/2:I,P=d?w:s==="down"?w-g/2:w+g/2;if(e.save(),e.setLineDash([5,4]),e.lineWidth=2,e.strokeStyle=V.primary,e.beginPath(),e.moveTo(C,z),d){let N=(C+L)/2;e.bezierCurveTo(N,z,N,P,L,P);}else {let N=(z+P)/2;e.bezierCurveTo(C,N,L,N,L,P);}e.stroke(),e.restore();}}e.save(),e.setLineDash([5,4]),e.lineJoin="round",e.lineWidth=2,e.strokeStyle=V.primary,e.fillStyle=J(V.primary,.12),e.beginPath(),e.roundRect(I-p/2,w-g/2,p,g,6),e.fill(),e.stroke(),e.restore();}drawMindMapHandles(e,t){e.save(),e.setLineDash([]),e.lineCap="round";for(let i of t){e.beginPath(),e.arc(i.x,i.y,11,0,Math.PI*2),e.fillStyle="#ffffff",e.fill(),e.beginPath(),e.arc(i.x,i.y,9,0,Math.PI*2),e.fillStyle=V.primary,e.fill();let n=9*.5;e.beginPath(),e.moveTo(i.x-n,i.y),e.lineTo(i.x+n,i.y),e.moveTo(i.x,i.y-n),e.lineTo(i.x,i.y+n),e.strokeStyle="#ffffff",e.lineWidth=2,e.stroke();}e.restore();}ellipsizeText(e,t,i){if(i<=0)return "";if(e.measureText(t).width<=i)return t;let n="\u2026",o=0,s=t.length;for(;o<s;){let a=o+s+1>>1;e.measureText(t.slice(0,a)+n).width<=i?o=a:s=a-1;}return t.slice(0,o)+n}resolveConnectorEnds(e,t){let i=e.points.map(l=>({x:l.x,y:l.y}));if(i.length<2)return {world:i};let n=i.length-1;if(e.type==="line")return i[0]=this.clampToShapeOutline(i[0],t,e.id,i[n]),i[n]=this.clampToShapeOutline(i[n],t,e.id,i[0]),{world:i,fromN:this.getDockNormal(i[0],t,e.id),toN:this.getDockNormal(i[n],t,e.id)};let o=e.endBinding,s,a;if(e.startBinding){let l=t.get(e.startBinding.toShapeId);l&&(i[0]=this.getBindingPoint(l,e.startBinding),s=this.localDockBox(l,e));}if(e.endBinding){let l=t.get(e.endBinding.toShapeId);l&&(o=this.resolveAutoEndBinding(e.endBinding,e,i[0],l),i[n]=this.getBindingPoint(l,o),a=this.localDockBox(l,e));}return e.startBinding||(i[0]=this.clampToShapeOutline(i[0],t,e.id,i[n])),e.endBinding||(i[n]=this.clampToShapeOutline(i[n],t,e.id,i[0])),{world:i,fromN:this.resolveDockNormal(e.startBinding,i[0],t,e.id),toN:this.resolveDockNormal(o,i[n],t,e.id),fromBox:s,toBox:a}}localDockBox(e,t){let i=this.getShapePageBounds(e);return {x:i.x-t.x,y:i.y-t.y,width:i.width,height:i.height}}withUserPoints(e,t,i,n){let o=e,s=o.userPoints;if(!s||s.length===0||t.length<2)return t;let a=this.effectiveConnType(o),l=[t[0],t[t.length-1]],[h,d]=a==="curve"?l:this.getAlignedPoints(l),u=a==="curve"?s:Yt(s,o.userPointsRef,h,d,i,n);return [h,...u.map(p=>({x:p.x,y:p.y})),d]}getConnectorRoute(e,t,i={}){if(e.type!=="arrow"&&e.type!=="line")return [];if(!e.points||e.points.length<2)return [];let n=e,{world:o,fromN:s,toN:a,fromBox:l,toBox:h}=this.resolveConnectorEnds(n,t),u=(i.ignoreUserPoints?o:this.withUserPoints(n,o,s,a)).map(m=>({x:m.x-e.x,y:m.y-e.y})),p=this.effectiveConnType(n);return (p==="straight"?this.straightAligned(u):this.buildPathPoints(u,p,{fromN:s,toN:a,fromBox:l,toBox:h})).map(m=>({x:m.x+e.x,y:m.y+e.y}))}drawSegmentHandles(e,t,i){let n=Kt(t);if(n.length===0)return;let o=20/i,s=6/i;e.save(),e.setLineDash([]),e.lineWidth=1.5/i,e.strokeStyle="#ffffff",e.fillStyle=V.primary;for(let a of n){let l=a.axis==="H"?o:s,h=a.axis==="H"?s:o;e.beginPath(),e.roundRect(a.center.x-l/2,a.center.y-h/2,l,h,s/2),e.fill(),e.stroke();}e.restore();}drawLine(e,t,i,n,o){if(t.points.length<2)return;let s=t,{world:a,fromN:l,toN:h,fromBox:d,toBox:u}=this.resolveConnectorEnds(s,i),p=this.withUserPoints(s,a,l,h).map(f=>({x:f.x-t.x,y:f.y-t.y})),g=this.effectiveConnType(t),m=g==="straight"?this.straightAligned(p):this.buildPathPoints(p,g,{fromN:l,toN:h,fromBox:d,toBox:u});if(g==="straight"){e.beginPath(),e.moveTo(m[0].x,m[0].y);for(let f=1;f<m.length;f++)e.lineTo(m[f].x,m[f].y);e.stroke(),e.setLineDash([]);}else g==="orthogonal"?this.drawSharpPolyline(e,m):this.drawRoundedPolyline(e,m,r.DEFAULT_CORNER_RADIUS),e.stroke(),e.setLineDash([]);n&&(this.drawLinearHighlight(e,m,o),mt(g)&&this.drawSegmentHandles(e,m,o));}drawArrow(e,t,i,n,o){if(t.points.length<2)return;let{world:s,fromN:a,toN:l,fromBox:h,toBox:d}=this.resolveConnectorEnds(t,i),u=this.withUserPoints(t,s,a,l).map(y=>({x:y.x-t.x,y:y.y-t.y})),p=this.effectiveConnType(t),g=t.arrowHead??"end";!!t.dashed||g==="dependency"||g==="realization"?e.setLineDash([8,5]):e.setLineDash([]);let f;if(p==="straight"){let y=this.straightAligned(u);f=y,e.beginPath(),e.moveTo(y[0].x,y[0].y);for(let k=1;k<y.length;k++)e.lineTo(y[k].x,y[k].y);e.stroke(),this.drawArrowHeads(e,y,g);}else f=this.buildPathPoints(u,p,{fromN:a,toN:l,fromBox:h,toBox:d}),p==="orthogonal"?this.drawSharpPolyline(e,f):this.drawRoundedPolyline(e,f,r.DEFAULT_CORNER_RADIUS),e.stroke(),this.drawArrowHeads(e,f,g);e.setLineDash([]),n&&(this.drawLinearHighlight(e,f,o),mt(p)&&this.drawSegmentHandles(e,f,o));}drawLinearHighlight(e,t,i,n=1,o=7){if(!(!t||t.length<2)){e.save(),e.globalAlpha=n,e.strokeStyle=V.lineHighlight,e.lineWidth=o/i,e.lineCap="round",e.lineJoin="round",e.setLineDash([]),e.beginPath(),e.moveTo(t[0].x,t[0].y);for(let s=1;s<t.length;s++)e.lineTo(t[s].x,t[s].y);e.stroke(),e.restore();}}drawGenerationPreview(e,t,i,n,o){let{from:s,to:a}=t,l=t.arrowStyle??{connectionType:"polyline",arrowHead:"end",dashed:false},h=new Map(o);n.forEach(f=>h.set(f.id,f));let d=t.targetShapeId;if(!d&&t.type){let f=He(t.type,a,void 0,void 0,t.size);f.id=r.GEN_GHOST_ID,h.set(r.GEN_GHOST_ID,f),d=r.GEN_GHOST_ID;}let u=t.sourceEdge?vn[t.sourceEdge]:void 0,p=t.sourceShapeId&&u?{toShapeId:t.sourceShapeId,handle:u}:void 0,g=d?{...t.targetBinding??{auto:true,handle:"left"},toShapeId:d}:void 0,m={id:r.GEN_PREVIEW_ID,type:"arrow",x:s.x,y:s.y,points:[s,a],rotation:0,style:t.lineStyle??r.PREVIEW_LINE_STYLE,startBinding:p,endBinding:g,connectionType:l.connectionType,arrowHead:l.arrowHead,dashed:l.dashed};if(e.save(),t.dragging||(e.globalAlpha=.65),e.translate(s.x,s.y),this.applyStyle(e,m.style,i),this.drawArrow(e,m,h,false,i),e.restore(),t.type){let f=h.get(r.GEN_GHOST_ID),y=f?this.getShapeBounds(f):{x:-60,y:-30,width:120,height:60};this.drawPreviewShapeOutline(e,a,t.type,y,i);}e.save(),e.beginPath(),e.arc(s.x,s.y,5/i,0,Math.PI*2),e.fillStyle=V.genDot,e.fill(),e.restore();}drawPreviewShapeOutline(e,t,i,n,o){let s=n.width,a=n.height,l=s/2,h=a/2,d=t.x,u=t.y;switch(e.strokeStyle=V.genLine,e.lineWidth=1.5/o,e.setLineDash([6/o,4/o]),e.beginPath(),i){case "circle":case "ellipse":e.ellipse(d,u,s/2,a/2,0,0,Math.PI*2);break;case "diamond":e.moveTo(d,u-h),e.lineTo(d+l,u),e.lineTo(d,u+h),e.lineTo(d-l,u),e.closePath();break;case "triangle":e.moveTo(d,u-h),e.lineTo(d+l,u+h),e.lineTo(d-l,u+h),e.closePath();break;case "image":{e.roundRect(d-l,u-h,s,a,4);break}case "sticky-note":{let p=s*pe,g=a*pe;e.moveTo(d-l,u-h),e.lineTo(d+l,u-h),e.lineTo(d+l,u+h-g),e.lineTo(d+l-p,u+h),e.lineTo(d-l,u+h),e.closePath();break}case "hexagon":for(let p=0;p<6;p++){let g=p*Math.PI/3-Math.PI/2,m=d+l*Math.cos(g),f=u+h*Math.sin(g);p===0?e.moveTo(m,f):e.lineTo(m,f);}e.closePath();break;case "parallelogram":{let p=s*.15;e.moveTo(d-l+p,u-h),e.lineTo(d+l,u-h),e.lineTo(d+l-p,u+h),e.lineTo(d-l,u+h),e.closePath();break}default:e.roundRect(d-l,u-h,s,a,i==="rounded-rectangle"?8:4);break}e.stroke();}static ALIGN_TOLERANCE=8;static GEN_PREVIEW_ID="__gen_preview_line__";static GEN_GHOST_ID="__gen_preview_ghost__";static PREVIEW_LINE_STYLE={strokeColor:"#1f2937",fillColor:"transparent",strokeWidth:2,strokeDash:null};straightAligned(e){return e.length===2?this.getAlignedPoints(e):e}effectiveConnType(e){let t=e.connectionType||"straight";return t==="straight"&&e.userPoints&&e.userPoints.length>0?"polyline":t}getAlignedPoints(e){if(e.length<2)return e;let t=e[0],i=e[e.length-1],n=i.x-t.x,o=i.y-t.y,s=r.ALIGN_TOLERANCE;if(Math.abs(o)<=s){let a=(t.y+i.y)/2;return e.map(l=>({x:l.x,y:a}))}if(Math.abs(n)<=s){let a=(t.x+i.x)/2;return e.map(l=>({x:a,y:l.y}))}return e}buildPathPoints(e,t,i={}){if(e.length<2)return e;if(t==="straight")return this.straightAligned(e);if(t==="polyline"||t==="orthogonal"){let n=e.length===2?this.getAlignedPoints(e):e;return this.generatePolylinePoints(n,i)}return t==="curve"?this.generateCurvePoints(e,i):e}drawRoundedPolyline(e,t,i){if(e.beginPath(),!(t.length<2)){if(t.length===2||i<=0){e.moveTo(t[0].x,t[0].y);for(let n=1;n<t.length;n++)e.lineTo(t[n].x,t[n].y);return}e.moveTo(t[0].x,t[0].y);for(let n=1;n<t.length-1;n++){let o=t[n-1],s=t[n],a=t[n+1],l=s.x-o.x,h=s.y-o.y,d=a.x-s.x,u=a.y-s.y,p=Math.hypot(l,h),g=Math.hypot(d,u);if(p<1e-6||g<1e-6){e.lineTo(s.x,s.y);continue}let m=Math.min(i,p*.5,g*.5),f=s.x-l/p*m,y=s.y-h/p*m,k=s.x+d/g*m,S=s.y+u/g*m;e.lineTo(f,y),e.arcTo(s.x,s.y,k,S,m);}e.lineTo(t[t.length-1].x,t[t.length-1].y);}}drawSharpPolyline(e,t){if(e.beginPath(),!(t.length<2)){e.moveTo(t[0].x,t[0].y);for(let i=1;i<t.length;i++)e.lineTo(t[i].x,t[i].y);}}drawSnapGuides(e,t,i){e.save(),e.strokeStyle=V.guide,e.lineWidth=1/i,e.setLineDash([6/i,4/i]),e.beginPath();for(let n of t)n.type==="horizontal"?(e.moveTo(n.start,n.position),e.lineTo(n.end,n.position)):(e.moveTo(n.position,n.start),e.lineTo(n.position,n.end));e.stroke(),e.restore();}generatePolylinePoints(e,t={}){return Ht(e,t,r.CONNECTION_LEAD)}generateCurvePoints(e,t={}){if(e.length<2)return e;let i=e.length,n=[e[0]],o=l=>{let h=e[l],d=e[l+1];return Math.hypot(d.x-h.x,d.y-h.y)},s=l=>Math.max(16,Math.min(l*.32,150)),a=l=>{let h=e[Math.max(0,l-1)],d=e[Math.min(i-1,l+1)],u=d.x-h.x,p=d.y-h.y,g=Math.hypot(u,p);return g<1e-6?{x:1,y:0}:{x:u/g,y:p/g}};for(let l=0;l<i-1;l++){let h=e[l],d=e[l+1],u=o(l),p;if(l===0&&t.fromN)p={x:h.x+t.fromN.x*s(u),y:h.y+t.fromN.y*s(u)};else {let f=a(l);p={x:h.x+f.x*s(u),y:h.y+f.y*s(u)};}let g;if(l===i-2&&t.toN)g={x:d.x+t.toN.x*s(u),y:d.y+t.toN.y*s(u)};else {let f=a(l+1);g={x:d.x-f.x*s(u),y:d.y-f.y*s(u)};}let m=20;for(let f=1;f<=m;f++){let y=f/m,k=1-y,S=k*k*k*h.x+3*k*k*y*p.x+3*k*y*y*g.x+y*y*y*d.x,v=k*k*k*h.y+3*k*k*y*p.y+3*k*y*y*g.y+y*y*y*d.y;n.push({x:S,y:v});}}return n}getDisplayLines(e,t,i,n,o,s,a=""){let l=n*1.3,h=Math.max(1,Math.floor(s/l)),d=`${t.id}\0${i}\0${n}\0${o}x${s}\0${h}\0${a}`,u=this.textLayoutCache.get(d);if(u)return u;let p=i.split(`
|
|
4
|
-
`),
|
|
5
|
-
`))if(l+=Math.max(1,this.wrapLine(e,h,n).length),l>a)return true;return false}isUmlRowTextTruncated(e,t,i,n=false){if(!t||e.type==="circle")return false;let o=e.width??0;if(o<=0)return false;let s=this.ctx;s.save();try{return s.font=`${n?"bold ":""}${i||ce}px sans-serif`,s.measureText(t).width>o-de*2}finally{s.restore();}}static HANDLE_NORMALS=Dt;pickAutoHandle(e,t,i){return Lt(e,t,i)}resolveAutoEndBinding(e,t,i,n){if(!e.auto||e.isPrecise)return e;let o=t.startBinding?.handle?r.HANDLE_NORMALS[t.startBinding.handle]:void 0;return {...e,handle:this.pickAutoHandle(i,{x:n.x,y:n.y},o)}}getBindingPoint(e,t){if(t.isPrecise&&t.normalizedAnchor){let i=this.getShapePageBounds(e),n={x:i.x+i.width*t.normalizedAnchor.x,y:i.y+i.height*t.normalizedAnchor.y},o={x:e.x,y:e.y};return this.nearestPointOnShapeOutline(e,o,n)}if(t.handle){let i=this.getShapeBounds(e);switch(t.handle){case "top":return {x:e.x,y:e.y+i.y};case "bottom":return {x:e.x,y:e.y+i.y+i.height};case "left":return {x:e.x+i.x,y:e.y};case "right":return {x:e.x+i.x+i.width,y:e.y}}}return {x:e.x,y:e.y}}resolveDockNormal(e,t,i,n){return e&&!e.isPrecise&&e.handle?r.HANDLE_NORMALS[e.handle]:this.getDockNormal(t,i,n,e?.toShapeId)}getDockNormal(e,t,i,n){if(!t||t.size===0)return;let o=null,s=1/0,a=.5;if(t.forEach((u,p)=>{if(p===i||u.type==="line"||u.type==="arrow")return;let g=this.getShapePageBounds(u);if(e.x>=g.x-a&&e.x<=g.x+g.width+a&&e.y>=g.y-a&&e.y<=g.y+g.height+a){let m=u.id===n?-1:(e.x-u.x)**2+(e.y-u.y)**2;m<s&&(s=m,o=u);}}),!o)return;let l=o,h=e.x-l.x,d=e.y-l.y;return Math.abs(d)>Math.abs(h)?{x:0,y:d<0?-1:1}:{x:h<0?-1:1,y:0}}getShapePageBounds(e){let t=this.getShapeBounds(e);return {x:e.x+t.x,y:e.y+t.y,width:t.width,height:t.height}}clampToShapeOutline(e,t,i,n){if(!t||t.size===0)return e;let o=null,s=1/0;if(t.forEach((l,h)=>{if(h===i)return;let d=this.getShapePageBounds(l);if(e.x>d.x&&e.x<d.x+d.width&&e.y>d.y&&e.y<d.y+d.height){let u=(l.x-n.x)**2+(l.y-n.y)**2;u<s&&(s=u,o=l);}}),!o)return e;let a=o;return this.nearestPointOnShapeOutline(a,{x:a.x,y:a.y},e)}nearestPointOnShapeOutline(e,t,i){let n=i.x-t.x,o=i.y-t.y,s=Math.hypot(n,o);if(s<1e-6)return {x:t.x,y:t.y};let a=n/s,l=o/s,h=Math.max(1e4,s*2),d={x:t.x+a*h,y:t.y+l*h},u=this.intersectShapeOutlineWithSegment(e,t,d);if(u.length===0)return i;let p=u[0],g=(p.x-t.x)**2+(p.y-t.y)**2;for(let m=1;m<u.length;m++){let f=(u[m].x-t.x)**2+(u[m].y-t.y)**2;f<g&&(g=f,p=u[m]);}return p}intersectShapeOutlineWithSegment(e,t,i){let n={x:t.x-e.x,y:t.y-e.y},o={x:i.x-e.x,y:i.y-e.y};return this.intersectLocalShapeOutlineWithSegment(e,n,o).map(a=>({x:a.x+e.x,y:a.y+e.y}))}intersectLocalShapeOutlineWithSegment(e,t,i){switch(e.type){case "rectangle":case "sticky-note":case "icon":case "image":case "rounded-rectangle":{let n=e.width,o=e.height,s={x:-n/2,y:-o/2,width:n,height:o};return this.intersectSegmentRect(t,i,s)}case "ellipse":case "diamond":case "triangle":{let n=e.width,o=e.height,s={x:-n/2,y:-o/2,width:n,height:o};return this.intersectSegmentRect(t,i,s)}case "hexagon":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "table":{let n=e.width,o=e.height,s={x:-n/2,y:-o/2,width:n,height:o};return this.intersectSegmentRect(t,i,s)}case "circle":{let n=e.radius;return this.intersectSegmentCircle(t,i,{x:0,y:0},n)}default:return []}}intersectSegmentRect(e,t,i){let n=i.x,o=i.y,s=i.width,a=i.height,l=[[{x:n,y:o},{x:n+s,y:o}],[{x:n+s,y:o},{x:n+s,y:o+a}],[{x:n+s,y:o+a},{x:n,y:o+a}],[{x:n,y:o+a},{x:n,y:o}]],h=[];for(let[d,u]of l){let p=this.segmentIntersection(e,t,d,u);p&&h.push(p);}return h}segmentIntersection(e,t,i,n){let o=e.x,s=e.y,a=t.x,l=t.y,h=i.x,d=i.y,u=n.x,p=n.y,g=(o-a)*(d-p)-(s-l)*(h-u);if(Math.abs(g)<1e-9)return null;let m=((o-h)*(d-p)-(s-d)*(h-u))/g,f=-((o-a)*(s-d)-(s-l)*(o-h))/g;return m<0||m>1||f<0||f>1?null:{x:o+m*(a-o),y:s+m*(l-s)}}intersectSegmentCircle(e,t,i,n){let o=t.x-e.x,s=t.y-e.y,a=e.x-i.x,l=e.y-i.y,h=o*o+s*s,d=2*(a*o+l*s),u=a*a+l*l-n*n,p=d*d-4*h*u;if(p<0)return [];p=Math.sqrt(p);let g=(-d-p)/(2*h),m=(-d+p)/(2*h),f=[];return g>=0&&g<=1&&f.push({x:e.x+g*o,y:e.y+g*s}),m>=0&&m<=1&&Math.abs(m-g)>1e-6&&f.push({x:e.x+m*o,y:e.y+m*s}),f}drawArrowHead(e,t,i){let n=Math.atan2(i.y-t.y,i.x-t.x),o=12;e.save(),e.setLineDash([]),e.beginPath(),e.moveTo(i.x,i.y),e.lineTo(i.x-o*Math.cos(n-Math.PI/6),i.y-o*Math.sin(n-Math.PI/6)),e.moveTo(i.x,i.y),e.lineTo(i.x-o*Math.cos(n+Math.PI/6),i.y-o*Math.sin(n+Math.PI/6)),e.stroke(),e.restore();}drawInheritanceHead(e,t,i){let n=Math.atan2(i.y-t.y,i.x-t.x),o=14,s=i.x,a=i.y,l=i.x-o*Math.cos(n),h=i.y-o*Math.sin(n),d=l+o*.5*Math.cos(n-Math.PI/2),u=h+o*.5*Math.sin(n-Math.PI/2),p=l+o*.5*Math.cos(n+Math.PI/2),g=h+o*.5*Math.sin(n+Math.PI/2);e.save(),e.setLineDash([]),e.fillStyle="#ffffff",e.beginPath(),e.moveTo(s,a),e.lineTo(d,u),e.lineTo(p,g),e.closePath(),e.fill(),e.stroke(),e.restore();}drawDiamondHead(e,t,i,n){let o=Math.atan2(i.y-t.y,i.x-t.x),s=14,a=i.x,l=i.y,h=i.x-s*.5*Math.cos(o),d=i.y-s*.5*Math.sin(o),u=i.x-s*Math.cos(o),p=i.y-s*Math.sin(o),g=h+s*.4*Math.cos(o-Math.PI/2),m=d+s*.4*Math.sin(o-Math.PI/2),f=h+s*.4*Math.cos(o+Math.PI/2),y=d+s*.4*Math.sin(o+Math.PI/2);e.save(),e.setLineDash([]),e.fillStyle=n?"#1f2937":"#ffffff",e.beginPath(),e.moveTo(a,l),e.lineTo(g,m),e.lineTo(u,p),e.lineTo(f,y),e.closePath(),e.fill(),e.stroke(),e.restore();}drawArrowHeads(e,t,i){if(i!=="none"){if(i==="start"||i==="both"){let n=t[0],o=t[1];this.drawArrowHead(e,o,n);}if(i==="end"||i==="both"){let n=t.length,o=t[n-2],s=t[n-1];this.drawArrowHead(e,o,s);}if(i==="inheritance"){let n=t.length,o=t[n-2],s=t[n-1];this.drawInheritanceHead(e,o,s);}if(i==="aggregation"){let n=t[0],o=t[1];this.drawDiamondHead(e,o,n,false);}if(i==="composition"){let n=t[0],o=t[1];this.drawDiamondHead(e,o,n,true);}if(i==="dependency"){let n=t.length;this.drawArrowHead(e,t[n-2],t[n-1]);}if(i==="realization"){let n=t.length;this.drawInheritanceHead(e,t[n-2],t[n-1]);}}}drawText(e,t){if(!t.text)return;let i=t.fontSize;e.font=`${i}px sans-serif`,e.textAlign="center",e.textBaseline="middle";let n=t.width,o=t.height,s=i*1.3,a=this.getDisplayLines(e,t,t.text,i,n,o),l=a.length*s,h=-l/2+s/2;if(t.highlightColor&&t.highlightColor!=="transparent"){let d=t.highlightOpacity??1;e.fillStyle=d<1?J(t.highlightColor,d):t.highlightColor;let u=i*.15;e.beginPath(),e.roundRect(-n/2-u,-l/2-u,n+u*2,l+u*2,4),e.fill();}e.fillStyle=t.textColor||"#1f2937",a.forEach((d,u)=>{let p=h+u*s;e.fillText(d,0,p);});}drawFreehand(e,t){if(t.points.length<2)return;let i=t.points;e.beginPath(),e.moveTo(i[0].x,i[0].y);for(let n=1;n<i.length-1;n++){let o=(i[n].x+i[n+1].x)/2,s=(i[n].y+i[n+1].y)/2;e.quadraticCurveTo(i[n].x,i[n].y,o,s);}e.lineTo(i[i.length-1].x,i[i.length-1].y),e.stroke();}drawLockBadge(e,t,i){let n=this.getShapeBounds(t),o=1/i,s=20*o;this.drawLockBadgeAt(e,n.x+n.width+2*o,n.y-s+4*o,i);}drawGroupLockBadges(e,t,i){let n=new Map;for(let a of t){if(!a.locked||!a.groupId)continue;let l=n.get(a.groupId);l?l.push(a):n.set(a.groupId,[a]);}if(n.size===0)return;let o=1/i,s=20*o;for(let a of n.values()){let l=1/0,h=1/0,d=-1/0;for(let u of a){let p=this.getShapeWorldBounds(u);l=Math.min(l,p.x),h=Math.min(h,p.y),d=Math.max(d,p.x+p.width);}Number.isFinite(l)&&this.drawLockBadgeAt(e,(l+d)/2-s/2,h-s+4*o,i);}}drawLockBadgeAt(e,t,i,n){let o=1/n,s=20*o,a=t+s/2;e.save(),e.setLineDash([]),e.lineJoin="round",e.lineCap="round",e.beginPath(),e.roundRect(t,i,s,s,6*o),e.fillStyle="rgba(255,255,255,0.97)",e.fill(),e.strokeStyle="#cbd5e1",e.lineWidth=o,e.stroke(),e.beginPath(),e.arc(a,i+8.5*o,3.4*o,Math.PI,0),e.strokeStyle="#4b5563",e.lineWidth=1.7*o,e.stroke(),e.beginPath(),e.roundRect(t+4.5*o,i+8.5*o,11*o,8*o,1.8*o),e.fillStyle="#4b5563",e.fill(),e.beginPath(),e.arc(a,i+11.6*o,1.2*o,0,Math.PI*2),e.fillStyle="#ffffff",e.fill(),e.restore();}drawGroupFrames(e,t,i,n){let o=t.filter(g=>i.has(g.id));if(o.length<2)return;let s=o[0].groupId;if(!s||!o.every(g=>g.groupId===s))return;let a=t.filter(g=>g.groupId===s);if(a.length!==o.length)return;let l=1/0,h=1/0,d=-1/0,u=-1/0;for(let g of a){let m=this.getShapeWorldBounds(g);l=Math.min(l,m.x),h=Math.min(h,m.y),d=Math.max(d,m.x+m.width),u=Math.max(u,m.y+m.height);}if(!Number.isFinite(l))return;let p=6/n;e.save(),e.strokeStyle=J(V.selection.outline,.7),e.lineWidth=1/n,e.setLineDash([6/n,5/n]),e.beginPath(),e.roundRect(l-p,h-p,d-l+p*2,u-h+p*2,6/n),e.stroke(),e.restore();}drawSelectionOutline(e,t,i){let n=this.getShapeBounds(t);e.strokeStyle=V.selection.outline,e.lineWidth=1/i,e.setLineDash([]),e.save(),e.shadowColor=V.selection.shadow,e.shadowBlur=8,e.shadowOffsetX=0,e.shadowOffsetY=0,e.beginPath(),e.roundRect(n.x-2,n.y-2,n.width+4,n.height+4,4),e.stroke(),e.restore(),t.type!=="table"&&(e.fillStyle=V.selection.outlineFill,e.beginPath(),e.roundRect(n.x-2,n.y-2,n.width+4,n.height+4,4),e.fill());}drawSelectionHandles(e,t,i,n){let o=8/i;if((t.type==="line"||t.type==="arrow")&&t.points&&t.points.length>=2){let a=n?this.getConnectorRoute(t,n):[],l=a.length>=2?a:t.points,h={x:l[0].x-t.x,y:l[0].y-t.y},d={x:l[l.length-1].x-t.x,y:l[l.length-1].y-t.y};e.fillStyle=V.selection.handleFill,e.strokeStyle=V.selection.handleStroke,e.lineWidth=2/i,e.setLineDash([]),[h,d].forEach(u=>{e.beginPath(),e.arc(u.x,u.y,o/2,0,Math.PI*2),e.fill(),e.stroke();});}else {let a=this.getShapeBounds(t),l=o,h=[{x:a.x,y:a.y},{x:a.x+a.width,y:a.y},{x:a.x+a.width,y:a.y+a.height},{x:a.x,y:a.y+a.height}];e.fillStyle=V.selection.handleFill,e.strokeStyle=V.selection.handleStroke,e.lineWidth=2/i,e.setLineDash([]),h.forEach(g=>{e.beginPath(),e.roundRect(g.x-l/2,g.y-l/2,l,l,2),e.fill(),e.stroke();}),this.drawConnectionDots(e,a,i,1);let d=26/i,u=a.x+a.width/2,p=a.y-d;e.strokeStyle="#94a3b8",e.lineWidth=1.5/i,e.setLineDash([]),e.beginPath(),e.moveTo(u,a.y),e.lineTo(u,p),e.stroke(),e.beginPath(),e.arc(u,p,8/i,0,Math.PI*2),e.fillStyle=V.selection.handleFill,e.fill(),e.strokeStyle=V.primary,e.lineWidth=1.6/i,e.stroke(),this.drawRotateIcon(e,u,p,i);}}drawConnectionDots(e,t,i,n=1){let o=9/i,s=[{x:t.x+t.width/2,y:t.y},{x:t.x+t.width,y:t.y+t.height/2},{x:t.x+t.width/2,y:t.y+t.height},{x:t.x,y:t.y+t.height/2}];e.save(),e.globalAlpha=n,s.forEach(a=>{e.beginPath(),e.arc(a.x,a.y,o,0,Math.PI*2),e.fillStyle=V.selection.handleFill,e.fill(),e.strokeStyle=V.primary,e.lineWidth=1.5/i,e.stroke(),e.beginPath(),e.arc(a.x,a.y,o*.45,0,Math.PI*2),e.fillStyle=V.primary,e.fill();}),e.restore();}drawRotateIcon(e,t,i,n){let o=8/n;e.save(),e.translate(t,i),e.strokeStyle=V.primary,e.lineWidth=1.8/n,e.lineCap="round",e.beginPath(),e.arc(0,0,o*.5,Math.PI*.18,Math.PI*1.6,false),e.stroke();let s=Math.PI*.18,a=Math.cos(s)*o*.5,l=Math.sin(s)*o*.5,h=1;e.beginPath(),e.moveTo(a,l),e.lineTo(a-Math.cos(s)*o*.26+h*Math.sin(s)*o*.16,l-Math.sin(s)*o*.26-h*Math.cos(s)*o*.16),e.moveTo(a,l),e.lineTo(a-Math.cos(s)*o*.26-h*Math.sin(s)*o*.16,l-Math.sin(s)*o*.26+h*Math.cos(s)*o*.16),e.stroke(),e.restore();}getShapeBounds(e){switch(e.type){case "rectangle":case "sticky-note":case "icon":case "image":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "hexagon":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "mind-map":case "table":return {x:-e.width/2,y:-e.height/2,width:e.width,height:e.height};case "circle":return {x:-e.radius,y:-e.radius,width:e.radius*2,height:e.radius*2};case "line":case "arrow":{if(e.points.length===0)return {x:0,y:0,width:0,height:0};let t=1/0,i=1/0,n=-1/0,o=-1/0;return e.points.forEach(s=>{t=Math.min(t,s.x-e.x),i=Math.min(i,s.y-e.y),n=Math.max(n,s.x-e.x),o=Math.max(o,s.y-e.y);}),{x:t,y:i,width:n-t,height:o-i}}case "draw":{let t=e;if(typeof t.width=="number"&&typeof t.height=="number")return {x:-t.width/2,y:-t.height/2,width:t.width,height:t.height};if(t.points.length===0)return {x:0,y:0,width:0,height:0};let i=1/0,n=1/0,o=-1/0,s=-1/0;return t.points.forEach(a=>{let l=a.x-t.x,h=a.y-t.y;i=Math.min(i,l),n=Math.min(n,h),o=Math.max(o,l),s=Math.max(s,h);}),{x:i,y:n,width:o-i,height:s-n}}case "text":{let t=e;return {x:-t.width/2,y:-t.height/2,width:t.width,height:t.height}}default:return {x:0,y:0,width:0,height:0}}}};var Xe={create(r=0,e=0){return {x:r,y:e}},add(r,e){return {x:r.x+e.x,y:r.y+e.y}},subtract(r,e){return {x:r.x-e.x,y:r.y-e.y}},multiply(r,e){return {x:r.x*e,y:r.y*e}},divide(r,e){return {x:r.x/e,y:r.y/e}},dot(r,e){return r.x*e.x+r.y*e.y},length(r){return Math.sqrt(r.x*r.x+r.y*r.y)},normalize(r){let e=Xe.length(r);return e===0?{x:0,y:0}:{x:r.x/e,y:r.y/e}},distance(r,e){return Xe.length(Xe.subtract(r,e))},rotate(r,e){let t=Math.cos(e),i=Math.sin(e);return {x:r.x*t-r.y*i,y:r.x*i+r.y*t}},clone(r){return {x:r.x,y:r.y}},equals(r,e){return r.x===e.x&&r.y===e.y}};function Re(r,e,t,i=8){let n=[];if(t==="horizontal"){let o=Math.min(r.x,e.x),s=Math.max(r.x+r.width,e.x+e.width),a=Math.abs(r.y-e.y)<=i,l=Math.abs(r.y+r.height-(e.y+e.height))<=i,h=Math.abs(r.y+r.height/2-(e.y+e.height/2))<=i;a&&n.push({type:"horizontal",position:(r.y+e.y)/2,start:o,end:s}),l&&n.push({type:"horizontal",position:(r.y+r.height+e.y+e.height)/2,start:o,end:s}),h&&!(a&&l)&&n.push({type:"horizontal",position:(r.y+r.height/2+e.y+e.height/2)/2,start:o,end:s});}else {let o=Math.min(r.y,e.y),s=Math.max(r.y+r.height,e.y+e.height),a=Math.abs(r.x-e.x)<=i,l=Math.abs(r.x+r.width-(e.x+e.width))<=i,h=Math.abs(r.x+r.width/2-(e.x+e.width/2))<=i;a&&n.push({type:"vertical",position:(r.x+e.x)/2,start:o,end:s}),l&&n.push({type:"vertical",position:(r.x+r.width+e.x+e.width)/2,start:o,end:s}),h&&!(a&&l)&&n.push({type:"vertical",position:(r.x+r.width/2+e.x+e.width/2)/2,start:o,end:s});}return n}var Vt=class r extends ne{type="select";state="idle";cellSelectShapeId=null;translatingState=null;resizingState=null;generatingState=null;hoverGenPoint=null;hoverShapeId=null;hoverConnectorId=null;draggingSegment=null;rotatingState=null;draggingArrowId=null;draggingTerminal=null;pendingHistoryCommit=false;brushStart={x:0,y:0};brushShiftKey=false;defaultGenType(e){if(e){let t=this.context.getShapes().find(i=>i.id===e);if(t&&u0(t.type))return t.type}return "rectangle"}genPreviewOf(e,t,i={}){let n=this.context.getArrowStyle();return {from:e.point,to:t,type:i.type,size:i.type?this.genGhostSize(i.type,e.sourceShapeId):void 0,sourceShapeId:e.sourceShapeId,sourceEdge:e.edge,targetShapeId:i.targetShapeId,targetBinding:i.targetBinding,dragging:i.dragging,arrowStyle:{connectionType:"polyline",arrowHead:n.arrowHead,dashed:n.dashed},lineStyle:this.context.getLineStyle()}}genContext(e,t){return {from:e.point,to:t,sourceShapeId:e.sourceShapeId,edge:e.edge}}onPointerDown(e,t){let i=this.context.getShapes(),n=this.context.getSelectedIds(),o=this.hitTestArrowTerminal(e,i);if(o&&n.includes(o.shapeId)){this.state="dragging-terminal",this.draggingArrowId=o.shapeId,this.draggingTerminal=o.terminal,this.pendingHistoryCommit=true,this.context.updateArrowBinding(o.shapeId,o.terminal,null);return}let s=this.hitConnectorSegmentHandle(e,i,n);if(s){this.state="dragging-segment",this.draggingSegment={...s,startPoint:e,moved:false,...this.segmentSnapContext(s.shapeId,s.route,s.index,s.axis)},this.pendingHistoryCommit=true;return}let a=this.hoverShapeId??this.findHoverAnchorShape(e,i,n),l=this.hitGenPoint(e,i,n,a);if(l){this.state="generating",this.hoverShapeId=a,this.generatingState={source:l,startPoint:e,hasMoved:false,sourceWasSelected:!!l.sourceShapeId&&n.includes(l.sourceShapeId)},this.pendingHistoryCommit=true,this.context.setGenerationPreview(this.genPreviewOf(l,this.genPreviewTarget(l,e,false),{type:this.defaultGenType(l.sourceShapeId)}));return}let h=this.hitTest(e,i,n),d=this.findTableMoveHandleAt(e,i,n);if(d){this.context.selectShape(d.id,t.shiftKey),this.beginTranslating(e,i);return}if(h.handle==="rotation"){this.state="rotating",this.pendingHistoryCommit=true;let u=h.shape;this.rotatingState={shapeId:u.id,center:{x:u.x,y:u.y},startAngle:Math.atan2(e.y-u.y,e.x-u.x),startRotation:u.rotation};return}if(h.handle&&h.shape&&h.shape.type!=="mind-map"){this.state="resizing",this.resizingState={startPoint:e,startShape:h.shape,handle:h.handle},this.pendingHistoryCommit=true;return}if(h.shape){let u=h.shape,p=u.type==="line"||u.type==="arrow",g=n.includes(u.id);if(u.type==="table"){let m=u,f=this.context.getCamera().getZoom();if(!at(m,e,f)){this.state="selecting-cells",this.cellSelectShapeId=m.id,this.pendingHistoryCommit=false;return}this.context.selectShape(u.id,t.shiftKey);}if(p&&!g){this.context.selectShape(u.id,t.shiftKey);return}this.state="translating",this.pendingHistoryCommit=true,g||this.context.selectShape(u.id,t.shiftKey),this.captureTranslatingStart(e,i);}else this.state="brushing",this.brushStart=e,this.brushShiftKey=t.shiftKey,t.shiftKey||this.context.selectShape("",false);}findTableMoveHandleAt(e,t,i){let n=this.context.getCamera().getZoom(),o=this.hitTest(e,t,i);if(o.shape&&o.shape.type!=="table")return null;for(let s=t.length-1;s>=0;s--){let a=t[s];if(a.type!=="table"||a.locked)continue;let l=a;if(at(l,e,n))return l}return null}beginTranslating(e,t){this.state="translating",this.pendingHistoryCommit=true,this.captureTranslatingStart(e,t);}captureTranslatingStart(e,t){let i=this.context.getSelectedIds(),n=new Map,o=new Map,s=new Map;i.forEach(a=>{let l=t.find(h=>h.id===a);l&&(n.set(a,{x:l.x,y:l.y}),o.set(a,l.rotation),s.set(a,this.getShapeWorldBounds(l)));}),this.translatingState={startPoint:e,startPositions:n,startRotation:o,startBounds:s};}onPointerMove(e,t){let i=this.context.getShapes();if(this.state==="translating"&&this.translatingState)this.pendingHistoryCommit&&(this.context.commitHistory(),this.pendingHistoryCommit=false),this.handleTranslating(e,t);else if(this.state==="selecting-cells"&&this.cellSelectShapeId){let n=i.find(o=>o.id===this.cellSelectShapeId);if(!n)this.state="idle",this.cellSelectShapeId=null;else {let o=vt(n,Le(n,e));this.context.selectTableCell(this.cellSelectShapeId,o.row,o.col,true);}}else if(this.state==="generating"&&this.generatingState)this.pendingHistoryCommit&&(this.context.commitHistory(),this.pendingHistoryCommit=false),this.handleGenerating(e,i);else if(this.state==="rotating"&&this.rotatingState)this.pendingHistoryCommit&&(this.context.commitHistory(),this.pendingHistoryCommit=false),this.handleRotating(e,t);else if(this.state==="resizing"&&this.resizingState)this.pendingHistoryCommit&&(this.context.commitHistory(),this.pendingHistoryCommit=false),this.handleResizing(e);else if(this.state==="dragging-terminal"&&this.draggingArrowId&&this.draggingTerminal){this.pendingHistoryCommit&&(this.context.commitHistory(),this.pendingHistoryCommit=false);let n=i.find(o=>o.id===this.draggingArrowId);if(n){let o=this.draggingTerminal==="start"?e:n.points[n.points.length-1],s=this.draggingTerminal==="start"?n.points[0]:e,a=this.computeSnapGuidesForArrow(o,s,e,n,i);this.context.setSnapGuides(a);let l=e;if(a.length>0){let u=a.filter(g=>g.type==="horizontal"),p=a.filter(g=>g.type==="vertical");if(u.length>0){let g=u[0].position,m=Math.abs(e.y-g);for(let f of u){let y=Math.abs(e.y-f.position);y<m&&(m=y,g=f.position);}l={...l,y:g};}else if(p.length>0){let g=p[0].position,m=Math.abs(e.x-g);for(let f of p){let y=Math.abs(e.x-f.position);y<m&&(m=y,g=f.position);}l={...l,x:g};}}let h=this.draggingTerminal==="start"?0:n.points.length-1,d=[...n.points];d[h]=l,this.context.updateShape(this.draggingArrowId,{points:d});}}else if(this.state==="dragging-segment"&&this.draggingSegment)this.pendingHistoryCommit&&(this.context.commitHistory(),this.pendingHistoryCommit=false),this.handleDraggingSegment(e);else if(this.state==="brushing")this.handleBrushing(e);else {let n=this.context.getSelectedIds(),o=this.hitGenPoint(e,i,n,this.hoverShapeId);o?(this.hoverGenPoint=o,this.context.setGenerationPreview(this.genPreviewOf(o,this.genPreviewTarget(o,e,false),{type:this.defaultGenType(o.sourceShapeId)}))):(this.hoverGenPoint=null,this.context.setGenerationPreview(null));let s=this.findTableMoveHandleAt(e,i,n),a=s?s.id:this.findHoverAnchorShape(e,i,n);a!==this.hoverShapeId&&(this.hoverShapeId=a,this.context.setHoverAnchorShape(a));let l=this.findHoverConnector(e,i,n);l!==this.hoverConnectorId&&(this.hoverConnectorId=l,this.context.setHoverConnector(l));}}onPointerUp(e,t){if(this.state==="dragging-segment"&&this.draggingSegment&&this.finishSegmentDrag(this.draggingSegment.shapeId,this.draggingSegment.autoRoute,this.draggingSegment.moved),this.state==="dragging-terminal"&&this.draggingArrowId&&this.draggingTerminal){let i=this.context.getShapes(),n=this.findBindingNearPoint(e,i,this.draggingArrowId);n&&this.context.updateArrowBinding(this.draggingArrowId,this.draggingTerminal,n.toShapeId,n.binding);}if(this.state==="generating"&&this.generatingState){let i=this.generatingState,n=this.context.getShapes(),o=i.source,s=this.findBindingNearPoint(e,n,o.sourceShapeId);if(s)this.context.connectToExisting(this.genContext(o,e),s.toShapeId,s.binding);else if(!i.hasMoved)i.sourceWasSelected?this.context.createGeneratedConnection(this.genContext(o,this.genPreviewTarget(o,o.point,false)),{type:this.defaultGenType(o.sourceShapeId)}):o.sourceShapeId&&this.context.selectShape(o.sourceShapeId,false);else {let a=this.defaultGenType(o.sourceShapeId),l=this.avoidSourceOverlap(o,e,a),h=this.context.createFloatingLine(this.genContext(o,this.futureDockPoint(o,l,a)));this.context.openGenerationMenu({context:this.genContext(o,l),existingArrowId:h,defaultShapeType:a});}this.generatingState=null;}this.state==="brushing"&&this.context.setBrushRect(null),this.context.setGenerationPreview(null),this.context.setConnectingTarget(null),this.hoverGenPoint=null,this.pendingHistoryCommit=false,this.state="idle",this.draggingArrowId=null,this.draggingTerminal=null,this.draggingSegment=null,this.translatingState=null,this.resizingState=null,this.rotatingState=null,this.cellSelectShapeId=null,this.context.setSnapGuides([]);}isPointOnConnector(e,t,i,n=10){let o=this.context.getConnectorRoute(t),s=o.length>=2?o:i.points;for(let a=1;a<s.length;a++)if(this.pointToLineDistance(e,s[a-1],s[a])<=n)return true;return false}findHoverConnector(e,t,i){for(let n=t.length-1;n>=0;n--){let o=t[n];if(!(o.type!=="arrow"&&o.type!=="line")&&!i.includes(o.id)&&this.isPointOnConnector(e,o.id,o))return o.id}return null}hitConnectorSegmentHandle(e,t,i){for(let n of i){let o=t.find(u=>u.id===n);if(!o||o.type!=="arrow"&&o.type!=="line")continue;let s=o.connectionType||"straight",a=!!o.userPoints?.length;if(!mt(s==="straight"&&a?"polyline":s))continue;let h=this.context.getConnectorRoute(n);if(h.length<2)continue;let d=O0(h,e);if(d)return {shapeId:n,index:d.index,route:h,axis:d.axis}}return null}segmentSnapContext(e,t,i,n){let o=t[i],s=t[i+1],a=new Set;o&&s&&a.add(n==="H"?(o.y+s.y)/2:(o.x+s.x)/2);let l=this.context.getAutoConnectorRoute?.(e)??[];for(let h=0;h+1<l.length;h++){let d=l[h],u=l[h+1];(Math.abs(u.x-d.x)>=Math.abs(u.y-d.y)?"H":"V")===n&&a.add(n==="H"?(d.y+u.y)/2:(d.x+u.x)/2);}return {extraLevels:[...a],autoRoute:l}}segmentCursor(e){return e==="H"?"ns-resize":"ew-resize"}handleDraggingSegment(e){let t=this.draggingSegment;if(!t||Math.hypot(e.x-t.startPoint.x,e.y-t.startPoint.y)<3)return;let i=t.route[t.index],n=t.route[t.index+1],s=Math.abs(n.x-i.x)>=Math.abs(n.y-i.y)?e.y-(i.y+n.y)/2:e.x-(i.x+n.x)/2;t.moved=true,this.writeConnectorRoute(t.shapeId,G0(t.route,t.index,s,t.extraLevels));}writeConnectorRoute(e,t){let i=this.context.getShapes().find(s=>s.id===e);if(!i)return;let n=ft(t);if(i.type==="arrow"&&(!!i.startBinding||!!i.endBinding)){let s=this.draggingSegment?.autoRoute??[],a=W0(U0(n),s);this.context.updateShape(e,{userPoints:a.length?a:void 0,userPointsRef:a.length?{start:{...n[0]},end:{...n[n.length-1]}}:void 0});}else this.context.updateShape(e,{points:n});}finishSegmentDrag(e,t,i){if(!i||!t||t.length<2)return;let n=this.context.getConnectorRoute(e);n.length<2||j0(n,t)&&this.context.updateShape(e,{userPoints:void 0,userPointsRef:void 0});}hasTransientState(){return this.state!=="idle"||!!this.generatingState}isDragging(){return this.state==="translating"||this.state==="resizing"||this.state==="rotating"||this.state==="dragging-terminal"||this.state==="dragging-segment"||this.state==="generating"}cancelTransient(){let e=this.state!=="idle"||!!this.generatingState||!!this.hoverGenPoint||!!this.hoverShapeId||!!this.hoverConnectorId||this.pendingHistoryCommit;return this.state="idle",this.generatingState=null,this.translatingState=null,this.resizingState=null,this.rotatingState=null,this.draggingArrowId=null,this.draggingTerminal=null,this.draggingSegment=null,this.pendingHistoryCommit=false,this.hoverGenPoint=null,this.hoverShapeId&&(this.hoverShapeId=null,this.context.setHoverAnchorShape(null)),this.hoverConnectorId&&(this.hoverConnectorId=null,this.context.setHoverConnector(null)),this.context.setGenerationPreview(null),this.context.setConnectingTarget(null),this.context.setSnapGuides([]),e}onKeyDown(e){let t=e.target;if(!(t&&(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable))){if(e.key==="Delete"||e.key==="Backspace"){let i=this.context.getShapes(),n=this.context.getSelectedIds().filter(o=>{let s=i.find(a=>a.id===o);return s&&!s.locked});n.length>0&&(this.context.commitHistory(),n.forEach(o=>{this.context.deleteShape(o);}));}e.key==="Escape"&&(this.context.selectShape("",false),this.cancelTransient()),(e.key==="+"||e.key==="=")&&e.shiftKey&&(this.context.commitHistory(),this.handleRotation(15)),e.key==="-"&&e.shiftKey&&(this.context.commitHistory(),this.handleRotation(-15)),e.key==="ArrowUp"&&(e.preventDefault(),this.context.commitHistory(),this.handleNudge(0,-5)),e.key==="ArrowDown"&&(e.preventDefault(),this.context.commitHistory(),this.handleNudge(0,5)),e.key==="ArrowLeft"&&(e.preventDefault(),this.context.commitHistory(),this.handleNudge(-5,0)),e.key==="ArrowRight"&&(e.preventDefault(),this.context.commitHistory(),this.handleNudge(5,0));}}onKeyUp(e){}getCursor(e){switch(this.state){case "translating":return "grabbing";case "generating":return "crosshair";case "rotating":return "grabbing";case "resizing":return this.resizingState?this.getHandleCursor(this.resizingState.handle,this.resizingState.startShape):"default";case "dragging-terminal":return "crosshair";case "dragging-segment":return this.segmentCursor(this.draggingSegment?.axis??"H");case "selecting-cells":return "cell";case "brushing":return "crosshair"}let t=this.context.getShapes(),i=this.context.getSelectedIds(),n=this.hitConnectorSegmentHandle(e,t,i);if(n)return this.segmentCursor(n.axis);if(this.hoverConnectorId||this.context.getMindMapCursorHitAtPoint(e))return "pointer";if(this.hitGenPoint(e,t,i,this.hoverShapeId))return "crosshair";if(this.hitTestArrowTerminal(e,t)&&i.includes(this.hitTestArrowTerminal(e,t).shapeId)||this.findTableMoveHandleAt(e,t,i))return "move";let o=this.hitTest(e,t,i);return o.handle==="rotation"?"grab":o.handle?this.getHandleCursor(o.handle,o.shape):o.shape?o.shape.type==="table"?"cell":"move":null}getHandleCursor(e,t){let n={e:0,se:45,s:90,sw:135,w:180,nw:225,n:270,ne:315}[e];if(n===void 0)return "grab";let o=((n+t.rotation*180/Math.PI)%360+360)%360,s=Math.round(o/45)%4;return ["ew-resize","nwse-resize","ns-resize","nesw-resize"][s]}static ALIGN_SNAP_THRESHOLD=8;handleTranslating(e,t){if(!this.translatingState)return;let i=Xe.subtract(e,this.translatingState.startPoint),n={...i};t.shiftKey&&(Math.abs(i.x)>Math.abs(i.y)?n.y=0:n.x=0);let o=this.context.getShapes(),s=this.context.getSelectedIds(),a=new Set(s),l=[],h=[];if(this.translatingState.startBounds.forEach(d=>{h.push({x:d.x+n.x,y:d.y+n.y,width:d.width,height:d.height});}),!t.shiftKey&&h.length>0){let d=[];for(let g of o)a.has(g.id)||g.type==="line"||g.type==="arrow"||g.type==="draw"||d.push(this.getShapeWorldBounds(g));let u=[],p=[];for(let g of h){let m=[g.y,g.y+g.height/2,g.y+g.height],f=[g.x,g.x+g.width/2,g.x+g.width];for(let y of d){let k=[y.y,y.y+y.height/2,y.y+y.height];for(let v of m)for(let I of k){let w=I-v;Math.abs(w)<=r.ALIGN_SNAP_THRESHOLD&&u.push(w);}let S=[y.x,y.x+y.width/2,y.x+y.width];for(let v of f)for(let I of S){let w=I-v;Math.abs(w)<=r.ALIGN_SNAP_THRESHOLD&&p.push(w);}}}if(u.length>0){let g=u[0];for(let m of u)Math.abs(m)<Math.abs(g)&&(g=m);n.y+=g;}if(p.length>0){let g=p[0];for(let m of p)Math.abs(m)<Math.abs(g)&&(g=m);n.x+=g;}this.translatingState.startBounds.forEach(g=>{let m={x:g.x+n.x,y:g.y+n.y,width:g.width,height:g.height};for(let f of d)l.push(...Re(m,f,"horizontal",1)),l.push(...Re(m,f,"vertical",1));});}this.translatingState.startPositions.forEach((d,u)=>{this.context.updateShape(u,{x:d.x+n.x,y:d.y+n.y});}),this.context.setSnapGuides(this.mergeGuides(l));}handleResizing(e){if(!this.resizingState)return;let t=this.resizingState.startShape,i=this.resizingState.handle,n=this.resizingState.startPoint;if(!i||i==="rotation")return;let s={nw:[-1,-1],n:[0,-1],ne:[1,-1],w:[-1,0],e:[1,0],sw:[-1,1],s:[0,1],se:[1,1]}[i];if(!s)return;let[a,l]=s,h=Xe.subtract(e,n),d=[];for(let w of this.context.getShapes())w.id!==t.id&&(w.type==="line"||w.type==="arrow"||w.type==="draw"||d.push(this.getShapeWorldBounds(w)));let u=20,p=this.getShapeWorldBounds(t),g=p.x,m=p.y,f=p.x+p.width,y=p.y+p.height;a===1?f=Math.max(g+u,f+h.x):a===-1&&(g=Math.min(f-u,g+h.x)),l===1?y=Math.max(m+u,y+h.y):l===-1&&(m=Math.min(y-u,m+h.y));let k=(w,x)=>{let C=null;for(let z of x){let L=z-w;Math.abs(L)<=r.ALIGN_SNAP_THRESHOLD&&(C===null||Math.abs(L)<Math.abs(C))&&(C=L);}return C};if(a!==0&&d.length>0){let w=[];for(let C of d)w.push(C.x,C.x+C.width/2,C.x+C.width);let x=k(a===1?f:g,w);x!==null&&(a===1?f+=x:g+=x);}if(l!==0&&d.length>0){let w=[];for(let C of d)w.push(C.y,C.y+C.height/2,C.y+C.height);let x=k(l===1?y:m,w);x!==null&&(l===1?y+=x:m+=x);}let S={x:g,y:m,width:f-g,height:y-m},v=[];for(let w of d)a!==0&&v.push(...Re(S,w,"vertical",1)),l!==0&&v.push(...Re(S,w,"horizontal",1));this.context.setSnapGuides(this.mergeGuides(v));let I={};if(t.type==="circle"){let w=Math.max(10,Math.max(a!==0?S.width/2:0,l!==0?S.height/2:0));if(I.radius=w,a!==0){let x=a===1?p.x:p.x+p.width;I.x=a===1?x+w:x-w;}if(l!==0){let x=l===1?p.y:p.y+p.height;I.y=l===1?x+w:x-w;}}else if(t.type==="image"){let w=t,x=w.naturalWidth&&w.naturalHeight?w.naturalWidth/w.naturalHeight:Math.max(1,w.width)/Math.max(1,w.height),C=Math.max(u,S.width),z=Math.max(u,S.height);if(C/z>x?C=z*x:z=C/x,C=Math.max(u,C),z=Math.max(u,z),I.width=C,I.height=z,a!==0){let L=a===1?p.x:p.x+p.width;I.x=a===1?L+C/2:L-C/2;}if(l!==0){let L=l===1?p.y:p.y+p.height;I.y=l===1?L+z/2:L-z/2;}}else {if("width"in t&&a!==0&&(I.width=S.width,I.x=S.x+S.width/2),"height"in t&&l!==0&&(I.height=S.height,I.y=S.y+S.height/2),t.type==="draw"){let w=this.getShapeWorldBounds(t),x=a!==0?S.width/Math.max(1,w.width):1,C=l!==0?S.height/Math.max(1,w.height):1;I.points=t.points.map(z=>({x:z.x*x,y:z.y*C}));}if(t.type==="table"){let w=t,x=a!==0?S.width/Math.max(1,w.width):1,C=l!==0?S.height/Math.max(1,w.height):1;a!==0&&(I.colWidths=w.colWidths.map(z=>Math.max(40,Math.round(z*x)))),l!==0&&Math.abs(C-1)>1e-6&&(I.rowHeights=w.rowHeights.map(z=>Math.max(24,Math.round(z*C))));}}Object.keys(I).length>0&&this.context.updateShape(t.id,I);}mergeGuides(e){let t=new Map;for(let i of e){let n=`${i.type}\0${Math.round(i.position*2)/2}`,o=t.get(n);o?(o.start=Math.min(o.start,i.start),o.end=Math.max(o.end,i.end)):t.set(n,{...i});}return [...t.values()]}handleRotation(e){let t=this.context.getSelectedIds(),i=this.context.getShapes();t.forEach(n=>{let o=i.find(s=>s.id===n);o&&this.context.updateShape(n,{rotation:o.rotation+e*Math.PI/180});});}handleNudge(e,t){let i=this.context.getSelectedIds(),n=this.context.getShapes();i.forEach(o=>{let s=n.find(a=>a.id===o);s&&!s.locked&&this.context.updateShape(o,{x:s.x+e,y:s.y+t});});}handleBrushing(e){let t=Math.min(this.brushStart.x,e.x),i=Math.min(this.brushStart.y,e.y),n=Math.abs(e.x-this.brushStart.x),o=Math.abs(e.y-this.brushStart.y);this.context.setBrushRect({x:t,y:i,width:n,height:o});let s=this.context.getShapes(),a=[];for(let l of s){if(l.locked)continue;let h=this.getShapeWorldBounds(l);this.rectsIntersect({x:t,y:i,width:n,height:o},h)&&a.push(l.id);}if(this.brushShiftKey){let l=this.context.getSelectedIds(),h=new Set([...l,...a]);this.context.selectShapes([...h]);}else this.context.selectShapes(a);}getShapeWorldBounds(e){switch(e.type){case "rectangle":case "sticky-note":case "icon":case "image":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "hexagon":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "mind-map":case "table":return {x:e.x-e.width/2,y:e.y-e.height/2,width:e.width,height:e.height};case "circle":return {x:e.x-e.radius,y:e.y-e.radius,width:e.radius*2,height:e.radius*2};case "line":case "arrow":{if(!e.points||e.points.length===0)return {x:e.x,y:e.y,width:0,height:0};let t=1/0,i=1/0,n=-1/0,o=-1/0;return e.points.forEach(s=>{t=Math.min(t,s.x),i=Math.min(i,s.y),n=Math.max(n,s.x),o=Math.max(o,s.y);}),{x:t,y:i,width:n-t,height:o-i}}case "draw":{let t=e,i=t.width,n=t.height;if(typeof i=="number"&&typeof n=="number"&&i>0&&n>0)return {x:t.x-i/2,y:t.y-n/2,width:i,height:n};if(!t.points||t.points.length===0)return {x:t.x,y:t.y,width:0,height:0};let o=1/0,s=1/0,a=-1/0,l=-1/0;return t.points.forEach(h=>{let d=h.x+t.x,u=h.y+t.y;o=Math.min(o,d),s=Math.min(s,u),a=Math.max(a,d),l=Math.max(l,u);}),{x:o,y:s,width:a-o,height:l-s}}case "text":{let t=e;return {x:e.x-t.width/2,y:e.y-t.height/2,width:t.width,height:t.height}}default:{let t=e;return {x:t.x,y:t.y,width:0,height:0}}}}rectsIntersect(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}hitTest(e,t,i){for(let n=t.length-1;n>=0;n--){let o=t[n];if(!o.locked){if(i.includes(o.id)){let s=this.getHitHandle(e,o);if(s)return {shape:o,handle:s}}if(this.isPointInShape(e,o))return {shape:o,handle:null}}}return {shape:null,handle:null}}getHitHandle(e,t){if(t.type==="mind-map")return null;let i=14,n=this.getShapeBounds(t),o=Math.cos(-t.rotation),s=Math.sin(-t.rotation),a=e.x-t.x,l=e.y-t.y,h=a*o-l*s,d=a*s+l*o,u=[{type:"nw",x:n.x,y:n.y},{type:"ne",x:n.x+n.width,y:n.y},{type:"se",x:n.x+n.width,y:n.y+n.height},{type:"sw",x:n.x,y:n.y+n.height},{type:"rotation",x:n.x+n.width/2,y:n.y-26}];for(let p of u)if(Math.abs(h-p.x)<i&&Math.abs(d-p.y)<i)return p.type;return null}static GEN_HIT_THRESHOLD=14;static CLICK_MOVE_THRESHOLD=6;static GEN_GAP=76;static GEN_SUPPORTED_TYPES=new Set(["rectangle","sticky-note","rounded-rectangle","ellipse","diamond","triangle","hexagon","parallelogram","trapezoid","pentagon","octagon","star","uml-class","uml-interface","circle","draw","cylinder","cloud","heart","block-arrow-right","block-arrow-left","block-arrow-up","block-arrow-down","block-arrow-double","right-triangle","cross","speech-rect","speech-round","cube","sector","delay","predefined-process","document","stadium","class-catalog","chevron","brace-left","brace-right","envelope","checkbox","triangular-pyramid","quadrangular-pyramid","cuboid","sphere","ellipsoid","pie","hollow-pie","table"]);computeGenPoints(e,t,i){let n=[],o=new Set(t);i&&o.add(i);for(let s of o){let a=e.find(l=>l.id===s);if(a&&r.GEN_SUPPORTED_TYPES.has(a.type)){let l=this.getShapeBounds(a),h={x:a.x,y:a.y};n.push({point:{x:h.x+l.x+l.width/2,y:h.y+l.y},edge:"n",sourceShapeId:a.id}),n.push({point:{x:h.x+l.x+l.width,y:h.y+l.y+l.height/2},edge:"e",sourceShapeId:a.id}),n.push({point:{x:h.x+l.x+l.width/2,y:h.y+l.y+l.height},edge:"s",sourceShapeId:a.id}),n.push({point:{x:h.x+l.x,y:h.y+l.y+l.height/2},edge:"w",sourceShapeId:a.id});}}return n}hitGenPoint(e,t,i,n){let o=r.GEN_HIT_THRESHOLD,s=null,a=o;for(let l of this.computeGenPoints(t,i,n)){let h=Math.hypot(l.point.x-e.x,l.point.y-e.y);h<=a&&(a=h,s=l);}return s}findHoverAnchorShape(e,t,i){for(let o=t.length-1;o>=0;o--){let s=t[o];if(i.includes(s.id)||s.locked||!r.GEN_SUPPORTED_TYPES.has(s.type))continue;let a=this.getShapeWorldBounds(s);if(!(e.x<a.x-12||e.x>a.x+a.width+12||e.y<a.y-12||e.y>a.y+a.height+12))return s.id}return null}genPreviewTarget(e,t,i){if(i)return t;let{width:n,height:o}=this.genGhostSize(this.defaultGenType(e.sourceShapeId),e.sourceShapeId),s=r.GEN_GAP;if(e.edge)switch(e.edge){case "n":return {x:e.point.x,y:e.point.y-(s+o/2)};case "s":return {x:e.point.x,y:e.point.y+(s+o/2)};case "e":return {x:e.point.x+(s+n/2),y:e.point.y};case "w":return {x:e.point.x-(s+n/2),y:e.point.y}}return {x:e.point.x,y:e.point.y-(s+o/2)}}genGhostShape(e,t,i){let n=i?this.context.getShapes().find(o=>o.id===i):void 0;return He(e,t,void 0,void 0,p0(e,n))}genGhostSize(e,t){let i=this.getShapeBounds(this.genGhostShape(e,{x:0,y:0},t));return {width:i.width,height:i.height}}handleGenerating(e,t){if(!this.generatingState)return;let i=this.generatingState,n=i.source;Math.hypot(e.x-i.startPoint.x,e.y-i.startPoint.y)>r.CLICK_MOVE_THRESHOLD&&(i.hasMoved=true);let s=this.findBindingNearPoint(e,t,n.sourceShapeId),a=this.defaultGenType(n.sourceShapeId),l=this.avoidSourceOverlap(n,e,a),h=s?this.bindingPosition(s.toShapeId,s.binding,t):i.hasMoved?l:this.genPreviewTarget(n,e,false);this.context.setConnectingTarget(s?s.toShapeId:null),this.context.setGenerationPreview(this.genPreviewOf(n,h,{dragging:i.hasMoved,targetShapeId:s?.toShapeId,targetBinding:s?.binding,type:s?void 0:a}));}handleRotating(e,t){if(!this.rotatingState)return;let i=this.rotatingState,n=Math.atan2(e.y-i.center.y,e.x-i.center.x),o=i.startRotation+(n-i.startAngle);t.shiftKey&&(o=Math.round(o/(Math.PI/12))*(Math.PI/12)),this.context.updateShape(i.shapeId,{rotation:o});}bindingPosition(e,t,i){let n=i.find(s=>s.id===e);if(!n)return {x:0,y:0};let o=this.getShapeWorldBounds(n);if(t.handle)switch(t.handle){case "top":return {x:n.x,y:o.y};case "bottom":return {x:n.x,y:o.y+o.height};case "left":return {x:o.x,y:n.y};case "right":return {x:o.x+o.width,y:n.y}}return t.normalizedAnchor?{x:o.x+o.width*t.normalizedAnchor.x,y:o.y+o.height*t.normalizedAnchor.y}:{x:n.x,y:n.y}}isPointInShape(e,t){let i=e.x-t.x,n=e.y-t.y;switch(t.type){case "rectangle":case "sticky-note":case "icon":case "image":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "mind-map":case "table":return Math.abs(i)<=t.width/2&&Math.abs(n)<=t.height/2;case "circle":return i*i+n*n<=t.radius*t.radius;case "hexagon":return this.isPointInHexagon(i,n,t.width,t.height);case "line":case "arrow":return this.isPointOnConnector(e,t.id,t);case "draw":{let o=this.getShapeBounds(t);return Math.abs(i)<=o.width/2&&Math.abs(n)<=o.height/2}case "text":return Math.abs(i)<=50&&Math.abs(n)<=t.fontSize/2;default:return false}}isPointInHexagon(e,t,i,n){let o=Math.abs(e),s=Math.abs(t),a=i/2,l=n/2;return o<=a&&s<=l&&o/a+s/l<=1.5}pointToLineDistance(e,t,i){return Wt(e,t,i)}avoidSourceOverlap(e,t,i){if(!e.sourceShapeId)return t;let n=this.context.getShapes().find(m=>m.id===e.sourceShapeId);if(!n)return t;let o=this.genGhostShape(i,t,e.sourceShapeId),s=this.getShapeWorldBounds(o),a=this.getShapeWorldBounds(n),l=Math.min(s.x+s.width,a.x+a.width)-Math.max(s.x,a.x),h=Math.min(s.y+s.height,a.y+a.height)-Math.max(s.y,a.y);if(l<=0||h<=0)return t;let d=24,u={...t},p=t.x-n.x,g=t.y-n.y;return Math.abs(p)>=Math.abs(g)?u.x=p>=0?a.x+a.width+d+s.width/2:a.x-d-s.width/2:u.y=g>=0?a.y+a.height+d+s.height/2:a.y-d-s.height/2,u}futureDockPoint(e,t,i){let n=this.genGhostShape(i,t,e.sourceShapeId),o=this.getShapeBounds(n),s=f0(e.point,t,e.edge);return vi(t,{width:o.width,height:o.height},s)}getShapeBounds(e){switch(e.type){case "rectangle":case "sticky-note":case "icon":case "image":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "hexagon":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "mind-map":case "table":return {x:-e.width/2,y:-e.height/2,width:e.width,height:e.height};case "circle":return {x:-e.radius,y:-e.radius,width:e.radius*2,height:e.radius*2};case "line":case "arrow":{if(e.points.length===0)return {x:0,y:0,width:0,height:0};let t=1/0,i=1/0,n=-1/0,o=-1/0;return e.points.forEach(s=>{t=Math.min(t,s.x-e.x),i=Math.min(i,s.y-e.y),n=Math.max(n,s.x-e.x),o=Math.max(o,s.y-e.y);}),{x:t,y:i,width:n-t,height:o-i}}case "draw":{let t=e;if(typeof t.width=="number"&&typeof t.height=="number")return {x:-t.width/2,y:-t.height/2,width:t.width,height:t.height};if(t.points.length===0)return {x:0,y:0,width:0,height:0};let i=1/0,n=1/0,o=-1/0,s=-1/0;return t.points.forEach(a=>{let l=a.x-t.x,h=a.y-t.y;i=Math.min(i,l),n=Math.min(n,h),o=Math.max(o,l),s=Math.max(s,h);}),{x:i,y:n,width:o-i,height:s-n}}case "text":return {x:-50,y:-e.fontSize/2,width:100,height:e.fontSize};default:return {x:0,y:0,width:0,height:0}}}hitTestArrowTerminal(e,t){for(let n of t){if(n.type!=="arrow")continue;let o=n;if(o.points.length<2)continue;let s=this.context.getConnectorRoute(o.id),a=s.length>=2?s[0]:o.points[0],l=s.length>=2?s[s.length-1]:o.points[o.points.length-1],h=Math.sqrt(Math.pow(e.x-a.x,2)+Math.pow(e.y-a.y,2)),d=Math.sqrt(Math.pow(e.x-l.x,2)+Math.pow(e.y-l.y,2));if(h<20)return {shapeId:o.id,terminal:"start"};if(d<20)return {shapeId:o.id,terminal:"end"}}return null}findShapeNearPoint(e,t,i){for(let o=t.length-1;o>=0;o--){let s=t[o];if(i&&s.id===i||s.type==="arrow"||s.type==="line"||s.type==="draw")continue;let a;switch(s.type){case "rectangle":case "sticky-note":case "icon":case "image":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "table":a=this.pointToRectDistance(e,{x:s.x-s.width/2,y:s.y-s.height/2,width:s.width,height:s.height});break;case "circle":a=Math.sqrt(Math.pow(e.x-s.x,2)+Math.pow(e.y-s.y,2))-s.radius;break;case "hexagon":{let l=s.width/2,h=s.height/2,d=Math.abs(e.x-s.x),u=Math.abs(e.y-s.y);a=d/l+u/h-1;break}default:continue}if(a<=30)return s}return null}pointToRectDistance(e,t){let i=Math.max(t.x,Math.min(e.x,t.x+t.width)),n=Math.max(t.y,Math.min(e.y,t.y+t.height));return Math.sqrt(Math.pow(e.x-i,2)+Math.pow(e.y-n,2))}static SNAP_THRESHOLD=32;static HANDLE_SNAP_DISTANCE=40;static ON_EDGE_SNAP=12;static ANCHOR_EPS=.001;computeSnapGuidesForArrow(e,t,i,n,o){let s=this.draggingTerminal==="start"?n.endBinding:n.startBinding,a=s?o.find(m=>m.id===s.toShapeId):null;if(!a)return [];let l=this.findShapeNearPoint(i,o,n.id);if(!l)return [];let h=this.getShapeWorldBounds(a),d=this.getShapeWorldBounds(l),u=t.x-e.x,p=t.y-e.y,g=Math.abs(u)>=Math.abs(p)?"horizontal":"vertical";return Re(h,d,g)}findBindingNearPoint(e,t,i){let n,o;for(let a=t.length-1;a>=0;a--){let l=t[a];if(i&&l.id===i||l.type==="arrow"||l.type==="line"||l.type==="draw")continue;let h=this.getPageBounds(l),d={x:l.x,y:l.y},u=[{handle:"top",pos:{x:d.x,y:h.y}},{handle:"bottom",pos:{x:d.x,y:h.y+h.height}},{handle:"left",pos:{x:h.x,y:d.y}},{handle:"right",pos:{x:h.x+h.width,y:d.y}}];for(let f of u){let y=Math.hypot(f.pos.x-e.x,f.pos.y-e.y);y<=r.HANDLE_SNAP_DISTANCE&&(!n||y<n.distance)&&(n={toShapeId:l.id,binding:{toShapeId:l.id,handle:f.handle,isPrecise:false},distance:y});}let p=r.SNAP_THRESHOLD;if(e.x<h.x-p||e.x>h.x+h.width+p||e.y<h.y-p||e.y>h.y+h.height+p)continue;let g=this.nearestPointOnShapeOutline(l,e);if(g&&g.distance<=r.SNAP_THRESHOLD&&!n)if(g.distance<=r.ON_EDGE_SNAP){let f=[{handle:"top",d:Math.abs(g.point.y-h.y)},{handle:"bottom",d:Math.abs(h.y+h.height-g.point.y)},{handle:"left",d:Math.abs(g.point.x-h.x)},{handle:"right",d:Math.abs(h.x+h.width-g.point.x)}];f.sort((k,S)=>k.d-S.d);let y=u.find(k=>k.handle===f[0].handle);n={toShapeId:l.id,binding:{toShapeId:l.id,handle:y.handle,isPrecise:false},distance:Math.hypot(y.pos.x-e.x,y.pos.y-e.y)};}else {let f=this.computeNormalizedAnchor(h,g.point);(!o||g.distance<o.distance)&&(o={toShapeId:l.id,binding:{toShapeId:l.id,isPrecise:true,normalizedAnchor:f},distance:g.distance});}if(e.x>h.x&&e.x<h.x+h.width&&e.y>h.y&&e.y<h.y+h.height&&!n){let f=e.x-(h.x+h.width/2),y=e.y-(h.y+h.height/2),k=Math.abs(f)>=Math.abs(y)?f>=0?"right":"left":y>=0?"bottom":"top";n={toShapeId:l.id,binding:{toShapeId:l.id,handle:k,isPrecise:false},distance:0};}}let s=n??o;if(s)return {toShapeId:s.toShapeId,binding:s.binding}}getPageBounds(e){switch(e.type){case "rectangle":case "sticky-note":case "icon":case "image":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "hexagon":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "table":return {x:e.x-e.width/2,y:e.y-e.height/2,width:e.width,height:e.height};case "circle":return {x:e.x-e.radius,y:e.y-e.radius,width:e.radius*2,height:e.radius*2};default:return {x:e.x-50,y:e.y-50,width:100,height:100}}}computeNormalizedAnchor(e,t){let i=r.ANCHOR_EPS,n=e.width>0?(t.x-e.x)/e.width:.5,o=e.height>0?(t.y-e.y)/e.height:.5;return n=Math.max(i,Math.min(1-i,n)),o=Math.max(i,Math.min(1-i,o)),{x:n,y:o}}nearestPointOnShapeOutline(e,t){let i={x:t.x-e.x,y:t.y-e.y},n=this.nearestLocalPointOnShapeOutline(e,i);if(!n)return null;let o={x:n.point.x+e.x,y:n.point.y+e.y};return {point:o,distance:Math.hypot(o.x-t.x,o.y-t.y)}}nearestLocalPointOnShapeOutline(e,t){switch(e.type){case "rectangle":case "sticky-note":case "icon":case "image":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "hexagon":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "table":{let i=e.width,n=e.height;return this.nearestPointOnRectOutlineLocal(t,{x:-i/2,y:-n/2,width:i,height:n})}case "circle":{let i=e.radius;return this.nearestPointOnCircleOutlineLocal(t,{x:0,y:0},i)}default:return null}}nearestPointOnRectOutlineLocal(e,t){let i=[[{x:t.x,y:t.y},{x:t.x+t.width,y:t.y}],[{x:t.x+t.width,y:t.y},{x:t.x+t.width,y:t.y+t.height}],[{x:t.x+t.width,y:t.y+t.height},{x:t.x,y:t.y+t.height}],[{x:t.x,y:t.y+t.height},{x:t.x,y:t.y}]],n=null;for(let[o,s]of i){let a=this.nearestPointOnSegment(e,o,s);(!n||a.distance<n.distance)&&(n=a);}return n}nearestPointOnCircleOutlineLocal(e,t,i){let n=e.x-t.x,o=e.y-t.y,s=Math.hypot(n,o);if(s<1e-9)return {point:{x:t.x+i,y:t.y},distance:i};let a=t.x+n/s*i,l=t.y+o/s*i,h={x:a,y:l};return {point:h,distance:Math.hypot(h.x-e.x,h.y-e.y)}}nearestPointOnSegment(e,t,i){let n=i.x-t.x,o=i.y-t.y,s=n*n+o*o,a=s>0?((e.x-t.x)*n+(e.y-t.y)*o)/s:0;a=Math.max(0,Math.min(1,a));let l=t.x+a*n,h=t.y+a*o,d={x:l,y:h};return {point:d,distance:Math.hypot(d.x-e.x,d.y-e.y)}}};var Ft=class r extends ne{type="hand";state="idle";startScreenPoint={x:0,y:0};initialCameraPos={x:0,y:0};static DRAG_THRESHOLD=4;onPointerDown(e,t){this.startScreenPoint={x:t.clientX,y:t.clientY};let i=this.context.getCamera();this.initialCameraPos={x:i.x,y:i.y},this.state="pointing";}onPointerMove(e,t){if(this.state!=="idle"){if(this.state==="pointing"){let i=t.clientX-this.startScreenPoint.x,n=t.clientY-this.startScreenPoint.y;if(Math.hypot(i,n)<r.DRAG_THRESHOLD)return;this.state="dragging",this.applyCameraDelta(i,n);return}if(this.state==="dragging"){let i=t.clientX-this.startScreenPoint.x,n=t.clientY-this.startScreenPoint.y;this.applyCameraDelta(i,n);}}}onPointerUp(e,t){if(this.state!=="idle"){if(this.state==="dragging"){let i=this.context.getCamera();this.initialCameraPos={x:i.x,y:i.y},this.startScreenPoint={x:t.clientX,y:t.clientY};}this.state="idle";}}onKeyDown(e){e.key==="Escape"&&this.state!=="idle"&&(this.context.setCameraPosition(this.initialCameraPos.x,this.initialCameraPos.y),this.state="idle");}onKeyUp(e){}getCursor(e){return this.state==="dragging"||this.state==="pointing"?"grabbing":"grab"}applyCameraDelta(e,t){this.context.setCameraPosition(this.initialCameraPos.x+e,this.initialCameraPos.y+t);}};var p1={strokeColor:"#1f2937",fillColor:"transparent",strokeWidth:2,strokeDash:null},Bt=class extends ne{type="line";isDrawing=false;startPoint={x:0,y:0};currentShape=null;onPointerDown(e,t){this.isDrawing=true,this.startPoint=e,this.currentShape={id:`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,type:"line",x:e.x,y:e.y,points:[e],rotation:0,style:{...p1}},this.context.commitHistory(),this.context.addShape(this.currentShape);}onPointerMove(e,t){!this.isDrawing||!this.currentShape||this.context.updateShape(this.currentShape.id,{points:[this.startPoint,e]});}onPointerUp(e,t){let i=this.currentShape;this.isDrawing=false,this.currentShape=null,this.context.setActiveTool("select"),i&&i.points.length>=2&&this.context.selectShape(i.id,false);}onKeyDown(e){}onKeyUp(e){}getCursor(){return "crosshair"}};var g1={strokeColor:"#1f2937",fillColor:"transparent",fillOpacity:1,strokeWidth:4,strokeDash:null},m1=.5,f1=16,S0="#ffeb3b",y1=4200,Ve=class extends ne{type;mode;isDrawing=false;points=[];currentShapeId=null;committed=false;fadeTimer=null;highlighterColor=S0;constructor(e,t){super(e),this.mode=t,this.type=t==="pen"?"pen":"highlighter";}setHighlighterColor(e){this.highlighterColor=e;}getHighlighterColor(){return this.highlighterColor}buildStyle(){return this.mode==="pen"?{...g1}:{strokeColor:J(this.highlighterColor,m1),fillColor:"transparent",fillOpacity:1,strokeWidth:f1,strokeDash:null}}onPointerDown(e,t){this.isDrawing=true,this.committed=false,this.currentShapeId=null,this.points=[{...e}];}buildGeometry(e){let t=1/0,i=1/0,n=-1/0,o=-1/0;for(let p of e)p.x<t&&(t=p.x),p.y<i&&(i=p.y),p.x>n&&(n=p.x),p.y>o&&(o=p.y);let s=(t+n)/2,a=(i+o)/2,l=6,h=Math.max(1,n-t)+l*2,d=Math.max(1,o-i)+l*2,u=e.map(p=>({x:p.x-s,y:p.y-a}));return {x:s,y:a,width:h,height:d,points:u}}onPointerMove(e,t){if(this.isDrawing){if(this.points.push({...e}),!this.committed&&this.points.length>=2){this.context.commitHistory();let i=`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;this.currentShapeId=i;let n=this.buildGeometry(this.points),o=this.buildStyle(),s={id:i,type:"draw",x:n.x,y:n.y,width:n.width,height:n.height,points:n.points,rotation:0,style:o};this.context.addShape(s),this.committed=true;}else if(this.committed&&this.currentShapeId){let i=this.buildGeometry(this.points);this.context.updateShape(this.currentShapeId,{x:i.x,y:i.y,width:i.width,height:i.height,points:i.points});}}}onPointerUp(e,t){if(!this.isDrawing||(this.isDrawing=false,!this.committed||!this.currentShapeId))return;let i=this.currentShapeId;this.currentShapeId=null,this.mode==="highlighter"&&(this.fadeTimer=setTimeout(()=>{this.context.deleteShape(i);},y1));}onKeyDown(e){}onKeyUp(e){}getCursor(){return "crosshair"}dispose(){this.fadeTimer&&(clearTimeout(this.fadeTimer),this.fadeTimer=null);}};var M1={strokeColor:"#1f2937",fillColor:"transparent",strokeWidth:2,strokeDash:null},b1=4,Nt=class extends ne{type="arrow";isDrawing=false;startPoint={x:0,y:0};currentShapeId=null;startBindingInfo=null;startBinding;onPointerDown(e,t){this.isDrawing=true,this.startPoint=e,this.startBindingInfo=null,this.currentShapeId=null;let i=this.context.getShapes(),n=this.findShapeBinding(e,i),o=e;n&&(o=this.getBindingPosition(n.toShapeId,n.handle,i),this.startBindingInfo={...n,position:o}),this.startPoint=o,this.startBinding=n?{toShapeId:n.toShapeId,handle:n.handle}:void 0;}onPointerMove(e,t){if(!this.isDrawing)return;let i=this.context.getShapes(),n=this.findShapeBinding(e,i),o=e;n&&(o=this.getBindingPosition(n.toShapeId,n.handle,i));let s=this.startPoint;if(!this.currentShapeId){if(Math.hypot(o.x-s.x,o.y-s.y)<b1)return;let h=`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,d=this.context.getArrowStyle(),u={id:h,type:"arrow",x:s.x,y:s.y,points:[s,o],rotation:0,style:{...M1},startBinding:this.startBinding,connectionType:d.connectionType,arrowHead:d.arrowHead,dashed:d.dashed};this.context.commitHistory(),this.context.addShape(u),this.currentShapeId=h;}let a=this.computeSnapGuides(s,o,n,i);this.context.setSnapGuides(a),this.context.updateShape(this.currentShapeId,{points:[s,o],endBinding:n?{toShapeId:n.toShapeId,handle:n.handle}:void 0});}onPointerUp(e,t){let i=this.currentShapeId;this.isDrawing=false,this.currentShapeId=null,this.startBindingInfo=null,this.startBinding=void 0,this.context.setSnapGuides([]),i&&(this.context.setActiveTool("select"),this.context.selectShape(i,false));}onKeyDown(e){}onKeyUp(e){}getCursor(){return "crosshair"}computeSnapGuides(e,t,i,n){let o=this.startBindingInfo?n.find(p=>p.id===this.startBindingInfo.toShapeId):null,s=i?n.find(p=>p.id===i.toShapeId):null;if(!o||!s)return [];let a=this.getShapeBounds(o),l=this.getShapeBounds(s),h=t.x-e.x,d=t.y-e.y,u=Math.abs(h)>=Math.abs(d)?"horizontal":"vertical";return Re(a,l,u)}getShapeBounds(e){switch(e.type){case "rectangle":case "sticky-note":case "icon":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "hexagon":return {x:e.x-e.width/2,y:e.y-e.height/2,width:e.width,height:e.height};case "circle":return {x:e.x-e.radius,y:e.y-e.radius,width:e.radius*2,height:e.radius*2};case "text":return {x:e.x-e.width/2,y:e.y-e.height/2,width:e.width,height:e.height};default:return {x:e.x-50,y:e.y-20,width:100,height:40}}}findShapeBinding(e,t){for(let n=t.length-1;n>=0;n--){let o=t[n];if(o.type==="arrow"||o.type==="line"||o.type==="draw")continue;let s;switch(o.type){case "rectangle":case "sticky-note":case "icon":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "uml-class":case "uml-interface":s=this.pointToRectDistance(e,{x:o.x-o.width/2,y:o.y-o.height/2,width:o.width,height:o.height});break;case "circle":{let a=Math.sqrt(Math.pow(e.x-o.x,2)+Math.pow(e.y-o.y,2));s=Math.abs(a-o.radius);break}case "hexagon":{let a=o.width/2,l=o.height/2,h=Math.abs(e.x-o.x),d=Math.abs(e.y-o.y);s=h/a+d/l-1;break}default:continue}if(s<=40){let a=this.getClosestHandle(e,o);return {toShapeId:o.id,handle:a}}}}pointToRectDistance(e,t){let i=Math.max(t.x,Math.min(e.x,t.x+t.width)),n=Math.max(t.y,Math.min(e.y,t.y+t.height));return Math.sqrt(Math.pow(e.x-i,2)+Math.pow(e.y-n,2))}getClosestHandle(e,t){let i=e.x-t.x,n=e.y-t.y;if(t.type==="circle"||t.type==="hexagon"){let h=Math.atan2(n,i);return h>=-Math.PI/4&&h<Math.PI/4?"right":h>=Math.PI/4&&h<3*Math.PI/4?"bottom":h>=3*Math.PI/4||h<-(3*Math.PI)/4?"left":"top"}let o="width"in t?t.width:100,s="height"in t?t.height:100,a=Math.abs(i)/(o/2),l=Math.abs(n)/(s/2);return a>l?i>0?"right":"left":n>0?"bottom":"top"}getBindingPosition(e,t,i){let n=i.find(o=>o.id===e);if(!n)return {x:0,y:0};switch(n.type){case "rectangle":case "sticky-note":case "icon":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":return this.getRectBindingPosition(n,t);case "circle":return this.getCircleBindingPosition(n,t);case "hexagon":return this.getRectBindingPosition(n,t);default:return {x:n.x,y:n.y}}}getRectBindingPosition(e,t){switch(t){case "top":return {x:e.x,y:e.y-e.height/2};case "bottom":return {x:e.x,y:e.y+e.height/2};case "left":return {x:e.x-e.width/2,y:e.y};case "right":return {x:e.x+e.width/2,y:e.y}}}getCircleBindingPosition(e,t){switch(t){case "top":return {x:e.x,y:e.y-e.radius};case "bottom":return {x:e.x,y:e.y+e.radius};case "left":return {x:e.x-e.radius,y:e.y};case "right":return {x:e.x+e.radius,y:e.y}}}};var w1={strokeColor:"transparent",fillColor:"transparent",strokeWidth:0,strokeDash:null},k0=class extends ne{type="text";onPointerDown(e,t){let i=`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,n={id:i,type:"text",x:e.x,y:e.y,rotation:0,style:{...w1},text:"",fontSize:16,textColor:"#1f2937",width:200,height:24};this.context.commitHistory(),this.context.addShape(n),this.context.enterEditing(i);}onPointerMove(e,t){}onPointerUp(e,t){}onKeyDown(e){}onKeyUp(e){}getCursor(){return "text"}};var qe="#1f2937";function A0(r){switch(r.type){case "rectangle":case "image":case "sticky-note":case "icon":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "hexagon":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "mind-map":case "table":case "text":return {x:-(r.width/2),y:-(r.height/2),width:r.width,height:r.height};case "circle":return {x:-r.radius,y:-r.radius,width:r.radius*2,height:r.radius*2};case "line":case "arrow":{let e=r.points;if(!e||e.length===0)return {x:0,y:0,width:0,height:0};let t=1/0,i=1/0,n=-1/0,o=-1/0;for(let s of e){let a=s.x-r.x,l=s.y-r.y;t=Math.min(t,a),i=Math.min(i,l),n=Math.max(n,a),o=Math.max(o,l);}return {x:t,y:i,width:n-t,height:o-i}}case "draw":{let e=r,t=e.width,i=e.height;if(typeof t=="number"&&typeof i=="number")return {x:-t/2,y:-i/2,width:t,height:i};let n=e.points;if(!n||n.length===0)return {x:0,y:0,width:0,height:0};let o=1/0,s=1/0,a=-1/0,l=-1/0;for(let h of n)o=Math.min(o,h.x),s=Math.min(s,h.y),a=Math.max(a,h.x),l=Math.max(l,h.y);return {x:o,y:s,width:a-o,height:l-s}}default:return {x:0,y:0,width:0,height:0}}}function x1(r){let e=A0(r),t=Math.cos(r.rotation),i=Math.sin(r.rotation),n=1/0,o=1/0,s=-1/0,a=-1/0,l=[[e.x,e.y],[e.x+e.width,e.y],[e.x+e.width,e.y+e.height],[e.x,e.y+e.height]];for(let[h,d]of l){let u=h*t-d*i+r.x,p=h*i+d*t+r.y;n=Math.min(n,u),o=Math.min(o,p),s=Math.max(s,u),a=Math.max(a,p);}return {x:n,y:o,width:s-n,height:a-o}}function Zt(r,e=24){if(!r||r.length===0)return {x:0,y:0,width:400,height:300};let t=1/0,i=1/0,n=-1/0,o=-1/0;for(let s of r){let a=x1(s);t=Math.min(t,a.x),i=Math.min(i,a.y),n=Math.max(n,a.x+a.width),o=Math.max(o,a.y+a.height);}return {x:t-e,y:i-e,width:n-t+e*2,height:o-i+e*2}}function Fi(r,e={}){let t=e.padding??24,i=e.scale??2,n=e.background===void 0?"#ffffff":e.background??null,o=Zt(r,t),s=Math.max(1,Math.ceil(o.width)),a=Math.max(1,Math.ceil(o.height)),l=document.createElement("canvas");l.width=Math.ceil(s*i),l.height=Math.ceil(a*i);let h=new Ye(l,i);h.resize(s*i,a*i);let d=new _e;return d.zoom=1,d.x=-o.x,d.y=-o.y,h.render(r,d,new Set,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,n),l}function S1(r,e,t){return new Promise((i,n)=>{r.toBlob(o=>{o?i(o):n(new Error("canvas.toBlob failed"));},e,t);})}function k1(r,e,t){return r.toDataURL(e,t)}var _t=null;function Be(r,e){return _t||(_t=document.createElement("canvas").getContext("2d")),_t?(_t.font=e,_t.measureText(r).width):r.length*8}function Te(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function v0(r,e,t,i,n=false){let o=e*1.3,s=Math.max(1,Math.floor(i/o)),a=`${n?"bold ":""}${e}px sans-serif`,l=r.split(`
|
|
6
|
-
`),h=[];for(let u of l){let p="";for(let g of u){let m=p+g;Be(m,a)>t&&p?(h.push(p),p=g):p=m;}p&&h.push(p);}let d=h.slice(0,s);if(h.length>s&&d.length>0){let u=d[d.length-1],p="...";for(;u.length>0&&Be(u+p,a)>t;)u=u.slice(0,-1);d[d.length-1]=u+p;}return d}function Vn(r,e,t){if(Be(r,t)<=e)return r;let i="\u2026",n=0,o=r.length;for(;n<o;){let s=n+o+1>>1;Be(r.slice(0,s)+i,t)<=e?n=s:o=s-1;}return r.slice(0,n)+i}function Fe(r){return r.map(([e,t])=>`${b(e)},${b(t)}`).join(" ")}function C0(r){return r.map(e=>e[0]==="Z"?"Z":e[0]==="M"||e[0]==="L"?`${e[0]} ${b(e[1])} ${b(e[2])}`:`C ${b(e[1])} ${b(e[2])} ${b(e[3])} ${b(e[4])} ${b(e[5])} ${b(e[6])}`).join(" ")}function C1(r){let e=r;if(!e.text||r.type==="text"||r.type==="line"||r.type==="arrow"||r.type==="draw")return "";let t=e.fontSize||16,i=r.type==="brace-left"||r.type==="brace-right",n=r.type==="sticky-note",o=e.width??(e.radius?e.radius*2:100),s=e.height??(e.radius?e.radius*2:40),a=n?it:.85,l=o*(i?1-Et:1)*a,h=s*a,d=v0(String(e.text),t,l,h);return Nn(d,t,e.textColor||qe,b(x0(r)),0)}function b(r){return Math.round(r*100)/100}var Bi="drawui-paper-shadow";function A1(r){let e=b(r.offsetY??0),t=b(r.offsetX??0);return `<filter id="${Bi}" x="-40%" y="-40%" width="180%" height="180%"><feDropShadow dx="${t}" dy="${e}" stdDeviation="${b(r.blur*.45)}" flood-color="${r.color}" flood-opacity="${b(r.opacity??.2)}" /></filter>`}function Ni(r){return r.strokeDash&&r.strokeDash.length?r.strokeDash.join(","):void 0}function v1(r,e){let t=e.x-r.x,i=e.y-r.y,n=Math.cos(r.rotation),o=Math.sin(r.rotation);return {x:t*n-i*o+r.x,y:t*o+i*n+r.y}}var Fn=Dt;function I1(r,e,t){return Lt(r,e,t)}function z1(r,e,t){let i=r.endBinding;if(!i||!i.auto||i.isPrecise)return i;let n=r.startBinding?.handle?Fn[r.startBinding.handle]:void 0;return {...i,handle:I1(e,{x:t.x,y:t.y},n)}}function Li(r,e){if(e.isPrecise&&e.normalizedAnchor){let t=A0(r),i=r.x+t.x+t.width*e.normalizedAnchor.x,n=r.y+t.y+t.height*e.normalizedAnchor.y;return {x:i,y:n}}if(e.handle){let t=A0(r);switch(e.handle){case "top":return {x:r.x,y:r.y+t.y};case "bottom":return {x:r.x,y:r.y+t.y+t.height};case "left":return {x:r.x+t.x,y:r.y};case "right":return {x:r.x+t.x+t.width,y:r.y}}}return {x:r.x,y:r.y}}function T1(r,e){let t=r.points.map(l=>({...l})),i,n,o,s;if(t.length===0)return {pts:t,fromN:i,toN:n};if(r.startBinding){let l=e.get(r.startBinding.toShapeId);l&&(t[0]=Li(l,r.startBinding),!r.startBinding.isPrecise&&r.startBinding.handle&&(i=Fn[r.startBinding.handle]),o=Hi(l));}if(r.endBinding){let l=e.get(r.endBinding.toShapeId);if(l){let h=z1(r,t[0],l)??r.endBinding;t[t.length-1]=Li(l,h),!h.isPrecise&&h.handle&&(n=Fn[h.handle]),s=Hi(l);}}let a=t;if(r.userPoints&&r.userPoints.length>0&&t.length>=2){let l=Bn([t[0],t[t.length-1]]),h=r.connectionType||"straight",[d,u]=h==="curve"?[t[0],t[t.length-1]]:l,p=h==="curve"?r.userPoints.map(g=>({...g})):Yt(r.userPoints,r.userPointsRef,d,u,i,n);a=[d,...p,u];}return {pts:a.map(l=>v1(r,l)),fromN:i,toN:n,fromBox:o,toBox:s}}function Hi(r){let e=A0(r);return {x:r.x+e.x,y:r.y+e.y,width:e.width,height:e.height}}function Bn(r){if(r.length<2)return r;let e=r[0],t=r[r.length-1],i=t.x-e.x,n=t.y-e.y,o=8;if(Math.abs(n)<=o){let s=(e.y+t.y)/2;return r.map(a=>({x:a.x,y:s}))}if(Math.abs(i)<=o){let s=(e.x+t.x)/2;return r.map(a=>({x:s,y:a.y}))}return r}function D1(r){if(r.length<2)return "";let e=`M ${b(r[0].x)} ${b(r[0].y)}`,t=r[0];for(let i=1;i<r.length;i++){let n=r[i],o=n.x-t.x,s=n.y-t.y,a=Math.hypot(o,s),l={x:(t.x+n.x)/2,y:(t.y+n.y)/2};if(a>=1){let h=-s/a,d=o/a,u=Math.min(a*.2,30);l={x:l.x+h*u,y:l.y+d*u};}e+=` Q ${b(l.x)} ${b(l.y)} ${b(n.x)} ${b(n.y)}`,t=n;}return e}function L1(r,e,t,i,n=false,o,s){if(e==="curve")return D1(r);let a=n&&e==="straight"?"polyline":e,l;if(a==="straight")l=r.length===2?Bn(r):r;else if(r.length===2){let d=Bn(r);l=Ht(d,{fromN:t,toN:i,fromBox:o,toBox:s});}else l=Ht(r,{fromN:t,toN:i,fromBox:o,toBox:s},In,false);if(l.length<2)return "";let h=`M ${b(l[0].x)} ${b(l[0].y)}`;for(let d=1;d<l.length;d++)h+=` L ${b(l[d].x)} ${b(l[d].y)}`;return h}function En(r,e,t,i){let n=Math.atan2(e.y-r.y,e.x-r.x),o=12,s={x:e.x-o*Math.cos(n-Math.PI/6),y:e.y-o*Math.sin(n-Math.PI/6)},a={x:e.x-o*Math.cos(n+Math.PI/6),y:e.y-o*Math.sin(n+Math.PI/6)};return `<path d="M ${b(e.x)} ${b(e.y)} L ${b(s.x)} ${b(s.y)} M ${b(e.x)} ${b(e.y)} L ${b(a.x)} ${b(a.y)}" stroke="${t}" stroke-width="${i}" stroke-linecap="round" fill="none" />`}function Pi(r,e,t,i){let n=Math.atan2(e.y-r.y,e.x-r.x),o=14,s=e.x,a=e.y,l=e.x-o*Math.cos(n),h=e.y-o*Math.sin(n),d=l+o*.5*Math.cos(n-Math.PI/2),u=h+o*.5*Math.sin(n-Math.PI/2),p=l+o*.5*Math.cos(n+Math.PI/2),g=h+o*.5*Math.sin(n+Math.PI/2);return `<polygon points="${b(s)},${b(a)} ${b(d)},${b(u)} ${b(p)},${b(g)}" fill="#ffffff" stroke="${t}" stroke-width="${i}" />`}function Ei(r,e,t,i,n){let o=Math.atan2(e.y-r.y,e.x-r.x),s=14,a=e.x,l=e.y,h=e.x-s*.5*Math.cos(o),d=e.y-s*.5*Math.sin(o),u=e.x-s*Math.cos(o),p=e.y-s*Math.sin(o),g=h+s*.4*Math.cos(o-Math.PI/2),m=d+s*.4*Math.sin(o-Math.PI/2),f=h+s*.4*Math.cos(o+Math.PI/2),y=d+s*.4*Math.sin(o+Math.PI/2);return `<polygon points="${b(a)},${b(l)} ${b(g)},${b(m)} ${b(u)},${b(p)} ${b(f)},${b(y)}" fill="${n?t:"#ffffff"}" stroke="${t}" stroke-width="${i}" />`}function H1(r,e,t,i){if(e==="none"||r.length<2)return "";let n="";return (e==="start"||e==="both")&&(n+=En(r[1],r[0],t,i)),(e==="end"||e==="both")&&(n+=En(r[r.length-2],r[r.length-1],t,i)),e==="inheritance"&&(n+=Pi(r[r.length-2],r[r.length-1],t,i)),e==="aggregation"&&(n+=Ei(r[1],r[0],t,i,false)),e==="composition"&&(n+=Ei(r[1],r[0],t,i,true)),e==="dependency"&&(n+=En(r[r.length-2],r[r.length-1],t,i)),e==="realization"&&(n+=Pi(r[r.length-2],r[r.length-1],t,i)),n}function Nn(r,e,t,i=0,n=0){if(r.length===0)return "";let o=e*1.3,a=-(r.length*o)/2+o/2,l=r.map((h,d)=>`<tspan x="${b(i)}" y="${b(n+a+d*o)}">${Te(h)}</tspan>`).join("");return `<text text-anchor="middle" dominant-baseline="central" font-family="sans-serif" font-size="${e}" fill="${t}">${l}</text>`}function q(r,e,t){let i=t??Ni(r),n=e&&r.fillColor!=="transparent",o=r.fillOpacity??1,s=r.strokeOpacity??1;return [n?`fill="${r.fillColor}"`:'fill="none"',n&&o<1?`fill-opacity="${b(o)}"`:"",`stroke="${r.strokeColor}"`,s<1&&r.strokeColor!=="transparent"?`stroke-opacity="${b(s)}"`:"",`stroke-width="${r.strokeWidth}"`,'stroke-linecap="round"','stroke-linejoin="round"',i?`stroke-dasharray="${i}"`:""].filter(Boolean).join(" ")}function Ri(r,e){let{width:t,height:i}=r,n=t/2,o=i/2,s=`${ce}px sans-serif`,a=xe,l=e?0:r.attributes.length>0?r.attributes.length*G+O*2:O*2,h=t-de*2,d=[];d.push(`<rect x="${b(-n)}" y="${b(-o)}" width="${t}" height="${i}" ${q(r.style,true)} />`),d.push(`<line x1="${b(-n)}" y1="${b(-o+a)}" x2="${b(n)}" y2="${b(-o+a)}" stroke="${r.style.strokeColor}" stroke-width="${r.style.strokeWidth}" />`),e||d.push(`<line x1="${b(-n)}" y1="${b(-o+a+l)}" x2="${b(n)}" y2="${b(-o+a+l)}" stroke="${r.style.strokeColor}" stroke-width="${r.style.strokeWidth}" />`);let u=e?`<<${r.className||"Interface"}>>`:r.className;d.push(`<text text-anchor="middle" dominant-baseline="central" font-family="sans-serif" font-weight="bold" font-size="${ce}" fill="${r.textColor||qe}" x="0" y="${b(-o+a/2)}">${Te(Vn(u,h,s))}</text>`);let p=(m,f,y,k,S)=>{let v=`${y||ce}px sans-serif`,I=Vn(m,h,v),w=`<text text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-size="${y||ce}" fill="${k||qe}" x="${b(-n+de)}" y="${b(f)}">${Te(I)}</text>`;if(S){let x=Be(I,v);w+=`<line x1="${b(-n+de)}" y1="${b(f)}" x2="${b(-n+de+x)}" y2="${b(f)}" stroke="${k||qe}" stroke-width="1" />`;}return w};if(!e){let m=-o+a+O+G/2;r.attributes.forEach((f,y)=>{let k=$e(f);k&&d.push(p(k,m+y*G,f.fontSize||r.fontSize||0,f.textColor||r.textColor||"",!!f.strikethrough));});}let g=-o+a+l+O+G/2;return r.methods.forEach((m,f)=>{let y=ve(m);y&&d.push(p(y,g+f*G,m.fontSize||r.fontSize||0,m.textColor||r.textColor||"",!!m.strikethrough));}),d.join("")}function P1(r){let{width:e,height:t}=r,i=e/2,n=t/2,o=Ke(r.cells),s=[];r.style.fillColor!=="transparent"&&s.push(`<rect x="${b(-i)}" y="${b(-n)}" width="${b(e)}" height="${b(t)}" fill="${r.style.fillColor}" />`);for(let l=0;l<r.cells.length;l++)for(let h=0;h<(r.cells[l]?.length??0);h++){if(o[l]?.[h])continue;let d=r.cells[l][h];if(!d.fillColor)continue;let u=ue(r,l,h);s.push(`<rect x="${b(u.ox-i)}" y="${b(u.oy-n)}" width="${b(u.width)}" height="${b(u.height)}" fill="${d.fillColor}" />`);}let a=`stroke="${o0}" stroke-width="${1}"`;for(let l=1;l<r.rowHeights.length;l++){let h=-n+r.rowHeights.slice(0,l).reduce((u,p)=>u+p,0),d=[];for(let u=0;u<l;u++)for(let p=0;p<(r.cells[u]?.length??0);p++){let m=r.cells[u][p].rowSpan??1;if(m>1&&u+m>l){let f=ue(r,u,p);d.push([f.ox-i,f.ox-i+f.width]);}}for(let[u,p]of Vi(-i,i,d))s.push(`<line x1="${b(u)}" y1="${b(h)}" x2="${b(p)}" y2="${b(h)}" ${a} />`);}for(let l=1;l<r.colWidths.length;l++){let h=-i+r.colWidths.slice(0,l).reduce((u,p)=>u+p,0),d=[];for(let u=0;u<l;u++)for(let p=0;p<r.cells.length;p++){let g=r.cells[p]?.[u];if(!g)continue;let m=g.colSpan??1;if(m>1&&u+m>l){let f=ue(r,p,u);d.push([f.oy-n,f.oy-n+f.height]);}}for(let[u,p]of Vi(-n,n,d))s.push(`<line x1="${b(h)}" y1="${b(u)}" x2="${b(h)}" y2="${b(p)}" ${a} />`);}s.push(`<rect x="${b(-i)}" y="${b(-n)}" width="${b(e)}" height="${b(t)}" ${q(r.style,true)} />`);for(let l=0;l<r.cells.length;l++)for(let h=0;h<(r.cells[l]?.length??0);h++){if(o[l]?.[h])continue;let d=r.cells[l][h];if(!d.text)continue;let u=ue(r,l,h),p=d.fontSize||r.fontSize||14,g=u.width-20,m=Math.max(p*1.3,u.height-8),f=v0(d.text,p,g,m,!!d.bold),y=d.align==="center"?"middle":d.align==="right"?"end":"start",k=d.align==="center"?u.ox-i+u.width/2:d.align==="right"?u.ox-i+u.width-10:u.ox-i+10,S=d.bold?'font-weight="bold" ':"",v=p*1.3,I=u.oy-n+It(f.length,v,u.height);s.push(`<text text-anchor="${y}" dominant-baseline="central" font-family="sans-serif" ${S}font-size="${p}" fill="${d.textColor||r.textColor||r0}">${f.map((w,x)=>`<tspan x="${b(k)}" y="${b(I+x*v)}">${Te(w)}</tspan>`).join("")}</text>`);}return s.join("")}function Vi(r,e,t){let i=[...t].sort((s,a)=>s[0]-a[0]),n=[],o=r;for(let[s,a]of i)if(s>o&&n.push([o,Math.min(s,e)]),o=Math.max(o,a),o>=e)break;return o<e&&n.push([o,e]),n.filter(([s,a])=>a-s>=.5)}function E1(r){let t=Z(r.root).positions,i=[],n=s=>{if(s.collapsed)return;let a=t.get(s.id);if(a)for(let l of s.children??[]){let h=t.get(l.id);if(!h)continue;let d=h.direction,u=Ze(l,h.depth),p=d==="right"?r.x+a.x+a.width/2:d==="left"?r.x+a.x-a.width/2:r.x+a.x,g=d==="down"?r.y+a.y+a.height/2:d==="up"?r.y+a.y-a.height/2:r.y+a.y,m=d==="right"?r.x+h.x-h.width/2:d==="left"?r.x+h.x+h.width/2:r.x+h.x,f=d==="down"?r.y+h.y-h.height/2:d==="up"?r.y+h.y+h.height/2:r.y+h.y,y;if(d==="right"||d==="left"){let k=(p+m)/2;y=`M ${b(p)} ${b(g)} C ${b(k)} ${b(g)} ${b(k)} ${b(f)} ${b(m)} ${b(f)}`;}else {let k=(g+f)/2;y=`M ${b(p)} ${b(g)} C ${b(p)} ${b(k)} ${b(m)} ${b(k)} ${b(m)} ${b(f)}`;}i.push(`<path d="${y}" stroke="${u}" stroke-width="2" fill="none" stroke-linecap="round" />`),n(l);}};n(r.root);let o=s=>{let a=t.get(s.id);if(!a)return;let l=Ze(s,a.depth),h=a.width/2,d=a.height/2,u=r.x+a.x,p=r.y+a.y;if(i.push(`<rect x="${b(u-h)}" y="${b(p-d)}" width="${a.width}" height="${a.height}" rx="6" ry="6" fill="#ffffff" stroke="${l}" stroke-width="2" />`),s.note){let v="11px sans-serif",I=s.noteColor??l,w=Math.min(Be(s.note,v)+12,130),x=16,C=Be(s.note,v)+12>130?s.note.slice(0,12)+"\u2026":s.note;i.push(`<rect x="${b(u-h)}" y="${b(p-d-x+2)}" width="${w}" height="${x}" rx="4" ry="4" fill="${I}" />`),i.push(`<text text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-size="11" fill="#ffffff" x="${b(u-h+6)}" y="${b(p-d-x/2+2)}">${Te(C)}</text>`);}let g=s.icon?18:0,m=a.width-g-(s.icon?8:0)-16,f=Vn(s.text||"",m,`${14}px sans-serif`),y=Be(f,`${14}px sans-serif`),k=g+(g?8:0)+y,S=u-k/2;if(s.icon&&(i.push(`<text text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-size="16" fill="#1f2937" x="${b(S)}" y="${b(p)}">${Te(s.icon)}</text>`),S+=g+8),i.push(`<text text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-size="${14}" fill="#1f2937" x="${b(S)}" y="${b(p)}">${Te(f)}</text>`),s.children&&s.children.length>0&&!s.collapsed)for(let v of s.children)o(v);};return o(r.root),i.join("")}function R1(r,e){let t=r.rotation*180/Math.PI,i=r.flipX||r.flipY?`<g transform="scale(${r.flipX?-1:1} ${r.flipY?-1:1})">`:"",n=i?"</g>":"",o=`<g transform="translate(${b(r.x)} ${b(r.y)}) rotate(${b(t)})">${i}`,s=`${n}${C1(r)}</g>`,a=r.style;switch(r.type){case "image":{let l=r,h=l.width??0,d=l.height??0,u=Math.max(0,Math.min(l.borderRadius??0,h/2,d/2)),p=`x="${b(-h/2)}" y="${b(-d/2)}" width="${b(h)}" height="${b(d)}"`;if(!l.src)return `${o}<rect ${p}${u>0?` rx="${b(u)}"`:""} fill="#f3f4f6" stroke="#e5e7eb" />${s}`;let g=B0(l.src)||l.src,m=`<image href="${Te(g)}" ${p} preserveAspectRatio="none" />`;if(u>0){let f=`dw-img-clip-${String(l.id).replace(/[^a-zA-Z0-9_-]/g,"")}`;return `${o}<defs><clipPath id="${f}"><rect ${p} rx="${b(u)}" /></clipPath></defs><g clip-path="url(#${f})">${m}</g>${s}`}return `${o}${m}${s}`}case "rectangle":{let l=r.width,h=r.height;return `${o}<rect x="${b(-l/2)}" y="${b(-h/2)}" width="${l}" height="${h}" ${q(a,true)} />${s}`}case "rounded-rectangle":{let l=r.width,h=r.height,d=r.borderRadius||8;return `${o}<rect x="${b(-l/2)}" y="${b(-h/2)}" width="${l}" height="${h}" rx="${d}" ry="${d}" ${q(a,true)} />${s}`}case "stadium":{let l=r.width,h=r.height,d=Math.min(l,h)/2;return `${o}<rect x="${b(-l/2)}" y="${b(-h/2)}" width="${l}" height="${h}" rx="${d}" ry="${d}" ${q(a,true)} />${s}`}case "circle":{let l=r.radius;return `${o}<circle cx="0" cy="0" r="${l}" ${q(a,true)} />${s}`}case "ellipse":{let l=r.width,h=r.height;return `${o}<ellipse cx="0" cy="0" rx="${l/2}" ry="${h/2}" ${q(a,true)} />${s}`}case "diamond":{let l=r.width,h=r.height;return `${o}<polygon points="${Fe([[0,-h/2],[l/2,0],[0,h/2],[-l/2,0]])}" ${q(a,true)} />${s}`}case "triangle":{let l=r.width,h=r.height;return `${o}<polygon points="${Fe([[0,-h/2],[l/2,h/2],[-l/2,h/2]])}" ${q(a,true)} />${s}`}case "hexagon":{let l=r.width,h=r.height;return `${o}<polygon points="${Fe(Rn(l,h,6,-Math.PI/2))}" ${q(a,true)} />${s}`}case "pentagon":{let l=r.width,h=r.height;return `${o}<polygon points="${Fe(Rn(l,h,5,-Math.PI/2))}" ${q(a,true)} />${s}`}case "octagon":{let l=r.width,h=r.height;return `${o}<polygon points="${Fe(Rn(l,h,8,-Math.PI/8))}" ${q(a,true)} />${s}`}case "star":{let l=r.width,h=r.height;return `${o}<polygon points="${Fe(V1(l,h))}" ${q(a,true)} />${s}`}case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "sticky-note":{let l=r.width,h=r.height,d=Rt(r.type);if(!d)return "";let u=d.shadow?` filter="url(#${Bi})"`:"",p=`<path d="${C0(be(d.outline,l,h))}" ${q(a,!d.strokeOnly)}${u} />`,g=(d.overlays??[]).map(k=>{let S=k.fill??"auto",v=S==="none"?"transparent":S==="auto"?k.deriveFill?k.deriveFill(a.fillColor):a.fillColor:S,I={...a,fillColor:v,strokeColor:k.stroke===false?"transparent":a.strokeColor};return `<path d="${C0(be(k.cmds,l,h))}" ${q(I,S!=="none")} />`}).join(""),m=(d.seams??[]).map(k=>`<path d="${C0(be(k,l,h))}" ${q({...a,fillColor:"transparent"},true)} />`).join(""),f=`${b(a.strokeWidth*ut[0])},${b(a.strokeWidth*ut[1])}`,y=(d.hiddenSeams??[]).map(k=>`<path d="${C0(be(k,l,h))}" ${q({...a,fillColor:"transparent"},true,f)} />`).join("");return `${o}${p}${g}${m}${y}${s}`}case "icon":{let l=r.width,h=r.height,d=Ue(r.iconId);if(!d)return `${o}${s}`;let u=a.fillColor!=="transparent"?a.fillColor:qe,p=[];d.disc&&p.push(`<circle cx="${te/2}" cy="${te/2}" r="${te/2-1}" fill="${d.disc}" />`);for(let m of d.layers){let f=m.fill??"ink",y=m.stroke??"ink",k=[f==="none"?'fill="none"':`fill="${f==="ink"?u:f}"`,y==="none"?"":`stroke="${y==="ink"?u:y}" stroke-width="${m.w??1.8}" stroke-linecap="round" stroke-linejoin="round"`].filter(Boolean).join(" ");p.push(`<path d="${m.d}" ${k} />`);}let g=d.label;return g&&p.push(`<text x="${te/2}" y="${te/2+.5}" text-anchor="middle" dominant-baseline="central" font-family="sans-serif" font-size="${g.size??13}" fill="${g.color}">${Te(g.text)}</text>`),`${o}<g transform="translate(${b(-l/2)} ${b(-h/2)}) scale(${b(l/te)} ${b(h/te)})">${p.join("")}</g>${s}`}case "parallelogram":{let l=r.width,h=r.height,d=l*.2;return `${o}<polygon points="${Fe([[-l/2+d,-h/2],[l/2,-h/2],[l/2-d,h/2],[-l/2,h/2]])}" ${q(a,true)} />${s}`}case "trapezoid":{let l=r.width,h=r.height,d=l*.15;return `${o}<polygon points="${Fe([[-l/2+d,-h/2],[l/2-d,-h/2],[l/2,h/2],[-l/2,h/2]])}" ${q(a,true)} />${s}`}case "uml-class":return `${o}${Ri(r,false)}${s}`;case "uml-interface":return `${o}${Ri(r,true)}${s}`;case "table":return `${o}${P1(r)}${s}`;case "mind-map":return E1(r);case "line":case "arrow":{let l=r,h=l.connectionType||"straight",{pts:d,fromN:u,toN:p,fromBox:g,toBox:m}=T1(l,e);if(d.length<2)return "";let f=l.style.strokeColor,y=l.style.strokeWidth,S=l.type==="arrow"&&(!!l.dashed||l.arrowHead==="dependency"||l.arrowHead==="realization")?"8,5":Ni(l.style),v=`<path d="${L1(d,h,u,p,!!(l.userPoints&&l.userPoints.length),g,m)}" fill="none" stroke="${f}" stroke-width="${y}" stroke-linecap="round" stroke-linejoin="round"${S?` stroke-dasharray="${S}"`:""} />`,I=H1(d,l.arrowHead||"end",f,y);return `${v}${I}`}case "draw":{let l=r,h=l.points;if(!h||h.length<2)return "";let d=Math.cos(l.rotation||0),u=Math.sin(l.rotation||0),p=h.map(m=>({x:m.x*d-m.y*u+l.x,y:m.x*u+m.y*d+l.y}));if(p.length<2)return "";let g=`M ${b(p[0].x)} ${b(p[0].y)}`;for(let m=1;m<p.length-1;m++){let f=(p[m].x+p[m+1].x)/2,y=(p[m].y+p[m+1].y)/2;g+=` Q ${b(p[m].x)} ${b(p[m].y)} ${b(f)} ${b(y)}`;}return g+=` L ${b(p[p.length-1].x)} ${b(p[p.length-1].y)}`,`<path d="${g}" fill="none" stroke="${a.strokeColor}" stroke-width="${a.strokeWidth}" stroke-linecap="round" stroke-linejoin="round" />`}case "text":{let l=r,h=l.fontSize||16,d=l.textColor||qe,u=v0(l.text||"",h,l.width,l.height),p="";if(l.highlightColor&&l.highlightColor!=="transparent"){let g=h*.15,m=typeof l.highlightOpacity=="number"?l.highlightOpacity:1,f=m<1?` fill-opacity="${b(m)}"`:"";p+=`<rect x="${b(-l.width/2-g)}" y="${b(-(u.length*h*1.3)/2-g)}" width="${l.width+g*2}" height="${u.length*h*1.3+g*2}" rx="4" fill="${l.highlightColor}"${f} />`;}return p+=Nn(u,h,d),`${o}${p}${s}`}default:{let l=r,h=l.width||100,d=l.height||40,u="";if(l.text){let p=l.fontSize||16,g=v0(l.text,p,h*.85,d*.85);u+=Nn(g,p,l.textColor||qe);}return `${o}<rect x="${b(-h/2)}" y="${b(-d/2)}" width="${h}" height="${d}" ${q(a,true)} />${u}${s}`}}}function Rn(r,e,t,i){let n=r/2,o=e/2,s=[];for(let a=0;a<t;a++){let l=a*2*Math.PI/t+i;s.push([n*Math.cos(l),o*Math.sin(l)]);}return s}function V1(r,e){let t=r/2,i=e/2,n=5,o=.4,s=[];for(let a=0;a<n*2;a++){let l=a*Math.PI/n-Math.PI/2,h=a%2===0?1:o;s.push([t*h*Math.cos(l),i*h*Math.sin(l)]);}return s}function _i(r,e={}){let t=e.padding??24,i=e.background===void 0?"#ffffff":e.background??null,n=Zt(r,t),o=Math.max(1,Math.ceil(n.width)),s=Math.max(1,Math.ceil(n.height)),a=new Map(r.map(p=>[p.id,p])),l=r.map(p=>R1(p,a)).filter(Boolean).join(`
|
|
7
|
-
`),
|
|
8
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${s}" viewBox="${
|
|
9
|
-
${
|
|
10
|
-
`:""} ${
|
|
1
|
+
'use strict';var Pn=r=>!!r&&Number.isFinite(r.x)&&Number.isFinite(r.y)&&Number.isFinite(r.width)&&Number.isFinite(r.height);function He(r){return !Pn(r)||r.width<=0||r.height<=0}function ht(r,e){if(He(r))return Pn(e)?{...e}:null;if(He(e))return {...r};let t=r,i=e,n=Math.min(t.x,i.x),o=Math.min(t.y,i.y),s=Math.max(t.x+t.width,i.x+i.width),a=Math.max(t.y+t.height,i.y+i.height);return {x:n,y:o,width:s-n,height:a-o}}function Ln(r,e){if(He(r)||He(e))return false;let t=r,i=e;return t.x<i.x+i.width&&i.x<t.x+t.width&&t.y<i.y+i.height&&i.y<t.y+t.height}function Oi(r,e){if(!Ln(r,e))return [{...r}];let t=[],i=r.x+r.width,n=r.y+r.height,o=e.x+e.width,s=e.y+e.height;e.y>r.y&&t.push({x:r.x,y:r.y,width:r.width,height:e.y-r.y}),s<n&&t.push({x:r.x,y:s,width:r.width,height:n-s});let a=Math.max(r.y,Math.min(e.y,n)),l=Math.max(0,Math.min(s,n)-a);return l>0&&e.x>r.x&&t.push({x:r.x,y:a,width:e.x-r.x,height:l}),l>0&&o<i&&t.push({x:o,y:a,width:i-o,height:l}),t}var $i=(r,e)=>({x:r.x-e,y:r.y-e,width:r.width+e*2,height:r.height+e*2}),kn=class{current=null;reset(e=null){this.current=Pn(e)?{...e}:null;}get(){return this.current?{...this.current}:null}desiredOf(e){let t=e.padding??40,i=e.viewport,n=e.minSize?.width??i.width,o=e.minSize?.height??i.height,s=e.anchor??{x:0,y:0},a;return He(e.content)?a={x:s.x,y:s.y,width:Math.max(i.width,n),height:Math.max(i.height,o)}:a=$i(e.content,t),e.includeViewport===false?a:ht(a,$i(i,t))}update(e){let t=e.viewport,i=this.desiredOf(e);if(He(this.current))return this.current=i,{extent:{...i},changed:true,action:"init"};let n=this.current;if(i.x<n.x-.5||i.y<n.y-.5||i.x+i.width>n.x+n.width+.5||i.y+i.height>n.y+n.height+.5){let c=ht(n,i),h=Math.abs(c.x-n.x)>.5||Math.abs(c.y-n.y)>.5||Math.abs(c.width-n.width)>.5||Math.abs(c.height-n.height)>.5;return this.current=c,{extent:{...c},changed:h,action:h?"grow":"hold"}}if(!e.pointerMoved)return {extent:{...n},changed:false,action:"hold",holdReason:"pointer-still"};if(Oi(n,i).some(c=>Ln(c,t)))return {extent:{...n},changed:false,action:"hold",holdReason:"still-visible"};let l=Math.abs(i.x-n.x)>.5||Math.abs(i.y-n.y)>.5||Math.abs(i.width-n.width)>.5||Math.abs(i.height-n.height)>.5;return this.current=i,{extent:{...i},changed:l,action:l?"shrink":"hold"}}};var pe=new Map,_t=new Set,An="anonymous",Vt=new Map,Dn=new Set;function Hn(r){return Dn.add(r),()=>Dn.delete(r)}function zi(){for(let r of Array.from(Dn))try{r();}catch{}}function zo(r){An=r;}var Go=r=>/^https?:/i.test(r);function $t(r){if(!r)return null;let e=pe.get(r);return e?e.status==="ready"?e.loaded:null:(Ke(r),null)}function Rn(r){return pe.get(r)?.status==="error"}function Uo(r){return pe.get(r)?.status==="loading"}function Ke(r){if(!r)return Promise.resolve(null);let e=pe.get(r);return e?e.status==="ready"?Promise.resolve(e.loaded):e.status==="error"?Promise.resolve(null):Wo(r):(pe.set(r,{status:"loading"}),new Promise(t=>{let i=new Image;An&&Go(r)&&(i.crossOrigin=An);let n=o=>{if(o&&i.naturalWidth>0){let s={img:i,width:i.naturalWidth,height:i.naturalHeight,src:r};pe.set(r,{status:"ready",loaded:s}),zi(),t(s);}else pe.set(r,{status:"error"}),zi(),t(null);};i.onload=()=>n(true),i.onerror=()=>n(false);try{i.src=r;}catch{n(false);}}))}function Wo(r){return new Promise(e=>{let t=0,i=()=>{let n=pe.get(r);if(!n||n.status==="ready")return e(n&&n.status==="ready"?n.loaded:null);if(n.status==="error"||++t>600)return e(null);setTimeout(i,50);};i();})}async function En(r){let e=new Set;for(let t of r)t.type==="image"&&t.src&&e.add(t.src);await Promise.all(Array.from(e).map(t=>Ke(t)));}function Nn(r){if(!r)return null;if(r.startsWith("data:"))return r;let e=Vt.get(r);if(e)return e;let t=$t(r);if(!t)return null;try{let i=document.createElement("canvas");i.width=t.width,i.height=t.height;let n=i.getContext("2d");if(!n)return null;n.drawImage(t.img,0,0);let o=i.toDataURL("image/png");return Vt.set(r,o),o}catch{return null}}function Gi(r){r.startsWith("blob:")&&_t.add(r);}function Bn(r){if(!(!r.startsWith("blob:")||!_t.has(r))){_t.delete(r),pe.delete(r),Vt.delete(r);try{URL.revokeObjectURL(r);}catch{}}}function Fo(){for(let r of Array.from(_t))Bn(r);pe.clear(),Vt.clear();}var Ot=31457280;function Ui(r){return typeof r=="function"}var Ko=r=>!!r&&typeof r=="object"&&typeof r.url=="string";function Wi(r,e){return e.split(".").reduce((t,i)=>{if(t&&typeof t=="object")return t[i]},r)}function Yo(r){if(typeof r=="string")return r.trim()||null;if(!r||typeof r!="object")return null;let e=r,t=["url","data.url","data","data.src","location","path","src","href","fileUrl","imageUrl","data.fileUrl"];for(let i of t){let n=Wi(e,i);if(typeof n=="string"&&n.trim())return n.trim()}return null}function Fi(r,e){let t=(r||"").trim();if(!t)throw new Error("\u4E0A\u4F20\u63A5\u53E3\u8FD4\u56DE\u4E3A\u7A7A");let i;try{i=JSON.parse(t);}catch{if(/^(https?:)?\/\//.test(t)||t.startsWith("data:")||t.startsWith("/"))return t;throw new Error(`\u4E0A\u4F20\u63A5\u53E3\u8FD4\u56DE\u65E0\u6CD5\u89E3\u6790\uFF1A${t.slice(0,120)}`)}let n=e?Wi(i,e):Yo(i);if(typeof n=="string"&&n.trim())return n.trim();throw new Error(`\u4E0A\u4F20\u63A5\u53E3\u8FD4\u56DE\u91CC\u6CA1\u6709\u56FE\u7247\u5730\u5740\uFF1A${t.slice(0,120)}`)}async function Ki(r,e){let t=e.maxSizeBytes??31457280;if(r.size>t)throw new Error(`image.tooLarge: \u56FE\u7247\u5927\u5C0F ${(r.size/1024/1024).toFixed(2)} MB \u8D85\u8FC7\u4E0A\u9650 ${(t/1024/1024).toFixed(2)} MB`);let i=new FormData;i.append(e.fieldName||"file",r,r.name||"image.png");for(let[a,l]of Object.entries(e.fields||{}))i.append(a,l);let n=new AbortController,o=e.timeoutMs??6e4,s=setTimeout(()=>n.abort(),o);try{let a=await fetch(e.url,{method:e.method||"POST",body:i,headers:e.headers,credentials:e.withCredentials?"include":"same-origin",signal:n.signal}),l=await a.text();if(!a.ok)throw new Error(`\u4E0A\u4F20\u5931\u8D25\uFF08HTTP ${a.status}\uFF09\uFF1A${l.slice(0,120)}`);return Fi(l,e.responseUrlPath)}catch(a){throw a?.name==="AbortError"?new Error(`\u4E0A\u4F20\u8D85\u65F6\uFF08${o}ms\uFF09`):a instanceof Error?a:new Error(String(a))}finally{clearTimeout(s);}}async function Yi(r,e){if(Ui(r)){let t=await r(e);if(!t||typeof t!="string")throw new Error("\u4E0A\u4F20\u51FD\u6570\u6CA1\u6709\u8FD4\u56DE\u56FE\u7247\u5730\u5740");return t}if(Ko(r))return Ki(e,r);throw new Error("\u4E0A\u4F20\u914D\u7F6E\u4E0D\u5408\u6CD5\uFF1A\u9700\u8981 { url } \u6216\u4E0A\u4F20\u51FD\u6570")}function _n(r){let e=[];for(let t of r){if(t.type!=="image")continue;let i=t;i.src&&(i.temporary||i.src.startsWith("blob:"))&&e.push(i.src);}return e}var Xo=new Set(["text","line","arrow","draw","table","uml-class","uml-interface","mind-map","sticky-note"]);function Vn(r){return !Xo.has(r)}var be={identity(){return {a:1,b:0,c:0,d:1,e:0,f:0}},translation(r,e){return {a:1,b:0,c:0,d:1,e:r,f:e}},rotation(r){let e=Math.cos(r),t=Math.sin(r);return {a:e,b:t,c:-t,d:e,e:0,f:0}},scale(r,e){return {a:r,b:0,c:0,d:e,e:0,f:0}},multiply(r,e){return {a:r.a*e.a+r.b*e.c,b:r.a*e.b+r.b*e.d,c:r.c*e.a+r.d*e.c,d:r.c*e.b+r.d*e.d,e:r.e*e.a+r.f*e.c+e.e,f:r.e*e.b+r.f*e.d+e.f}},apply(r,e){return {x:r.a*e.x+r.c*e.y+r.e,y:r.b*e.x+r.d*e.y+r.f}},invert(r){let e=r.a*r.d-r.b*r.c;if(Math.abs(e)<1e-10)return null;let t=1/e;return {a:r.d*t,b:-r.b*t,c:-r.c*t,d:r.a*t,e:(r.c*r.f-r.d*r.e)*t,f:(r.b*r.e-r.a*r.f)*t}},createCameraMatrix(r){let e=be.scale(r.zoom,r.zoom),t=be.translation(r.x,r.y);return be.multiply(t,e)}};var Re=class{x=0;y=0;zoom=1;minZoom=.1;maxZoom=10;getMatrix(){return be.createCameraMatrix({x:this.x,y:this.y,zoom:this.zoom})}getInverseMatrix(){return be.invert(this.getMatrix())}screenToPage(e){let t=this.getInverseMatrix();return t?be.apply(t,e):e}pageToScreen(e){return be.apply(this.getMatrix(),e)}translate(e,t){this.x+=e,this.y+=t;}zoomAt(e,t){let i=this.screenToPage(e);this.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.zoom*t));let n=this.pageToScreen(i);this.x+=e.x-n.x,this.y+=e.y-n.y;}reset(){this.x=0,this.y=0,this.zoom=1;}getZoom(){return this.zoom}fitBounds(e,t=50){let i=window.innerWidth,n=window.innerHeight,o=(i-t*2)/e.width,s=(n-t*2)/e.height,a=Math.min(o,s,this.maxZoom);this.zoom=Math.max(this.minZoom,a),this.x=(i-e.width*this.zoom)/2-e.x*this.zoom,this.y=(n-e.height*this.zoom)/2-e.y*this.zoom;}};var Zo=40;var jo=20;function zt(r,e,t){let i=t.x-e.x,n=t.y-e.y,o=i*i+n*n;if(o<1e-9)return Math.hypot(r.x-e.x,r.y-e.y);let s=((r.x-e.x)*i+(r.y-e.y)*n)/o;return s=Math.max(0,Math.min(1,s)),Math.hypot(r.x-(e.x+i*s),r.y-(e.y+n*s))}function dt(r){return r==="polyline"||r==="orthogonal"}function ut(r){return r.type==="arrow"&&(!!r.startBinding||!!r.endBinding)}function Gt(r,e=40){let t=[];for(let i=0;i+1<r.length;i++){let n=r[i],o=r[i+1],s=o.x-n.x,a=o.y-n.y,l=Math.hypot(s,a);l<e||t.push({index:i,center:{x:(n.x+o.x)/2,y:(n.y+o.y)/2},axis:Math.abs(s)>=Math.abs(a)?"H":"V",length:l});}return t}function On(r,e,t=10,i=14){let n=Gt(r);if(n.length===0)return null;let o=null,s=1/0;for(let a of n){if(Math.hypot(e.x-a.center.x,e.y-a.center.y)<=t)return a;let c=zt(e,r[a.index],r[a.index+1]);c<=i&&c<s&&(s=c,o=a);}return o}function zn(r,e,t,i=[]){if(e<0||e+1>=r.length)return r;let n=r[e],o=r[e+1],s=Math.abs(o.x-n.x)>=Math.abs(o.y-n.y),a=e===0,l=e+1===r.length-1,c=s?Math.sign(o.x-n.x)||1:Math.sign(o.y-n.y)||1,h=Math.abs(s?o.x-n.x:o.y-n.y),d=Math.min(24,h/2),u=s?(n.y+o.y)/2:(n.x+o.x)/2,p=I=>s?I.y:I.x,g=[];a?g.push(p(r[0])):g.push(p(r[e-1])),l?g.push(p(r[r.length-1])):g.push(p(r[e+2]));let m=u+t,f=1/0,b=null;for(let I of [...g,...i]){let T=Math.abs(m-I);T<20&&T<f&&(f=T,b=I);}b!==null&&(m=b);let x=[];if(a){let I=s?{x:n.x+c*d,y:n.y}:{x:n.x,y:n.y+c*d};x.push({x:n.x,y:n.y},I,s?{x:I.x,y:m}:{x:m,y:I.y});}else x.push(s?{x:n.x,y:m}:{x:m,y:n.y});if(l){let I=s?{x:o.x-c*d,y:o.y}:{x:o.x,y:o.y-c*d};x.push(s?{x:I.x,y:m}:{x:m,y:I.y},I,{x:o.x,y:o.y});}else x.push(s?{x:o.x,y:m}:{x:m,y:o.y});return [...r.slice(0,e),...x,...r.slice(e+2)]}function Ye(r){let e=[];for(let t of r){let i=e.length;if(!(i>0&&Math.abs(e[i-1].x-t.x)<1e-6&&Math.abs(e[i-1].y-t.y)<1e-6)){if(i>=2){let n=e[i-2],o=e[i-1];if(Math.abs(n.y-o.y)<1e-6&&Math.abs(o.y-t.y)<1e-6||Math.abs(n.x-o.x)<1e-6&&Math.abs(o.x-t.x)<1e-6){e[i-1]=t;continue}}e.push(t);}}return e}function Gn(r){return r.length<=2?[]:r.slice(1,-1).map(e=>({x:e.x,y:e.y}))}function qo(r,e,t,i){if(!e||r.length===0)return r;let n={x:t.x-e.start.x,y:t.y-e.start.y},o={x:i.x-e.end.x,y:i.y-e.end.y},s=d=>Math.abs(d.x)<.01&&Math.abs(d.y)<.01;if(s(n)&&s(o))return r;if(Math.abs(n.x-o.x)<.01&&Math.abs(n.y-o.y)<.01)return r.map(d=>({x:d.x+n.x,y:d.y+n.y}));let a=[t,...r,i],l=a.length-1,c=d=>{let u=l<=1?0:d/(l-1);return {x:n.x+(o.x-n.x)*u,y:n.y+(o.y-n.y)*u}},h=d=>{let u=a[d],p=a[d+1];return Math.abs(p.x-u.x)>=Math.abs(p.y-u.y)};return r.map((d,u)=>{let p=h(u),g=p?u:u+1,m=p?u+1:u;return {x:d.x+c(m).x,y:d.y+c(g).y}})}function Jo(r,e,t,i,n,o=20){if(r.length===0)return r;let s=r.map(l=>({x:l.x,y:l.y})),a=(l,c,h)=>{h&&(h.x!==0?Math.abs(l.y-c.y)<=o&&(l.y=c.y):h.y!==0&&Math.abs(l.x-c.x)<=o&&(l.x=c.x));};return a(s[0],e,i),a(s[s.length-1],t,n),s}function Ut(r,e,t,i,n,o){return r.length===0?r:Jo(qo(r,e,t,i),t,i,n,o)}function Un(r,e,t=.75){return r.length!==e.length||r.length===0?false:r.every((i,n)=>Math.abs(i.x-e[n].x)<=t&&Math.abs(i.y-e[n].y)<=t)}function Ee(r,e=20){let t=r.length;if(t<4)return r;let i=[];for(let a=0;a+1<t;a++){let l=r[a],c=r[a+1],h=Math.abs(c.y-l.y)<=Math.abs(c.x-l.x);i.push({axis:h?"H":"V",level:h?l.y:l.x});}let n={H:null,V:null},o=false;for(let a=0;a<i.length;a++){let l=i[a],c=n[l.axis];c!==null&&a!==i.length-1&&Math.abs(l.level-c)<e-.001&&(l.level=c,o=true),n[l.axis]=l.level;}if(!o)return r;let s=[{x:r[0].x,y:r[0].y}];for(let a=1;a<i.length;a++){let l=i[a-1],c=i[a];s.push({x:l.axis==="V"?l.level:c.level,y:l.axis==="H"?l.level:c.level});}return s.push({x:r[t-1].x,y:r[t-1].y}),Ye(s)}function $n(r,e,t=24,i=.75){let n=Math.abs(e.x-r.x),o=Math.abs(e.y-r.y);return n<=t+.001&&o<=i||o<=t+.001&&n<=i}function Xi(r,e,t=.5){if(!e||r.length<2)return false;for(let i=1;i<r.length;i++){let n=r[i-1],o=r[i],s=Math.min(n.x,o.x),a=Math.max(n.x,o.x),l=Math.min(n.y,o.y),c=Math.max(n.y,o.y);if(s<e.x+e.width-t&&a>e.x+t&&l<e.y+e.height-t&&c>e.y+t)return true}return false}function Zi(r){if(r.length<2)return "0";let e=(t,i)=>Math.abs(i.x-t.x)>=Math.abs(i.y-t.y)?"H":"V";return `${r.length}:${e(r[0],r[1])}${e(r[r.length-2],r[r.length-1])}`}function Wt(r){let{userRoute:e,autoRoute:t,base:i,fromBox:n,toBox:o}=r;return e.length<2?false:Xi(e,n)||Xi(e,o)?true:i&&i.length>=2&&t.length>=2?Zi(i)!==Zi(t):t.length===2&&e.length>=4}function Wn(r,e,t=24,i=.75){if(r.length===0||e.length<2)return r;let n=e[0],o=e[e.length-1];return r.filter(s=>!$n(n,s,t,i)&&!$n(o,s,t,i))}var ji={primary:"#3b82f6",selection:{outline:"#3b82f6",handleStroke:"#3b82f6",handleFill:"#ffffff",outlineFill:"rgba(59, 130, 246, 0.1)",shadow:"#3b82f6"},grid:"#e5e7eb",text:"#1f2937",editBorder:"#3b82f6",brushFill:"rgba(59, 130, 246, 0.08)",brushStroke:"rgba(59, 130, 246, 0.8)",guide:"rgba(59, 130, 246, 0.6)",lineHighlight:"rgba(59, 130, 246, 0.4)",genDot:"#3b82f6",genLine:"rgba(59, 130, 246, 0.55)"},H={...ji,selection:{...ji.selection}},Fn=new Set;function Qo(r){return Fn.add(r),()=>Fn.delete(r)}function Ft(r){r.selection&&Object.assign(H.selection,r.selection);for(let e of Object.keys(r)){if(e==="selection")continue;let t=r[e];t!==void 0&&(H[e]=t);}Fn.forEach(e=>e());}function er(){return H}function z(r,e){let t=qi(r);if(!t)return r;let i=parseInt(t,16),n=i>>16&255,o=i>>8&255,s=i&255;return `rgba(${n}, ${o}, ${s}, ${e})`}function Kn(r,e){let t=qi(r);if(!t)return r;let i=parseInt(t,16),n=e<0?0:255,o=Math.abs(e),s=a=>Math.round((n-a)*o+a).toString(16).padStart(2,"0");return `#${s(i>>16&255)}${s(i>>8&255)}${s(i&255)}`}var tr={light:{grid:"#e5e7eb"},warm:{grid:"#e0dcc8"},gray:{grid:"#d1d5db"},purple:{grid:"#e0dcfa"},green:{grid:"#d1fae5"},"eye-care":{grid:"#e3dcc6"}},nr="light";function qi(r){let e=r.replace("#","").trim();return /^[0-9a-fA-F]{3}$|^[0-9a-fA-F]{6}$/.test(e)?e.length===3?e.split("").map(t=>t+t).join(""):e:null}var X=class{context;constructor(e){this.context=e;}getCursor(e){return null}hasTransientState(){return false}cancelTransient(){return false}isDragging(){return false}dispose(){}};var ir=[{code:"zh-CN",label:"\u7B80\u4F53\u4E2D\u6587"},{code:"zh-TW",label:"\u7E41\u9AD4\u4E2D\u6587"},{code:"en-US",label:"English"},{code:"ja-JP",label:"\u65E5\u672C\u8A9E"},{code:"ko-KR",label:"\uD55C\uAD6D\uC5B4"},{code:"de-DE",label:"Deutsch"},{code:"fr-FR",label:"Fran\xE7ais"}],or={"save.success":"\u5DF2\u4FDD\u5B58","save.fail":"\u4FDD\u5B58\u5931\u8D25","tool.select":"\u9009\u62E9\u5DE5\u5177","tool.hand":"\u62D6\u62FD\u89C6\u53E3","tool.rectangle":"\u77E9\u5F62","tool.rounded-rectangle":"\u5706\u89D2\u77E9\u5F62","tool.circle":"\u5706\u5F62","tool.ellipse":"\u692D\u5706","tool.diamond":"\u83F1\u5F62","tool.triangle":"\u4E09\u89D2\u5F62","tool.hexagon":"\u516D\u8FB9\u5F62","tool.parallelogram":"\u5E73\u884C\u56DB\u8FB9\u5F62","tool.trapezoid":"\u68AF\u5F62","tool.pentagon":"\u4E94\u8FB9\u5F62","tool.octagon":"\u516B\u8FB9\u5F62","tool.star":"\u661F\u5F62","tool.cylinder":"\u5706\u67F1\u4F53","tool.cloud":"\u4E91\u5F62","tool.heart":"\u5FC3\u5F62","tool.block-arrow-right":"\u53F3\u7BAD\u5934","tool.block-arrow-left":"\u5DE6\u7BAD\u5934","tool.block-arrow-up":"\u4E0A\u7BAD\u5934","tool.block-arrow-down":"\u4E0B\u7BAD\u5934","tool.block-arrow-double":"\u53CC\u5411\u7BAD\u5934","tool.right-triangle":"\u76F4\u89D2\u4E09\u89D2\u5F62","tool.cross":"\u5341\u5B57","tool.speech-rect":"\u65B9\u5F62\u5BF9\u8BDD\u6846","tool.speech-round":"\u5706\u5F62\u5BF9\u8BDD\u6846","tool.cube":"\u7ACB\u65B9\u4F53","tool.sector":"\u6247\u5F62","tool.delay":"D \u5F62","tool.predefined-process":"\u9884\u5B9A\u4E49\u6D41\u7A0B","tool.document":"\u6587\u6863","tool.stadium":"\u5168\u5706\u89D2\u77E9\u5F62","tool.class-catalog":"\u7C7B\u76EE","tool.envelope":"\u4FE1\u5C01","tool.checkbox":"\u590D\u9009\u6846","tool.sticky-note":"\u4FBF\u7B7E","shape.sticky-note":"\u4FBF\u7B7E","tool.triangular-pyramid":"\u4E09\u68F1\u9525","tool.quadrangular-pyramid":"\u56DB\u68F1\u9525","tool.cuboid":"\u957F\u65B9\u4F53","tool.sphere":"\u7403","tool.ellipsoid":"\u692D\u7403","tool.pie":"\u997C\u72B6","tool.hollow-pie":"\u7A7A\u5FC3\u997C\u72B6","class.plain":"\u7C7B","flow.process":"\u5904\u7406","flow.step":"\u6D41\u7A0B","flow.startEnd":"\u5F00\u59CB/\u7ED3\u675F","flow.decision":"\u5224\u5B9A","flow.data":"\u6570\u636E","flow.manual":"\u624B\u52A8\u64CD\u4F5C","flow.preparation":"\u51C6\u5907","flow.database":"\u6570\u636E\u5E93","flow.delay":"\u5EF6\u65F6","shapeGroup.basic":"\u57FA\u7840","shapeGroup.flowchart":"\u6D41\u7A0B\u56FE","shapeGroup.other":"\u5176\u4ED6","shapeGroup.solid":"\u7ACB\u4F53","shapeGroup.uml":"\u7C7B\u56FE","shapeMenu.hint":"\u60AC\u505C\u67E5\u770B\u540D\u79F0","tool.chevron":"\u5C16\u89D2","tool.brace-left":"\u5DE6\u62EC\u53F7","tool.brace-right":"\u53F3\u62EC\u53F7","tool.uml-class":"UML \u7C7B\u56FE","tool.uml-interface":"UML \u63A5\u53E3","tool.line":"\u76F4\u7EBF","tool.arrow":"\u7EBF\u6761","tool.text":"\u6587\u672C","tool.draw":"\u753B\u7B14","tool.pen":"\u753B\u7B14","tool.highlighter":"\u8367\u5149\u7B14","tool.eraser":"\u6A61\u76AE\u64E6","status.none":"\u672A\u9009\u62E9","status.selected":"\u5DF2\u9009\u62E9 {n} \u4E2A\u56FE\u5F62","toolbar.select":"\u9009\u62E9 (V)","toolbar.hand":"\u62D6\u62FD\u89C6\u53E3 (H)","toolbar.shapes":"\u5F62\u72B6","toolbar.grid":"\u7F51\u683C","toolbar.undo":"\u64A4\u9500 (Ctrl+Z)","toolbar.redo":"\u91CD\u505A (Ctrl+Shift+Z)","toolbar.arrow":"\u7BAD\u5934 (A)","toolbar.text":"\u6587\u672C (T)","toolbar.pen":"\u753B\u7B14","toolbar.highlighter":"\u8367\u5149\u7B14","toolbar.eraser":"\u6A61\u76AE\u64E6 (E)","toolbar.uml-class":"UML \u7C7B\u56FE","toolbar.uml-interface":"UML \u63A5\u53E3","zoom.in":"\u653E\u5927","zoom.out":"\u7F29\u5C0F","zoom.reset":"\u91CD\u7F6E","style.stroke":"\u8FB9\u6846","style.line":"\u7EBF\u6761","style.fill":"\u586B\u5145","style.text":"\u6587\u5B57","style.highlight":"\u9AD8\u4EAE","style.prefix":"\u524D\u7F00\u7B26\u53F7","style.prefix.soon":"\u524D\u7F00\u7B26\u53F7\u5F00\u53D1\u4E2D\uFF0C\u656C\u8BF7\u671F\u5F85","style.none":"\u65E0","style.addColor":"\u6DFB\u52A0\u989C\u8272","style.connection":"\u8FDE\u7EBF","style.arrow":"\u7BAD\u5934","style.dashed":"\u865A\u7EBF","style.solid":"\u5B9E\u7EBF","style.opacity":"\u4E0D\u900F\u660E\u5EA6","style.connection.straight":"\u76F4\u7EBF","style.connection.polyline":"\u5706\u89D2\u6298\u7EBF","style.connection.orthogonal":"\u76F4\u89D2\u6298\u7EBF","style.connection.curve":"\u66F2\u7EBF","style.arrowhead.none":"\u65E0\u7BAD\u5934","style.arrowhead.end":"\u7EC8\u70B9\u7BAD\u5934","style.arrowhead.start":"\u8D77\u70B9\u7BAD\u5934","style.arrowhead.both":"\u53CC\u7BAD\u5934","style.arrowhead.none-dashed":"\u65E0\u7BAD\u5934\u865A\u7EBF","style.arrowhead.both-dashed":"\u53CC\u7BAD\u5934\u865A\u7EBF","style.uml":"UML","style.arrowhead.inheritance":"\u7EE7\u627F","style.arrowhead.composition":"\u7EC4\u5408","style.arrowhead.aggregation":"\u805A\u5408","style.arrowhead.dependency":"\u4F9D\u8D56","style.arrowhead.realization":"\u5B9E\u73B0","menu.title":"\u9009\u62E9\u65B0\u56FE\u5F62","menu.cancel":"\u70B9\u51FB\u7A7A\u767D\u5904\u53D6\u6D88","shape.rectangle":"\u77E9\u5F62","shape.rounded-rectangle":"\u5706\u89D2","shape.circle":"\u5706\u5F62","shape.ellipse":"\u692D\u5706","shape.diamond":"\u83F1\u5F62","shape.triangle":"\u4E09\u89D2","shape.hexagon":"\u516D\u8FB9\u5F62","shape.parallelogram":"\u5E73\u884C","shape.trapezoid":"\u68AF\u5F62","shape.pentagon":"\u4E94\u8FB9\u5F62","shape.octagon":"\u516B\u8FB9\u5F62","shape.star":"\u661F\u5F62","shape.uml-class":"\u7C7B\u56FE","shape.uml-interface":"\u63A5\u53E3","uml.drag":"\u62D6\u62FD\u6392\u5E8F","uml.delete":"\u5220\u9664\u8BE5\u884C","uml.textColor":"\u6587\u5B57\u989C\u8272","uml.defaultColor":"\u9ED8\u8BA4\u989C\u8272","uml.fontSize":"\u5B57\u53F7","uml.strikethrough":"\u5220\u9664\u7EBF","uml.attribute":"\u5C5E\u6027","uml.method":"\u65B9\u6CD5","minimap.title":"\u5C0F\u5730\u56FE","minimap.expand":"\u5C55\u5F00\u5C0F\u5730\u56FE","minimap.collapse":"\u6536\u8D77\u5C0F\u5730\u56FE","tool.mind-map":"\u601D\u7EF4\u5BFC\u56FE","toolbar.mind-map":"\u601D\u7EF4\u5BFC\u56FE","toolbar.export":"\u5BFC\u51FA","toolbar.export.png":"PNG \u56FE\u7247","toolbar.export.svg":"SVG \u77E2\u91CF\u56FE","toolbar.export.pdf":"PDF \u6587\u6863","toolbar.export.data":"\u5BFC\u51FA\u6570\u636E","toolbar.import.data":"\u5BFC\u5165\u6570\u636E","import.success":"\u5BFC\u5165\u6210\u529F\uFF0C\u5DF2\u6062\u590D {n} \u4E2A\u56FE\u5F62","import.fail":"\u5BFC\u5165\u5931\u8D25\uFF0C\u6587\u4EF6\u683C\u5F0F\u4E0D\u6B63\u786E","shape.mind-map":"\u601D\u7EF4\u5BFC\u56FE","mindmap.defaultRoot":"\u4E2D\u5FC3\u4E3B\u9898","mindmap.defaultBranch":"\u5206\u652F\u4E3B\u9898","mindmap.nodeText":"\u8282\u70B9\u6587\u672C","mindmap.addChild":"\u5B50\u8282\u70B9","mindmap.addSibling":"\u5144\u5F1F\u8282\u70B9","mindmap.deleteNode":"\u5220\u9664\u8282\u70B9","mindmap.color":"\u989C\u8272","mindmap.levelColor":"\u9ED8\u8BA4\u5C42\u7EA7\u8272","mindmap.icon":"\u56FE\u6807","mindmap.noIcon":"\u65E0\u56FE\u6807","mindmap.note":"\u5C5E\u6027\u8BF4\u660E","mindmap.notePlaceholder":"\u8BF4\u660E\u5185\u5BB9\uFF08\u53EF\u9009\uFF09","mindmap.noteColor":"\u8BF4\u660E\u989C\u8272","mindmap.noteColorDefault":"\u540C\u8282\u70B9\u8272","mindmap.collapse":"\u6298\u53E0","mindmap.expand":"\u5C55\u5F00","mindmap.close":"\u5173\u95ED\u7F16\u8F91","mindmap.more":"\u66F4\u591A\u8BBE\u7F6E","mindmap.level":"\u5C42\u7EA7","mindmap.promote1":"\u5347\u4E00\u7EA7","mindmap.promote2":"\u5347\u4E24\u7EA7","mindmap.promoteDisabled":"\u5DF2\u81F3\u9876\u5C42","tool.table":"\u8868\u683C","toolbar.table":"\u8868\u683C","shape.table":"\u8868\u683C","table.insertRow":"\u63D2\u5165\u884C","table.deleteRow":"\u5220\u9664\u884C","table.insertCol":"\u63D2\u5165\u5217","table.deleteCol":"\u5220\u9664\u5217","table.merge":"\u5408\u5E76\u5355\u5143\u683C","table.split":"\u62C6\u5206\u5355\u5143\u683C","table.insertRowAbove":"\u5728\u4E0A\u65B9\u63D2\u5165\u884C","table.insertRowBelow":"\u5728\u4E0B\u65B9\u63D2\u5165\u884C","table.insertColLeft":"\u5728\u5DE6\u4FA7\u63D2\u5165\u5217","table.insertColRight":"\u5728\u53F3\u4FA7\u63D2\u5165\u5217","table.pickHint":"\u62D6\u9009\u884C\u5217\u6570","ctx.copy":"\u590D\u5236","ctx.paste":"\u7C98\u8D34","ctx.duplicate":"\u521B\u5EFA\u526F\u672C","ctx.layer":"\u5C42\u7EA7","ctx.bringToFront":"\u7F6E\u4E8E\u9876\u5C42","ctx.bringForward":"\u4E0A\u79FB\u4E00\u5C42","ctx.sendBackward":"\u4E0B\u79FB\u4E00\u5C42","ctx.sendToBack":"\u7F6E\u4E8E\u5E95\u5C42","ctx.copyStyle":"\u590D\u5236\u6837\u5F0F","ctx.pasteStyle":"\u7C98\u8D34\u6837\u5F0F","ctx.rotate90":"90\xB0","ctx.rotate180":"180\xB0","ctx.rotate270":"270\xB0","ctx.rotate":"\u65CB\u8F6C","ctx.group":"\u6210\u7EC4","ctx.ungroup":"\u89E3\u7EC4","ctx.lock":"\u9501\u5B9A","ctx.unlock":"\u89E3\u9501","ctx.unlockAll":"\u5168\u90E8\u89E3\u9501","ctx.delete":"\u5220\u9664","toolbar.icon":"\u56FE\u6807 (S)","toolbar.template":"\u6A21\u677F","template.search":"\u641C\u7D22\u6A21\u677F","template.all":"\u5168\u90E8","template.empty":"\u6CA1\u6709\u5339\u914D\u7684\u6A21\u677F","toolbar.image":"\u56FE\u7247","toolbar.more":"\u66F4\u591A","toolbar.pageTheme":"\u9875\u9762\u4E3B\u9898","pageTheme.light":"\u9ED8\u8BA4","pageTheme.warm":"\u6696\u9EC4","pageTheme.gray":"\u6D45\u7070","pageTheme.purple":"\u6D45\u7D2B","pageTheme.green":"\u6D45\u7EFF","pageTheme.eye-care":"\u62A4\u773C","tool.image":"\u56FE\u7247","image.uploadFailed":"\u56FE\u7247\u4E0A\u4F20\u5931\u8D25","image.insertFailed":"\u56FE\u7247\u63D2\u5165\u5931\u8D25","image.tooLarge":"\u56FE\u7247\u8D85\u8FC7 30 MB\uFF0C\u65E0\u6CD5\u4E0A\u4F20","image.temporaryInserted":"\u5DF2\u63D2\u5165\u4E34\u65F6\u56FE\u7247\uFF08\u672A\u914D\u7F6E\u4E0A\u4F20\u63A5\u53E3\uFF0C\u5237\u65B0\u540E\u4F1A\u4E22\u5931\uFF09","image.naturalSize":"\u539F\u56FE\u5C3A\u5BF8","icon.search":"\u641C\u7D22\u56FE\u6807","icon.empty":"\u6CA1\u6709\u5339\u914D\u7684\u56FE\u6807","icon.recent":"\u6700\u8FD1\u4F7F\u7528","iconCat.status":"\u72B6\u6001\u6807\u8BB0","iconCat.number":"\u6570\u5B57\u5FBD\u6807","iconCat.tech":"\u4E91\u4E0E\u6280\u672F","iconCat.chart":"\u6570\u636E\u56FE\u8868","iconCat.office":"\u529E\u516C\u6587\u6863","iconCat.media":"\u5A92\u4F53\u534F\u4F5C","iconCat.arrow":"\u7BAD\u5934\u65B9\u5411","iconCat.misc":"\u5E38\u7528","iconCat.emoji":"\u8868\u60C5","iconCat.sticker":"\u8D34\u7EB8","iconCat.device":"\u7535\u8111\u8BBE\u5907","iconCat.weather":"\u5929\u6C14","iconCat.transport":"\u4EA4\u901A","iconCat.nature":"\u81EA\u7136","iconCat.building":"\u5EFA\u7B51","iconCat.medical":"\u533B\u7597","iconCat.shopping":"\u8D2D\u7269","iconCat.science":"\u79D1\u5B66","iconCat.animal":"\u52A8\u7269","iconCat.time":"\u65F6\u95F4","iconCat.edit":"\u7F16\u8F91","iconCat.food":"\u98DF\u7269","iconCat.communication":"\u901A\u8BAF"},Ji={"zh-CN":or,"zh-TW":{"save.success":"\u5DF2\u5132\u5B58","save.fail":"\u5132\u5B58\u5931\u6557","tool.select":"\u9078\u53D6\u5DE5\u5177","tool.hand":"\u62D6\u66F3\u8996\u7A97","tool.rectangle":"\u77E9\u5F62","tool.rounded-rectangle":"\u5713\u89D2\u77E9\u5F62","tool.circle":"\u5713\u5F62","tool.ellipse":"\u6A62\u5713","tool.diamond":"\u83F1\u5F62","tool.triangle":"\u4E09\u89D2\u5F62","tool.hexagon":"\u516D\u908A\u5F62","tool.parallelogram":"\u5E73\u884C\u56DB\u908A\u5F62","tool.trapezoid":"\u68AF\u5F62","tool.pentagon":"\u4E94\u908A\u5F62","tool.octagon":"\u516B\u908A\u5F62","tool.star":"\u661F\u5F62","tool.cylinder":"\u5713\u67F1\u9AD4","tool.cloud":"\u96F2\u5F62","tool.heart":"\u5FC3\u5F62","tool.block-arrow-right":"\u53F3\u7BAD\u982D","tool.block-arrow-left":"\u5DE6\u7BAD\u982D","tool.block-arrow-up":"\u4E0A\u7BAD\u982D","tool.block-arrow-down":"\u4E0B\u7BAD\u982D","tool.block-arrow-double":"\u96D9\u5411\u7BAD\u982D","tool.right-triangle":"\u76F4\u89D2\u4E09\u89D2\u5F62","tool.cross":"\u5341\u5B57","tool.speech-rect":"\u65B9\u5F62\u5C0D\u8A71\u6846","tool.speech-round":"\u5713\u5F62\u5C0D\u8A71\u6846","tool.cube":"\u7ACB\u65B9\u9AD4","tool.sector":"\u6247\u5F62","tool.delay":"D \u5F62","tool.predefined-process":"\u9810\u5B9A\u7FA9\u6D41\u7A0B","tool.document":"\u6587\u4EF6","tool.stadium":"\u5168\u5713\u89D2\u77E9\u5F62","tool.class-catalog":"\u985E\u76EE","tool.envelope":"\u4FE1\u5C01","tool.checkbox":"\u6838\u53D6\u65B9\u584A","tool.sticky-note":"\u4FBF\u5229\u8CBC","shape.sticky-note":"\u4FBF\u5229\u8CBC","tool.triangular-pyramid":"\u4E09\u7A1C\u9310","tool.quadrangular-pyramid":"\u56DB\u7A1C\u9310","tool.cuboid":"\u9577\u65B9\u9AD4","tool.sphere":"\u7403","tool.ellipsoid":"\u6A62\u7403","tool.pie":"\u9905\u72C0","tool.hollow-pie":"\u7A7A\u5FC3\u9905\u72C0","class.plain":"\u985E\u5225","flow.process":"\u8655\u7406","flow.step":"\u6D41\u7A0B","flow.startEnd":"\u958B\u59CB/\u7D50\u675F","flow.decision":"\u5224\u65B7","flow.data":"\u8CC7\u6599","flow.manual":"\u624B\u52D5\u64CD\u4F5C","flow.preparation":"\u6E96\u5099","flow.database":"\u8CC7\u6599\u5EAB","flow.delay":"\u5EF6\u9072","shapeGroup.basic":"\u57FA\u790E","shapeGroup.flowchart":"\u6D41\u7A0B\u5716","shapeGroup.other":"\u5176\u4ED6","shapeGroup.solid":"\u7ACB\u9AD4","shapeGroup.uml":"\u985E\u5225\u5716","shapeMenu.hint":"\u61F8\u505C\u67E5\u770B\u540D\u7A31","tool.chevron":"\u5C16\u89D2","tool.brace-left":"\u5DE6\u62EC\u865F","tool.brace-right":"\u53F3\u62EC\u865F","tool.uml-class":"UML \u985E\u5225\u5716","tool.uml-interface":"UML \u4ECB\u9762","tool.line":"\u76F4\u7DDA","tool.arrow":"\u7DDA\u689D","tool.text":"\u6587\u5B57","tool.draw":"\u756B\u7B46","tool.pen":"\u756B\u7B46","tool.highlighter":"\u87A2\u5149\u7B46","tool.eraser":"\u6A61\u76AE\u64E6","status.none":"\u672A\u9078\u53D6","status.selected":"\u5DF2\u9078\u53D6 {n} \u500B\u5716\u5F62","toolbar.select":"\u9078\u53D6 (V)","toolbar.hand":"\u62D6\u66F3\u8996\u7A97 (H)","toolbar.shapes":"\u5F62\u72C0","toolbar.grid":"\u683C\u7DDA","toolbar.undo":"\u5FA9\u539F (Ctrl+Z)","toolbar.redo":"\u91CD\u505A (Ctrl+Shift+Z)","toolbar.arrow":"\u7BAD\u982D (A)","toolbar.text":"\u6587\u5B57 (T)","toolbar.pen":"\u756B\u7B46","toolbar.highlighter":"\u87A2\u5149\u7B46","toolbar.eraser":"\u6A61\u76AE\u64E6 (E)","toolbar.uml-class":"UML \u985E\u5225\u5716","toolbar.uml-interface":"UML \u4ECB\u9762","zoom.in":"\u653E\u5927","zoom.out":"\u7E2E\u5C0F","zoom.reset":"\u91CD\u8A2D","style.stroke":"\u908A\u6846","style.line":"\u7DDA\u689D","style.fill":"\u586B\u8272","style.text":"\u6587\u5B57","style.highlight":"\u6A19\u793A","style.prefix":"\u524D\u7F6E\u7B26\u865F","style.prefix.soon":"\u524D\u7F6E\u7B26\u865F\u958B\u767C\u4E2D\uFF0C\u656C\u8ACB\u671F\u5F85","style.none":"\u7121","style.addColor":"\u65B0\u589E\u984F\u8272","style.connection":"\u9023\u7DDA","style.arrow":"\u7BAD\u982D","style.dashed":"\u865B\u7DDA","style.solid":"\u5BE6\u7DDA","style.opacity":"\u4E0D\u900F\u660E\u5EA6","style.connection.straight":"\u76F4\u7DDA","style.connection.polyline":"\u5713\u89D2\u6298\u7DDA","style.connection.orthogonal":"\u76F4\u89D2\u6298\u7DDA","style.connection.curve":"\u66F2\u7DDA","style.arrowhead.none":"\u7121\u7BAD\u982D","style.arrowhead.end":"\u7D42\u9EDE\u7BAD\u982D","style.arrowhead.start":"\u8D77\u9EDE\u7BAD\u982D","style.arrowhead.both":"\u96D9\u7BAD\u982D","style.arrowhead.none-dashed":"\u7121\u7BAD\u982D\u865B\u7DDA","style.arrowhead.both-dashed":"\u96D9\u7BAD\u982D\u865B\u7DDA","style.uml":"UML","style.arrowhead.inheritance":"\u7E7C\u627F","style.arrowhead.composition":"\u7D44\u5408","style.arrowhead.aggregation":"\u805A\u5408","style.arrowhead.dependency":"\u4F9D\u8CF4","style.arrowhead.realization":"\u5BE6\u73FE","menu.title":"\u9078\u64C7\u65B0\u5716\u5F62","menu.cancel":"\u9EDE\u64CA\u7A7A\u767D\u8655\u53D6\u6D88","shape.rectangle":"\u77E9\u5F62","shape.rounded-rectangle":"\u5713\u89D2","shape.circle":"\u5713\u5F62","shape.ellipse":"\u6A62\u5713","shape.diamond":"\u83F1\u5F62","shape.triangle":"\u4E09\u89D2","shape.hexagon":"\u516D\u908A\u5F62","shape.parallelogram":"\u5E73\u884C","shape.trapezoid":"\u68AF\u5F62","shape.pentagon":"\u4E94\u908A\u5F62","shape.octagon":"\u516B\u908A\u5F62","shape.star":"\u661F\u5F62","shape.uml-class":"\u985E\u5225\u5716","shape.uml-interface":"\u4ECB\u9762","uml.drag":"\u62D6\u66F3\u6392\u5E8F","uml.delete":"\u522A\u9664\u8A72\u5217","uml.textColor":"\u6587\u5B57\u984F\u8272","uml.defaultColor":"\u9810\u8A2D\u984F\u8272","uml.fontSize":"\u5B57\u7D1A","uml.strikethrough":"\u522A\u9664\u7DDA","uml.attribute":"\u5C6C\u6027","uml.method":"\u65B9\u6CD5","minimap.title":"\u5C0F\u5730\u5716","minimap.expand":"\u5C55\u958B\u5C0F\u5730\u5716","minimap.collapse":"\u6536\u5408\u5C0F\u5730\u5716","tool.mind-map":"\u5FC3\u667A\u5716","toolbar.mind-map":"\u5FC3\u667A\u5716","toolbar.export":"\u532F\u51FA","toolbar.export.png":"PNG \u5716\u7247","toolbar.export.svg":"SVG \u5411\u91CF\u5716","toolbar.export.pdf":"PDF \u6587\u4EF6","toolbar.export.data":"\u532F\u51FA\u8CC7\u6599","toolbar.import.data":"\u532F\u5165\u8CC7\u6599","import.success":"\u532F\u5165\u6210\u529F\uFF0C\u5DF2\u9084\u539F {n} \u500B\u5716\u5F62","import.fail":"\u532F\u5165\u5931\u6557\uFF0C\u6A94\u6848\u683C\u5F0F\u4E0D\u6B63\u78BA","shape.mind-map":"\u5FC3\u667A\u5716","mindmap.defaultRoot":"\u4E2D\u5FC3\u4E3B\u984C","mindmap.defaultBranch":"\u5206\u652F\u4E3B\u984C","mindmap.nodeText":"\u7BC0\u9EDE\u6587\u5B57","mindmap.addChild":"\u5B50\u7BC0\u9EDE","mindmap.addSibling":"\u5144\u5F1F\u7BC0\u9EDE","mindmap.deleteNode":"\u522A\u9664\u7BC0\u9EDE","mindmap.color":"\u984F\u8272","mindmap.levelColor":"\u9810\u8A2D\u5C64\u7D1A\u8272","mindmap.icon":"\u5716\u793A","mindmap.noIcon":"\u7121\u5716\u793A","mindmap.note":"\u5C6C\u6027\u8AAA\u660E","mindmap.notePlaceholder":"\u8AAA\u660E\u5167\u5BB9\uFF08\u9078\u586B\uFF09","mindmap.noteColor":"\u8AAA\u660E\u984F\u8272","mindmap.noteColorDefault":"\u540C\u7BC0\u9EDE\u8272","mindmap.collapse":"\u6536\u5408","mindmap.expand":"\u5C55\u958B","mindmap.close":"\u95DC\u9589\u7DE8\u8F2F","mindmap.more":"\u66F4\u591A\u8A2D\u5B9A","mindmap.level":"\u5C64\u7D1A","mindmap.promote1":"\u5347\u4E00\u7D1A","mindmap.promote2":"\u5347\u5169\u7D1A","mindmap.promoteDisabled":"\u5DF2\u81F3\u9802\u5C64","tool.table":"\u8868\u683C","toolbar.table":"\u8868\u683C","shape.table":"\u8868\u683C","table.insertRow":"\u63D2\u5165\u6A6B\u5217","table.deleteRow":"\u522A\u9664\u6A6B\u5217","table.insertCol":"\u63D2\u5165\u76F4\u6B04","table.deleteCol":"\u522A\u9664\u76F4\u6B04","table.merge":"\u5408\u4F75\u5132\u5B58\u683C","table.split":"\u5206\u5272\u5132\u5B58\u683C","table.insertRowAbove":"\u5728\u4E0A\u65B9\u63D2\u5165\u6A6B\u5217","table.insertRowBelow":"\u5728\u4E0B\u65B9\u63D2\u5165\u6A6B\u5217","table.insertColLeft":"\u5728\u5DE6\u5074\u63D2\u5165\u76F4\u6B04","table.insertColRight":"\u5728\u53F3\u5074\u63D2\u5165\u76F4\u6B04","table.pickHint":"\u62D6\u9078\u884C\u5217\u6578","ctx.copy":"\u8907\u88FD","ctx.paste":"\u8CBC\u4E0A","ctx.duplicate":"\u5EFA\u7ACB\u526F\u672C","ctx.layer":"\u5716\u5C64","ctx.bringToFront":"\u79FB\u5230\u6700\u4E0A\u5C64","ctx.bringForward":"\u4E0A\u79FB\u4E00\u5C64","ctx.sendBackward":"\u4E0B\u79FB\u4E00\u5C64","ctx.sendToBack":"\u79FB\u5230\u6700\u4E0B\u5C64","ctx.copyStyle":"\u8907\u88FD\u6A23\u5F0F","ctx.pasteStyle":"\u8CBC\u4E0A\u6A23\u5F0F","ctx.rotate90":"90\xB0","ctx.rotate180":"180\xB0","ctx.rotate270":"270\xB0","ctx.rotate":"\u65CB\u8F49","ctx.group":"\u6210\u7D44","ctx.ungroup":"\u89E3\u7D44","ctx.lock":"\u9396\u5B9A","ctx.unlock":"\u89E3\u9396","ctx.unlockAll":"\u5168\u90E8\u89E3\u9396","ctx.delete":"\u522A\u9664","toolbar.icon":"\u5716\u793A (S)","toolbar.template":"\u7BC4\u672C","template.search":"\u641C\u5C0B\u7BC4\u672C","template.all":"\u5168\u90E8","template.empty":"\u6C92\u6709\u7B26\u5408\u7684\u7BC4\u672C","toolbar.image":"\u5716\u7247","toolbar.more":"\u66F4\u591A","toolbar.pageTheme":"\u9801\u9762\u4E3B\u984C","pageTheme.light":"\u9810\u8A2D","pageTheme.warm":"\u6696\u9EC3","pageTheme.gray":"\u6DFA\u7070","pageTheme.purple":"\u6DFA\u7D2B","pageTheme.green":"\u6DFA\u7DA0","pageTheme.eye-care":"\u8B77\u773C","tool.image":"\u5716\u7247","image.uploadFailed":"\u5716\u7247\u4E0A\u50B3\u5931\u6557","image.insertFailed":"\u5716\u7247\u63D2\u5165\u5931\u6557","image.tooLarge":"\u5716\u7247\u8D85\u904E 30 MB\uFF0C\u7121\u6CD5\u4E0A\u50B3","image.temporaryInserted":"\u5DF2\u63D2\u5165\u81E8\u6642\u5716\u7247\uFF08\u672A\u914D\u7F6E\u4E0A\u50B3\u4ECB\u9762\uFF0C\u91CD\u65B0\u6574\u7406\u5F8C\u6703\u907A\u5931\uFF09","image.naturalSize":"\u539F\u5716\u5C3A\u5BF8","icon.search":"\u641C\u5C0B\u5716\u793A","icon.empty":"\u6C92\u6709\u7B26\u5408\u7684\u5716\u793A","icon.recent":"\u6700\u8FD1\u4F7F\u7528","iconCat.status":"\u72C0\u614B\u6A19\u8A18","iconCat.number":"\u6578\u5B57\u5FBD\u6A19","iconCat.tech":"\u96F2\u7AEF\u8207\u6280\u8853","iconCat.chart":"\u8CC7\u6599\u5716\u8868","iconCat.office":"\u8FA6\u516C\u6587\u4EF6","iconCat.media":"\u5A92\u9AD4\u5354\u4F5C","iconCat.arrow":"\u7BAD\u982D\u65B9\u5411","iconCat.misc":"\u5E38\u7528","iconCat.emoji":"\u8868\u60C5","iconCat.sticker":"\u8CBC\u7D19","iconCat.device":"\u96FB\u8166\u8A2D\u5099","iconCat.weather":"\u5929\u6C23","iconCat.transport":"\u4EA4\u901A","iconCat.nature":"\u81EA\u7136","iconCat.building":"\u5EFA\u7BC9","iconCat.medical":"\u91AB\u7642","iconCat.shopping":"\u8CFC\u7269","iconCat.science":"\u79D1\u5B78","iconCat.animal":"\u52D5\u7269","iconCat.time":"\u6642\u9593","iconCat.edit":"\u7DE8\u8F2F","iconCat.food":"\u98DF\u7269","iconCat.communication":"\u901A\u8A0A"},"en-US":{"save.success":"Saved","save.fail":"Save failed","tool.select":"Select tool","tool.hand":"Pan view","tool.rectangle":"Rectangle","tool.rounded-rectangle":"Rounded rectangle","tool.circle":"Circle","tool.ellipse":"Ellipse","tool.diamond":"Diamond","tool.triangle":"Triangle","tool.hexagon":"Hexagon","tool.parallelogram":"Parallelogram","tool.trapezoid":"Trapezoid","tool.pentagon":"Pentagon","tool.octagon":"Octagon","tool.star":"Star","tool.cylinder":"Cylinder","tool.cloud":"Cloud","tool.heart":"Heart","tool.block-arrow-right":"Arrow right","tool.block-arrow-left":"Arrow left","tool.block-arrow-up":"Arrow up","tool.block-arrow-down":"Arrow down","tool.block-arrow-double":"Double arrow","tool.right-triangle":"Right triangle","tool.cross":"Cross","tool.speech-rect":"Speech bubble","tool.speech-round":"Round bubble","tool.cube":"Cube","tool.sector":"Sector","tool.delay":"Delay","tool.predefined-process":"Predefined process","tool.document":"Document","tool.stadium":"Stadium","tool.class-catalog":"Category","tool.envelope":"Envelope","tool.checkbox":"Checkbox","tool.sticky-note":"Sticky note","shape.sticky-note":"Sticky note","tool.triangular-pyramid":"Triangular pyramid","tool.quadrangular-pyramid":"Square pyramid","tool.cuboid":"Cuboid","tool.sphere":"Sphere","tool.ellipsoid":"Ellipsoid","tool.pie":"Pie","tool.hollow-pie":"Donut","class.plain":"Class","flow.process":"Process","flow.step":"Step","flow.startEnd":"Start / End","flow.decision":"Decision","flow.data":"Data","flow.manual":"Manual operation","flow.preparation":"Preparation","flow.database":"Database","flow.delay":"Delay","shapeGroup.basic":"Basic","shapeGroup.flowchart":"Flowchart","shapeGroup.other":"Other","shapeGroup.solid":"3D","shapeGroup.uml":"Class diagram","shapeMenu.hint":"Hover to see name","tool.chevron":"Chevron","tool.brace-left":"Left brace","tool.brace-right":"Right brace","tool.uml-class":"UML class","tool.uml-interface":"UML interface","tool.line":"Line","tool.arrow":"Line","tool.text":"Text","tool.draw":"Pen","tool.pen":"Pen","tool.highlighter":"Highlighter","tool.eraser":"Eraser","status.none":"Nothing selected","status.selected":"{n} shapes selected","toolbar.select":"Select (V)","toolbar.hand":"Pan view (H)","toolbar.shapes":"Shapes","toolbar.grid":"Grid","toolbar.undo":"Undo (Ctrl+Z)","toolbar.redo":"Redo (Ctrl+Shift+Z)","toolbar.arrow":"Arrow (A)","toolbar.text":"Text (T)","toolbar.pen":"Pen","toolbar.highlighter":"Highlighter","toolbar.eraser":"Eraser (E)","toolbar.uml-class":"UML class","toolbar.uml-interface":"UML interface","zoom.in":"Zoom in","zoom.out":"Zoom out","zoom.reset":"Reset","style.stroke":"Border","style.line":"Line","style.fill":"Fill","style.text":"Text","style.highlight":"Highlight","style.prefix":"Prefix","style.prefix.soon":"Prefix symbols are coming soon","style.none":"None","style.addColor":"Add color","style.connection":"Connection","style.arrow":"Arrow head","style.dashed":"Dashed","style.solid":"Solid","style.opacity":"Opacity","style.connection.straight":"Straight","style.connection.polyline":"Rounded polyline","style.connection.orthogonal":"Orthogonal","style.connection.curve":"Curve","style.arrowhead.none":"None","style.arrowhead.end":"End","style.arrowhead.start":"Start","style.arrowhead.both":"Both","style.arrowhead.none-dashed":"Dashed","style.arrowhead.both-dashed":"Dashed both","style.uml":"UML","style.arrowhead.inheritance":"Inheritance","style.arrowhead.composition":"Composition","style.arrowhead.aggregation":"Aggregation","style.arrowhead.dependency":"Dependency","style.arrowhead.realization":"Realization","menu.title":"Create shape","menu.cancel":"Click empty space to cancel","shape.rectangle":"Rectangle","shape.rounded-rectangle":"Rounded","shape.circle":"Circle","shape.ellipse":"Ellipse","shape.diamond":"Diamond","shape.triangle":"Triangle","shape.hexagon":"Hexagon","shape.parallelogram":"Parallelogram","shape.trapezoid":"Trapezoid","shape.pentagon":"Pentagon","shape.octagon":"Octagon","shape.star":"Star","shape.uml-class":"Class","shape.uml-interface":"Interface","uml.drag":"Drag to reorder","uml.delete":"Delete row","uml.textColor":"Text color","uml.defaultColor":"Default color","uml.fontSize":"Font size","uml.strikethrough":"Strikethrough","uml.attribute":"Attributes","uml.method":"Methods","minimap.title":"Minimap","minimap.expand":"Expand minimap","minimap.collapse":"Collapse minimap","tool.mind-map":"Mind map","toolbar.mind-map":"Mind map","toolbar.export":"Export","toolbar.export.png":"PNG image","toolbar.export.svg":"SVG vector","toolbar.export.pdf":"PDF document","toolbar.export.data":"Export data","toolbar.import.data":"Import data","import.success":"Import succeeded: {n} shapes restored","import.fail":"Import failed: invalid file format","shape.mind-map":"Mind map","mindmap.defaultRoot":"Central topic","mindmap.defaultBranch":"Branch topic","mindmap.nodeText":"Node text","mindmap.addChild":"Child","mindmap.addSibling":"Sibling","mindmap.deleteNode":"Delete node","mindmap.color":"Color","mindmap.levelColor":"Default level color","mindmap.icon":"Icon","mindmap.noIcon":"No icon","mindmap.note":"Note","mindmap.notePlaceholder":"Note content (optional)","mindmap.noteColor":"Note color","mindmap.noteColorDefault":"Same as node","mindmap.collapse":"Collapse","mindmap.expand":"Expand","mindmap.close":"Close editor","mindmap.more":"More settings","mindmap.level":"Level","mindmap.promote1":"Promote","mindmap.promote2":"Promote 2","mindmap.promoteDisabled":"Already at top","tool.table":"Table","toolbar.table":"Table","shape.table":"Table","table.insertRow":"Insert row","table.deleteRow":"Delete row","table.insertCol":"Insert column","table.deleteCol":"Delete column","table.merge":"Merge cells","table.split":"Split cell","table.insertRowAbove":"Insert row above","table.insertRowBelow":"Insert row below","table.insertColLeft":"Insert column left","table.insertColRight":"Insert column right","table.pickHint":"Drag to pick size","ctx.copy":"Copy","ctx.paste":"Paste","ctx.duplicate":"Duplicate","ctx.layer":"Layer","ctx.bringToFront":"Bring to front","ctx.bringForward":"Bring forward","ctx.sendBackward":"Send backward","ctx.sendToBack":"Send to back","ctx.copyStyle":"Copy style","ctx.pasteStyle":"Paste style","ctx.rotate90":"90\xB0","ctx.rotate180":"180\xB0","ctx.rotate270":"270\xB0","ctx.rotate":"Rotate","ctx.group":"Group","ctx.ungroup":"Ungroup","ctx.lock":"Lock","ctx.unlock":"Unlock","ctx.unlockAll":"Unlock all","ctx.delete":"Delete","toolbar.icon":"Icons (S)","toolbar.template":"Templates","template.search":"Search templates","template.all":"All","template.empty":"No matching template","toolbar.image":"Image","toolbar.more":"More","toolbar.pageTheme":"Page theme","pageTheme.light":"Default","pageTheme.warm":"Warm","pageTheme.gray":"Light gray","pageTheme.purple":"Light purple","pageTheme.green":"Light green","pageTheme.eye-care":"Eye care","tool.image":"Image","image.uploadFailed":"Image upload failed","image.insertFailed":"Failed to insert image","image.tooLarge":"Image exceeds the 30 MB upload limit","image.temporaryInserted":"Temporary image inserted (no upload endpoint configured, it will be lost on refresh)","image.naturalSize":"Original size","icon.search":"Search icons","icon.empty":"No matching icons","icon.recent":"Recent","iconCat.status":"Status","iconCat.number":"Number badges","iconCat.tech":"Cloud & tech","iconCat.chart":"Charts","iconCat.office":"Documents","iconCat.media":"Media & collab","iconCat.arrow":"Arrows","iconCat.misc":"Essentials","iconCat.emoji":"Emoji","iconCat.sticker":"Stickers","iconCat.device":"Devices","iconCat.weather":"Weather","iconCat.transport":"Transport","iconCat.nature":"Nature","iconCat.building":"Building","iconCat.medical":"Medical","iconCat.shopping":"Shopping","iconCat.science":"Science","iconCat.animal":"Animal","iconCat.time":"Time","iconCat.edit":"Editing","iconCat.food":"Food","iconCat.communication":"Communication"},"ja-JP":{"save.success":"\u4FDD\u5B58\u3057\u307E\u3057\u305F","save.fail":"\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F","tool.select":"\u9078\u629E\u30C4\u30FC\u30EB","tool.hand":"\u30AD\u30E3\u30F3\u30D0\u30B9\u3092\u79FB\u52D5","tool.rectangle":"\u56DB\u89D2\u5F62","tool.rounded-rectangle":"\u89D2\u4E38\u56DB\u89D2\u5F62","tool.circle":"\u5186","tool.ellipse":"\u6955\u5186","tool.diamond":"\u3072\u3057\u5F62","tool.triangle":"\u4E09\u89D2\u5F62","tool.hexagon":"\u516D\u89D2\u5F62","tool.parallelogram":"\u5E73\u884C\u56DB\u8FBA\u5F62","tool.trapezoid":"\u53F0\u5F62","tool.pentagon":"\u4E94\u89D2\u5F62","tool.octagon":"\u516B\u89D2\u5F62","tool.star":"\u661F\u5F62","tool.cylinder":"\u5186\u67F1","tool.cloud":"\u96F2","tool.heart":"\u30CF\u30FC\u30C8","tool.block-arrow-right":"\u53F3\u77E2\u5370","tool.block-arrow-left":"\u5DE6\u77E2\u5370","tool.block-arrow-up":"\u4E0A\u77E2\u5370","tool.block-arrow-down":"\u4E0B\u77E2\u5370","tool.block-arrow-double":"\u53CC\u65B9\u5411\u77E2\u5370","tool.right-triangle":"\u76F4\u89D2\u4E09\u89D2\u5F62","tool.cross":"\u5341\u5B57","tool.speech-rect":"\u56DB\u89D2\u3044\u5439\u304D\u51FA\u3057","tool.speech-round":"\u4E38\u3044\u5439\u304D\u51FA\u3057","tool.cube":"\u7ACB\u65B9\u4F53","tool.sector":"\u6247\u5F62","tool.delay":"D \u5B57","tool.predefined-process":"\u5B9A\u7FA9\u6E08\u307F\u51E6\u7406","tool.document":"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8","tool.stadium":"\u4E21\u7AEF\u304C\u4E38\u3044\u9577\u65B9\u5F62","tool.class-catalog":"\u30AB\u30C6\u30B4\u30EA","tool.envelope":"\u5C01\u7B52","tool.checkbox":"\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9","tool.sticky-note":"\u4ED8\u7B8B","shape.sticky-note":"\u4ED8\u7B8B","tool.triangular-pyramid":"\u4E09\u89D2\u9310","tool.quadrangular-pyramid":"\u56DB\u89D2\u9310","tool.cuboid":"\u76F4\u65B9\u4F53","tool.sphere":"\u7403","tool.ellipsoid":"\u6955\u5186\u4F53","tool.pie":"\u5186\u30B0\u30E9\u30D5","tool.hollow-pie":"\u30C9\u30FC\u30CA\u30C4","class.plain":"\u30AF\u30E9\u30B9","flow.process":"\u51E6\u7406","flow.step":"\u30B9\u30C6\u30C3\u30D7","flow.startEnd":"\u958B\u59CB/\u7D42\u4E86","flow.decision":"\u5224\u65AD","flow.data":"\u30C7\u30FC\u30BF","flow.manual":"\u624B\u52D5\u64CD\u4F5C","flow.preparation":"\u6E96\u5099","flow.database":"\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9","flow.delay":"\u9045\u5EF6","shapeGroup.basic":"\u57FA\u672C","shapeGroup.flowchart":"\u30D5\u30ED\u30FC\u30C1\u30E3\u30FC\u30C8","shapeGroup.other":"\u305D\u306E\u4ED6","shapeGroup.solid":"\u7ACB\u4F53","shapeGroup.uml":"\u30AF\u30E9\u30B9\u56F3","shapeMenu.hint":"\u30DB\u30D0\u30FC\u3067\u540D\u524D\u3092\u8868\u793A","tool.chevron":"\u5C71\u5F62","tool.brace-left":"\u5DE6\u4E2D\u62EC\u5F27","tool.brace-right":"\u53F3\u4E2D\u62EC\u5F27","tool.uml-class":"UML \u30AF\u30E9\u30B9\u56F3","tool.uml-interface":"UML \u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30FC\u30B9","tool.line":"\u76F4\u7DDA","tool.arrow":"\u7DDA","tool.text":"\u30C6\u30AD\u30B9\u30C8","tool.draw":"\u30DA\u30F3","tool.pen":"\u30DA\u30F3","tool.highlighter":"\u86CD\u5149\u30DA\u30F3","tool.eraser":"\u6D88\u3057\u30B4\u30E0","status.none":"\u672A\u9078\u629E","status.selected":"{n} \u500B\u306E\u56F3\u5F62\u3092\u9078\u629E\u4E2D","toolbar.select":"\u9078\u629E (V)","toolbar.hand":"\u30AD\u30E3\u30F3\u30D0\u30B9\u3092\u79FB\u52D5 (H)","toolbar.shapes":"\u56F3\u5F62","toolbar.grid":"\u30B0\u30EA\u30C3\u30C9","toolbar.undo":"\u5143\u306B\u623B\u3059 (Ctrl+Z)","toolbar.redo":"\u3084\u308A\u76F4\u3059 (Ctrl+Shift+Z)","toolbar.arrow":"\u77E2\u5370 (A)","toolbar.text":"\u30C6\u30AD\u30B9\u30C8 (T)","toolbar.pen":"\u30DA\u30F3","toolbar.highlighter":"\u86CD\u5149\u30DA\u30F3","toolbar.eraser":"\u6D88\u3057\u30B4\u30E0 (E)","toolbar.uml-class":"UML \u30AF\u30E9\u30B9\u56F3","toolbar.uml-interface":"UML \u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30FC\u30B9","zoom.in":"\u62E1\u5927","zoom.out":"\u7E2E\u5C0F","zoom.reset":"\u30EA\u30BB\u30C3\u30C8","style.stroke":"\u67A0\u7DDA","style.line":"\u7DDA","style.fill":"\u5857\u308A","style.text":"\u30C6\u30AD\u30B9\u30C8","style.highlight":"\u30CF\u30A4\u30E9\u30A4\u30C8","style.prefix":"\u63A5\u982D\u8A18\u53F7","style.prefix.soon":"\u63A5\u982D\u8A18\u53F7\u306F\u958B\u767A\u4E2D\u3067\u3059\u3002\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u304F\u3060\u3055\u3044","style.none":"\u306A\u3057","style.addColor":"\u8272\u3092\u8FFD\u52A0","style.connection":"\u63A5\u7D9A","style.arrow":"\u77E2\u5370","style.dashed":"\u7834\u7DDA","style.solid":"\u5B9F\u7DDA","style.opacity":"\u4E0D\u900F\u660E\u5EA6","style.connection.straight":"\u76F4\u7DDA","style.connection.polyline":"\u89D2\u4E38\u6298\u308C\u7DDA","style.connection.orthogonal":"\u76F4\u89D2\u6298\u308C\u7DDA","style.connection.curve":"\u66F2\u7DDA","style.arrowhead.none":"\u77E2\u5370\u306A\u3057","style.arrowhead.end":"\u7D42\u70B9\u306E\u77E2\u5370","style.arrowhead.start":"\u59CB\u70B9\u306E\u77E2\u5370","style.arrowhead.both":"\u4E21\u7AEF\u306E\u77E2\u5370","style.arrowhead.none-dashed":"\u77E2\u5370\u306A\u3057\u306E\u7834\u7DDA","style.arrowhead.both-dashed":"\u4E21\u7AEF\u77E2\u5370\u306E\u7834\u7DDA","style.uml":"UML","style.arrowhead.inheritance":"\u7D99\u627F","style.arrowhead.composition":"\u30B3\u30F3\u30DD\u30B8\u30B7\u30E7\u30F3","style.arrowhead.aggregation":"\u96C6\u7D04","style.arrowhead.dependency":"\u4F9D\u5B58","style.arrowhead.realization":"\u5B9F\u73FE","menu.title":"\u65B0\u3057\u3044\u56F3\u5F62\u3092\u9078\u629E","menu.cancel":"\u7A7A\u767D\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30AD\u30E3\u30F3\u30BB\u30EB","shape.rectangle":"\u56DB\u89D2\u5F62","shape.rounded-rectangle":"\u89D2\u4E38","shape.circle":"\u5186","shape.ellipse":"\u6955\u5186","shape.diamond":"\u3072\u3057\u5F62","shape.triangle":"\u4E09\u89D2","shape.hexagon":"\u516D\u89D2\u5F62","shape.parallelogram":"\u5E73\u884C","shape.trapezoid":"\u53F0\u5F62","shape.pentagon":"\u4E94\u89D2\u5F62","shape.octagon":"\u516B\u89D2\u5F62","shape.star":"\u661F\u5F62","shape.uml-class":"\u30AF\u30E9\u30B9\u56F3","shape.uml-interface":"\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30FC\u30B9","uml.drag":"\u30C9\u30E9\u30C3\u30B0\u3067\u4E26\u3079\u66FF\u3048","uml.delete":"\u3053\u306E\u884C\u3092\u524A\u9664","uml.textColor":"\u6587\u5B57\u8272","uml.defaultColor":"\u65E2\u5B9A\u306E\u8272","uml.fontSize":"\u6587\u5B57\u30B5\u30A4\u30BA","uml.strikethrough":"\u53D6\u308A\u6D88\u3057\u7DDA","uml.attribute":"\u5C5E\u6027","uml.method":"\u30E1\u30BD\u30C3\u30C9","minimap.title":"\u30DF\u30CB\u30DE\u30C3\u30D7","minimap.expand":"\u30DF\u30CB\u30DE\u30C3\u30D7\u3092\u5C55\u958B","minimap.collapse":"\u30DF\u30CB\u30DE\u30C3\u30D7\u3092\u6298\u308A\u305F\u305F\u3080","tool.mind-map":"\u30DE\u30A4\u30F3\u30C9\u30DE\u30C3\u30D7","toolbar.mind-map":"\u30DE\u30A4\u30F3\u30C9\u30DE\u30C3\u30D7","toolbar.export":"\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8","toolbar.export.png":"PNG \u753B\u50CF","toolbar.export.svg":"SVG \u30D9\u30AF\u30BF\u30FC","toolbar.export.pdf":"PDF \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8","toolbar.export.data":"\u30C7\u30FC\u30BF\u3092\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8","toolbar.import.data":"\u30C7\u30FC\u30BF\u3092\u30A4\u30F3\u30DD\u30FC\u30C8","import.success":"\u30A4\u30F3\u30DD\u30FC\u30C8\u6210\u529F\uFF1A{n} \u500B\u306E\u56F3\u5F62\u3092\u5FA9\u5143\u3057\u307E\u3057\u305F","import.fail":"\u30A4\u30F3\u30DD\u30FC\u30C8\u5931\u6557\uFF1A\u30D5\u30A1\u30A4\u30EB\u5F62\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093","shape.mind-map":"\u30DE\u30A4\u30F3\u30C9\u30DE\u30C3\u30D7","mindmap.defaultRoot":"\u4E2D\u5FC3\u30C8\u30D4\u30C3\u30AF","mindmap.defaultBranch":"\u30D6\u30E9\u30F3\u30C1\u30C8\u30D4\u30C3\u30AF","mindmap.nodeText":"\u30CE\u30FC\u30C9\u306E\u30C6\u30AD\u30B9\u30C8","mindmap.addChild":"\u5B50\u30CE\u30FC\u30C9","mindmap.addSibling":"\u5144\u5F1F\u30CE\u30FC\u30C9","mindmap.deleteNode":"\u30CE\u30FC\u30C9\u3092\u524A\u9664","mindmap.color":"\u8272","mindmap.levelColor":"\u65E2\u5B9A\u306E\u968E\u5C64\u8272","mindmap.icon":"\u30A2\u30A4\u30B3\u30F3","mindmap.noIcon":"\u30A2\u30A4\u30B3\u30F3\u306A\u3057","mindmap.note":"\u88DC\u8DB3\u8AAC\u660E","mindmap.notePlaceholder":"\u8AAC\u660E\uFF08\u4EFB\u610F\uFF09","mindmap.noteColor":"\u8AAC\u660E\u306E\u8272","mindmap.noteColorDefault":"\u30CE\u30FC\u30C9\u3068\u540C\u3058","mindmap.collapse":"\u6298\u308A\u305F\u305F\u3080","mindmap.expand":"\u5C55\u958B","mindmap.close":"\u7DE8\u96C6\u3092\u9589\u3058\u308B","mindmap.more":"\u8A73\u7D30\u8A2D\u5B9A","mindmap.level":"Level","mindmap.promote1":"Promote","mindmap.promote2":"Promote 2","mindmap.promoteDisabled":"Already at top","tool.table":"\u30C6\u30FC\u30D6\u30EB","toolbar.table":"\u30C6\u30FC\u30D6\u30EB","shape.table":"\u30C6\u30FC\u30D6\u30EB","table.insertRow":"\u884C\u3092\u633F\u5165","table.deleteRow":"\u884C\u3092\u524A\u9664","table.insertCol":"\u5217\u3092\u633F\u5165","table.deleteCol":"\u5217\u3092\u524A\u9664","table.merge":"\u30BB\u30EB\u3092\u7D50\u5408","table.split":"\u30BB\u30EB\u3092\u5206\u5272","table.insertRowAbove":"\u4E0A\u306B\u884C\u3092\u633F\u5165","table.insertRowBelow":"\u4E0B\u306B\u884C\u3092\u633F\u5165","table.insertColLeft":"\u5DE6\u306B\u5217\u3092\u633F\u5165","table.insertColRight":"\u53F3\u306B\u5217\u3092\u633F\u5165","table.pickHint":"\u884C\u6570\u30FB\u5217\u6570\u3092\u9078\u629E","ctx.copy":"\u30B3\u30D4\u30FC","ctx.paste":"\u8CBC\u308A\u4ED8\u3051","ctx.duplicate":"\u8907\u88FD\u3092\u4F5C\u6210","ctx.layer":"\u30EC\u30A4\u30E4\u30FC","ctx.bringToFront":"\u6700\u524D\u9762\u3078","ctx.bringForward":"\u4E00\u3064\u524D\u3078","ctx.sendBackward":"\u4E00\u3064\u5F8C\u308D\u3078","ctx.sendToBack":"\u6700\u80CC\u9762\u3078","ctx.copyStyle":"\u30B9\u30BF\u30A4\u30EB\u3092\u30B3\u30D4\u30FC","ctx.pasteStyle":"\u30B9\u30BF\u30A4\u30EB\u3092\u8CBC\u308A\u4ED8\u3051","ctx.rotate90":"90\xB0","ctx.rotate180":"180\xB0","ctx.rotate270":"270\xB0","ctx.rotate":"\u56DE\u8EE2","ctx.group":"\u30B0\u30EB\u30FC\u30D7\u5316","ctx.ungroup":"\u30B0\u30EB\u30FC\u30D7\u89E3\u9664","ctx.lock":"\u30ED\u30C3\u30AF","ctx.unlock":"\u30ED\u30C3\u30AF\u89E3\u9664","ctx.unlockAll":"\u3059\u3079\u3066\u30ED\u30C3\u30AF\u89E3\u9664","ctx.delete":"\u524A\u9664","toolbar.icon":"\u30A2\u30A4\u30B3\u30F3 (S)","toolbar.template":"\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8","template.search":"\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u691C\u7D22","template.all":"\u3059\u3079\u3066","template.empty":"\u4E00\u81F4\u3059\u308B\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u3042\u308A\u307E\u305B\u3093","toolbar.image":"\u753B\u50CF","toolbar.more":"\u305D\u306E\u4ED6","toolbar.pageTheme":"\u30DA\u30FC\u30B8\u30C6\u30FC\u30DE","pageTheme.light":"\u30C7\u30D5\u30A9\u30EB\u30C8","pageTheme.warm":"\u30A6\u30A9\u30FC\u30E0","pageTheme.gray":"\u30E9\u30A4\u30C8\u30B0\u30EC\u30FC","pageTheme.purple":"\u30E9\u30A4\u30C8\u30D1\u30FC\u30D7\u30EB","pageTheme.green":"\u30E9\u30A4\u30C8\u30B0\u30EA\u30FC\u30F3","pageTheme.eye-care":"\u30A2\u30A4\u30B1\u30A2","tool.image":"\u753B\u50CF","image.uploadFailed":"\u753B\u50CF\u306E\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F","image.insertFailed":"\u753B\u50CF\u306E\u633F\u5165\u306B\u5931\u6557\u3057\u307E\u3057\u305F","image.tooLarge":"\u753B\u50CF\u304C 30 MB \u3092\u8D85\u3048\u3066\u3044\u308B\u305F\u3081\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093","image.temporaryInserted":"\u4E00\u6642\u753B\u50CF\u3092\u633F\u5165\u3057\u307E\u3057\u305F\uFF08\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u5148\u304C\u672A\u8A2D\u5B9A\u306E\u305F\u3081\u3001\u518D\u8AAD\u307F\u8FBC\u307F\u3067\u5931\u308F\u308C\u307E\u3059\uFF09","image.naturalSize":"\u5143\u306E\u30B5\u30A4\u30BA","icon.search":"\u30A2\u30A4\u30B3\u30F3\u3092\u691C\u7D22","icon.empty":"\u4E00\u81F4\u3059\u308B\u30A2\u30A4\u30B3\u30F3\u304C\u3042\u308A\u307E\u305B\u3093","icon.recent":"\u6700\u8FD1\u4F7F\u3063\u305F\u3082\u306E","iconCat.status":"\u30B9\u30C6\u30FC\u30BF\u30B9","iconCat.number":"\u6570\u5B57\u30D0\u30C3\u30B8","iconCat.tech":"\u30AF\u30E9\u30A6\u30C9\u3068\u6280\u8853","iconCat.chart":"\u30B0\u30E9\u30D5","iconCat.office":"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8","iconCat.media":"\u30E1\u30C7\u30A3\u30A2\u3068\u5171\u540C\u4F5C\u696D","iconCat.arrow":"\u77E2\u5370","iconCat.misc":"\u3088\u304F\u4F7F\u3046","iconCat.emoji":"\u7D75\u6587\u5B57","iconCat.sticker":"\u30B9\u30C6\u30C3\u30AB\u30FC","iconCat.device":"\u30C7\u30D0\u30A4\u30B9","iconCat.weather":"\u5929\u6C17","iconCat.transport":"\u4EA4\u901A","iconCat.nature":"\u81EA\u7136","iconCat.building":"\u5EFA\u7269","iconCat.medical":"\u533B\u7642","iconCat.shopping":"\u30B7\u30E7\u30C3\u30D4\u30F3\u30B0","iconCat.science":"\u30B5\u30A4\u30A8\u30F3\u30B9","iconCat.animal":"\u52D5\u7269","iconCat.time":"\u6642\u9593","iconCat.edit":"\u7DE8\u96C6","iconCat.food":"\u98DF\u3079\u7269","iconCat.communication":"\u901A\u4FE1"},"ko-KR":{"save.success":"\uC800\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4","save.fail":"\uC800\uC7A5 \uC2E4\uD328","tool.select":"\uC120\uD0DD \uB3C4\uAD6C","tool.hand":"\uD654\uBA74 \uC774\uB3D9","tool.rectangle":"\uC0AC\uAC01\uD615","tool.rounded-rectangle":"\uB465\uADFC \uC0AC\uAC01\uD615","tool.circle":"\uC6D0","tool.ellipse":"\uD0C0\uC6D0","tool.diamond":"\uB2E4\uC774\uC544\uBAAC\uB4DC","tool.triangle":"\uC0BC\uAC01\uD615","tool.hexagon":"\uC721\uAC01\uD615","tool.parallelogram":"\uD3C9\uD589\uC0AC\uBCC0\uD615","tool.trapezoid":"\uC0AC\uB2E4\uB9AC\uAF34","tool.pentagon":"\uC624\uAC01\uD615","tool.octagon":"\uD314\uAC01\uD615","tool.star":"\uBCC4","tool.cylinder":"\uC6D0\uAE30\uB465","tool.cloud":"\uAD6C\uB984","tool.heart":"\uD558\uD2B8","tool.block-arrow-right":"\uC624\uB978\uCABD \uD654\uC0B4\uD45C","tool.block-arrow-left":"\uC67C\uCABD \uD654\uC0B4\uD45C","tool.block-arrow-up":"\uC704\uCABD \uD654\uC0B4\uD45C","tool.block-arrow-down":"\uC544\uB798\uCABD \uD654\uC0B4\uD45C","tool.block-arrow-double":"\uC591\uBC29\uD5A5 \uD654\uC0B4\uD45C","tool.right-triangle":"\uC9C1\uAC01\uC0BC\uAC01\uD615","tool.cross":"\uC2ED\uC790","tool.speech-rect":"\uC0AC\uAC01\uD615 \uB9D0\uD48D\uC120","tool.speech-round":"\uC6D0\uD615 \uB9D0\uD48D\uC120","tool.cube":"\uC815\uC721\uBA74\uCCB4","tool.sector":"\uBD80\uCC44\uAF34","tool.delay":"D \uC790","tool.predefined-process":"\uC0AC\uC804 \uC815\uC758 \uD504\uB85C\uC138\uC2A4","tool.document":"\uBB38\uC11C","tool.stadium":"\uC591\uB05D\uC774 \uB465\uADFC \uC0AC\uAC01\uD615","tool.class-catalog":"\uCE74\uD14C\uACE0\uB9AC","tool.envelope":"\uBD09\uD22C","tool.checkbox":"\uCCB4\uD06C\uBC15\uC2A4","tool.sticky-note":"\uC2A4\uD2F0\uD0A4 \uB178\uD2B8","shape.sticky-note":"\uC2A4\uD2F0\uD0A4 \uB178\uD2B8","tool.triangular-pyramid":"\uC0BC\uAC01\uBFD4","tool.quadrangular-pyramid":"\uC0AC\uAC01\uBFD4","tool.cuboid":"\uC9C1\uC721\uBA74\uCCB4","tool.sphere":"\uAD6C","tool.ellipsoid":"\uD0C0\uC6D0\uCCB4","tool.pie":"\uD30C\uC774","tool.hollow-pie":"\uB3C4\uB11B","class.plain":"\uD074\uB798\uC2A4","flow.process":"\uCC98\uB9AC","flow.step":"\uB2E8\uACC4","flow.startEnd":"\uC2DC\uC791/\uC885\uB8CC","flow.decision":"\uD310\uB2E8","flow.data":"\uB370\uC774\uD130","flow.manual":"\uC218\uB3D9 \uC791\uC5C5","flow.preparation":"\uC900\uBE44","flow.database":"\uB370\uC774\uD130\uBCA0\uC774\uC2A4","flow.delay":"\uC9C0\uC5F0","shapeGroup.basic":"\uAE30\uBCF8","shapeGroup.flowchart":"\uC21C\uC11C\uB3C4","shapeGroup.other":"\uAE30\uD0C0","shapeGroup.solid":"\uC785\uCCB4","shapeGroup.uml":"\uD074\uB798\uC2A4 \uB2E4\uC774\uC5B4\uADF8\uB7A8","shapeMenu.hint":"\uB9C8\uC6B0\uC2A4\uB97C \uC62C\uB824 \uC774\uB984 \uD655\uC778","tool.chevron":"\uAEBE\uC1E0","tool.brace-left":"\uC67C\uCABD \uC911\uAD04\uD638","tool.brace-right":"\uC624\uB978\uCABD \uC911\uAD04\uD638","tool.uml-class":"UML \uD074\uB798\uC2A4","tool.uml-interface":"UML \uC778\uD130\uD398\uC774\uC2A4","tool.line":"\uC9C1\uC120","tool.arrow":"\uC120","tool.text":"\uD14D\uC2A4\uD2B8","tool.draw":"\uD39C","tool.pen":"\uD39C","tool.highlighter":"\uD615\uAD11\uD39C","tool.eraser":"\uC9C0\uC6B0\uAC1C","status.none":"\uC120\uD0DD \uC5C6\uC74C","status.selected":"\uB3C4\uD615 {n}\uAC1C \uC120\uD0DD\uB428","toolbar.select":"\uC120\uD0DD (V)","toolbar.hand":"\uD654\uBA74 \uC774\uB3D9 (H)","toolbar.shapes":"\uB3C4\uD615","toolbar.grid":"\uADF8\uB9AC\uB4DC","toolbar.undo":"\uC2E4\uD589 \uCDE8\uC18C (Ctrl+Z)","toolbar.redo":"\uB2E4\uC2DC \uC2E4\uD589 (Ctrl+Shift+Z)","toolbar.arrow":"\uD654\uC0B4\uD45C (A)","toolbar.text":"\uD14D\uC2A4\uD2B8 (T)","toolbar.pen":"\uD39C","toolbar.highlighter":"\uD615\uAD11\uD39C","toolbar.eraser":"\uC9C0\uC6B0\uAC1C (E)","toolbar.uml-class":"UML \uD074\uB798\uC2A4","toolbar.uml-interface":"UML \uC778\uD130\uD398\uC774\uC2A4","zoom.in":"\uD655\uB300","zoom.out":"\uCD95\uC18C","zoom.reset":"\uCD08\uAE30\uD654","style.stroke":"\uD14C\uB450\uB9AC","style.line":"\uC120","style.fill":"\uCC44\uC6B0\uAE30","style.text":"\uD14D\uC2A4\uD2B8","style.highlight":"\uD615\uAD11","style.prefix":"\uC811\uB450 \uAE30\uD638","style.prefix.soon":"\uC811\uB450 \uAE30\uD638\uB294 \uC900\uBE44 \uC911\uC785\uB2C8\uB2E4","style.none":"\uC5C6\uC74C","style.addColor":"\uC0C9\uC0C1 \uCD94\uAC00","style.connection":"\uC5F0\uACB0","style.arrow":"\uD654\uC0B4\uD45C","style.dashed":"\uC810\uC120","style.solid":"\uC2E4\uC120","style.opacity":"\uBD88\uD22C\uBA85\uB3C4","style.connection.straight":"\uC9C1\uC120","style.connection.polyline":"\uB465\uADFC \uAEBE\uC740\uC120","style.connection.orthogonal":"\uC9C1\uAC01 \uAEBE\uC740\uC120","style.connection.curve":"\uACE1\uC120","style.arrowhead.none":"\uD654\uC0B4\uD45C \uC5C6\uC74C","style.arrowhead.end":"\uB05D \uD654\uC0B4\uD45C","style.arrowhead.start":"\uC2DC\uC791 \uD654\uC0B4\uD45C","style.arrowhead.both":"\uC591\uBC29\uD5A5 \uD654\uC0B4\uD45C","style.arrowhead.none-dashed":"\uD654\uC0B4\uD45C \uC5C6\uB294 \uC810\uC120","style.arrowhead.both-dashed":"\uC591\uBC29\uD5A5 \uD654\uC0B4\uD45C \uC810\uC120","style.uml":"UML","style.arrowhead.inheritance":"\uC0C1\uC18D","style.arrowhead.composition":"\uD569\uC131","style.arrowhead.aggregation":"\uC9D1\uD569","style.arrowhead.dependency":"\uC758\uC874","style.arrowhead.realization":"\uC2E4\uD604","menu.title":"\uC0C8 \uB3C4\uD615 \uC120\uD0DD","menu.cancel":"\uBE48 \uACF3\uC744 \uD074\uB9AD\uD574 \uCDE8\uC18C","shape.rectangle":"\uC0AC\uAC01\uD615","shape.rounded-rectangle":"\uB465\uADFC","shape.circle":"\uC6D0","shape.ellipse":"\uD0C0\uC6D0","shape.diamond":"\uB2E4\uC774\uC544\uBAAC\uB4DC","shape.triangle":"\uC0BC\uAC01","shape.hexagon":"\uC721\uAC01\uD615","shape.parallelogram":"\uD3C9\uD589","shape.trapezoid":"\uC0AC\uB2E4\uB9AC\uAF34","shape.pentagon":"\uC624\uAC01\uD615","shape.octagon":"\uD314\uAC01\uD615","shape.star":"\uBCC4","shape.uml-class":"\uD074\uB798\uC2A4","shape.uml-interface":"\uC778\uD130\uD398\uC774\uC2A4","uml.drag":"\uB4DC\uB798\uADF8\uD558\uC5EC \uC815\uB82C","uml.delete":"\uC774 \uD589 \uC0AD\uC81C","uml.textColor":"\uAE00\uC790\uC0C9","uml.defaultColor":"\uAE30\uBCF8 \uC0C9\uC0C1","uml.fontSize":"\uAE00\uC790 \uD06C\uAE30","uml.strikethrough":"\uCDE8\uC18C\uC120","uml.attribute":"\uC18D\uC131","uml.method":"\uBA54\uC11C\uB4DC","minimap.title":"\uBBF8\uB2C8\uB9F5","minimap.expand":"\uBBF8\uB2C8\uB9F5 \uD3BC\uCE58\uAE30","minimap.collapse":"\uBBF8\uB2C8\uB9F5 \uC811\uAE30","tool.mind-map":"\uB9C8\uC778\uB4DC\uB9F5","toolbar.mind-map":"\uB9C8\uC778\uB4DC\uB9F5","toolbar.export":"\uB0B4\uBCF4\uB0B4\uAE30","toolbar.export.png":"PNG \uC774\uBBF8\uC9C0","toolbar.export.svg":"SVG \uBCA1\uD130","toolbar.export.pdf":"PDF \uBB38\uC11C","toolbar.export.data":"\uB370\uC774\uD130 \uB0B4\uBCF4\uB0B4\uAE30","toolbar.import.data":"\uB370\uC774\uD130 \uAC00\uC838\uC624\uAE30","import.success":"\uAC00\uC838\uC624\uAE30 \uC131\uACF5: \uB3C4\uD615 {n}\uAC1C \uBCF5\uC6D0\uB428","import.fail":"\uAC00\uC838\uC624\uAE30 \uC2E4\uD328: \uD30C\uC77C \uD615\uC2DD\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4","shape.mind-map":"\uB9C8\uC778\uB4DC\uB9F5","mindmap.defaultRoot":"\uC911\uC2EC \uC8FC\uC81C","mindmap.defaultBranch":"\uBD84\uAE30 \uC8FC\uC81C","mindmap.nodeText":"\uB178\uB4DC \uD14D\uC2A4\uD2B8","mindmap.addChild":"\uD558\uC704 \uB178\uB4DC","mindmap.addSibling":"\uD615\uC81C \uB178\uB4DC","mindmap.deleteNode":"\uB178\uB4DC \uC0AD\uC81C","mindmap.color":"\uC0C9\uC0C1","mindmap.levelColor":"\uAE30\uBCF8 \uB2E8\uACC4 \uC0C9\uC0C1","mindmap.icon":"\uC544\uC774\uCF58","mindmap.noIcon":"\uC544\uC774\uCF58 \uC5C6\uC74C","mindmap.note":"\uC18D\uC131 \uC124\uBA85","mindmap.notePlaceholder":"\uC124\uBA85 \uB0B4\uC6A9(\uC120\uD0DD)","mindmap.noteColor":"\uC124\uBA85 \uC0C9\uC0C1","mindmap.noteColorDefault":"\uB178\uB4DC\uC640 \uB3D9\uC77C","mindmap.collapse":"\uC811\uAE30","mindmap.expand":"\uD3BC\uCE58\uAE30","mindmap.close":"\uD3B8\uC9D1 \uB2EB\uAE30","mindmap.more":"\uCD94\uAC00 \uC124\uC815","mindmap.level":"Level","mindmap.promote1":"Promote","mindmap.promote2":"Promote 2","mindmap.promoteDisabled":"Already at top","tool.table":"\uD45C","toolbar.table":"\uD45C","shape.table":"\uD45C","table.insertRow":"\uD589 \uC0BD\uC785","table.deleteRow":"\uD589 \uC0AD\uC81C","table.insertCol":"\uC5F4 \uC0BD\uC785","table.deleteCol":"\uC5F4 \uC0AD\uC81C","table.merge":"\uC140 \uBCD1\uD569","table.split":"\uC140 \uBD84\uD560","table.insertRowAbove":"\uC704\uC5D0 \uD589 \uC0BD\uC785","table.insertRowBelow":"\uC544\uB798\uC5D0 \uD589 \uC0BD\uC785","table.insertColLeft":"\uC67C\uCABD\uC5D0 \uC5F4 \uC0BD\uC785","table.insertColRight":"\uC624\uB978\uCABD\uC5D0 \uC5F4 \uC0BD\uC785","table.pickHint":"\uD589\xB7\uC5F4 \uC218 \uC120\uD0DD","ctx.copy":"\uBCF5\uC0AC","ctx.paste":"\uBD99\uC5EC\uB123\uAE30","ctx.duplicate":"\uC0AC\uBCF8 \uB9CC\uB4E4\uAE30","ctx.layer":"\uB808\uC774\uC5B4","ctx.bringToFront":"\uB9E8 \uC55E\uC73C\uB85C","ctx.bringForward":"\uD55C \uCE78 \uC55E\uC73C\uB85C","ctx.sendBackward":"\uD55C \uCE78 \uB4A4\uB85C","ctx.sendToBack":"\uB9E8 \uB4A4\uB85C","ctx.copyStyle":"\uC2A4\uD0C0\uC77C \uBCF5\uC0AC","ctx.pasteStyle":"\uC2A4\uD0C0\uC77C \uBD99\uC5EC\uB123\uAE30","ctx.rotate90":"90\xB0","ctx.rotate180":"180\xB0","ctx.rotate270":"270\xB0","ctx.rotate":"\uD68C\uC804","ctx.group":"\uADF8\uB8F9 \uB9CC\uB4E4\uAE30","ctx.ungroup":"\uADF8\uB8F9 \uD574\uC81C","ctx.lock":"\uC7A0\uAE08","ctx.unlock":"\uC7A0\uAE08 \uD574\uC81C","ctx.unlockAll":"\uBAA8\uB450 \uC7A0\uAE08 \uD574\uC81C","ctx.delete":"\uC0AD\uC81C","toolbar.icon":"\uC544\uC774\uCF58 (S)","toolbar.template":"\uD15C\uD50C\uB9BF","template.search":"\uD15C\uD50C\uB9BF \uAC80\uC0C9","template.all":"\uC804\uCCB4","template.empty":"\uC77C\uCE58\uD558\uB294 \uD15C\uD50C\uB9BF\uC774 \uC5C6\uC2B5\uB2C8\uB2E4","toolbar.image":"\uC774\uBBF8\uC9C0","toolbar.more":"\uB354\uBCF4\uAE30","toolbar.pageTheme":"\uD398\uC774\uC9C0 \uD14C\uB9C8","pageTheme.light":"\uAE30\uBCF8","pageTheme.warm":"\uB530\uB73B\uD55C","pageTheme.gray":"\uBC1D\uC740 \uD68C\uC0C9","pageTheme.purple":"\uBC1D\uC740 \uBCF5\uC22D\uC544","pageTheme.green":"\uBC1D\uC740 \uCD08\uB85D","pageTheme.eye-care":"\uB208 \uBCF4\uD638","tool.image":"\uC774\uBBF8\uC9C0","image.uploadFailed":"\uC774\uBBF8\uC9C0 \uC5C5\uB85C\uB4DC \uC2E4\uD328","image.insertFailed":"\uC774\uBBF8\uC9C0 \uC0BD\uC785 \uC2E4\uD328","image.tooLarge":"\uC774\uBBF8\uC9C0\uAC00 30 MB\uB97C \uCD08\uACFC\uD558\uC5EC \uC5C5\uB85C\uB4DC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4","image.temporaryInserted":"\uC784\uC2DC \uC774\uBBF8\uC9C0\uB97C \uC0BD\uC785\uD588\uC2B5\uB2C8\uB2E4(\uC5C5\uB85C\uB4DC \uC8FC\uC18C\uAC00 \uC5C6\uC5B4 \uC0C8\uB85C\uACE0\uCE68\uD558\uBA74 \uC0AC\uB77C\uC9D1\uB2C8\uB2E4)","image.naturalSize":"\uC6D0\uBCF8 \uD06C\uAE30","icon.search":"\uC544\uC774\uCF58 \uAC80\uC0C9","icon.empty":"\uC77C\uCE58\uD558\uB294 \uC544\uC774\uCF58\uC774 \uC5C6\uC2B5\uB2C8\uB2E4","icon.recent":"\uCD5C\uADFC \uC0AC\uC6A9","iconCat.status":"\uC0C1\uD0DC \uD45C\uC2DC","iconCat.number":"\uC22B\uC790 \uBC30\uC9C0","iconCat.tech":"\uD074\uB77C\uC6B0\uB4DC\uC640 \uAE30\uC220","iconCat.chart":"\uCC28\uD2B8","iconCat.office":"\uBB38\uC11C","iconCat.media":"\uBBF8\uB514\uC5B4\uC640 \uD611\uC5C5","iconCat.arrow":"\uD654\uC0B4\uD45C","iconCat.misc":"\uC790\uC8FC \uC4F0\uB294","iconCat.emoji":"\uC774\uBAA8\uD2F0\uCF58","iconCat.sticker":"\uC2A4\uD2F0\uCEE4","iconCat.device":"\uAE30\uAE30","iconCat.weather":"\uB0A0\uC528","iconCat.transport":"\uAD50\uD1B5","iconCat.nature":"\uC790\uC5F0","iconCat.building":"\uAC74\uBB3C","iconCat.medical":"\uC758\uB8CC","iconCat.shopping":"\uC1FC\uD551","iconCat.science":"\uACFC\uD559","iconCat.animal":"\uB3D9\uBB3C","iconCat.time":"\uC2DC\uAC04","iconCat.edit":"\uD3B8\uC9D1","iconCat.food":"\uC74C\uC2DD","iconCat.communication":"\uD1B5\uC2E0"},"de-DE":{"save.success":"Gespeichert","save.fail":"Speichern fehlgeschlagen","tool.select":"Auswahlwerkzeug","tool.hand":"Ansicht verschieben","tool.rectangle":"Rechteck","tool.rounded-rectangle":"Abgerundetes Rechteck","tool.circle":"Kreis","tool.ellipse":"Ellipse","tool.diamond":"Raute","tool.triangle":"Dreieck","tool.hexagon":"Sechseck","tool.parallelogram":"Parallelogramm","tool.trapezoid":"Trapez","tool.pentagon":"F\xFCnfeck","tool.octagon":"Achteck","tool.star":"Stern","tool.cylinder":"Zylinder","tool.cloud":"Wolke","tool.heart":"Herz","tool.block-arrow-right":"Pfeil rechts","tool.block-arrow-left":"Pfeil links","tool.block-arrow-up":"Pfeil oben","tool.block-arrow-down":"Pfeil unten","tool.block-arrow-double":"Doppelpfeil","tool.right-triangle":"Rechtwinkliges Dreieck","tool.cross":"Kreuz","tool.speech-rect":"Eckige Sprechblase","tool.speech-round":"Runde Sprechblase","tool.cube":"W\xFCrfel","tool.sector":"Kreissektor","tool.delay":"D-Form","tool.predefined-process":"Vordefinierter Prozess","tool.document":"Dokument","tool.stadium":"Stadionform","tool.class-catalog":"Kategorie","tool.envelope":"Umschlag","tool.checkbox":"Kontrollk\xE4stchen","tool.sticky-note":"Haftnotiz","shape.sticky-note":"Haftnotiz","tool.triangular-pyramid":"Dreieckspyramide","tool.quadrangular-pyramid":"Viereckspyramide","tool.cuboid":"Quader","tool.sphere":"Kugel","tool.ellipsoid":"Ellipsoid","tool.pie":"Tortenst\xFCck","tool.hollow-pie":"Donut","class.plain":"Klasse","flow.process":"Prozess","flow.step":"Schritt","flow.startEnd":"Start / Ende","flow.decision":"Entscheidung","flow.data":"Daten","flow.manual":"Manueller Vorgang","flow.preparation":"Vorbereitung","flow.database":"Datenbank","flow.delay":"Verz\xF6gerung","shapeGroup.basic":"Basis","shapeGroup.flowchart":"Flussdiagramm","shapeGroup.other":"Sonstige","shapeGroup.solid":"3D","shapeGroup.uml":"Klassendiagramm","shapeMenu.hint":"Zum Anzeigen des Namens \xFCberfahren","tool.chevron":"Winkelform","tool.brace-left":"Linke Klammer","tool.brace-right":"Rechte Klammer","tool.uml-class":"UML-Klasse","tool.uml-interface":"UML-Schnittstelle","tool.line":"Linie","tool.arrow":"Linie","tool.text":"Text","tool.draw":"Stift","tool.pen":"Stift","tool.highlighter":"Textmarker","tool.eraser":"Radiergummi","status.none":"Nichts ausgew\xE4hlt","status.selected":"{n} Objekte ausgew\xE4hlt","toolbar.select":"Auswahl (V)","toolbar.hand":"Ansicht verschieben (H)","toolbar.shapes":"Formen","toolbar.grid":"Raster","toolbar.undo":"R\xFCckg\xE4ngig (Strg+Z)","toolbar.redo":"Wiederholen (Strg+Umschalt+Z)","toolbar.arrow":"Pfeil (A)","toolbar.text":"Text (T)","toolbar.pen":"Stift","toolbar.highlighter":"Textmarker","toolbar.eraser":"Radiergummi (E)","toolbar.uml-class":"UML-Klasse","toolbar.uml-interface":"UML-Schnittstelle","zoom.in":"Vergr\xF6\xDFern","zoom.out":"Verkleinern","zoom.reset":"Zur\xFCcksetzen","style.stroke":"Rahmen","style.line":"Linie","style.fill":"F\xFCllung","style.text":"Text","style.highlight":"Hervorhebung","style.prefix":"Pr\xE4fix","style.prefix.soon":"Pr\xE4fixsymbole folgen in K\xFCrze","style.none":"Keine","style.addColor":"Farbe hinzuf\xFCgen","style.connection":"Verbindung","style.arrow":"Pfeilspitze","style.dashed":"Gestrichelt","style.solid":"Durchgezogen","style.opacity":"Deckkraft","style.connection.straight":"Gerade","style.connection.polyline":"Abgerundete Polylinie","style.connection.orthogonal":"Rechtwinklig","style.connection.curve":"Kurve","style.arrowhead.none":"Keine","style.arrowhead.end":"Ende","style.arrowhead.start":"Start","style.arrowhead.both":"Beide","style.arrowhead.none-dashed":"Gestrichelt","style.arrowhead.both-dashed":"Gestrichelt beidseitig","style.uml":"UML","style.arrowhead.inheritance":"Vererbung","style.arrowhead.composition":"Komposition","style.arrowhead.aggregation":"Aggregation","style.arrowhead.dependency":"Abh\xE4ngigkeit","style.arrowhead.realization":"Realisierung","menu.title":"Neue Form w\xE4hlen","menu.cancel":"Zum Abbrechen ins Leere klicken","shape.rectangle":"Rechteck","shape.rounded-rectangle":"Abgerundet","shape.circle":"Kreis","shape.ellipse":"Ellipse","shape.diamond":"Raute","shape.triangle":"Dreieck","shape.hexagon":"Sechseck","shape.parallelogram":"Parallelogramm","shape.trapezoid":"Trapez","shape.pentagon":"F\xFCnfeck","shape.octagon":"Achteck","shape.star":"Stern","shape.uml-class":"Klasse","shape.uml-interface":"Schnittstelle","uml.drag":"Zum Sortieren ziehen","uml.delete":"Zeile l\xF6schen","uml.textColor":"Textfarbe","uml.defaultColor":"Standardfarbe","uml.fontSize":"Schriftgr\xF6\xDFe","uml.strikethrough":"Durchgestrichen","uml.attribute":"Attribute","uml.method":"Methoden","minimap.title":"Minikarte","minimap.expand":"Minikarte einblenden","minimap.collapse":"Minikarte ausblenden","tool.mind-map":"Mindmap","toolbar.mind-map":"Mindmap","toolbar.export":"Exportieren","toolbar.export.png":"PNG-Bild","toolbar.export.svg":"SVG-Vektor","toolbar.export.pdf":"PDF-Dokument","toolbar.export.data":"Daten exportieren","toolbar.import.data":"Daten importieren","import.success":"Import erfolgreich: {n} Formen wiederhergestellt","import.fail":"Import fehlgeschlagen: ung\xFCltiges Dateiformat","shape.mind-map":"Mindmap","mindmap.defaultRoot":"Zentrales Thema","mindmap.defaultBranch":"Unterthema","mindmap.nodeText":"Knotentext","mindmap.addChild":"Unterknoten","mindmap.addSibling":"Geschwisterknoten","mindmap.deleteNode":"Knoten l\xF6schen","mindmap.color":"Farbe","mindmap.levelColor":"Standard-Ebenenfarbe","mindmap.icon":"Symbol","mindmap.noIcon":"Kein Symbol","mindmap.note":"Notiz","mindmap.notePlaceholder":"Notizinhalt (optional)","mindmap.noteColor":"Notizfarbe","mindmap.noteColorDefault":"Wie Knoten","mindmap.collapse":"Einklappen","mindmap.expand":"Ausklappen","mindmap.close":"Editor schlie\xDFen","mindmap.more":"Weitere Einstellungen","mindmap.level":"Ebene","mindmap.promote1":"Ebene h\xF6her","mindmap.promote2":"2 Ebenen h\xF6her","mindmap.promoteDisabled":"Bereits oben","tool.table":"Tabelle","toolbar.table":"Tabelle","shape.table":"Tabelle","table.insertRow":"Zeile einf\xFCgen","table.deleteRow":"Zeile l\xF6schen","table.insertCol":"Spalte einf\xFCgen","table.deleteCol":"Spalte l\xF6schen","table.merge":"Zellen verbinden","table.split":"Zelle teilen","table.insertRowAbove":"Zeile dar\xFCber einf\xFCgen","table.insertRowBelow":"Zeile darunter einf\xFCgen","table.insertColLeft":"Spalte links einf\xFCgen","table.insertColRight":"Spalte rechts einf\xFCgen","table.pickHint":"Zeilen & Spalten w\xE4hlen","ctx.copy":"Kopieren","ctx.paste":"Einf\xFCgen","ctx.duplicate":"Duplizieren","ctx.layer":"Ebene","ctx.bringToFront":"Ganz nach vorn","ctx.bringForward":"Nach vorn","ctx.sendBackward":"Nach hint","ctx.sendToBack":"Ganz nach hint","ctx.copyStyle":"Stil kopieren","ctx.pasteStyle":"Stil einf\xFCgen","ctx.rotate90":"90\xB0","ctx.rotate180":"180\xB0","ctx.rotate270":"270\xB0","ctx.rotate":"Drehen","ctx.group":"Gruppieren","ctx.ungroup":"Gruppierung aufheben","ctx.lock":"Sperren","ctx.unlock":"Entsperren","ctx.unlockAll":"Alle entsperren","ctx.delete":"L\xF6schen","toolbar.icon":"Symbole (S)","toolbar.template":"Vorlagen","template.search":"Vorlagen suchen","template.all":"Alle","template.empty":"Keine passende Vorlage","toolbar.image":"Bild","toolbar.more":"Mehr","toolbar.pageTheme":"Seitenthema","pageTheme.light":"Standard","pageTheme.warm":"Warm","pageTheme.gray":"Hellgrau","pageTheme.purple":"Helllila","pageTheme.green":"Hellgr\xFCn","pageTheme.eye-care":"Augenschonend","tool.image":"Bild","image.uploadFailed":"Bild-Upload fehlgeschlagen","image.insertFailed":"Bild konnte nicht eingef\xFCgt werden","image.tooLarge":"Bild \xFCberschreitet das Upload-Limit von 30 MB","image.temporaryInserted":"Tempor\xE4res Bild eingef\xFCgt (kein Upload-Endpunkt konfiguriert, geht beim Neuladen verloren)","image.naturalSize":"Originalgr\xF6\xDFe","icon.search":"Symbole suchen","icon.empty":"Keine passenden Symbole","icon.recent":"Zuletzt verwendet","iconCat.status":"Status","iconCat.number":"Zahlen-Badges","iconCat.tech":"Cloud & Technik","iconCat.chart":"Diagramme","iconCat.office":"Dokumente","iconCat.media":"Medien & Teamarbeit","iconCat.arrow":"Pfeile","iconCat.misc":"H\xE4ufig genutzt","iconCat.emoji":"Emotionen","iconCat.sticker":"Sticker","iconCat.device":"Ger\xE4te","iconCat.weather":"Wetter","iconCat.transport":"Verkehr","iconCat.nature":"Natur","iconCat.building":"Geb\xE4ude","iconCat.medical":"Medizin","iconCat.shopping":"Einkaufen","iconCat.science":"Wissenschaft","iconCat.animal":"Tier","iconCat.time":"Zeit","iconCat.edit":"Bearbeiten","iconCat.food":"Essen","iconCat.communication":"Kommunikation"},"fr-FR":{"save.success":"Enregistr\xE9","save.fail":"\xC9chec de l'enregistrement","tool.select":"Outil de s\xE9lection","tool.hand":"D\xE9placer la vue","tool.rectangle":"Rectangle","tool.rounded-rectangle":"Rectangle arrondi","tool.circle":"Cercle","tool.ellipse":"Ellipse","tool.diamond":"Losange","tool.triangle":"Triangle","tool.hexagon":"Hexagone","tool.parallelogram":"Parall\xE9logramme","tool.trapezoid":"Trap\xE8ze","tool.pentagon":"Pentagone","tool.octagon":"Octogone","tool.star":"\xC9toile","tool.cylinder":"Cylindre","tool.cloud":"Nuage","tool.heart":"C\u0153ur","tool.block-arrow-right":"Fl\xE8che droite","tool.block-arrow-left":"Fl\xE8che gauche","tool.block-arrow-up":"Fl\xE8che haut","tool.block-arrow-down":"Fl\xE8che bas","tool.block-arrow-double":"Double fl\xE8che","tool.right-triangle":"Triangle rectangle","tool.cross":"Croix","tool.speech-rect":"Bulle rectangulaire","tool.speech-round":"Bulle ronde","tool.cube":"Cube","tool.sector":"Secteur","tool.delay":"Forme D","tool.predefined-process":"Processus pr\xE9d\xE9fini","tool.document":"Document","tool.stadium":"Forme stade","tool.class-catalog":"Cat\xE9gorie","tool.envelope":"Enveloppe","tool.checkbox":"Case \xE0 cocher","tool.sticky-note":"Note adh\xE9sive","shape.sticky-note":"Note adh\xE9sive","tool.triangular-pyramid":"Pyramide triangulaire","tool.quadrangular-pyramid":"Pyramide \xE0 base carr\xE9e","tool.cuboid":"Pav\xE9 droit","tool.sphere":"Sph\xE8re","tool.ellipsoid":"Ellipso\xEFde","tool.pie":"Camembert","tool.hollow-pie":"Anneau","class.plain":"Classe","flow.process":"Traitement","flow.step":"\xC9tape","flow.startEnd":"D\xE9but / Fin","flow.decision":"D\xE9cision","flow.data":"Donn\xE9es","flow.manual":"Op\xE9ration manuelle","flow.preparation":"Pr\xE9paration","flow.database":"Base de donn\xE9es","flow.delay":"D\xE9lai","shapeGroup.basic":"De base","shapeGroup.flowchart":"Organigramme","shapeGroup.other":"Autres","shapeGroup.solid":"3D","shapeGroup.uml":"Diagramme de classes","shapeMenu.hint":"Survolez pour voir le nom","tool.chevron":"Chevron","tool.brace-left":"Accolade gauche","tool.brace-right":"Accolade droite","tool.uml-class":"Classe UML","tool.uml-interface":"Interface UML","tool.line":"Ligne","tool.arrow":"Ligne","tool.text":"Texte","tool.draw":"Stylo","tool.pen":"Stylo","tool.highlighter":"Surligneur","tool.eraser":"Gomme","status.none":"Aucune s\xE9lection","status.selected":"{n} formes s\xE9lectionn\xE9es","toolbar.select":"S\xE9lection (V)","toolbar.hand":"D\xE9placer la vue (H)","toolbar.shapes":"Formes","toolbar.grid":"Grille","toolbar.undo":"Annuler (Ctrl+Z)","toolbar.redo":"R\xE9tablir (Ctrl+Maj+Z)","toolbar.arrow":"Fl\xE8che (A)","toolbar.text":"Texte (T)","toolbar.pen":"Stylo","toolbar.highlighter":"Surligneur","toolbar.eraser":"Gomme (E)","toolbar.uml-class":"Classe UML","toolbar.uml-interface":"Interface UML","zoom.in":"Zoom avant","zoom.out":"Zoom arri\xE8re","zoom.reset":"R\xE9initialiser","style.stroke":"Bordure","style.line":"Ligne","style.fill":"Remplissage","style.text":"Texte","style.highlight":"Surlignage","style.prefix":"Pr\xE9fixe","style.prefix.soon":"Les symboles de pr\xE9fixe arrivent bient\xF4t","style.none":"Aucun","style.addColor":"Ajouter une couleur","style.connection":"Connexion","style.arrow":"Pointe de fl\xE8che","style.dashed":"Pointill\xE9","style.solid":"Continu","style.opacity":"Opacit\xE9","style.connection.straight":"Droite","style.connection.polyline":"Polyligne arrondie","style.connection.orthogonal":"Orthogonale","style.connection.curve":"Courbe","style.arrowhead.none":"Aucune","style.arrowhead.end":"Fin","style.arrowhead.start":"D\xE9but","style.arrowhead.both":"Les deux","style.arrowhead.none-dashed":"Pointill\xE9","style.arrowhead.both-dashed":"Pointill\xE9 double","style.uml":"UML","style.arrowhead.inheritance":"H\xE9ritage","style.arrowhead.composition":"Composition","style.arrowhead.aggregation":"Agr\xE9gation","style.arrowhead.dependency":"D\xE9pendance","style.arrowhead.realization":"R\xE9alisation","menu.title":"Choisir une nouvelle forme","menu.cancel":"Cliquez dans le vide pour annuler","shape.rectangle":"Rectangle","shape.rounded-rectangle":"Arrondi","shape.circle":"Cercle","shape.ellipse":"Ellipse","shape.diamond":"Losange","shape.triangle":"Triangle","shape.hexagon":"Hexagone","shape.parallelogram":"Parall\xE9logramme","shape.trapezoid":"Trap\xE8ze","shape.pentagon":"Pentagone","shape.octagon":"Octogone","shape.star":"\xC9toile","shape.uml-class":"Classe","shape.uml-interface":"Interface","uml.drag":"Glisser pour r\xE9ordonner","uml.delete":"Supprimer la ligne","uml.textColor":"Couleur du texte","uml.defaultColor":"Couleur par d\xE9faut","uml.fontSize":"Taille de police","uml.strikethrough":"Barr\xE9","uml.attribute":"Attributs","uml.method":"M\xE9thodes","minimap.title":"Mini-carte","minimap.expand":"D\xE9velopper la mini-carte","minimap.collapse":"R\xE9duire la mini-carte","tool.mind-map":"Carte mentale","toolbar.mind-map":"Carte mentale","toolbar.export":"Exporter","toolbar.export.png":"Image PNG","toolbar.export.svg":"Vecteur SVG","toolbar.export.pdf":"Document PDF","toolbar.export.data":"Exporter les donn\xE9es","toolbar.import.data":"Importer les donn\xE9es","import.success":"Import r\xE9ussi : {n} formes restaur\xE9es","import.fail":"\xC9chec de l'import : format de fichier invalide","shape.mind-map":"Carte mentale","mindmap.defaultRoot":"Sujet central","mindmap.defaultBranch":"Sous-sujet","mindmap.nodeText":"Texte du n\u0153ud","mindmap.addChild":"N\u0153ud enfant","mindmap.addSibling":"N\u0153ud fr\xE8re","mindmap.deleteNode":"Supprimer le n\u0153ud","mindmap.color":"Couleur","mindmap.levelColor":"Couleur de niveau par d\xE9faut","mindmap.icon":"Ic\xF4ne","mindmap.noIcon":"Aucune ic\xF4ne","mindmap.note":"Note","mindmap.notePlaceholder":"Contenu de la note (facultatif)","mindmap.noteColor":"Couleur de la note","mindmap.noteColorDefault":"Comme le n\u0153ud","mindmap.collapse":"R\xE9duire","mindmap.expand":"D\xE9velopper","mindmap.close":"Fermer l'\xE9diteur","mindmap.more":"Plus de r\xE9glages","mindmap.level":"Niveau","mindmap.promote1":"Monter","mindmap.promote2":"Monter de 2","mindmap.promoteDisabled":"D\xE9j\xE0 en haut","tool.table":"Tableau","toolbar.table":"Tableau","shape.table":"Tableau","table.insertRow":"Ins\xE9rer une ligne","table.deleteRow":"Supprimer la ligne","table.insertCol":"Ins\xE9rer une colonne","table.deleteCol":"Supprimer la colonne","table.merge":"Fusionner les cellules","table.split":"Scinder la cellule","table.insertRowAbove":"Ins\xE9rer une ligne au-dessus","table.insertRowBelow":"Ins\xE9rer une ligne en dessous","table.insertColLeft":"Ins\xE9rer une colonne \xE0 gauche","table.insertColRight":"Ins\xE9rer une colonne \xE0 droite","table.pickHint":"Choisir lignes et colonnes","ctx.copy":"Copier","ctx.paste":"Coller","ctx.duplicate":"Dupliquer","ctx.layer":"Calque","ctx.bringToFront":"Premier plan","ctx.bringForward":"Vers l'avant","ctx.sendBackward":"Vers l'arri\xE8re","ctx.sendToBack":"Arri\xE8re-plan","ctx.copyStyle":"Copier le style","ctx.pasteStyle":"Coller le style","ctx.rotate90":"90\xB0","ctx.rotate180":"180\xB0","ctx.rotate270":"270\xB0","ctx.rotate":"Pivoter","ctx.group":"Grouper","ctx.ungroup":"Dissocier","ctx.lock":"Verrouiller","ctx.unlock":"D\xE9verrouiller","ctx.unlockAll":"Tout d\xE9verrouiller","ctx.delete":"Supprimer","toolbar.icon":"Ic\xF4nes (S)","toolbar.template":"Mod\xE8les","template.search":"Rechercher un mod\xE8le","template.all":"Tout","template.empty":"Aucun mod\xE8le correspondant","toolbar.image":"Image","toolbar.more":"Plus","toolbar.pageTheme":"Th\xE8me de page","pageTheme.light":"D\xE9faut","pageTheme.warm":"Chaud","pageTheme.gray":"Gris clair","pageTheme.purple":"Violet clair","pageTheme.green":"Vert clair","pageTheme.eye-care":"Protecteur","tool.image":"Image","image.uploadFailed":"\xC9chec de l'envoi de l'image","image.insertFailed":"\xC9chec de l'insertion de l'image","image.tooLarge":"L'image d\xE9passe la limite d'envoi de 30 Mo","image.temporaryInserted":"Image temporaire ins\xE9r\xE9e (aucun point d'envoi configur\xE9, elle sera perdue au rechargement)","image.naturalSize":"Taille d\u2019origine","icon.search":"Rechercher une ic\xF4ne","icon.empty":"Aucune ic\xF4ne correspondante","icon.recent":"R\xE9cemment utilis\xE9s","iconCat.status":"Statut","iconCat.number":"Badges num\xE9rot\xE9s","iconCat.tech":"Cloud et technique","iconCat.chart":"Graphiques","iconCat.office":"Documents","iconCat.media":"M\xE9dias et collaboration","iconCat.arrow":"Fl\xE8ches","iconCat.misc":"Essentiels","iconCat.emoji":"\xC9motions","iconCat.sticker":"Autocollants","iconCat.device":"Appareils","iconCat.weather":"M\xE9t\xE9o","iconCat.transport":"Transport","iconCat.nature":"Nature","iconCat.building":"B\xE2timent","iconCat.medical":"M\xE9dical","iconCat.shopping":"Shopping","iconCat.science":"Science","iconCat.animal":"Animal","iconCat.time":"Temps","iconCat.edit":"\xC9dition","iconCat.food":"Nourriture","iconCat.communication":"Communication"}},Kt="zh-CN",Yn=new Set;function Yt(r){Kt!==r&&(Kt=r,Yn.forEach(e=>e()));}function rr(){return Kt}function sr(r){return Yn.add(r),()=>Yn.delete(r)}function le(r,e){let i=Ji[Kt][r]??Ji["zh-CN"][r];if(e)for(let[n,o]of Object.entries(e))i=i.replace(new RegExp(`\\{${n}\\}`,"g"),String(o));return i}function Ne(r){let e=r.visibility??"",t=(r.name??"").trim(),i=(r.type??"").trim();if(!t&&!i)return "";let n=`${t}${i?`: ${i}`:""}`;return e?`${e} ${n}`:n}function xe(r){let e=r.visibility??"",t=(r.name??"").trim(),i=(r.params??"").trim(),n=(r.returnType??"").trim();if(!t&&!i&&!n)return "";let o=`${t}(${i})${n?`: ${n}`:""}`;return e?`${e} ${o}`:o}var Zn=["#ef4444","#f59e0b","#10b981","#3b82f6","#8b5cf6","#ec4899"],Ce=14,ar=40,lr=80,cr=240;var pt=9,hr=12;var Ze=["right","left","up","down"];function ce(r){return r==="right"||r==="left"}function Xe(r){return r==="right"||r==="down"?1:-1}function Z(r,e="right"){return r.direction??e}function Be(r,e){return r.color??Zn[e%Zn.length]}function Qi(r){let e=r.text||"",t=0;for(let n of e)t+=/[\u2e80-\u9fff\uf900-\ufaff\uff00-\uffef\u3000-\u303f]/.test(n)?1:.6;let i=Math.max(80,Math.min(240,Math.ceil(t*14)+24));return r.icon&&(i+=26),{width:i,height:40}}function Xt(r){let e={...r};return r.children&&(e.children=r.children.map(t=>Xt(t))),e}function je(r,e,t){if(r.id===e)return {...r,...t};let i=r.children??[],n=i.map(o=>je(o,e,t));return n.some((o,s)=>o!==i[s])?{...r,children:n}:r}function jn(r,e,t){if(r.id===e)return {...r,children:[...r.children??[],t],collapsed:false};let i=r.children??[],n=i.map(o=>jn(o,e,t));return n.some((o,s)=>o!==i[s])?{...r,children:n}:r}function qn(r,e,t){let i=r.children??[];for(let n=0;n<i.length;n++){if(i[n].id===e){let s=[...i];return s.splice(n+1,0,t),{...r,children:s}}let o=qn(i[n],e,t);if(o!==i[n])return {...r,children:i.map(s=>s===i[n]?o:s)}}return r}function Zt(r,e){if(r.id===e)return null;let t=r.children??[],i=t.map(n=>Zt(n,e)).filter(n=>n!==null);return i.length!==t.length||i.some((n,o)=>n!==t[o])?{...r,children:i}:r}function W(r,e){if(r.id===e)return r;for(let t of r.children??[]){let i=W(t,e);if(i)return i}return null}function jt(r,e){if(r.id===e)return 0;for(let t of r.children??[]){let i=jt(t,e);if(i!==-1)return i+1}return -1}function qe(r,e){for(let t of r.children??[]){if(t.id===e)return r;let i=qe(t,e);if(i)return i}return null}function eo(r){let e=1;for(let t of r.children??[])e+=eo(t);return e}function dr(r){let e=new Map;for(let t of Ze)e.set(t,[]);for(let t of r.children??[]){let i=t.direction??"right";e.get(i).push(t);}return e}function to(r,e){e.set(r.id,Qi(r));for(let t of r.children??[])to(t,e);}function N(r){let e=new Map;to(r,e);let t=new Map,i=new Map,n=S=>e.get(S),o=(S,w)=>{let C=Z(S,w),v=`${S.id}:${C}`,k=i.get(v);if(k)return k;let P=n(S.id);if(S.collapsed)return i.set(v,P),P;let E=S.children??[];if(E.length===0)return i.set(v,P),P;let U=E.map(fe=>o(fe,C)),ae;if(ce(C)){let fe=U.reduce((O,te)=>O+te.height,0)+16*(E.length-1),ye=Math.max(...U.map(O=>O.width));ae={width:P.width+48+ye,height:Math.max(P.height,fe)};}else {let fe=U.reduce((O,te)=>O+te.width,0)+16*(E.length-1),ye=Math.max(...U.map(O=>O.height));ae={width:Math.max(P.width,fe),height:P.height+48+ye};}return i.set(v,ae),ae},s=(S,w,C,v,k)=>{let P=Z(S,w),E=n(S.id);if(t.set(S.id,{x:v,y:k,depth:C,width:E.width,height:E.height,direction:P}),S.collapsed)return;let U=S.children??[];if(U.length!==0)if(ce(P)){let ae=v+Xe(P)*(E.width/2+48),fe=U.reduce((O,te)=>O+o(te,P).height,0)+16*(U.length-1),ye=k-fe/2;for(let O of U){let te=Z(O,P),ct=o(O,te),vn=n(O.id);s(O,te,C+1,ae+Xe(te)*vn.width/2,ye+ct.height/2),ye+=ct.height+16;}}else {let ae=k+Xe(P)*(E.height/2+48),fe=U.reduce((O,te)=>O+o(te,P).width,0)+16*(U.length-1),ye=v-fe/2;for(let O of U){let te=Z(O,P),ct=o(O,te),vn=n(O.id);s(O,te,C+1,ye+ct.width/2,ae+Xe(te)*vn.height/2),ye+=ct.width+16;}}},a=n(r.id);t.set(r.id,{x:0,y:0,depth:0,width:a.width,height:a.height,direction:"right"});let l=dr(r);for(let S of Ze){let w=l.get(S);if(w.length!==0)if(ce(S)){let v=-(w.reduce((k,P)=>k+o(P,S).height,0)+16*(w.length-1))/2;for(let k of w){let P=o(k,S),E=n(k.id);s(k,S,1,Xe(S)*(a.width/2+48+E.width/2),v+P.height/2),v+=P.height+16;}}else {let v=-(w.reduce((k,P)=>k+o(P,S).width,0)+16*(w.length-1))/2;for(let k of w){let P=o(k,S),E=n(k.id);s(k,S,1,v+P.width/2,Xe(S)*(a.height/2+48+E.height/2)),v+=P.width+16;}}}let c=new Map,h=(S,w)=>{let C=S.offset,v={dx:w.dx+(C?.dx??0),dy:w.dy+(C?.dy??0)};c.set(S.id,v);for(let k of S.children??[])h(k,v);};h(r,{dx:0,dy:0}),t.forEach((S,w)=>{let C=c.get(w);C&&(S.x+=C.dx,S.y+=C.dy);});let d=1/0,u=-1/0,p=1/0,g=-1/0;t.forEach(S=>{d=Math.min(d,S.x-S.width/2),u=Math.max(u,S.x+S.width/2),p=Math.min(p,S.y-S.height/2),g=Math.max(g,S.y+S.height/2);});let m=(d+u)/2,f=(p+g)/2;t.forEach(S=>{S.x-=m,S.y-=f;});let b=1/0,x=-1/0,I=1/0,T=-1/0;return t.forEach(S=>{b=Math.min(b,S.x-S.width/2),x=Math.max(x,S.x+S.width/2),I=Math.min(I,S.y-S.height/2),T=Math.max(T,S.y+S.height/2);}),{positions:t,width:x-b,height:T-I}}function qt(r,e){return e==="right"?{x:r.x+r.width/2+10,y:r.y}:e==="left"?{x:r.x-r.width/2-10,y:r.y}:e==="down"?{x:r.x,y:r.y+r.height/2+10}:{x:r.x,y:r.y-r.height/2-10}}function no(r,e,t){let i=!!(r.children&&r.children.length>0),n=e.direction,o=i?16:0,s=[];if(t)for(let a of Ze)s.push(Xn(a,e,o));else {s.push(Xn(n,e,o));let a=ce(n)?"down":"right";s.push(Xn(a,e,0,"sibling"));}return s}function Xn(r,e,t,i="child"){let n=18+t;return r==="right"?{kind:i,direction:r,x:e.x+e.width/2+n,y:e.y}:r==="left"?{kind:i,direction:r,x:e.x-e.width/2-n,y:e.y}:r==="down"?{kind:i,direction:r,x:e.x,y:e.y+e.height/2+n}:{kind:i,direction:r,x:e.x,y:e.y-e.height/2-n}}function Jn(r,e){let t=W(r,e);if(!t)return [];let i=N(r).positions.get(e);return i?no(t,i,t.id===r.id):[]}function Qn(r,e,t,i){let o=s=>{let a=e.get(s.id);if(a)for(let l of no(s,a,s===r)){let c=t-l.x,h=i-l.y;if(c*c+h*h<=144)return {nodeId:s.id,kind:l.kind,direction:l.direction}}if(!s.collapsed)for(let l of s.children??[]){let c=o(l);if(c)return c}return null};return o(r)}function _e(r,e){let t=qe(r,e);if(!t)return null;let i=W(r,e);if(!i)return null;let n=t===r?i.direction??"right":Z(i,Z(t)),o;t===r?o=(t.children??[]).filter(a=>Z(a,"right")===n):o=t.children??[];let s=o.findIndex(a=>a.id===e);return s===-1?null:{parent:t,siblings:o,index:s,direction:n}}function ei(r,e,t){let i=_e(r,e);if(!i)return r;let{parent:n,siblings:o,index:s,direction:a}=i;if(t<0&&(t=0),t>o.length-1&&(t=o.length-1),t===s)return r;let l=[...o],[c]=l.splice(s,1);if(l.splice(t,0,c),n!==r)return je(r,n.id,{children:l});let h=[],d=0;for(let u of r.children??[])Z(u,"right")===a?h.push(l[d++]):h.push(u);return {...r,children:h}}function ti(r,e,t){let i=oo(r,e);if(!i)return r;let n=i.length-1;if(n<t+1)return r;let o=i[n-1-t],s=i[n-t],a=W(r,e);if(!a)return r;let l=a;if(!l.direction&&o===r.id){let h=W(r,s),d=h?Z(h):Z(a,"right");l={...l,direction:d};}let c=ro(r,e);return c===r?r:so(c,o,s,l)}function ni(r,e,t,i,n){if(e===r.id||e===t)return r;let o=W(r,e);if(!o||t!==r.id&&W(o,t))return r;let s=Zt(r,e);if(!s)return r;let a=t===r.id,l;return a?l={...o,direction:i}:(l={...o},delete l.direction),io(s,t,i,n,l)}function ur(r,e,t){let i=0;for(let o=0;o<r.length;o++)if(Z(r[o],"right")===e){if(i===t)return o;i++;}let n=-1;for(let o=0;o<r.length;o++)Z(r[o],"right")===e&&(n=o);return n===-1?r.length:n+1}function io(r,e,t,i,n){if(r.id===e){let s=r.children??[],a=ur(s,t,Math.max(0,i)),l=[...s];return l.splice(a,0,n),{...r,children:l}}let o=r.children??[];for(let s=0;s<o.length;s++){let a=o[s];if(a.id===e){let c=[...a.children??[]],h=Math.max(0,Math.min(i,c.length));return c.splice(h,0,n),{...r,children:o.map((d,u)=>u===s?{...a,children:c}:d)}}let l=io(a,e,t,i,n);if(l!==a)return {...r,children:o.map((c,h)=>h===s?l:c)}}return r}function oo(r,e,t=[]){let i=[...t,r.id];if(r.id===e)return i;for(let n of r.children??[]){let o=oo(n,e,i);if(o)return o}return null}function ro(r,e){let t=r.children??[];if(t.findIndex(o=>o.id===e)!==-1)return {...r,children:t.filter(o=>o.id!==e)};let n=t.map(o=>ro(o,e));return n.some((o,s)=>o!==t[s])?{...r,children:n}:r}function so(r,e,t,i){if(r.id===e){let s=r.children??[],a=s.findIndex(h=>h.id===t),l=a===-1?s.length:a+1,c=[...s];return c.splice(l,0,i),{...r,children:c}}let n=r.children??[],o=n.map(s=>so(s,e,t,i));return o.some((s,a)=>s!==n[a])?{...r,children:o}:r}var ao=["#fde68a","#fcd34d","#fdba74","#fca5a5","#f9a8d4","#e9d5ff","#c4b5fd","#a5b4fc","#7dd3fc","#a7f3d0","#86efac","#d9f99d"],Jt=ao[0];function ii(r){return typeof r=="string"&&/^#[0-9a-fA-F]{6}$/.test(r.trim())}var re=.2,Je=.85-re/2;function lo(r){return !r||r==="transparent"?r:Kn(r,-0.14)}function co(r,e){return {...r,fillColor:ii(e)?e:Jt,fillOpacity:1,strokeColor:"transparent"}}var ho={color:"#0f172a",opacity:.2,blur:16,offsetX:0,offsetY:5};var gr=[{id:"status",labelKey:"iconCat.status"},{id:"number",labelKey:"iconCat.number"},{id:"emoji",labelKey:"iconCat.emoji"},{id:"sticker",labelKey:"iconCat.sticker"},{id:"device",labelKey:"iconCat.device"},{id:"tech",labelKey:"iconCat.tech"},{id:"chart",labelKey:"iconCat.chart"},{id:"office",labelKey:"iconCat.office"},{id:"media",labelKey:"iconCat.media"},{id:"arrow",labelKey:"iconCat.arrow"},{id:"misc",labelKey:"iconCat.misc"},{id:"weather",labelKey:"iconCat.weather"},{id:"transport",labelKey:"iconCat.transport"},{id:"nature",labelKey:"iconCat.nature"},{id:"building",labelKey:"iconCat.building"},{id:"medical",labelKey:"iconCat.medical"},{id:"shopping",labelKey:"iconCat.shopping"},{id:"science",labelKey:"iconCat.science"},{id:"animal",labelKey:"iconCat.animal"},{id:"time",labelKey:"iconCat.time"},{id:"edit",labelKey:"iconCat.edit"},{id:"food",labelKey:"iconCat.food"},{id:"communication",labelKey:"iconCat.communication"}],y=(r,e)=>({d:r,fill:"none",...e?{w:e}:{}}),gt=(r,e="ink")=>({d:r,fill:e,stroke:"none"}),$=(r,e,t)=>`M${r-t} ${e}A${t} ${t} 0 1 0 ${r+t} ${e}A${t} ${t} 0 1 0 ${r-t} ${e}Z`,mr=["#e11d48","#f97316","#eab308","#22c55e","#14b8a6","#0ea5e9","#6366f1","#a855f7","#ec4899","#64748b"],fr=["\u96F6","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D","\u4E03","\u516B","\u4E5D"],yr=["Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine"],br=mr.map((r,e)=>({id:`num-${e}`,cat:"number",zh:`\u6570\u5B57 ${e}`,en:`${yr[e]} badge`,kw:`number badge \u6570\u5B57 \u5FBD\u6807 \u5E8F\u53F7 ${fr[e]} ${e}`,layers:[],disc:r,label:{text:String(e),color:"#ffffff",size:13}})),Qe=[{id:"check-circle",cat:"status",zh:"\u901A\u8FC7",en:"Check circle",kw:"check ok success done \u5B8C\u6210 \u5BF9\u52FE \u6210\u529F \u901A\u8FC7 \u6B63\u786E",layers:[y($(12,12,9)),y("M7.6 12.3L10.6 15.3L16.3 8.9")]},{id:"alert-circle",cat:"status",zh:"\u8B66\u544A",en:"Alert circle",kw:"alert warning danger \u8B66\u544A \u6CE8\u610F \u5371\u9669 \u611F\u53F9\u53F7",layers:[y($(12,12,9)),y("M12 7.4V13"),y("M12 16.4H12.01",2.2)]},{id:"question-circle",cat:"status",zh:"\u7591\u95EE",en:"Question circle",kw:"question help faq \u7591\u95EE \u5E2E\u52A9 \u95EE\u53F7",layers:[y($(12,12,9)),y("M9.4 9.4A2.7 2.7 0 0 1 14.7 10C14.7 11.8 12 12.2 12 14"),y("M12 16.6H12.01",2.2)]},{id:"close-circle",cat:"status",zh:"\u5931\u8D25",en:"Close circle",kw:"close fail error cancel \u5931\u8D25 \u5173\u95ED \u9519\u8BEF \u53C9",layers:[y($(12,12,9)),y("M9.2 9.2L14.8 14.8"),y("M14.8 9.2L9.2 14.8")]},{id:"info-circle",cat:"status",zh:"\u4FE1\u606F",en:"Info circle",kw:"info note tip \u4FE1\u606F \u63D0\u793A \u8BF4\u660E",layers:[y($(12,12,9)),y("M12 11V16.4"),y("M12 7.6H12.01",2.2)]},{id:"star",cat:"status",zh:"\u661F\u6807",en:"Star",kw:"star favorite bookmark \u661F \u6536\u85CF \u6807\u8BB0 \u91CD\u70B9",layers:[y("M12 3.4L14.7 8.9L20.7 9.8L16.3 14L17.4 20L12 17.1L6.6 20L7.7 14L3.3 9.8L9.3 8.9Z")]},{id:"flag",cat:"status",zh:"\u65D7\u6807",en:"Flag",kw:"flag mark milestone \u65D7\u5E1C \u6807\u8BB0 \u91CC\u7A0B\u7891",layers:[y("M5.5 20.5V4"),y("M5.5 5H16.5L14.8 8.6L16.5 12.2H5.5")]},{id:"heart",cat:"status",zh:"\u559C\u6B22",en:"Heart",kw:"heart like love \u5FC3 \u559C\u6B22 \u70B9\u8D5E \u6536\u85CF",layers:[y("M12 20.2C12 20.2 4.8 15.6 4.8 10.4A4 4 0 0 1 12 7.7A4 4 0 0 1 19.2 10.4C19.2 15.6 12 20.2 12 20.2Z")]},...br,{id:"cloud",cat:"tech",zh:"\u4E91",en:"Cloud",kw:"cloud saas \u4E91 \u670D\u52A1 \u8BA1\u7B97 \u5929\u6C14",layers:[y("M7 18.5H16.6A3.6 3.6 0 0 0 17.1 11.3A5.4 5.4 0 0 0 6.8 9.9A4 4 0 0 0 7 18.5Z")]},{id:"cloud-up",cat:"tech",zh:"\u4E91\u4E0A\u4F20",en:"Cloud upload",kw:"cloud upload sync \u4E91 \u4E0A\u4F20 \u540C\u6B65 \u5BFC\u5165",layers:[y("M7 18.5H16.6A3.6 3.6 0 0 0 17.1 11.3A5.4 5.4 0 0 0 6.8 9.9A4 4 0 0 0 7 18.5Z"),y("M12 17V11.4"),y("M9.8 13.6L12 11.4L14.2 13.6")]},{id:"cloud-down",cat:"tech",zh:"\u4E91\u4E0B\u8F7D",en:"Cloud download",kw:"cloud download \u4E91 \u4E0B\u8F7D \u5BFC\u51FA \u62C9\u53D6",layers:[y("M7 18.5H16.6A3.6 3.6 0 0 0 17.1 11.3A5.4 5.4 0 0 0 6.8 9.9A4 4 0 0 0 7 18.5Z"),y("M12 11.2V17"),y("M9.8 14.8L12 17L14.2 14.8")]},{id:"server",cat:"tech",zh:"\u670D\u52A1\u5668",en:"Server",kw:"server host machine \u670D\u52A1\u5668 \u4E3B\u673A \u673A\u623F \u5B9E\u4F8B",layers:[y("M4 5H20V10H4Z"),y("M4 14H20V19H4Z"),y("M7.6 7.5H7.61",2.2),y("M7.6 16.5H7.61",2.2),y("M11 7.5H16.5"),y("M11 16.5H16.5")]},{id:"database",cat:"tech",zh:"\u6570\u636E\u5E93",en:"Database",kw:"database db storage mysql \u6570\u636E\u5E93 \u5B58\u50A8 \u8868 \u6570\u636E",layers:[y("M4 6.4C4 5 7.6 3.9 12 3.9C16.4 3.9 20 5 20 6.4C20 7.8 16.4 8.9 12 8.9C7.6 8.9 4 7.8 4 6.4Z"),y("M4 6.4V17.6C4 19 7.6 20.1 12 20.1C16.4 20.1 20 19 20 17.6V6.4"),y("M4 12C4 13.4 7.6 14.5 12 14.5C16.4 14.5 20 13.4 20 12")]},{id:"chip",cat:"tech",zh:"\u82AF\u7247",en:"Chip",kw:"chip cpu gpu ai \u82AF\u7247 \u5904\u7406\u5668 \u7B97\u529B \u6A21\u578B",layers:[y("M8 8H16V16H8Z"),y("M12 4V8"),y("M12 16V20"),y("M4 12H8"),y("M16 12H20"),y("M10 4V8"),y("M14 4V8"),y("M10 16V20"),y("M14 16V20"),y("M4 10H8"),y("M4 14H8"),y("M16 10H20"),y("M16 14H20")]},{id:"terminal",cat:"tech",zh:"\u547D\u4EE4\u884C",en:"Terminal",kw:"terminal shell cli code \u547D\u4EE4\u884C \u7EC8\u7AEF \u547D\u4EE4 ssh",layers:[y("M4 5H20V19H4Z"),y("M7.6 9.4L10.2 12L7.6 14.6"),y("M13 14.8H16.6")]},{id:"globe",cat:"tech",zh:"\u7F51\u7EDC",en:"Network",kw:"network internet globe cdn \u7F51\u7EDC \u5168\u7403 \u4E92\u8054\u7F51 \u62D3\u6251",layers:[y($(12,12,8.6)),y("M3.4 12H20.6"),y("M12 3.4C14.4 5.7 15.6 8.7 15.6 12C15.6 15.3 14.4 18.3 12 20.6C9.6 18.3 8.4 15.3 8.4 12C8.4 8.7 9.6 5.7 12 3.4Z")]},{id:"shield",cat:"tech",zh:"\u5B89\u5168",en:"Shield",kw:"shield security safe privacy \u5B89\u5168 \u9632\u62A4 \u76FE \u52A0\u5BC6 \u5408\u89C4",layers:[y("M12 3.4L19 6V12C19 16 16 19.2 12 20.6C8 19.2 5 16 5 12V6Z"),y("M9 12.2L11.2 14.4L15.2 9.9")]},{id:"bar-chart",cat:"chart",zh:"\u67F1\u72B6\u56FE",en:"Bar chart",kw:"bar chart column \u67F1\u72B6 \u56FE\u8868 \u7EDF\u8BA1 \u6570\u636E",layers:[y("M4.5 20H19.5"),y("M7.5 20V11.5"),y("M12 20V5.5"),y("M16.5 20V14")]},{id:"line-chart",cat:"chart",zh:"\u6298\u7EBF\u56FE",en:"Line chart",kw:"line chart trend \u6298\u7EBF \u8D8B\u52BF \u589E\u957F \u56FE\u8868",layers:[y("M4.5 4.5V19.5H19.5"),y("M7.5 15.6L11 11.4L14 13.9L18.4 8")]},{id:"pie-chart",cat:"chart",zh:"\u997C\u56FE",en:"Pie chart",kw:"pie chart share \u997C\u56FE \u5360\u6BD4 \u4EFD\u989D \u56FE\u8868",layers:[y($(12,12,8.6)),y("M12 12V3.4"),y("M12 12L19.4 16.2")]},{id:"gauge",cat:"chart",zh:"\u4EEA\u8868\u76D8",en:"Gauge",kw:"gauge dashboard monitor \u4EEA\u8868\u76D8 \u76D1\u63A7 \u6027\u80FD \u6C34\u4F4D",layers:[y("M3.6 17.6A8.8 8.8 0 0 1 20.4 17.6"),y("M12 17.6L15.8 12.4"),y("M12 5.6V7.4"),y("M5.6 8.4L6.9 9.7"),y("M18.4 8.4L17.1 9.7")]},{id:"table",cat:"chart",zh:"\u6570\u636E\u8868",en:"Table",kw:"table grid sheet data \u8868\u683C \u6570\u636E \u7F51\u683C \u660E\u7EC6",layers:[y("M4 5H20V19H4Z"),y("M4 9.8H20"),y("M9.6 5V19"),y("M15.2 9.8V19")]},{id:"funnel",cat:"chart",zh:"\u6F0F\u6597",en:"Funnel",kw:"funnel filter convert \u6F0F\u6597 \u8F6C\u5316 \u7B5B\u9009 \u6D41\u7A0B",layers:[y("M4 5H20L14 12.2V18.6L10 16.6V12.2Z")]},{id:"target",cat:"chart",zh:"\u76EE\u6807",en:"Target",kw:"target goal okr kpi \u76EE\u6807 \u9776\u5FC3 \u6307\u6807 \u5B8C\u6210\u5EA6",layers:[y($(12,12,8.6)),y($(12,12,4.6)),gt($(12,12,1.5))]},{id:"trend-up",cat:"chart",zh:"\u589E\u957F",en:"Trend up",kw:"growth up increase kpi \u589E\u957F \u4E0A\u5347 \u63D0\u5347 \u4E0A\u6DA8",layers:[y("M4 17.5L9.2 12.2L12.6 15.4L20 7.8"),y("M15.4 7.8H20V12.4")]},{id:"doc",cat:"office",zh:"\u6587\u6863",en:"Document",kw:"doc file page \u6587\u6863 \u6587\u4EF6 \u9875\u9762 \u62A5\u544A \u9700\u6C42",layers:[y("M6.5 3.5H13.5L17.5 7.5V20.5H6.5Z"),y("M13.4 3.6V7.6H17.4"),y("M9.5 12.5H14.5"),y("M9.5 16H14.5")]},{id:"sheet",cat:"office",zh:"\u8868\u683C",en:"Spreadsheet",kw:"excel sheet cell \u8868\u683C \u5355\u5143\u683C \u62A5\u8868 \u8BA1\u7B97",layers:[y("M6.5 3.5H13.5L17.5 7.5V20.5H6.5Z"),y("M13.4 3.6V7.6H17.4"),y("M9.5 11.5H14.5M9.5 15H14.5M9.5 18.2H12.5")]},{id:"slide",cat:"office",zh:"\u6F14\u793A",en:"Slide",kw:"slide ppt presentation \u6F14\u793A \u5E7B\u706F\u7247 ppt \u6C47\u62A5",layers:[y("M4 5H20V15.5H4Z"),y("M12 15.5V19"),y("M8.8 20.5H15.2")]},{id:"folder",cat:"office",zh:"\u6587\u4EF6\u5939",en:"Folder",kw:"folder directory \u6587\u4EF6\u5939 \u76EE\u5F55 \u5F52\u6863 \u9879\u76EE",layers:[y("M4 6.5H9.6L11.6 9H20V19H4Z")]},{id:"mail",cat:"office",zh:"\u90AE\u4EF6",en:"Mail",kw:"mail email message \u90AE\u4EF6 \u6D88\u606F \u901A\u77E5 \u90AE\u7BB1",layers:[y("M3.5 6H20.5V18H3.5Z"),y("M3.7 6.4L12 12.6L20.3 6.4")]},{id:"calendar",cat:"office",zh:"\u65E5\u5386",en:"Calendar",kw:"calendar date schedule \u65E5\u5386 \u65E5\u7A0B \u65E5\u671F \u6392\u671F",layers:[y("M4 6.5H20V19.5H4Z"),y("M4 10.8H20"),y("M8.4 3.8V7.4"),y("M15.6 3.8V7.4"),y("M8 14.4H10.4")]},{id:"clipboard",cat:"office",zh:"\u526A\u8D34\u677F",en:"Clipboard",kw:"clipboard copy paste \u526A\u8D34\u677F \u590D\u5236 \u7C98\u8D34 \u6E05\u5355",layers:[y("M7.5 5H5.5V20.5H18.5V5H16.5"),y("M9.5 3.5H14.5V6.6H9.5Z"),y("M8.6 12H15.4"),y("M8.6 16H13")]},{id:"paperclip",cat:"office",zh:"\u9644\u4EF6",en:"Attachment",kw:"attach paperclip file \u9644\u4EF6 \u4E0A\u4F20 \u6587\u4EF6 \u9644\u52A0",layers:[y("M16.6 7.4V15.6A4.6 4.6 0 0 1 7.4 15.6V7A2.9 2.9 0 0 1 13.2 7V15.8A1.3 1.3 0 0 1 10.6 15.8V8.2")]},{id:"image",cat:"media",zh:"\u56FE\u7247",en:"Image",kw:"image photo picture \u56FE\u7247 \u7167\u7247 \u56FE \u76F8\u518C",layers:[y("M4 5H20V19H4Z"),y($(9,9.8,1.7)),y("M4.4 16.8L9 12.2L12.6 15.6L15.4 12.8L19.6 17")]},{id:"video",cat:"media",zh:"\u89C6\u9891",en:"Video",kw:"video movie play \u89C6\u9891 \u5F71\u7247 \u64AD\u653E \u5F55\u5236",layers:[y("M4 6.5H14.6V17.5H4Z"),y("M14.6 10.6L20 7.8V16.2L14.6 13.4Z")]},{id:"mic",cat:"media",zh:"\u9EA6\u514B\u98CE",en:"Microphone",kw:"mic voice audio record \u9EA6\u514B\u98CE \u8BED\u97F3 \u5F55\u97F3 \u97F3\u9891",layers:[y("M12 4.2A2.9 2.9 0 0 1 14.9 7.1V11.9A2.9 2.9 0 0 1 9.1 11.9V7.1A2.9 2.9 0 0 1 12 4.2Z"),y("M6.4 11.5A5.6 5.6 0 0 0 17.6 11.5"),y("M12 17.1V20.4")]},{id:"camera",cat:"media",zh:"\u6444\u50CF\u5934",en:"Camera",kw:"camera photo live \u6444\u50CF\u5934 \u62CD\u7167 \u76F4\u64AD \u4F1A\u8BAE",layers:[y("M4 7.5H7.8L9.3 5H14.7L16.2 7.5H20V19.5H4Z"),y($(12,13.4,3.3))]},{id:"chat",cat:"media",zh:"\u5BF9\u8BDD",en:"Chat",kw:"chat message comment \u5BF9\u8BDD \u8BC4\u8BBA \u6D88\u606F \u6C9F\u901A \u53CD\u9988",layers:[y("M4.5 5.5H19.5V15.5H11L7 19.5V15.5H4.5Z")]},{id:"user",cat:"media",zh:"\u6210\u5458",en:"User",kw:"user person member \u7528\u6237 \u6210\u5458 \u4EBA \u8D26\u53F7 \u8D1F\u8D23\u4EBA",layers:[y($(12,8.4,3.7)),y("M5.4 20.4C6 16.7 8.7 14.6 12 14.6C15.3 14.6 18 16.7 18.6 20.4")]},{id:"users",cat:"media",zh:"\u6210\u5458\u7EC4",en:"User group",kw:"users team group \u56E2\u961F \u7FA4\u7EC4 \u6210\u5458 \u7EC4\u7EC7 \u534F\u4F5C",layers:[y($(9.6,8.6,3.1)),y("M3.6 19.8C4.1 16.8 6.4 15 9.6 15C12.8 15 15.1 16.8 15.6 19.8"),y("M16.4 6A3.1 3.1 0 0 1 16.4 11.2"),y("M17.6 15.2C19.5 15.8 20.7 17.4 21 19.8")]},{id:"bell",cat:"media",zh:"\u901A\u77E5",en:"Bell",kw:"bell notification alert \u901A\u77E5 \u63D0\u9192 \u6D88\u606F \u544A\u8B66",layers:[y("M6.6 16.6V11.4A5.4 5.4 0 0 1 17.4 11.4V16.6L19 19.4H5L6.6 16.6Z"),y("M10.2 19.6A1.9 1.9 0 0 0 13.8 19.6")]},{id:"arrow-up",cat:"arrow",zh:"\u5411\u4E0A",en:"Arrow up",kw:"up arrow top \u4E0A \u5411\u4E0A \u7BAD\u5934 \u4E0A\u5347",layers:[y("M12 20.5V4"),y("M6 10L12 4L18 10")]},{id:"arrow-down",cat:"arrow",zh:"\u5411\u4E0B",en:"Arrow down",kw:"down arrow bottom \u4E0B \u5411\u4E0B \u7BAD\u5934 \u4E0B\u964D",layers:[y("M12 3.5V20"),y("M6 14L12 20L18 14")]},{id:"arrow-left",cat:"arrow",zh:"\u5411\u5DE6",en:"Arrow left",kw:"left arrow back \u5DE6 \u5411\u5DE6 \u7BAD\u5934 \u8FD4\u56DE",layers:[y("M20.5 12H4"),y("M10 6L4 12L10 18")]},{id:"arrow-right",cat:"arrow",zh:"\u5411\u53F3",en:"Arrow right",kw:"right arrow next \u53F3 \u5411\u53F3 \u7BAD\u5934 \u524D\u8FDB",layers:[y("M3.5 12H20"),y("M14 6L20 12L14 18")]},{id:"refresh",cat:"arrow",zh:"\u5237\u65B0",en:"Refresh",kw:"refresh reload retry \u5237\u65B0 \u91CD\u8BD5 \u91CD\u65B0\u52A0\u8F7D",layers:[y("M19.6 12A7.6 7.6 0 1 1 17 6.1"),y("M19.9 4.2V8.4H15.7")]},{id:"sync",cat:"arrow",zh:"\u53CC\u5411\u540C\u6B65",en:"Sync",kw:"sync exchange swap \u540C\u6B65 \u4EA4\u6362 \u53CC\u5411 \u4E92\u8F6C",layers:[y("M4 9.2H19L15.6 5.8"),y("M20 14.8H5L8.4 18.2")]},{id:"upload",cat:"arrow",zh:"\u4E0A\u4F20",en:"Upload",kw:"upload import push \u4E0A\u4F20 \u5BFC\u5165 \u53D1\u5E03 \u63D0\u4EA4",layers:[y("M12 16.5V4.6"),y("M7.4 9.2L12 4.6L16.6 9.2"),y("M4.5 20H19.5")]},{id:"download",cat:"arrow",zh:"\u4E0B\u8F7D",en:"Download",kw:"download export pull \u4E0B\u8F7D \u5BFC\u51FA \u62C9\u53D6 \u4FDD\u5B58",layers:[y("M12 4V15.9"),y("M7.4 11.3L12 15.9L16.6 11.3"),y("M4.5 20H19.5")]},{id:"bulb",cat:"misc",zh:"\u60F3\u6CD5",en:"Idea",kw:"idea bulb tip \u60F3\u6CD5 \u521B\u610F \u63D0\u793A \u8981\u70B9 \u7075\u611F",layers:[y("M8.8 15.6A6 6 0 1 1 15.2 15.6V17.4H8.8Z"),y("M9.8 20.2H14.2")]},{id:"settings",cat:"misc",zh:"\u8BBE\u7F6E",en:"Settings",kw:"settings config option \u8BBE\u7F6E \u914D\u7F6E \u53C2\u6570 \u9009\u9879",layers:[y("M4 7.5H20"),y("M4 12H20"),y("M4 16.5H20"),y($(9,7.5,1.9)),y($(15.4,12,1.9)),y($(8,16.5,1.9))]},{id:"key",cat:"misc",zh:"\u5BC6\u94A5",en:"Key",kw:"key token secret \u5BC6\u94A5 \u4EE4\u724C \u6743\u9650 \u5BC6\u7801",layers:[y($(8.6,8.6,4.6)),y("M11.9 11.9L20 20"),y("M15.6 15.6L17.6 13.6"),y("M18 18L20 16")]},{id:"lock",cat:"misc",zh:"\u9501\u5B9A",en:"Lock",kw:"lock secure private \u9501 \u52A0\u5BC6 \u79C1\u6709 \u5B89\u5168",layers:[y("M6.4 10.6H17.6V20.4H6.4Z"),y("M9.2 10.6V7.8A2.8 2.8 0 0 1 14.8 7.8V10.6")]},{id:"eye",cat:"misc",zh:"\u67E5\u770B",en:"Eye",kw:"eye view preview \u67E5\u770B \u9884\u89C8 \u53EF\u89C1 \u89C2\u5BDF",layers:[y("M2.8 12C2.8 12 6.6 6.4 12 6.4C17.4 6.4 21.2 12 21.2 12C21.2 12 17.4 17.6 12 17.6C6.6 17.6 2.8 12 2.8 12Z"),y($(12,12,2.6))]},{id:"lightning",cat:"misc",zh:"\u9AD8\u6548",en:"Lightning",kw:"fast flash speed \u95EA\u7535 \u5FEB\u901F \u9AD8\u6548 \u6027\u80FD",layers:[y("M13.6 2.8L6 13.6H10.8L10.4 21.2L18 10.4H13.2Z")]},{id:"pin",cat:"misc",zh:"\u5B9A\u4F4D",en:"Location",kw:"location pin map \u5B9A\u4F4D \u4F4D\u7F6E \u5730\u56FE \u5730\u5740",layers:[y("M12 21C12 21 18.6 15.1 18.6 10.4A6.6 6.6 0 0 0 5.4 10.4C5.4 15.1 12 21 12 21Z"),y($(12,10.4,2.5))]},{id:"link",cat:"misc",zh:"\u94FE\u63A5",en:"Link",kw:"link url chain \u94FE\u63A5 \u7F51\u5740 \u5F15\u7528 \u8DF3\u8F6C",layers:[y("M10.4 13.6A4.2 4.2 0 0 0 16.4 13.6L19.2 10.8A4.2 4.2 0 0 0 13.2 4.8L11.8 6.2"),y("M13.6 10.4A4.2 4.2 0 0 0 7.6 10.4L4.8 13.2A4.2 4.2 0 0 0 10.8 19.2L12.2 17.8")]},{id:"device-desktop",cat:"device",zh:"\u53F0\u5F0F\u7535\u8111",en:"Desktop",kw:"desktop monitor computer pc \u53F0\u5F0F \u7535\u8111 \u663E\u793A\u5668 \u5C4F\u5E55 \u8BA1\u7B97\u673A",layers:[y("M4.5 4.5H19.5V15.5H4.5Z"),y("M12 15.5V19.3"),y("M8.2 19.5H15.8")]},{id:"device-laptop",cat:"device",zh:"\u7B14\u8BB0\u672C",en:"Laptop",kw:"laptop notebook computer \u7B14\u8BB0\u672C \u4FBF\u643A \u7535\u8111 \u7B14\u8BB0\u672C\u7535\u8111",layers:[y("M6.5 5H17.5V14.5H6.5Z"),y("M8.5 14.5L7.4 17.5"),y("M15.5 14.5L16.6 17.5"),y("M4.5 17.5H19.5")]},{id:"device-phone",cat:"device",zh:"\u624B\u673A",en:"Phone",kw:"phone mobile smartphone \u624B\u673A \u79FB\u52A8 \u7535\u8BDD \u82F9\u679C \u5B89\u5353",layers:[y("M8 3.5H16A1.6 1.6 0 0 1 17.6 5.1V18.9A1.6 1.6 0 0 1 16 20.5H8A1.6 1.6 0 0 1 6.4 18.9V5.1A1.6 1.6 0 0 1 8 3.5Z"),y("M10.4 17.6H13.6")]},{id:"device-tablet",cat:"device",zh:"\u5E73\u677F",en:"Tablet",kw:"tablet ipad \u5E73\u677F \u57AB\u5B50 \u89E6\u5C4F",layers:[y("M5.5 4.5H18.5A1.6 1.6 0 0 1 20.1 6.1V17.9A1.6 1.6 0 0 1 18.5 19.5H5.5A1.6 1.6 0 0 1 3.9 17.9V6.1A1.6 1.6 0 0 1 5.5 4.5Z"),gt($(12,16.8,1))]},{id:"device-keyboard",cat:"device",zh:"\u952E\u76D8",en:"Keyboard",kw:"keyboard typing \u952E\u76D8 \u6253\u5B57 \u8F93\u5165 \u5916\u8BBE",layers:[y("M3.5 7H20.5V17H3.5Z"),y("M6.3 10H6.31",2.2),y("M9.1 10H9.11",2.2),y("M11.9 10H11.91",2.2),y("M14.7 10H14.71",2.2),y("M17.5 10H17.51",2.2),y("M8 14.2H16")]},{id:"device-mouse",cat:"device",zh:"\u9F20\u6807",en:"Mouse",kw:"mouse click \u9F20\u6807 \u70B9\u51FB \u6EDA\u8F6E \u5916\u8BBE",layers:[y("M12 3.5C15.3 3.5 17 5.7 17 8.9V14.1C17 17.3 15.3 20.5 12 20.5C8.7 20.5 7 17.3 7 14.1V8.9C7 5.7 8.7 3.5 12 3.5Z"),y("M12 3.5V8.8"),y("M7 8.8H17")]},{id:"device-printer",cat:"device",zh:"\u6253\u5370\u673A",en:"Printer",kw:"printer print \u6253\u5370\u673A \u6253\u5370 \u590D\u5370 \u8F93\u51FA",layers:[y("M7.5 7.5V3.5H16.5V7.5"),y("M4.5 7.5H19.5V14.5H4.5Z"),y("M8 14.5V20.5H16V14.5"),y("M17.2 10.2H17.21",2.2)]},{id:"device-headset",cat:"device",zh:"\u8033\u673A",en:"Headset",kw:"headset headphone earphone \u8033\u673A \u901A\u8BDD \u5BA2\u670D \u8BED\u97F3",layers:[y("M4.5 13.4V12A7.5 7.5 0 0 1 19.5 12V13.4"),y("M4.5 12.4H6.6A1.6 1.6 0 0 1 8.2 14V16.8A1.6 1.6 0 0 1 6.6 18.4H6.1A1.6 1.6 0 0 1 4.5 16.8Z"),y("M19.5 12.4H17.4A1.6 1.6 0 0 0 15.8 14V16.8A1.6 1.6 0 0 0 17.4 18.4H17.9A1.6 1.6 0 0 0 19.5 16.8Z")]},{id:"device-router",cat:"device",zh:"\u8DEF\u7531\u5668",en:"Router",kw:"router wifi network \u8DEF\u7531\u5668 \u65E0\u7EBF \u7F51\u7EDC \u4FE1\u53F7 \u4E0A\u7F51",layers:[y("M4 13.5H20V19.5H4Z"),y("M7.5 13.5V6"),y("M16.5 13.5V6"),y("M7 16.5H7.01",2.2),y("M10.2 16.5H10.21",2.2)]},{id:"device-usb",cat:"device",zh:"\u4F18\u76D8",en:"USB drive",kw:"usb disk drive \u4F18\u76D8 U\u76D8 \u5B58\u50A8 \u95EA\u5B58 \u63D2\u5165",layers:[y("M9.5 3.5H14.5V8H9.5Z"),y("M8.5 8H15.5V17A3.5 3.5 0 0 1 12 20.5A3.5 3.5 0 0 1 8.5 17Z"),y("M11 5.5H11.01",2.2),y("M13 5.5H13.01",2.2)]},{id:"device-wifi",cat:"device",zh:"\u65E0\u7EBF\u7F51\u7EDC",en:"Wi-Fi",kw:"wifi wireless signal \u65E0\u7EBF \u7F51\u7EDC \u4FE1\u53F7 wifi \u70ED\u70B9",layers:[y("M3.8 9.6C8.2 5.2 15.8 5.2 20.2 9.6"),y("M6.6 12.7C9.6 9.7 14.4 9.7 17.4 12.7"),y("M9.4 15.7C10.8 14.3 13.2 14.3 14.6 15.7"),gt($(12,18.5,1.35))]},{id:"device-battery",cat:"device",zh:"\u7535\u91CF",en:"Battery",kw:"battery power charge \u7535\u91CF \u7535\u6C60 \u5145\u7535 \u80FD\u91CF",layers:[y("M3.5 8.5H18.5V15.5H3.5Z"),y("M20.5 10.5V13.5",2.2),gt("M6 10.4H8.7V13.6H6Z"),gt("M10.3 10.4H13V13.6H10.3Z")]}],mt=new Map(Qe.map(r=>[r.id,r])),uo=false,Ve=null;function xr(){return uo}function po(){return Ve||(Ve=import('./icons-catalog-LG6WL446.cjs').then(r=>{for(let e of r.CATALOG_ICONS)mt.has(e.id)||(Qe.push(e),mt.set(e.id,e));uo=true;}).catch(r=>{throw Ve=null,r}),Ve)}async function ft(r){if(Ve)return Ve;let e=false;for(let t of r)if(!mt.has(t)){e=true;break}e&&await po();}function $e(r){return mt.get(r)}function oi(r){return mt.has(r)}function wr(r){return Qe.filter(e=>e.cat===r)}function Sr(r){let e=r.trim().toLowerCase();if(!e)return Qe;let t=e.split(/\s+/),i=o=>{let s=`${o.zh} ${o.en} ${o.kw??""}`.toLowerCase();return t.every(a=>s.includes(a))},n=o=>`${o.zh} ${o.en}`.toLowerCase().includes(e);return Qe.filter(i).sort((o,s)=>Number(n(s))-Number(n(o)))}var ri=48,go="star",K=24,yt="#3b82f6",mo={status:"#f59e0b",number:"#ef4444",emoji:"#ec4899",sticker:"#f43f5e",device:"#64748b",tech:"#0ea5e9",chart:"#6366f1",office:"#2563eb",media:"#8b5cf6",arrow:"#14b8a6",misc:"#94a3b8",weather:"#06b6d4",transport:"#0d9488",nature:"#22c55e",building:"#78716c",medical:"#e11d48",shopping:"#db2777",science:"#7c3aed",animal:"#a16207",time:"#0891b2",edit:"#475569",food:"#ea580c",communication:"#16a34a"};function si(r){return r.ink??mo[r.cat]??yt}var xt=14,we=10,wt=4,et=1.3,Mr=10,ai=40,li=24,Oe=140,ze=36;var ci="#f1f3f5",Qt="#d9dce1",en="#1f2937",Cr=18,Ir=22,Tr=4;function Ie(r,e){let t=e.x-r.x,i=e.y-r.y,n=Math.cos(r.rotation),o=Math.sin(r.rotation);return {x:t*n+i*o+r.width/2,y:-t*o+i*n+r.height/2}}function vr(r,e){let t=e.x-r.width/2,i=e.y-r.height/2,n=Math.cos(r.rotation),o=Math.sin(r.rotation);return {x:r.x+t*n-i*o,y:r.y+t*o+i*n}}function tn(r,e){let t=18/e,i=22/e,n=4/e;return {x:-r.width/2-n-t,y:-r.height/2+2/e,width:t,height:i}}function tt(r,e,t,i=3){let n=Ie(r,e),o={x:n.x-r.width/2,y:n.y-r.height/2},s=tn(r,t),a=i/t;return o.x>=s.x-a&&o.x<=s.x+s.width+a&&o.y>=s.y-a&&o.y<=s.y+s.height+a}function kr(r,e,t=0){let i=Ie(r,e);return i.x>=-t&&i.x<=r.width+t&&i.y>=-t&&i.y<=r.height+t}function St(r,e){let t=r.cells[0]?.length??0,i=r.cells.length,n=t-1,o=0;for(let a=0;a<t;a++)if(o+=r.colWidths[a]??140,e.x<o){n=a;break}e.x<=0&&(n=0);let s=i-1;o=0;for(let a=0;a<i;a++)if(o+=r.rowHeights[a]??36,e.y<o){s=a;break}return e.y<=0&&(s=0),{row:Math.max(0,s),col:Math.max(0,n)}}function hi(r,e,t,i,n){let o=Math.min(e,i),s=Math.max(e,i),a=Math.min(t,n),l=Math.max(t,n),c=r.colWidths.slice(0,a).reduce((p,g)=>p+g,0),h=r.rowHeights.slice(0,o).reduce((p,g)=>p+g,0),d=r.colWidths.slice(a,l+1).reduce((p,g)=>p+g,0),u=r.rowHeights.slice(o,s+1).reduce((p,g)=>p+g,0);return {x:c-r.width/2,y:h-r.height/2,width:d,height:u}}function nt(r){return r.reduce((e,t)=>e+t,0)}function it(r){return r.reduce((e,t)=>e+t,0)}function Mt(r,e,t){let i=r*e;return i<=t?t/2-i/2+e/2:4+e/2}function Ct(r,e,t=true){return Array.from({length:r},(i,n)=>Array.from({length:e},()=>n===0&&t?{text:"",bold:true,fillColor:ci}:{text:""}))}var Pr=["textColor","fontSize","bold","align","fillColor"];function fo(r){if(!r)return null;let e={},t=false;for(let i of Pr){let n=r[i];n!==void 0&&(e[i]=n,t=true);}return t?e:null}function yo(r,e){return {text:"",...fo(r)??fo(e)??{}}}var bt;function Lr(r,e){return bt===void 0&&(bt=typeof document<"u"?document.createElement("canvas").getContext("2d"):null),bt?(bt.font=e,bt.measureText(r).width):r.length*8}function bo(r,e,t,i){if(!r||i<=0)return 1;let n=`${t?"bold ":""}${e}px sans-serif`,o=0;for(let s of r.split(`
|
|
2
|
+
`)){if(!s){o+=1;continue}let a="",l=0;for(let c of s){let h=a+c;Lr(h,n)>i&&a?(l+=1,a=c):a=h;}a&&(l+=1),o+=Math.max(1,l);}return Math.max(1,o)}function di(r){let e=r.cells.length;if(e===0)return null;let t=[...r.rowHeights],i=Ge(r.cells),n=false;for(let o=0;o<e;o++)for(let s=0;s<(r.cells[o]?.length??0);s++){if(i[o]?.[s])continue;let a=r.cells[o][s];if(!a?.text)continue;let l=ie(r,o,s),c=a.fontSize||r.fontSize||14,d=Math.min(10,bo(a.text,c,!!a.bold,l.width-20))*c*1.3+8,u=a.rowSpan??1;if(u>1){let p=t.slice(o,o+u).reduce((g,m)=>g+m,0);p<d&&(t[o+u-1]+=d-p,n=true);}else t[o]<d&&(t[o]=Math.ceil(d),n=true);}return n?t:null}function he(r){return r.map(e=>e.map(t=>({...t})))}function Ar(r){return {...r,colWidths:[...r.colWidths],rowHeights:[...r.rowHeights],cells:he(r.cells)}}function Ge(r){let e=r.length,t=r[0]?.length??0,i=Array.from({length:e},()=>new Array(t).fill(false));for(let n=0;n<e;n++)for(let o=0;o<(r[n]?.length??0);o++){let s=r[n][o],a=s.rowSpan??1,l=s.colSpan??1;if(a>1||l>1)for(let c=n;c<Math.min(n+a,e);c++)for(let h=o;h<Math.min(o+l,r[c]?.length??0);h++)(c!==n||h!==o)&&(i[c][h]=true);}return i}function xo(r){delete r.rowSpan,delete r.colSpan;}function ui(r,e,t,i,n){let o=Math.min(e,i),s=Math.max(e,i),a=Math.min(t,n),l=Math.max(t,n);if(o===s&&a===l)return r;let c=he(r);for(let u=0;u<c.length;u++)for(let p=0;p<(c[u]?.length??0);p++){let g=c[u][p],m=g.rowSpan??1,f=g.colSpan??1;(m>1||f>1)&&u<=s&&u+m-1>=o&&p<=l&&p+f-1>=a&&xo(g);}let h=c[o][a];h.rowSpan=s-o+1,h.colSpan=l-a+1;let d=[];for(let u=o;u<=s;u++)for(let p=a;p<=l;p++){let m=r[u]?.[p]?.text?.trim();m&&d.push(m);}d.length>0&&(h.text=d.join(`
|
|
3
|
+
`));for(let u=o;u<=s;u++)for(let p=a;p<=l;p++)(u!==o||p!==a)&&(c[u][p]={text:""});return c}function nn(r,e,t){let i=r[e]?.[t];if(!i||!i.rowSpan&&!i.colSpan)return r;let n=he(r);return xo(n[e][t]),n}function pi(r,e,t){let i=r.cells[e]?.[t];if(!i)return {row:e,col:t};if((i.rowSpan??1)>1||(i.colSpan??1)>1)return {row:e,col:t};for(let n=e;n>=0;n--)for(let o=t;o>=0;o--){let s=r.cells[n]?.[o];if(!s)continue;let a=s.rowSpan??1,l=s.colSpan??1;if(!(a===1&&l===1)&&n<=e&&e<=n+a-1&&o<=t&&t<=o+l-1)return {row:n,col:o}}return {row:e,col:t}}function It(r,e,t,i,n){let o=Math.min(e,i),s=Math.max(e,i),a=Math.min(t,n),l=Math.max(t,n),c=true,h=0;for(;c&&h++<32;){c=false;for(let d=0;d<r.cells.length;d++)for(let u=0;u<(r.cells[d]?.length??0);u++){let p=r.cells[d][u],g=p.rowSpan??1,m=p.colSpan??1;if(g===1&&m===1)continue;let f=d+g-1,b=u+m-1;d<=s&&f>=o&&u<=l&&b>=a&&(d<o&&(o=d,c=true),f>s&&(s=f,c=true),u<a&&(a=u,c=true),b>l&&(l=b,c=true));}}return {r1:o,c1:a,r2:s,c2:l}}function Dr(r,e,t,i,n){let o=Math.min(e,i),s=Math.max(e,i),a=Math.min(t,n),l=Math.max(t,n);for(let c=o;c<=s;c++)for(let h=a;h<=l;h++){let d=r.cells[c]?.[h];if(d&&((d.rowSpan??1)>1||(d.colSpan??1)>1))return true}return false}function gi(r,e,t,i,n){let o=Math.min(e,i),s=Math.max(e,i),a=Math.min(t,n),l=Math.max(t,n),c=r.cells,h=false;for(let d=o;d<=s;d++)for(let u=a;u<=l;u++){let p=c[d]?.[u];p&&((p.rowSpan??1)>1||(p.colSpan??1)>1)&&(c=nn(c,d,u),h=true);}return h?c:r.cells}function on(r,e,t){let i=r.length,n=Math.max(0,Math.min(i,t)),o=r[0]?.length??0,s=he(r);if(n<i)for(let p=0;p<i;p++)for(let g=0;g<(s[p]?.length??0);g++){let m=s[p][g],f=m.rowSpan??1;f>1&&p<n&&n<p+f&&(m.rowSpan=f+1);}let a=(()=>{let p=r[0]?.[0];return i>1&&!!p&&(p.bold===true||p.fillColor===ci)})(),l=n===0?0:n-1;l===0&&a&&(l=1);let c=r[l],h=r[Math.min(n,i-1)],d=Array.from({length:o},(p,g)=>yo(c?.[g],h?.[g]));s.splice(n,0,d);let u=[...e];return u.splice(n,0,e[l]??36),{cells:s,rowHeights:u}}function rn(r,e,t){let i=r[0]?.length??0,n=Math.max(0,Math.min(i,t)),o=he(r);for(let c=0;c<o.length;c++){let h=o[c];for(let d=0;d<h.length;d++){let u=h[d],p=u.colSpan??1;p>1&&d<n&&n<d+p&&(u.colSpan=p+1);}}let s=n>0?n-1:0,a=n<i?n:i-1;for(let c=0;c<o.length;c++)o[c].splice(n,0,yo(r[c]?.[s],r[c]?.[a]));let l=[...e];return l.splice(n,0,e[s]??140),{cells:o,colWidths:l}}function sn(r,e,t){let i=r.length;if(i<=1)return null;let n=Math.max(0,Math.min(i-1,t)),o=he(r),s=o[n];for(let l=0;l<(s?.length??0);l++){let c=s[l],h=c.rowSpan??1;h>1&&o[n+1]?.[l]&&(o[n+1][l]={text:c.text,textColor:c.textColor,fontSize:c.fontSize,bold:c.bold,fillColor:c.fillColor,align:c.align,rowSpan:h-1>1?h-1:void 0,colSpan:c.colSpan});}for(let l=0;l<n;l++)for(let c=0;c<(o[l]?.length??0);c++){let h=o[l][c],d=h.rowSpan??1;d>1&&l+d>n&&(h.rowSpan=d-1>1?d-1:void 0);}o.splice(n,1);let a=[...e];return a.splice(n,1),{cells:o,rowHeights:a}}function an(r,e,t){let i=r[0]?.length??0;if(i<=1)return null;let n=Math.max(0,Math.min(i-1,t)),o=he(r);for(let a=0;a<o.length;a++){let l=o[a],c=l[n];if(c){let h=c.colSpan??1;h>1&&l[n+1]&&(l[n+1]={text:c.text,textColor:c.textColor,fontSize:c.fontSize,bold:c.bold,fillColor:c.fillColor,align:c.align,rowSpan:c.rowSpan,colSpan:h-1>1?h-1:void 0});}for(let h=0;h<n;h++){let d=l[h],u=d.colSpan??1;u>1&&h+u>n&&(d.colSpan=u-1>1?u-1:void 0);}l.splice(n,1);}let s=[...e];return s.splice(n,1),{cells:o,colWidths:s}}function ie(r,e,t){let i=r.cells[e]?.[t],n=i?.rowSpan??1,o=i?.colSpan??1,s=r.colWidths.slice(0,t).reduce((h,d)=>h+d,0),a=r.rowHeights.slice(0,e).reduce((h,d)=>h+d,0),l=r.colWidths.slice(t,t+o).reduce((h,d)=>h+d,0),c=r.rowHeights.slice(e,e+n).reduce((h,d)=>h+d,0);return {ox:s,oy:a,width:l,height:c}}function mi(r,e,t){if(e<0||t<0||e>r.width||t>r.height)return null;let i=Ge(r.cells),n=-1,o=0;for(let a=0;a<r.rowHeights.length;a++)if(o+=r.rowHeights[a],t<o){n=a;break}n===-1&&(n=r.rowHeights.length-1);let s=-1;o=0;for(let a=0;a<r.colWidths.length;a++)if(o+=r.colWidths[a],e<o){s=a;break}if(s===-1&&(s=r.colWidths.length-1),i[n]?.[s])for(let a=0;a<=n;a++)for(let l=0;l<=s;l++){let c=r.cells[a]?.[l],h=c?.rowSpan??1,d=c?.colSpan??1;if((h>1||d>1)&&a+h>n&&l+d>s)return {row:a,col:l}}return {row:n,col:s}}var Hr={strokeColor:"#1f2937",fillColor:"#f8fafc",fillOpacity:.9,strokeWidth:2,strokeDash:null},yi={rectangle:{width:120,height:60},"rounded-rectangle":{width:120,height:60,borderRadius:8},circle:{width:80,height:80},ellipse:{width:100,height:70},diamond:{width:100,height:80},triangle:{width:100,height:90},hexagon:{width:100,height:90},parallelogram:{width:120,height:60},trapezoid:{width:120,height:70},pentagon:{width:100,height:90},octagon:{width:100,height:90},star:{width:100,height:100},cylinder:{width:100,height:110},cloud:{width:140,height:90},heart:{width:100,height:95},"block-arrow-right":{width:140,height:80},"block-arrow-left":{width:140,height:80},"block-arrow-up":{width:80,height:140},"block-arrow-down":{width:80,height:140},"block-arrow-double":{width:150,height:80},"right-triangle":{width:100,height:90},cross:{width:90,height:90},"speech-rect":{width:130,height:92},"speech-round":{width:130,height:92},cube:{width:110,height:110},sector:{width:100,height:100},delay:{width:120,height:80},"predefined-process":{width:130,height:80},document:{width:120,height:90},stadium:{width:130,height:60},"class-catalog":{width:160,height:90},chevron:{width:110,height:80},"brace-left":{width:220,height:120},"brace-right":{width:220,height:120},envelope:{width:120,height:84},checkbox:{width:90,height:90},"triangular-pyramid":{width:100,height:100},"quadrangular-pyramid":{width:110,height:110},cuboid:{width:150,height:90},sphere:{width:100,height:100},ellipsoid:{width:130,height:90},pie:{width:130,height:90},"hollow-pie":{width:130,height:90},"sticky-note":{width:140,height:140},icon:{width:48,height:48},image:{width:320,height:240}},ee=14,V=22,ge=36,ne=14,_=8,bi=160,Rr=["rectangle","rounded-rectangle","circle","ellipse","diamond","triangle","hexagon","parallelogram","trapezoid","pentagon","octagon","star","cylinder","cloud","heart","block-arrow-right","block-arrow-left","block-arrow-up","block-arrow-down","block-arrow-double","right-triangle","cross","speech-rect","speech-round","cube","sector","delay","predefined-process","document","stadium","class-catalog","chevron","brace-left","brace-right","envelope","checkbox","triangular-pyramid","quadrangular-pyramid","cuboid","sphere","ellipsoid","pie","hollow-pie","sticky-note","icon","uml-class","uml-interface","mind-map","table","image"];function ln(r){return Rr.includes(r)}function Te(r,e,t,i,n){let o=`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,s=yi[r]||{width:120,height:60},a=n?.width??s.width,l=n?.height??s.height,c=n?n.width/2:s.radius??a/2,h=s.borderRadius??8,d=t??{...Hr};switch(r){case "rounded-rectangle":return {id:o,type:"rounded-rectangle",x:e.x,y:e.y,width:a,height:l,borderRadius:h,rotation:0,style:d};case "circle":return {id:o,type:"circle",x:e.x,y:e.y,radius:c,rotation:0,style:d};case "ellipse":return {id:o,type:"ellipse",x:e.x,y:e.y,width:a,height:l,rotation:0,style:d};case "diamond":return {id:o,type:"diamond",x:e.x,y:e.y,width:a,height:l,rotation:0,style:d};case "triangle":return {id:o,type:"triangle",x:e.x,y:e.y,width:a,height:l,rotation:0,style:d};case "hexagon":return {id:o,type:"hexagon",x:e.x,y:e.y,width:a,height:l,rotation:0,style:d};case "parallelogram":return {id:o,type:"parallelogram",x:e.x,y:e.y,width:a,height:l,rotation:0,style:d};case "trapezoid":return {id:o,type:"trapezoid",x:e.x,y:e.y,width:a,height:l,rotation:0,style:d};case "pentagon":return {id:o,type:"pentagon",x:e.x,y:e.y,width:a,height:l,rotation:0,style:d};case "octagon":return {id:o,type:"octagon",x:e.x,y:e.y,width:a,height:l,rotation:0,style:d};case "star":return {id:o,type:"star",x:e.x,y:e.y,width:a,height:l,rotation:0,style:d};case "icon":return {id:o,type:"icon",iconId:go,x:e.x,y:e.y,width:a,height:l,rotation:0,style:{...d,strokeColor:yt,fillColor:yt,fillOpacity:1}};case "image":return {id:o,type:"image",src:"",x:e.x,y:e.y,width:a,height:l,rotation:0,borderRadius:4,style:{...d,strokeColor:"transparent",fillColor:"#f3f4f6",fillOpacity:1}};case "sticky-note":return {id:o,type:"sticky-note",x:e.x,y:e.y,width:a,height:l,rotation:0,style:co(d,i)};case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":return {id:o,type:r,x:e.x,y:e.y,width:a,height:l,rotation:0,style:d};case "uml-class":{let u="ClassName",p=[{id:`attr_${Date.now()}_1`,visibility:"+",name:"field",type:"string"}],g=[{id:`meth_${Date.now()}_1`,visibility:"+",name:"method",params:"param",returnType:"void"}],{width:m,height:f}=n??hn(u,p,g);return {id:o,type:"uml-class",x:e.x,y:e.y,width:m,height:f,className:u,attributes:p,methods:g,rotation:0,style:{...d,fillColor:"#ffffff"}}}case "uml-interface":{let u="Interface",p=[{id:`meth_${Date.now()}_1`,visibility:"+",name:"method",params:"type",returnType:"type"}],{width:g,height:m}=n??xi(u,p);return {id:o,type:"uml-interface",x:e.x,y:e.y,width:g,height:m,className:u,methods:p,rotation:0,style:{...d,fillColor:"#ffffff"}}}case "mind-map":{let u=f=>`mm_${f}_${Date.now()}_${Math.random().toString(36).substr(2,6)}`,p={id:u("root"),text:le("mindmap.defaultRoot"),children:[{id:u("b1"),text:le("mindmap.defaultBranch")},{id:u("b2"),text:le("mindmap.defaultBranch")},{id:u("b3"),text:le("mindmap.defaultBranch")}]},{width:g,height:m}=N(p);return {id:o,type:"mind-map",x:e.x,y:e.y,width:g,height:m,root:p,rotation:0,style:{...d,fillColor:"#ffffff"}}}case "table":{let u=[140,140,140],p=[36,36,36];return {id:o,type:"table",x:e.x,y:e.y,width:nt(u),height:it(p),colWidths:u,rowHeights:p,cells:Ct(3,3,false),rotation:0,style:{...d,fillColor:"#ffffff",strokeWidth:2}}}default:return {id:o,type:"rectangle",x:e.x,y:e.y,width:a,height:l,rotation:0,style:d}}}var Er=new Set(["table","mind-map"]);function cn(r,e){if(!(!e||e.type!==r)&&!Er.has(r)){if(r==="circle"){let t=e.radius;return typeof t=="number"&&t>0?{width:t*2,height:t*2}:void 0}if("width"in e&&"height"in e){let{width:t,height:i}=e;if(t>0&&i>0)return {width:t,height:i}}}}function hn(r,e,t){let i=ee*.6,n=[r];for(let d of e)n.push(Ne(d));for(let d of t)n.push(xe(d));let s=Math.max(...n.map(d=>d.length),0)*i+ne*2,a=Math.max(bi,s),l=e.length>0?e.length*V+_*2:_*2,c=t.length>0?t.length*V+_*2:_*2,h=ge+l+c;return {width:a,height:h}}function xi(r,e){let t=ee*.6,i=[r,...e.map(a=>xe(a))],n=Math.max(...i.map(a=>a.length),0),o=Math.max(bi,n*t+ne*2),s=e.length>0?e.length*V+_*2:_*2;return {width:o,height:ge+s}}var Nr=new Set(["rectangle","rounded-rectangle","circle","ellipse","diamond","triangle","hexagon","parallelogram","trapezoid","pentagon","octagon","star","cylinder","cloud","heart","block-arrow-right","block-arrow-left","block-arrow-up","block-arrow-down","block-arrow-double","right-triangle","cross","speech-rect","speech-round","cube","sector","delay","predefined-process","document","stadium","class-catalog","chevron","brace-left","brace-right","envelope","checkbox","triangular-pyramid","quadrangular-pyramid","cuboid","sphere","ellipsoid","pie","hollow-pie","sticky-note","icon"]),fi=12,Br=5,A=class extends X{type;pressPoint=null;draftId=null;dragging=false;constructor(e,t){super(e),this.type=t;}onPointerDown(e,t){let i=this.type==="sticky-note"?this.context.getStickyNoteColor():void 0;this.pressPoint=e,this.dragging=false,this.draftId=null;let n=Te(this.type,e,void 0,i);this.context.commitHistory(),this.context.addShape(n),this.context.selectShape(n.id,false),this.draftId=n.id;}onPointerMove(e,t){if(!this.pressPoint||!this.draftId||!Nr.has(this.type))return;let i=e.x-this.pressPoint.x,n=e.y-this.pressPoint.y;if(!this.dragging){let d=this.context.getCamera().getZoom();if(Math.hypot(i,n)*d<Br)return;this.dragging=true;}if(!this.context.getShapes().find(d=>d.id===this.draftId))return;let s=yi[this.type]||{width:120,height:60},a=i===0?0:i<0?-1:1,l=n===0?0:n<0?-1:1;if(this.type==="circle"){let d=Math.max(Math.abs(i),Math.abs(n))/2;this.context.updateShape(this.draftId,{x:this.pressPoint.x+a*d,y:this.pressPoint.y+l*d,radius:Math.max(d,fi/2)});return}let c=Math.abs(i),h=Math.abs(n);if(t.shiftKey){let d=s.height/s.width;c/s.width>=h/(s.width*d)?h=c*d:c=h/d;}c=Math.max(c,fi),h=Math.max(h,fi),this.context.updateShape(this.draftId,{x:this.pressPoint.x+a*c/2,y:this.pressPoint.y+l*h/2,width:c,height:h,...this.type==="rounded-rectangle"?{borderRadius:Math.min(16,(s.borderRadius??8)*Math.max(1,c/s.width))}:{}});}onPointerUp(e,t){this.pressPoint=null,this.draftId=null,this.dragging=false,this.context.setActiveTool("select");}onKeyDown(e){if(e.key==="Escape"&&this.dragging&&this.pressPoint&&this.draftId){let t=yi[this.type]||{width:120,height:60};this.context.getShapes().find(n=>n.id===this.draftId)&&(this.type==="circle"?this.context.updateShape(this.draftId,{x:this.pressPoint.x,y:this.pressPoint.y,radius:t.radius??t.width/2}):this.context.updateShape(this.draftId,{x:this.pressPoint.x,y:this.pressPoint.y,width:t.width,height:t.height,...this.type==="rounded-rectangle"?{borderRadius:t.borderRadius??8}:{}})),this.pressPoint=null,this.draftId=null,this.dragging=false;}}onKeyUp(e){}hasTransientState(){return this.dragging}cancelTransient(){return this.dragging?(this.pressPoint=null,this.draftId=null,this.dragging=false,true):false}getCursor(e){return this.context.getMindMapCursorHitAtPoint(e)?"pointer":"crosshair"}};var wi={n:"top",e:"right",s:"bottom",w:"left"},Tt={top:{x:0,y:-1},bottom:{x:0,y:1},left:{x:-1,y:0},right:{x:1,y:0}};function un(r,e,t){return vt(r,e,t?Tt[wi[t]]:void 0)}function vt(r,e,t){let i=e.x-r.x,n=e.y-r.y;return t&&t.x!==0?i>=0?"left":"right":t&&t.y!==0?n>=0?"top":"bottom":Math.abs(i)>=Math.abs(n)?i>=0?"left":"right":n>=0?"top":"bottom"}function wo(r,e,t){switch(t){case "top":return {x:r.x,y:r.y-e.height/2};case "bottom":return {x:r.x,y:r.y+e.height/2};case "left":return {x:r.x-e.width/2,y:r.y};case "right":return {x:r.x+e.width/2,y:r.y}}}function q(r,e,t,i=.5){let n=Math.min(r.x,e.x),o=Math.max(r.x,e.x),s=Math.min(r.y,e.y),a=Math.max(r.y,e.y);return n<t.x+t.width-i&&o>t.x+i&&s<t.y+t.height-i&&a>t.y+i}function dn(r,e,t,i,n){let o=t==="x"?e.x:e.y,s=t==="x"?e.x+e.width:e.y+e.height;if(r>o&&r<s){let a=o-n,l=s+n;return Math.abs(i-a)<=Math.abs(i-l)?a:l}return r}function So(r,e,t,i,n,o){let s=e.x-r.x,a=e.y-r.y;if((Math.abs(s)<1||Math.abs(a)<1)&&!(n?.box&&q(r,e,n.box)||o?.box&&q(r,e,o.box)))return [e];let l=r.x+s/2,c=r.y+a/2,h=(p,g)=>{if(!g)return false;let m=r;for(let f of p){if(q(m,f,g))return true;m=f;}return false},d=p=>{if(!(p==="H"?!!n?.n&&n.n.x!==0&&!!o?.n&&o.n.x!==0:!!n?.n&&n.n.y!==0&&!!o?.n&&o.n.y!==0))return null;let m=[n?.box,o?.box].filter(w=>!!w);if(m.length===0)return null;if(p==="H"){let w=Math.min(r.y,e.y,...m.map(U=>U.y))-i,C=Math.max(r.y,e.y,...m.map(U=>U.y+U.height))+i,v=Math.abs(r.y-w)+Math.abs(e.y-w),k=Math.abs(r.y-C)+Math.abs(e.y-C),P=v<=k?w:C,E=[{x:r.x,y:P},{x:e.x,y:P},e];return h(E,n?.box)||h(E,o?.box)?null:E}let f=Math.min(r.x,e.x,...m.map(w=>w.x))-i,b=Math.max(r.x,e.x,...m.map(w=>w.x+w.width))+i,x=Math.abs(r.x-f)+Math.abs(e.x-f),I=Math.abs(r.x-b)+Math.abs(e.x-b),T=x<=I?f:b,S=[{x:T,y:r.y},{x:T,y:e.y},e];return h(S,n?.box)||h(S,o?.box)?null:S},u=p=>{let g;p==="H"?(g=Math.max(r.x,Math.min(l,e.x)),n?.box&&n.n&&n.n.x!==0&&(n.n.x<0&&g>r.x&&(g=r.x),n.n.x>0&&g<r.x&&(g=r.x)),o?.box&&o.n&&o.n.x!==0&&(o.n.x<0&&g>e.x&&(g=e.x),o.n.x>0&&g<e.x&&(g=e.x)),n?.box&&q({x:g,y:r.y},{x:g,y:e.y},n.box)&&(g=n.n&&n.n.x!==0?r.x:dn(g,n.box,"x",e.x,i)),o?.box&&q({x:g,y:r.y},{x:g,y:e.y},o.box)&&(g=o.n&&o.n.x!==0?e.x:dn(g,o.box,"x",r.x,i)),n?.box&&q(r,{x:g,y:r.y},n.box)?g=r.x:o?.box&&q({x:g,y:e.y},e,o.box)&&(g=e.x)):(g=Math.max(r.y,Math.min(c,e.y)),n?.box&&n.n&&n.n.y!==0&&(n.n.y<0&&g>r.y&&(g=r.y),n.n.y>0&&g<r.y&&(g=r.y)),o?.box&&o.n&&o.n.y!==0&&(o.n.y<0&&g>e.y&&(g=e.y),o.n.y>0&&g<e.y&&(g=e.y)),n?.box&&q({x:r.x,y:g},{x:e.x,y:g},n.box)&&(g=n.n&&n.n.y!==0?r.y:dn(g,n.box,"y",e.y,i)),o?.box&&q({x:r.x,y:g},{x:e.x,y:g},o.box)&&(g=o.n&&o.n.y!==0?e.y:dn(g,o.box,"y",r.y,i)),n?.box&&q(r,{x:r.x,y:g},n.box)?g=r.y:o?.box&&q({x:e.x,y:g},e,o.box)&&(g=e.y));let m=p==="H"?[{x:g,y:r.y},{x:g,y:e.y},e]:[{x:r.x,y:g},{x:e.x,y:g},e],f=!!n?.box&&(q(r,m[0],n.box)||q(m[0],m[1],n.box)||q(m[1],e,n.box))||!!o?.box&&(q(r,m[0],o.box)||q(m[0],m[1],o.box)||q(m[1],e,o.box));return {pts:m,crosses:f}};if(t){let p=u(t);if(p.crosses&&(n?.box||o?.box)){let g=u(t==="H"?"V":"H");if(!g.crosses)return g.pts;let m=d(t);if(m)return m}return p.pts}return Math.abs(s)>=Math.abs(a)?[{x:l,y:r.y},{x:l,y:e.y},e]:[{x:r.x,y:c},{x:e.x,y:c},e]}var Si=24,Mo=.5;function _r(r,e){if(r.length<2)return r;let t=r[r.length-1],i=r[r.length-2],n=Math.abs(t.y-i.y)<1e-6;if(e==="H"?n:!n)return r;let o=e==="H"?{x:i.x,y:t.y}:{x:t.x,y:i.y},s=r.slice(0,-1);return s.push(o,t),s}function kt(r,e={},t=Si,i=r.length===2){if(r.length<2)return r;let n=[];n.push(r[0]);let o=r.length-1,s=t,a=r[0],l=r[o];e.fromN&&e.toN&&(e.fromN.x!==0&&e.toN.x!==0?s=Math.min(s,Math.abs(l.x-a.x)/2):e.fromN.y!==0&&e.toN.y!==0&&(s=Math.min(s,Math.abs(l.y-a.y)/2)));for(let c=1;c<r.length;c++){let h=r[c-1],d=r[c],u=c===1,p=c===o,g=(C,v,k)=>{let P=(v.x-C.x)*k.x+(v.y-C.y)*k.y;return Math.max(0,Math.min(s,P))},m=u&&e.fromN?(()=>{let C=g(h,d,e.fromN);return C>Mo?{x:h.x+e.fromN.x*C,y:h.y+e.fromN.y*C}:h})():h,f=p&&e.toN?(()=>{let C=g(d,h,e.toN);return C>Mo?{x:d.x+e.toN.x*C,y:d.y+e.toN.y*C}:d})():d;u&&e.fromN&&(m.x!==h.x||m.y!==h.y)&&n.push(m);let b=u?e.fromN:void 0,x=p?e.toN:void 0,I=x?x.x!==0?"H":"V":b?b.x!==0?"H":"V":void 0,T=i&&u&&e.fromN&&e.fromBox?{box:e.fromBox,n:e.fromN}:void 0,S=i&&p&&e.toN&&e.toBox?{box:e.toBox,n:e.toN}:void 0,w=So(m,f,I,s,T,S);I&&(w=_r(w,I));for(let C of w)n.push(C);p&&e.toN&&n.push(d);}return Ye(n)}var Mi=14,Ci=200,pn=class extends X{type="eraser";erasing=false;lastPoint=null;erasedIds=new Set;onPointerDown(e){this.erasing=true,this.lastPoint=e,this.erasedIds.clear(),this.context.commitHistory(),this.context.setEraserPoint(e),this.eraseAt(e);}onPointerMove(e){if(!this.erasing||!this.lastPoint)return;let t=this.lastPoint,i=Math.hypot(e.x-t.x,e.y-t.y),n=Math.max(1,Math.ceil(i/Math.max(this.brushRadius()*.5,1)));for(let o=1;o<=n;o++){let s=o/n;this.eraseAt({x:t.x+(e.x-t.x)*s,y:t.y+(e.y-t.y)*s});}this.lastPoint=e,this.context.setEraserPoint(e);}onPointerUp(){this.erasing=false,this.lastPoint=null,this.erasedIds.clear(),this.context.setEraserPoint(null);}onKeyDown(){}onKeyUp(){}getCursor(){return this.erasing?"grabbing":"crosshair"}dispose(){this.erasing=false,this.lastPoint=null,this.erasedIds.clear(),this.context.setEraserPoint(null);}brushRadius(){return Mi/this.context.getCamera().getZoom()}eraseAt(e){let t=this.context.getShapesInBrushRadius(e,this.brushRadius());for(let i of t)this.erasedIds.has(i.id)||(this.erasedIds.add(i.id),this.context.eraseShape(i.id));}};var st=[3,2.2];function de(r,e,t){let i=o=>(o-.5)*e,n=o=>(o-.5)*t;return r.map(o=>o[0]==="Z"?o:o[0]==="M"||o[0]==="L"?[o[0],i(o[1]),n(o[2])]:["C",i(o[1]),n(o[2]),i(o[3]),n(o[4]),i(o[5]),n(o[6])])}function G(r,e,t,i,n,o,s){let a=[],l=o-n,c=Math.max(1,Math.ceil(Math.abs(l)/90)),h=l/c,d=4/3*Math.tan(h*Math.PI/180/4),u=m=>{let f=m*Math.PI/180;return [r+t*Math.cos(f),e+i*Math.sin(f)]},[p,g]=u(n);a.push(s?["M",p,g]:["L",p,g]);for(let m=0;m<c;m++){let f=n+h*m,b=f+h,x=f*Math.PI/180,I=b*Math.PI/180,[T,S]=u(f),[w,C]=u(b);a.push(["C",T-d*t*Math.sin(x),S+d*i*Math.cos(x),w+d*t*Math.sin(I),C-d*i*Math.cos(I),w,C]);}return a}function Vr(r){let e=1/0,t=1/0,i=-1/0,n=-1/0,o=(p,g)=>{p<e&&(e=p),g<t&&(t=g),p>i&&(i=p),g>n&&(n=g);},s=0,a=0,l=0,c=0;for(let p of r){if(p[0]==="Z"){o(l,c);continue}if(p[0]==="M"||p[0]==="L"){s=p[1],a=p[2],p[0]==="M"&&(l=s,c=a),o(s,a);continue}let g=p[1],m=p[2],f=p[3],b=p[4],x=p[5],I=p[6];for(let T=0;T<=12;T++){let S=T/12,w=1-S,C=w*w*w,v=3*w*w*S,k=3*w*S*S,P=S*S*S;o(C*s+v*g+k*f+P*x,C*a+v*m+k*b+P*I);}s=x,a=I;}let h=i-e||1,d=n-t||1,u=(p,g)=>[(p-e)/h,(g-t)/d];return r.map(p=>{if(p[0]==="Z")return p;if(p[0]==="M"||p[0]==="L"){let[T,S]=u(p[1],p[2]);return [p[0],T,S]}let[g,m]=u(p[1],p[2]),[f,b]=u(p[3],p[4]),[x,I]=u(p[5],p[6]);return ["C",g,m,f,b,x,I]})}function $r(){let r={x:.24,y:.7,r:.24},e={x:.5,y:.48,r:.36},t={x:.76,y:.7,r:.24},i=[...G(r.x,r.y,r.r,r.r,90,246,true),...G(e.x,e.y,e.r,e.r,180,360,false),...G(t.x,t.y,t.r,t.r,294,450,false),["Z"]];return Vr(i)}var Q=.14,vi=.5523,ot=Q*vi,Pt=1-Q,rt=.5-.5*vi,Or={outline:[["M",0,Q],["L",0,Pt],["C",0,Pt+ot,rt,1,.5,1],["C",1-rt,1,1,Pt+ot,1,Pt],["L",1,Q],["C",1,Q-ot,1-rt,0,.5,0],["C",rt,0,0,Q-ot,0,Q],["Z"]],seams:[[["M",0,Q],["C",0,Q+ot,rt,Q*2,.5,Q*2],["C",1-rt,Q*2,1,Q+ot,1,Q]]],hiddenSeams:[G(.5,Pt,.5,Q,180,360,true)]},zr={outline:$r()},Gr={outline:[["M",.5,.97],["C",.5,.97,.03,.66,.03,.35],["C",.03,.17,.16,.04,.31,.04],["C",.41,.04,.47,.1,.5,.17],["C",.53,.1,.59,.04,.69,.04],["C",.84,.04,.97,.17,.97,.35],["C",.97,.66,.5,.97,.5,.97],["Z"]]},gn=[["M",0,.25],["L",.58,.25],["L",.58,0],["L",1,.5],["L",.58,1],["L",.58,.75],["L",0,.75],["Z"]];function Ii(r,e){let t=(i,n)=>{switch(e){case "down":return [1-n,i];case "left":return [1-i,1-n];case "up":return [n,1-i];default:return [i,n]}};return r.map(i=>{if(i[0]==="Z")return i;if(i[0]==="M"||i[0]==="L"){let[h,d]=t(i[1],i[2]);return [i[0],h,d]}let[n,o]=t(i[1],i[2]),[s,a]=t(i[3],i[4]),[l,c]=t(i[5],i[6]);return ["C",n,o,s,a,l,c]})}var mn={right:gn,left:Ii(gn,"left"),up:Ii(gn,"up"),down:Ii(gn,"down")},Ur={outline:[["M",0,0],["L",0,1],["L",1,1],["Z"]]},Wr={outline:[["M",.34,0],["L",.66,0],["L",.66,.34],["L",1,.34],["L",1,.66],["L",.66,.66],["L",.66,1],["L",.34,1],["L",.34,.66],["L",0,.66],["L",0,.34],["L",.34,.34],["Z"]]},Fr={outline:[["M",0,.5],["L",.22,.13],["L",.22,.34],["L",.78,.34],["L",.78,.13],["L",1,.5],["L",.78,.87],["L",.78,.66],["L",.22,.66],["L",.22,.87],["Z"]]},Kr={outline:[["M",0,0],["L",1,0],["L",1,.8],["L",.32,.8],["L",.2,1],["L",.15,.8],["L",0,.8],["Z"]]},Yr={outline:[...G(.5,.4,.5,.4,100,-228,true),["L",.19,1],["Z"]]},Co={outline:[["M",.5,0],["L",1,.25],["L",1,.75],["L",.5,1],["L",0,.75],["L",0,.25],["Z"]],seams:[[["M",.5,.5],["L",.5,1]],[["M",.5,.5],["L",0,.25]],[["M",.5,.5],["L",1,.25]]],hiddenSeams:[[["M",.5,.5],["L",.5,0]],[["M",.5,.5],["L",0,.75]],[["M",.5,.5],["L",1,.75]]]},Xr={outline:[...G(.5,.5,.5,.5,0,-270,true),["L",.5,.5],["Z"]]},Zr={outline:[["M",0,0],...G(.6,.5,.4,.5,270,450,false),["L",0,1],["Z"]]},jr={outline:[["M",0,0],["L",1,0],["L",1,1],["L",0,1],["Z"]],seams:[[["M",.12,0],["L",.12,1]],[["M",.88,0],["L",.88,1]]]},qr={outline:[["M",0,0],["L",1,0],["L",1,.84],["C",.72,1.06,.28,.62,0,.84],["Z"]]},Jr={outline:[["M",0,0],["L",1,0],["L",1,1-re],["L",1-re,1],["L",0,1],["Z"]],shadow:ho,overlays:[{cmds:[["M",1-re,1],["L",1-re,1-re],["L",1,1-re],["Z"]],fill:"auto",deriveFill:lo}]},Qr={outline:[["M",0,0],["L",.45,0],["L",1,.5],["L",.45,1],["L",0,1],["L",.42,.5],["Z"]]};function es(r){let e=t=>1-t;return r.map(t=>t[0]==="Z"?t:t[0]==="M"||t[0]==="L"?[t[0],e(t[1]),t[2]]:["C",e(t[1]),t[2],e(t[3]),t[4],e(t[5]),t[6]])}var Lt=.16,To={outline:[["M",.015,.02],["C",.075,.02,.1,.08,.1,.2],["C",.1,.36,.125,.5,.16,.5],["C",.125,.5,.1,.64,.1,.8],["C",.1,.92,.075,.98,.015,.98]],strokeOnly:true},ts={outline:es(To.outline),strokeOnly:true};function yn(r){if(r.type!=="brace-left"&&r.type!=="brace-right")return 0;let e=(r.width??0)*Lt/2;return r.type==="brace-left"?e:-e}var ns={outline:[["M",0,0],["L",1,0],["L",1,1],["L",0,1],["Z"]],seams:[[["M",.1,0],["L",.1,1]],[["M",.9,0],["L",.9,1]]]},is={outline:[["M",0,0],["L",1,0],["L",1,1],["L",0,1],["Z"]],seams:[[["M",0,0],["L",1,1]],[["M",1,0],["L",0,1]]]},J=.12,ve=J*vi,os={outline:[["M",J,0],["L",1-J,0],["C",1-J+ve,0,1,ve,1,J],["L",1,1-J],["C",1,1-J+ve,1-J+ve,1,1-J,1],["L",J,1],["C",J-ve,1,0,1-J+ve,0,1-J],["L",0,J],["C",0,J-ve,J-ve,0,J,0],["Z"]],seams:[[["M",.26,.53],["L",.43,.72],["L",.77,.29]]]},rs={outline:[["M",.5,.03],["L",.94,.75],["L",.5,.97],["L",.06,.75],["Z"]],seams:[[["M",.5,.03],["L",.5,.97]]],hiddenSeams:[[["M",.06,.75],["L",.94,.75]]]},ss={outline:[["M",.5,.03],["L",.96,.74],["L",.5,.97],["L",.04,.74],["Z"]],seams:[[["M",.5,.03],["L",.5,.97]]],hiddenSeams:[[["M",.5,.51],["L",.04,.74]],[["M",.5,.51],["L",.96,.74]]]},as={outline:G(.5,.5,.5,.5,0,360,true),seams:[G(.5,.5,.5,Q,0,180,true)],hiddenSeams:[G(.5,.5,.5,Q,180,360,true)]},Se=.5,me=.35,ke=.3,j=me;function Io(r){let e=r*Math.PI/180;return [["M",.5,j],["L",.5+Se*Math.cos(e),j+me*Math.sin(e)]]}var ls={outline:[...G(.5,j,Se,me,180,0,true),["L",1,j+ke],...G(.5,j+ke,Se,me,0,180,false),["L",0,j],["Z"]],seams:[G(.5,j,Se,me,180,360,true),Io(300),Io(120)],hiddenSeams:[G(.5,j+ke,Se,me,180,360,true)]},fn=.2,Ti=.14,cs={outline:[...G(.5,j,Se,me,180,0,true),["L",1,j+ke],...G(.5,j+ke,Se,me,0,180,false),["L",0,j],["Z"],...G(.5,j,fn,Ti,0,180,true),["L",.5-fn,j+ke],...G(.5,j+ke,fn,Ti,180,0,false),["Z"]],seams:[G(.5,j,Se,me,180,360,true),G(.5,j,fn,Ti,180,360,true)],hiddenSeams:[G(.5,j+ke,Se,me,180,360,true)]};function At(r){switch(r){case "cylinder":return Or;case "envelope":return is;case "checkbox":return os;case "cuboid":return Co;case "triangular-pyramid":return rs;case "quadrangular-pyramid":return ss;case "sphere":case "ellipsoid":return as;case "pie":return ls;case "hollow-pie":return cs;case "cloud":return zr;case "heart":return Gr;case "class-catalog":return ns;case "block-arrow-right":return {outline:mn.right};case "block-arrow-left":return {outline:mn.left};case "block-arrow-up":return {outline:mn.up};case "block-arrow-down":return {outline:mn.down};case "block-arrow-double":return Fr;case "right-triangle":return Ur;case "cross":return Wr;case "speech-rect":return Kr;case "speech-round":return Yr;case "cube":return Co;case "sector":return Xr;case "delay":return Zr;case "predefined-process":return jr;case "document":return qr;case "sticky-note":return Jr;case "chevron":return Qr;case "brace-left":return To;case "brace-right":return ts;default:return}}function hs(r){if(r.length===0)return null;if(r.length===1)return r[0];let e=0;for(let n=1;n<r.length;n++)e+=Math.hypot(r[n].x-r[n-1].x,r[n].y-r[n-1].y);let t=0,i=e/2;for(let n=1;n<r.length;n++){let o=r[n-1],s=r[n],a=Math.hypot(s.x-o.x,s.y-o.y);if(t+a>=i&&a>1e-6){let l=(i-t)/a;return {x:o.x+(s.x-o.x)*l,y:o.y+(s.y-o.y)*l}}t+=a;}return r[r.length-1]}var Ue=class r{ctx;width=0;height=0;dpr=window.devicePixelRatio||1;showGrid=false;textLayoutCache=new Map;tableSelection=null;setTableSelection(e){this.tableSelection=e;}hoverShapeId=null;multiSelection=false;static TEXT_CACHE_LIMIT=500;constructor(e,t){let i=e.getContext("2d");if(!i)throw new Error("Failed to get Canvas 2D context");this.ctx=i,typeof t=="number"&&t>0&&(this.dpr=t);}resize(e,t){let i=Math.max(1,Math.round(e*this.dpr)/this.dpr),n=Math.max(1,Math.round(t*this.dpr)/this.dpr);this.width=i,this.height=n;let o=Math.round(i*this.dpr),s=Math.round(n*this.dpr);(this.ctx.canvas.width!==o||this.ctx.canvas.height!==s)&&(this.ctx.canvas.width=o,this.ctx.canvas.height=s,this.ctx.canvas.style.width=`${i}px`,this.ctx.canvas.style.height=`${n}px`);}setShowGrid(e){this.showGrid=e;}render(e,t,i,n,o,s,a,l,c,h,d,u,p,g,m){let f=this.ctx,b=t.getZoom(),x=t.x,I=t.y;this.hoverShapeId=p??null,f.setTransform(1,0,0,1,0,0),f.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),f.setLineDash([]),f.lineCap="butt",f.lineJoin="miter",f.globalAlpha=1,u&&(f.fillStyle=u,f.fillRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height));let T=this.dpr*b;f.setTransform(T,0,0,T,T*x,T*I),this.showGrid&&this.drawGrid(f,b,x,I);let S=null;for(let C of e)if(C.type==="arrow"&&(C.startBinding||C.endBinding)){S=new Map,e.forEach(v=>S.set(v.id,v));break}let w=S??new Map;this.multiSelection=i.size>1,e.forEach(C=>{f.save();let v=m?.get(C.id);v!==void 0&&(f.globalAlpha=f.globalAlpha*Math.max(0,Math.min(1,v))),f.translate(C.x,C.y),f.rotate(C.rotation),(C.flipX||C.flipY)&&f.scale(C.flipX?-1:1,C.flipY?-1:1);let k=i.has(C.id);this.drawShape(f,C,k,b,w,c,h,d),f.restore();}),i.size>0&&this.drawGroupFrames(f,e,i,b),this.multiSelection&&this.drawMultiSelectionBounds(f,e,i,b);for(let C of this.visibleLockBadges(e,i,b))this.drawLockBadgeAt(f,C.x,C.y,b);if(a&&this.drawGenerationPreview(f,a,b,e,w),p&&!i.has(p)){let C=e.find(v=>v.id===p);C&&this.drawConnectionDots(f,this.getShapeWorldBounds(C),b,.6);}if(g&&!i.has(g)){let C=e.find(v=>v.id===g);if(C){let v=this.getConnectorRoute(C,w);v.length>=2&&this.drawLinearHighlight(f,v,b,.22,9);}}n&&this.drawBrushRect(f,n,b),o&&o.length>0&&this.drawSnapGuides(f,o,b),s&&this.drawConnectingTargetHighlight(f,s,e,b),l&&this.drawEraserBrush(f,l,b),f.setTransform(1,0,0,1,0,0);}drawEraserBrush(e,t,i){let n=Mi/i;e.beginPath(),e.arc(t.x,t.y,n,0,Math.PI*2),e.fillStyle=z(H.primary,.12),e.fill(),e.strokeStyle=z(H.primary,.55),e.lineWidth=1.5/i,e.stroke();}drawConnectingTargetHighlight(e,t,i,n){let o=i.find(c=>c.id===t);if(!o||o.type==="line"||o.type==="arrow"||o.type==="draw")return;let s=this.getShapeWorldBounds(o),a=[{x:s.x+s.width/2,y:s.y},{x:s.x+s.width,y:s.y+s.height/2},{x:s.x+s.width/2,y:s.y+s.height},{x:s.x,y:s.y+s.height/2}],l=6/n;e.save(),a.forEach(c=>{e.beginPath(),e.arc(c.x,c.y,l,0,Math.PI*2),e.fillStyle=H.selection.handleFill,e.fill(),e.strokeStyle=H.primary,e.lineWidth=2/n,e.stroke();}),e.restore();}getShapeWorldBounds(e){let t=this.getShapeBounds(e);return {x:e.x+t.x,y:e.y+t.y,width:t.width,height:t.height}}drawBrushRect(e,t,i){e.save(),e.fillStyle=H.brushFill,e.strokeStyle=H.brushStroke,e.lineWidth=1.5/i,e.setLineDash([4/i,4/i]),e.beginPath(),e.rect(t.x,t.y,t.width,t.height),e.fill(),e.stroke(),e.restore();}drawGrid(e,t,i,n){let o=-i,s=-n,a=o+this.width/t,l=s+this.height/t,c=20;for(;c*t<10;)c*=2;let h=this.dpr*t,d=Math.max(1,Math.round(c*h)),u=(b,x)=>(b%x+x)%x,p=u(Math.round(i*h),d)+.5,g=u(Math.round(n*h),d)+.5,m=this.width*this.dpr,f=this.height*this.dpr;e.strokeStyle=H.grid,e.lineWidth=1/h,e.setLineDash([]),e.beginPath();for(let b=p;b<=m;b+=d){let x=b/h-i;e.moveTo(x,s),e.lineTo(x,l);}for(let b=g;b<=f;b+=d){let x=b/h-n;e.moveTo(o,x),e.lineTo(a,x);}e.stroke();}drawShape(e,t,i,n,o,s,a,l){switch(this.applyStyle(e,t.style,n),t.type){case "rectangle":this.drawRectangle(e,t,i);break;case "rounded-rectangle":this.drawRoundedRectangle(e,t,i);break;case "circle":this.drawCircle(e,t,i);break;case "ellipse":this.drawEllipse(e,t,i);break;case "diamond":this.drawDiamond(e,t,i);break;case "triangle":this.drawTriangle(e,t,i);break;case "hexagon":this.drawHexagon(e,t,i);break;case "parallelogram":this.drawParallelogram(e,t,i);break;case "trapezoid":this.drawTrapezoid(e,t,i);break;case "pentagon":this.drawPentagon(e,t,i);break;case "octagon":this.drawOctagon(e,t,i);break;case "star":this.drawStar(e,t,i);break;case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "sticky-note":this.drawPathShape(e,t,i,n);break;case "stadium":this.drawStadium(e,t,i);break;case "uml-class":this.drawUmlClass(e,t,i);break;case "uml-interface":this.drawUmlInterface(e,t,i);break;case "mind-map":this.drawMindMap(e,t,i,s,a,l);break;case "table":this.drawTable(e,t,n);break;case "icon":this.drawIcon(e,t);break;case "image":this.drawImageShape(e,t);break;case "line":this.drawLine(e,t,o,i,n);break;case "arrow":this.drawArrow(e,t,o,i,n);break;case "text":this.drawText(e,t);break;case "draw":this.drawFreehand(e,t);break}if(t.text&&t.type!=="text"&&t.type!=="line"&&t.type!=="arrow"&&t.type!=="draw"&&t.type!=="table"&&(t.flipX||t.flipY?(e.save(),e.scale(t.flipX?-1:1,t.flipY?-1:1),this.drawShapeText(e,t),e.restore()):this.drawShapeText(e,t)),i){let c=t.type==="line"||t.type==="arrow";this.multiSelection?this.drawMultiSelectOutline(e,t,n):t.type==="mind-map"?s&&s.shapeId===t.id||this.drawSelectionOutline(e,t,n):c?this.drawSelectionHandles(e,t,n,o):(this.drawSelectionOutline(e,t,n),this.drawSelectionHandles(e,t,n));}t.type==="table"&&(i||this.hoverShapeId===t.id)&&this.drawTableMoveHandle(e,t,n);}drawTableMoveHandle(e,t,i){let n=tn(t,i),o=4/i;e.save(),e.setLineDash([]),e.fillStyle="#ffffff",e.strokeStyle=z(H.selection.outline,.55),e.lineWidth=1/i,e.beginPath(),e.roundRect(n.x,n.y,n.width,n.height,o),e.fill(),e.stroke(),e.fillStyle=z(H.selection.outline,.85);let s=1.4/i,a=n.width/3,l=n.height/4;for(let c=1;c<=2;c++)for(let h=1;h<=3;h++)e.beginPath(),e.arc(n.x+a*c,n.y+l*h,s,0,Math.PI*2),e.fill();e.restore();}applyStyle(e,t,i){let n=t.strokeOpacity??1;e.strokeStyle=n<1&&t.strokeColor!=="transparent"?z(t.strokeColor,n):t.strokeColor,e.lineWidth=t.strokeWidth/i,e.lineCap="round",e.lineJoin="round";let o=t.fillOpacity??1;o<1&&t.fillColor!=="transparent"?e.fillStyle=z(t.fillColor,o):e.fillStyle=t.fillColor,t.strokeDash?e.setLineDash(t.strokeDash):e.setLineDash([]);}drawRectangle(e,t,i){e.beginPath(),e.rect(-t.width/2,-t.height/2,t.width,t.height),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawRoundedRectangle(e,t,i){let{width:n,height:o,borderRadius:s}=t;e.beginPath(),e.roundRect(-n/2,-o/2,n,o,s),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawStadium(e,t,i){let{width:n,height:o}=t;e.beginPath(),e.roundRect(-n/2,-o/2,n,o,Math.min(n,o)/2),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawCircle(e,t,i){e.beginPath(),e.arc(0,0,t.radius,0,Math.PI*2),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawEllipse(e,t,i){e.beginPath(),e.ellipse(0,0,t.width/2,t.height/2,0,0,Math.PI*2),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawDiamond(e,t,i){e.beginPath(),e.moveTo(0,-t.height/2),e.lineTo(t.width/2,0),e.lineTo(0,t.height/2),e.lineTo(-t.width/2,0),e.closePath(),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawTriangle(e,t,i){e.beginPath(),e.moveTo(0,-t.height/2),e.lineTo(t.width/2,t.height/2),e.lineTo(-t.width/2,t.height/2),e.closePath(),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawHexagon(e,t,i){let n=t.width/2,o=t.height/2,s=t.orientation==="flat"?Math.PI/6:0;e.beginPath();for(let a=0;a<6;a++){let l=a*Math.PI/3-Math.PI/2+s,c=n*Math.cos(l),h=o*Math.sin(l);a===0?e.moveTo(c,h):e.lineTo(c,h);}e.closePath(),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawParallelogram(e,t,i){let{width:n,height:o}=t,s=n*.2;e.beginPath(),e.moveTo(-n/2+s,-o/2),e.lineTo(n/2,-o/2),e.lineTo(n/2-s,o/2),e.lineTo(-n/2,o/2),e.closePath(),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawTrapezoid(e,t,i){let{width:n,height:o}=t,s=t.topInset??n*.15;e.beginPath(),e.moveTo(-n/2+s,-o/2),e.lineTo(n/2-s,-o/2),e.lineTo(n/2,o/2),e.lineTo(-n/2,o/2),e.closePath(),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawPentagon(e,t,i){let n=t.width/2,o=t.height/2;e.beginPath();for(let s=0;s<5;s++){let a=s*2*Math.PI/5-Math.PI/2,l=n*Math.cos(a),c=o*Math.sin(a);s===0?e.moveTo(l,c):e.lineTo(l,c);}e.closePath(),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawOctagon(e,t,i){let n=t.width/2,o=t.height/2;e.beginPath();for(let s=0;s<8;s++){let a=s*Math.PI/4-Math.PI/8,l=n*Math.cos(a),c=o*Math.sin(a);s===0?e.moveTo(l,c):e.lineTo(l,c);}e.closePath(),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawStar(e,t,i){let n=t.width/2,o=t.height/2,s=5,a=.4;e.beginPath();for(let l=0;l<s*2;l++){let c=l*Math.PI/s-Math.PI/2,h=l%2===0?1:a,d=n*h*Math.cos(c),u=o*h*Math.sin(c);l===0?e.moveTo(d,u):e.lineTo(d,u);}e.closePath(),t.style.fillColor!=="transparent"&&e.fill(),e.stroke();}drawPathShape(e,t,i,n){let o=At(t.type);if(o){if(this.tracePath(e,de(o.outline,t.width,t.height)),!o.strokeOnly&&t.style.fillColor!=="transparent"&&(o.shadow?(e.save(),e.shadowColor=z(o.shadow.color,o.shadow.opacity??.2),e.shadowBlur=o.shadow.blur,e.shadowOffsetX=o.shadow.offsetX??0,e.shadowOffsetY=o.shadow.offsetY??0,e.fill(),e.restore()):e.fill()),e.stroke(),o.overlays){let s=e.fillStyle;for(let a of o.overlays){let l=a.fill??"auto";if(l!=="none"){let c=l==="auto"?a.deriveFill?a.deriveFill(t.style.fillColor):t.style.fillColor:l;if(c&&c!=="transparent"){let h=t.style.fillOpacity??1;e.fillStyle=h<1?z(c,h):c,this.tracePath(e,de(a.cmds,t.width,t.height)),e.fill();}}a.stroke!==false&&(this.tracePath(e,de(a.cmds,t.width,t.height)),e.stroke());}e.fillStyle=s;}if(o.seams)for(let s of o.seams)this.tracePath(e,de(s,t.width,t.height)),e.stroke();if(o.hiddenSeams){let s=t.style.strokeWidth||1;e.setLineDash([s*st[0]/n,s*st[1]/n]);for(let a of o.hiddenSeams)this.tracePath(e,de(a,t.width,t.height)),e.stroke();e.setLineDash([]);}}}tracePath(e,t){e.beginPath();for(let i of t)switch(i[0]){case "M":e.moveTo(i[1],i[2]);break;case "L":e.lineTo(i[1],i[2]);break;case "C":e.bezierCurveTo(i[1],i[2],i[3],i[4],i[5],i[6]);break;case "Z":e.closePath();break}}drawImageShape(e,t){let i=t.width,n=t.height;if(!(i>0)||!(n>0))return;let o=-i/2,s=-n/2,a=Math.max(0,Math.min(t.borderRadius??0,i/2,n/2)),l=t.src?$t(t.src):null,c=!!t.src&&Rn(t.src);e.save(),a>0&&(e.beginPath(),e.roundRect(o,s,i,n,a),e.clip()),l?e.drawImage(l.img,o,s,i,n):(e.fillStyle=c?"#fee2e2":"#f3f4f6",e.fillRect(o,s,i,n),e.strokeStyle=c?"#fca5a5":"#e5e7eb",e.lineWidth=1,e.beginPath(),e.moveTo(o,s),e.lineTo(o+i,s+n),e.moveTo(o+i,s),e.lineTo(o,s+n),e.stroke()),e.restore();let h=t.style.strokeWidth??0;t.style.strokeColor&&t.style.strokeColor!=="transparent"&&h>0&&(e.save(),e.beginPath(),a>0?e.roundRect(o,s,i,n,a):e.rect(o,s,i,n),e.strokeStyle=t.style.strokeColor,e.lineWidth=h,e.stroke(),e.restore());}drawIcon(e,t){let i=$e(t.iconId),n=t.style.fillColor!=="transparent"?t.style.fillColor:t.textColor||"#1f2937";if(e.save(),e.translate(-t.width/2,-t.height/2),e.scale(t.width/K,t.height/K),e.lineCap="round",e.lineJoin="round",!i){e.strokeStyle=n,e.lineWidth=1.4,e.setLineDash([3,3]),e.strokeRect(4,4,K-8,K-8),e.setLineDash([]),e.restore();return}i.disc&&(e.beginPath(),e.arc(K/2,K/2,K/2-1,0,Math.PI*2),e.fillStyle=i.disc,e.fill());for(let s of i.layers){let a=new Path2D(s.d),l=s.fill??"ink",c=s.stroke??"ink";l!=="none"&&(e.fillStyle=l==="ink"?n:l,e.fill(a)),c!=="none"&&(e.strokeStyle=c==="ink"?n:c,e.lineWidth=s.w??1.8,e.stroke(a));}let o=i.label;o&&(e.fillStyle=o.color,e.font=`${o.size??13}px sans-serif`,e.textAlign="center",e.textBaseline="middle",e.fillText(o.text,K/2,K/2+.5)),e.restore();}drawUmlClass(e,t,i){let{width:n,height:o,className:s,attributes:a,methods:l}=t,c=n/2,h=o/2,d=ge,u=a.length>0?a.length*V+_*2:_*2;e.beginPath(),e.rect(-c,-h,n,o),t.style.fillColor!=="transparent"&&(e.fillStyle=t.style.fillColor,e.fill()),e.stroke(),e.beginPath(),e.moveTo(-c,-h+d),e.lineTo(c,-h+d),e.moveTo(-c,-h+d+u),e.lineTo(c,-h+d+u),e.stroke(),e.save(),e.textBaseline="middle";let p=n-ne*2,g=x=>{if(e.measureText(x).width<=p)return x;let I="\u2026",T=0,S=x.length;for(;T<S;){let w=T+S+1>>1;e.measureText(x.slice(0,w)+I).width<=p?T=w:S=w-1;}return x.slice(0,T)+I},m=(x,I,T,S,w,C,v)=>{let k=S||ee,P=w||"#1f2937";e.font=`${k}px sans-serif`,e.fillStyle=P,e.textAlign=v;let E=g(x);if(e.fillText(E,I,T),C){let U=e.measureText(E).width,ae=I;e.strokeStyle=P,e.beginPath(),e.moveTo(ae,T),e.lineTo(ae+U,T),e.stroke();}};e.font=`bold ${t.fontSize||ee}px sans-serif`,e.textAlign="center",e.fillStyle=t.textColor||"#1f2937",e.fillText(g(s),0,-h+d/2);let f=-h+d+_+V/2;a.forEach((x,I)=>{let T=Ne(x);T&&m(T,-c+ne,f+I*V,x.fontSize||t.fontSize||0,x.textColor||t.textColor||"",!!x.strikethrough,"left");});let b=-h+d+u+_+V/2;l.forEach((x,I)=>{let T=xe(x);T&&m(T,-c+ne,b+I*V,x.fontSize||t.fontSize||0,x.textColor||t.textColor||"",!!x.strikethrough,"left");}),e.restore();}drawTable(e,t,i){let{width:n,height:o}=t,s=n/2,a=o/2,l=Ge(t.cells);t.style.fillColor!=="transparent"&&(e.beginPath(),e.rect(-s,-a,n,o),e.fillStyle=t.style.fillColor,e.fill());for(let c=0;c<t.cells.length;c++)for(let h=0;h<(t.cells[c]?.length??0);h++){if(l[c]?.[h])continue;let d=t.cells[c][h];if(!d.fillColor)continue;let u=ie(t,c,h);e.fillStyle=d.fillColor,e.fillRect(u.ox-s,u.oy-a,u.width,u.height);}e.save(),e.strokeStyle=Qt,e.lineWidth=1/i;for(let c=1;c<t.rowHeights.length;c++){let h=-a+t.rowHeights.slice(0,c).reduce((u,p)=>u+p,0),d=[];for(let u=0;u<c;u++)for(let p=0;p<(t.cells[u]?.length??0);p++){let m=t.cells[u][p].rowSpan??1;if(m>1&&u+m>c){let f=ie(t,u,p);d.push([f.ox-s,f.ox-s+f.width]);}}this.drawSegmentsWithGaps(e,-s,s,h,d,true);}for(let c=1;c<t.colWidths.length;c++){let h=-s+t.colWidths.slice(0,c).reduce((u,p)=>u+p,0),d=[];for(let u=0;u<c;u++)for(let p=0;p<t.cells.length;p++){let g=t.cells[p]?.[u];if(!g)continue;let m=g.colSpan??1;if(m>1&&u+m>c){let f=ie(t,p,u);d.push([f.oy-a,f.oy-a+f.height]);}}this.drawSegmentsWithGaps(e,-a,a,h,d,false);}e.restore(),e.beginPath(),e.rect(-s,-a,n,o),e.stroke(),e.save(),e.textBaseline="middle";for(let c=0;c<t.cells.length;c++)for(let h=0;h<(t.cells[c]?.length??0);h++){if(l[c]?.[h])continue;let d=t.cells[c][h];if(!d.text)continue;let u=ie(t,c,h),p=d.fontSize||t.fontSize||14;e.font=`${d.bold?"bold ":""}${p}px sans-serif`,e.fillStyle=d.textColor||t.textColor||en;let g=u.width-20,m=u.height-8,f=p*1.3,b=this.getDisplayLines(e,t,d.text,p,g,Math.max(f,m),`cell:${d.bold?"b":"n"}`),x=u.ox-s,I=u.oy-a,T=I+Mt(b.length,f,u.height);e.save(),e.beginPath(),e.rect(x,I,u.width,u.height),e.clip(),b.forEach((S,w)=>{let C=T+w*f;d.align==="center"?(e.textAlign="center",e.fillText(S,x+u.width/2,C)):d.align==="right"?(e.textAlign="right",e.fillText(S,x+u.width-10,C)):(e.textAlign="left",e.fillText(S,x+10,C));}),e.restore();}if(e.restore(),this.tableSelection&&this.tableSelection.shapeId===t.id){let c=this.tableSelection,h=It(t,c.anchor.row,c.anchor.col,c.focus.row,c.focus.col),d=hi(t,h.r1,h.c1,h.r2,h.c2);e.save(),e.fillStyle=z(H.primary,.12),e.beginPath(),e.rect(d.x,d.y,d.width,d.height),e.fill(),e.strokeStyle=H.primary,e.lineWidth=1.5/i,e.setLineDash([]),e.stroke(),e.restore();}}drawSegmentsWithGaps(e,t,i,n,o,s){let a=[...o].sort((c,h)=>c[0]-h[0]),l=t;for(let[c,h]of a)if(c>l&&this.strokeGridSegment(e,l,Math.min(c,i),n,s),l=Math.max(l,h),l>=i)break;l<i&&this.strokeGridSegment(e,l,i,n,s);}strokeGridSegment(e,t,i,n,o){i-t<.5||(e.beginPath(),o?(e.moveTo(t,n),e.lineTo(i,n)):(e.moveTo(n,t),e.lineTo(n,i)),e.stroke());}drawUmlInterface(e,t,i){let{width:n,height:o,className:s,methods:a}=t,l=n/2,c=o/2,h=ge;e.beginPath(),e.rect(-l,-c,n,o),t.style.fillColor!=="transparent"&&(e.fillStyle=t.style.fillColor,e.fill()),e.stroke(),e.beginPath(),e.moveTo(-l,-c+h),e.lineTo(l,-c+h),e.stroke(),e.save(),e.textBaseline="middle";let d=n-ne*2,u=f=>{if(e.measureText(f).width<=d)return f;let b="\u2026",x=0,I=f.length;for(;x<I;){let T=x+I+1>>1;e.measureText(f.slice(0,T)+b).width<=d?x=T:I=T-1;}return f.slice(0,x)+b},p=(f,b,x,I,T,S,w)=>{let C=I||ee,v=T||"#1f2937";e.font=`${C}px sans-serif`,e.fillStyle=v,e.textAlign=w;let k=u(f);if(e.fillText(k,b,x),S){let P=e.measureText(k).width,E=b;e.strokeStyle=v,e.beginPath(),e.moveTo(E,x),e.lineTo(E+P,x),e.stroke();}};e.font=`bold ${t.fontSize||ee}px sans-serif`,e.textAlign="center",e.fillStyle=t.textColor||"#1f2937";let g=`<<${s||"Interface"}>>`;e.fillText(u(g),0,-c+h/2);let m=-c+h+_+V/2;a.forEach((f,b)=>{let x=xe(f);x&&p(x,-l+ne,m+b*V,f.fontSize||t.fontSize||0,f.textColor||t.textColor||"",!!f.strikethrough,"left");}),e.restore();}static DEFAULT_CORNER_RADIUS=10;static CONNECTION_LEAD=24;drawMindMap(e,t,i,n,o,s){let l=N(t.root).positions;this.drawMindMapConnections(e,t.root,l),this.drawMindMapNodes(e,t,l,i,n,o),this.drawMindMapReorderIndicator(e,t,l,s);}drawMindMapConnections(e,t,i){let n=o=>{if(o.collapsed)return;let s=i.get(o.id);if(s)for(let a of o.children??[]){let l=i.get(a.id);if(!l)continue;let c=Be(a,l.depth);e.strokeStyle=c,e.lineWidth=2,e.lineCap="round",e.beginPath();let h=l.direction,d,u,p,g;if(h==="right"?(d=s.x+s.width/2,u=s.y,p=l.x-l.width/2,g=l.y):h==="left"?(d=s.x-s.width/2,u=s.y,p=l.x+l.width/2,g=l.y):h==="down"?(d=s.x,u=s.y+s.height/2,p=l.x,g=l.y-l.height/2):(d=s.x,u=s.y-s.height/2,p=l.x,g=l.y+l.height/2),e.moveTo(d,u),h==="right"||h==="left"){let m=(d+p)/2;e.bezierCurveTo(m,u,m,g,p,g);}else {let m=(u+g)/2;e.bezierCurveTo(d,m,p,m,p,g);}e.stroke(),n(a);}};n(t);}drawMindMapNodes(e,t,i,n,o,s){let a=t.root,l=c=>{let h=i.get(c.id);if(!h)return;let d=Be(c,h.depth),u=h.width/2,p=h.height/2;if(e.fillStyle="#ffffff",e.strokeStyle=d,e.lineWidth=2,e.beginPath(),e.roundRect(h.x-u,h.y-p,h.width,h.height,6),e.fill(),e.stroke(),s&&s.shapeId===t.id&&s.nodeId===c.id&&(e.fillStyle=z(H.primary,.06),e.strokeStyle=z(H.primary,.55),e.lineWidth=2,e.beginPath(),e.roundRect(h.x-u,h.y-p,h.width,h.height,6),e.fill(),e.stroke()),o&&o.shapeId===t.id&&o.nodeId===c.id&&(e.fillStyle=z(H.primary,.12),e.strokeStyle=H.primary,e.lineWidth=2.5,e.beginPath(),e.roundRect(h.x-u,h.y-p,h.width,h.height,6),e.fill(),e.stroke()),!!(c.children&&c.children.length>0)){let C=qt(h,h.direction);e.fillStyle="#ffffff",e.strokeStyle=d,e.lineWidth=2,e.beginPath(),e.arc(C.x,C.y,8,0,Math.PI*2),e.fill(),e.stroke(),e.fillStyle=d,e.font="bold 13px sans-serif",e.textAlign="center",e.textBaseline="middle",e.fillText(c.collapsed?"+":"\u2212",C.x,C.y+.5);}if(c.note){let C=c.noteColor??d;e.font="11px sans-serif";let v=Math.min(e.measureText(c.note).width+12,130),k=16;e.fillStyle=C,e.beginPath(),e.roundRect(h.x-u,h.y-p-k+2,v,k,4),e.fill(),e.fillStyle="#ffffff",e.font="11px sans-serif",e.textAlign="left",e.textBaseline="middle",e.fillText(e.measureText(c.note).width+12>130?c.note.slice(0,12)+"\u2026":c.note,h.x-u+6,h.y-p-k/2+2);}e.font=`${14}px sans-serif`;let b=c.icon?18:0,x=h.width-b-(c.icon?8:0)-16,I=this.ellipsizeText(e,c.text||"",x),T=e.measureText(I).width,S=b+(b?8:0)+T,w=h.x-S/2;if(e.textBaseline="middle",c.icon&&(e.font="16px sans-serif",e.textAlign="left",e.fillStyle="#1f2937",e.fillText(c.icon,w,h.y+1),w+=b+8),e.font=`${14}px sans-serif`,e.textAlign="left",e.fillStyle="#1f2937",e.fillText(I,w,h.y),!c.collapsed)for(let C of c.children??[])l(C);};if(l(a),n){let c=s&&s.shapeId===t.id?s.nodeId:o&&o.shapeId===t.id?o.nodeId:null;c&&this.drawMindMapHandles(e,Jn(a,c));}}drawMindMapReorderIndicator(e,t,i,n){if(!n||n.shapeId!==t.id)return;let{targetIndex:o,direction:s,siblingIds:a,nodeId:l,childParentId:c}=n,h=ce(s),d=i.get(l);if(!d)return;let u=d.width,p=d.height,g=16,m=48;if(c){let w=i.get(c);w&&(e.save(),e.setLineDash([4,4]),e.lineWidth=2,e.strokeStyle=H.primary,e.beginPath(),e.roundRect(w.x-w.width/2-5,w.y-w.height/2-5,w.width+10,w.height+10,8),e.stroke(),e.restore());}let f=a.map(w=>({id:w,pos:i.get(w)})).filter(w=>!!w.pos).sort((w,C)=>h?w.pos.y-C.pos.y:w.pos.x-C.pos.x),b=f.findIndex(w=>w.id===l);if(b!==-1&&o===b)return;let x=f.filter(w=>w.id!==l).map(w=>w.pos),I=o;I<0&&(I=0),I>x.length&&(I=x.length);let T,S;if(x.length===0){if(!c)return;let w=i.get(c);if(!w)return;let C=h?w.y:w.x,v=h?s==="right"?w.x+w.width/2+m+u/2:w.x-w.width/2-m-u/2:s==="down"?w.y+w.height/2+m+p/2:w.y-w.height/2-m-p/2;T=h?v:C,S=h?C:v;}else {let w=(()=>{if(I<=0){let P=x[0];return h?P.y-P.height/2-g-p/2:P.x-P.width/2-g-u/2}if(I>=x.length){let P=x[x.length-1];return h?P.y+P.height/2+g+p/2:P.x+P.width/2+g+u/2}let v=x[I-1],k=x[I];return h?(v.y+v.height/2+k.y-k.height/2)/2:(v.x+v.width/2+k.x-k.width/2)/2})(),C=(()=>{if(h){let k=s==="right"?x[0].x-x[0].width/2:x[0].x+x[0].width/2;return s==="right"?k+u/2:k-u/2}let v=s==="down"?x[0].y-x[0].height/2:x[0].y+x[0].height/2;return s==="down"?v+p/2:v-p/2})();T=h?C:w,S=h?w:C;}if(c){let w=i.get(c);if(w){let C=h?s==="right"?w.x+w.width/2:w.x-w.width/2:w.x,v=h?w.y:s==="down"?w.y+w.height/2:w.y-w.height/2,k=h?s==="right"?T-u/2:T+u/2:T,P=h?S:s==="down"?S-p/2:S+p/2;if(e.save(),e.setLineDash([5,4]),e.lineWidth=2,e.strokeStyle=H.primary,e.beginPath(),e.moveTo(C,v),h){let E=(C+k)/2;e.bezierCurveTo(E,v,E,P,k,P);}else {let E=(v+P)/2;e.bezierCurveTo(C,E,k,E,k,P);}e.stroke(),e.restore();}}e.save(),e.setLineDash([5,4]),e.lineJoin="round",e.lineWidth=2,e.strokeStyle=H.primary,e.fillStyle=z(H.primary,.12),e.beginPath(),e.roundRect(T-u/2,S-p/2,u,p,6),e.fill(),e.stroke(),e.restore();}drawMindMapHandles(e,t){e.save(),e.setLineDash([]),e.lineCap="round";for(let i of t){e.beginPath(),e.arc(i.x,i.y,11,0,Math.PI*2),e.fillStyle="#ffffff",e.fill(),e.beginPath(),e.arc(i.x,i.y,9,0,Math.PI*2),e.fillStyle=H.primary,e.fill();let n=9*.5;e.beginPath(),e.moveTo(i.x-n,i.y),e.lineTo(i.x+n,i.y),e.moveTo(i.x,i.y-n),e.lineTo(i.x,i.y+n),e.strokeStyle="#ffffff",e.lineWidth=2,e.stroke();}e.restore();}ellipsizeText(e,t,i){if(i<=0)return "";if(e.measureText(t).width<=i)return t;let n="\u2026",o=0,s=t.length;for(;o<s;){let a=o+s+1>>1;e.measureText(t.slice(0,a)+n).width<=i?o=a:s=a-1;}return t.slice(0,o)+n}resolveConnectorEnds(e,t){let i=e.points.map(l=>({x:l.x,y:l.y}));if(i.length<2)return {world:i};let n=i.length-1;if(e.type==="line")return e.freeform||(i[0]=this.clampToShapeOutline(i[0],t,e.id,i[n]),i[n]=this.clampToShapeOutline(i[n],t,e.id,i[0])),{world:i,fromN:this.getDockNormal(i[0],t,e.id),toN:this.getDockNormal(i[n],t,e.id)};let o=e.endBinding,s,a;if(e.startBinding){let l=t.get(e.startBinding.toShapeId);l&&(i[0]=this.getBindingPoint(l,e.startBinding),s=this.localDockBox(l,e));}if(e.endBinding){let l=t.get(e.endBinding.toShapeId);l&&(o=this.resolveAutoEndBinding(e.endBinding,e,i[0],l),i[n]=this.getBindingPoint(l,o),a=this.localDockBox(l,e));}return e.freeform||(e.startBinding||(i[0]=this.clampToShapeOutline(i[0],t,e.id,i[n])),e.endBinding||(i[n]=this.clampToShapeOutline(i[n],t,e.id,i[0]))),{world:i,fromN:this.resolveDockNormal(e.startBinding,i[0],t,e.id),toN:this.resolveDockNormal(o,i[n],t,e.id),fromBox:s,toBox:a}}localDockBox(e,t){let i=this.getShapePageBounds(e);return {x:i.x-t.x,y:i.y-t.y,width:i.width,height:i.height}}withUserPoints(e,t,i,n){let o=e,s=o.userPoints;if(!s||s.length===0||t.length<2)return t;let a=this.effectiveConnType(o),l=[t[0],t[t.length-1]],[c,h]=a==="curve"?l:this.getAlignedPoints(l),d=a==="curve"?s:Ut(s,o.userPointsRef,c,h,i,n);return [c,...d.map(u=>({x:u.x,y:u.y})),h]}getConnectorRoute(e,t,i={}){return e.type!=="arrow"&&e.type!=="line"?[]:!e.points||e.points.length<2?[]:this.connectorWorldPath(e,t,i).world}connectorWorldPath(e,t,i={}){let{world:n,fromN:o,toN:s,fromBox:a,toBox:l}=this.resolveConnectorEnds(e,t),c=this.effectiveConnType(e),h={fromN:o,toN:s,fromBox:a,toBox:l},d=x=>x.map(I=>({x:I.x-e.x,y:I.y-e.y})),u=x=>x.map(I=>({x:I.x+e.x,y:I.y+e.y})),p=x=>c==="straight"?this.straightAligned(x):this.buildPathPoints(x,c,h),g=p(d(n)),m=e.userPoints;if(i.ignoreUserPoints||!m||m.length===0||n.length<2)return {world:u(g),connType:c};let f=p(d(this.withUserPoints(e,n,o,s)));if(Wt({userRoute:f,autoRoute:g,base:e.userPointsBase,fromBox:a,toBox:l}))return {world:u(g),connType:c};let b=c==="curve"?f:Ee(f);return {world:u(b),connType:c}}drawSegmentHandles(e,t,i){let n=Gt(t);if(n.length===0)return;let o=20/i,s=6/i;e.save(),e.setLineDash([]),e.lineWidth=1.5/i,e.strokeStyle="#ffffff",e.fillStyle=H.primary;for(let a of n){let l=a.axis==="H"?o:s,c=a.axis==="H"?s:o;e.beginPath(),e.roundRect(a.center.x-l/2,a.center.y-c/2,l,c,s/2),e.fill(),e.stroke();}e.restore();}drawLine(e,t,i,n,o){if(t.points.length<2)return;let s=t,{world:a,connType:l}=this.connectorWorldPath(s,i),c=a.map(h=>({x:h.x-t.x,y:h.y-t.y}));if(l==="straight"){e.beginPath(),e.moveTo(c[0].x,c[0].y);for(let h=1;h<c.length;h++)e.lineTo(c[h].x,c[h].y);e.stroke(),e.setLineDash([]);}else l==="orthogonal"?this.drawSharpPolyline(e,c):this.drawRoundedPolyline(e,c,r.DEFAULT_CORNER_RADIUS),e.stroke(),e.setLineDash([]);n&&(this.drawLinearHighlight(e,c,o),!this.multiSelection&&ut(t)&&dt(l)&&this.drawSegmentHandles(e,c,o));}drawArrow(e,t,i,n,o){if(t.points.length<2)return;let{world:s,connType:a}=this.connectorWorldPath(t,i),l=s.map(d=>({x:d.x-t.x,y:d.y-t.y})),c=t.arrowHead??"end";if(!!t.dashed||c==="dependency"||c==="realization"?e.setLineDash([8,5]):e.setLineDash([]),a==="straight"){e.beginPath(),e.moveTo(l[0].x,l[0].y);for(let d=1;d<l.length;d++)e.lineTo(l[d].x,l[d].y);e.stroke();}else a==="orthogonal"?this.drawSharpPolyline(e,l):this.drawRoundedPolyline(e,l,r.DEFAULT_CORNER_RADIUS),e.stroke();this.drawArrowHeads(e,l,c),e.setLineDash([]),n&&(this.drawLinearHighlight(e,l,o),!this.multiSelection&&ut(t)&&dt(a)&&this.drawSegmentHandles(e,l,o));}drawLinearHighlight(e,t,i,n=1,o=7){if(!(!t||t.length<2)){e.save(),e.globalAlpha=n,e.strokeStyle=H.lineHighlight,e.lineWidth=o/i,e.lineCap="round",e.lineJoin="round",e.setLineDash([]),e.beginPath(),e.moveTo(t[0].x,t[0].y);for(let s=1;s<t.length;s++)e.lineTo(t[s].x,t[s].y);e.stroke(),e.restore();}}drawGenerationPreview(e,t,i,n,o){let{from:s,to:a}=t,l=t.arrowStyle??{connectionType:"polyline",arrowHead:"end",dashed:false},c=new Map(o);n.forEach(m=>c.set(m.id,m));let h=t.targetShapeId;if(!h&&t.type){let m=Te(t.type,a,void 0,void 0,t.size);m.id=r.GEN_GHOST_ID,c.set(r.GEN_GHOST_ID,m),h=r.GEN_GHOST_ID;}let d=t.sourceEdge?wi[t.sourceEdge]:void 0,u=t.sourceShapeId&&d?{toShapeId:t.sourceShapeId,handle:d}:void 0,p=h?{...t.targetBinding??{auto:true,handle:"left"},toShapeId:h}:void 0,g={id:r.GEN_PREVIEW_ID,type:"arrow",x:s.x,y:s.y,points:[s,a],rotation:0,style:t.lineStyle??r.PREVIEW_LINE_STYLE,startBinding:u,endBinding:p,connectionType:l.connectionType,arrowHead:l.arrowHead,dashed:l.dashed};if(e.save(),t.dragging||(e.globalAlpha=.65),e.translate(s.x,s.y),this.applyStyle(e,g.style,i),this.drawArrow(e,g,c,false,i),e.restore(),t.type){let m=c.get(r.GEN_GHOST_ID),f=m?this.getShapeBounds(m):{x:-60,y:-30,width:120,height:60};this.drawPreviewShapeOutline(e,a,t.type,f,i);}e.save(),e.beginPath(),e.arc(s.x,s.y,5/i,0,Math.PI*2),e.fillStyle=H.genDot,e.fill(),e.restore();}drawPreviewShapeOutline(e,t,i,n,o){let s=n.width,a=n.height,l=s/2,c=a/2,h=t.x,d=t.y;switch(e.strokeStyle=H.genLine,e.lineWidth=1.5/o,e.setLineDash([6/o,4/o]),e.beginPath(),i){case "circle":case "ellipse":e.ellipse(h,d,s/2,a/2,0,0,Math.PI*2);break;case "diamond":e.moveTo(h,d-c),e.lineTo(h+l,d),e.lineTo(h,d+c),e.lineTo(h-l,d),e.closePath();break;case "triangle":e.moveTo(h,d-c),e.lineTo(h+l,d+c),e.lineTo(h-l,d+c),e.closePath();break;case "image":{e.roundRect(h-l,d-c,s,a,4);break}case "sticky-note":{let u=s*re,p=a*re;e.moveTo(h-l,d-c),e.lineTo(h+l,d-c),e.lineTo(h+l,d+c-p),e.lineTo(h+l-u,d+c),e.lineTo(h-l,d+c),e.closePath();break}case "hexagon":for(let u=0;u<6;u++){let p=u*Math.PI/3-Math.PI/2,g=h+l*Math.cos(p),m=d+c*Math.sin(p);u===0?e.moveTo(g,m):e.lineTo(g,m);}e.closePath();break;case "parallelogram":{let u=s*.15;e.moveTo(h-l+u,d-c),e.lineTo(h+l,d-c),e.lineTo(h+l-u,d+c),e.lineTo(h-l,d+c),e.closePath();break}default:e.roundRect(h-l,d-c,s,a,i==="rounded-rectangle"?8:4);break}e.stroke();}static ALIGN_TOLERANCE=8;static GEN_PREVIEW_ID="__gen_preview_line__";static GEN_GHOST_ID="__gen_preview_ghost__";static PREVIEW_LINE_STYLE={strokeColor:"#1f2937",fillColor:"transparent",strokeWidth:2,strokeDash:null};straightAligned(e){return e.length===2?this.getAlignedPoints(e):e}effectiveConnType(e){let t=e.connectionType||"straight";return t==="straight"&&e.userPoints&&e.userPoints.length>0?"polyline":t}getAlignedPoints(e){if(e.length<2)return e;let t=e[0],i=e[e.length-1],n=i.x-t.x,o=i.y-t.y,s=r.ALIGN_TOLERANCE;if(Math.abs(o)<=s){let a=(t.y+i.y)/2;return e.map(l=>({x:l.x,y:a}))}if(Math.abs(n)<=s){let a=(t.x+i.x)/2;return e.map(l=>({x:a,y:l.y}))}return e}buildPathPoints(e,t,i={}){if(e.length<2)return e;if(t==="straight")return this.straightAligned(e);if(t==="polyline"||t==="orthogonal"){let n=e.length===2?this.getAlignedPoints(e):e;return this.generatePolylinePoints(n,i)}return t==="curve"?this.generateCurvePoints(e,i):e}drawRoundedPolyline(e,t,i){if(e.beginPath(),!(t.length<2)){if(t.length===2||i<=0){e.moveTo(t[0].x,t[0].y);for(let n=1;n<t.length;n++)e.lineTo(t[n].x,t[n].y);return}e.moveTo(t[0].x,t[0].y);for(let n=1;n<t.length-1;n++){let o=t[n-1],s=t[n],a=t[n+1],l=s.x-o.x,c=s.y-o.y,h=a.x-s.x,d=a.y-s.y,u=Math.hypot(l,c),p=Math.hypot(h,d);if(u<1e-6||p<1e-6){e.lineTo(s.x,s.y);continue}let g=Math.min(i,u*.5,p*.5),m=s.x-l/u*g,f=s.y-c/u*g,b=s.x+h/p*g,x=s.y+d/p*g;e.lineTo(m,f),e.arcTo(s.x,s.y,b,x,g);}e.lineTo(t[t.length-1].x,t[t.length-1].y);}}drawSharpPolyline(e,t){if(e.beginPath(),!(t.length<2)){e.moveTo(t[0].x,t[0].y);for(let i=1;i<t.length;i++)e.lineTo(t[i].x,t[i].y);}}drawSnapGuides(e,t,i){e.save(),e.strokeStyle=H.guide,e.lineWidth=1/i,e.setLineDash([6/i,4/i]),e.beginPath();for(let n of t)n.type==="horizontal"?(e.moveTo(n.start,n.position),e.lineTo(n.end,n.position)):(e.moveTo(n.position,n.start),e.lineTo(n.position,n.end));e.stroke(),e.restore();}generatePolylinePoints(e,t={}){return kt(e,t,r.CONNECTION_LEAD)}generateCurvePoints(e,t={}){if(e.length<2)return e;let i=e.length,n=[e[0]],o=l=>{let c=e[l],h=e[l+1];return Math.hypot(h.x-c.x,h.y-c.y)},s=l=>Math.max(16,Math.min(l*.32,150)),a=l=>{let c=e[Math.max(0,l-1)],h=e[Math.min(i-1,l+1)],d=h.x-c.x,u=h.y-c.y,p=Math.hypot(d,u);return p<1e-6?{x:1,y:0}:{x:d/p,y:u/p}};for(let l=0;l<i-1;l++){let c=e[l],h=e[l+1],d=o(l),u;if(l===0&&t.fromN)u={x:c.x+t.fromN.x*s(d),y:c.y+t.fromN.y*s(d)};else {let m=a(l);u={x:c.x+m.x*s(d),y:c.y+m.y*s(d)};}let p;if(l===i-2&&t.toN)p={x:h.x+t.toN.x*s(d),y:h.y+t.toN.y*s(d)};else {let m=a(l+1);p={x:h.x-m.x*s(d),y:h.y-m.y*s(d)};}let g=20;for(let m=1;m<=g;m++){let f=m/g,b=1-f,x=b*b*b*c.x+3*b*b*f*u.x+3*b*f*f*p.x+f*f*f*h.x,I=b*b*b*c.y+3*b*b*f*u.y+3*b*f*f*p.y+f*f*f*h.y;n.push({x,y:I});}}return n}getDisplayLines(e,t,i,n,o,s,a=""){let l=n*1.3,c=Math.max(1,Math.floor(s/l)),h=`${t.id}\0${i}\0${n}\0${o}x${s}\0${c}\0${a}`,d=this.textLayoutCache.get(h);if(d)return d;let u=i.split(`
|
|
4
|
+
`),p=[];for(let m of u){let f=this.wrapLine(e,m,o);for(let b of f)p.push(b);}let g=p.slice(0,c);return p.length>c&&g.length>0&&(g[g.length-1]=this.truncateLine(e,g[g.length-1],o)),this.textLayoutCache.size>=r.TEXT_CACHE_LIMIT&&this.textLayoutCache.clear(),this.textLayoutCache.set(h,g),g}drawShapeText(e,t){let i=t.text||"";if(!i)return;let n=t.fontSize||16;e.font=`${n}px sans-serif`,e.fillStyle=t.textColor||"#1f2937";let o=this.getTextBounds(t),s=n*1.3,a=this.getDisplayLines(e,t,i,n,o.width,o.height),c=-(a.length*s)/2+s/2,h=yn(t);e.textAlign="center",e.textBaseline="middle",a.forEach((d,u)=>{let p=c+u*s;e.fillText(d,h,p);});}getTextBounds(e){switch(e.type){case "rectangle":case "image":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "hexagon":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "table":return {width:e.width*.85,height:e.height*.85};case "brace-left":case "brace-right":return {width:e.width*(1-Lt)*.85,height:e.height*.85};case "icon":return {width:e.width*.85,height:e.height*.85};case "sticky-note":return {width:e.width*Je,height:e.height*Je};case "circle":return {width:e.radius*2*.85,height:e.radius*2*.85};default:return {width:100,height:40}}}wrapLine(e,t,i){if(!t)return [""];let n=[],o="";for(let s of t){let a=o+s;e.measureText(a).width>i&&o?(n.push(o),o=s):o=a;}return o&&n.push(o),n}truncateLine(e,t,i){if(!t)return "...";let n="...",o=t;for(;o.length>0&&e.measureText(o+n).width>i;)o=o.slice(0,-1);return o+n}isShapeTextTruncated(e){let t=e.text;if(!t)return false;let i=this.ctx;i.save();try{if(e.type==="text"){let s=e.fontSize;return i.font=`${s}px sans-serif`,this.isTextTruncated(i,t,s,e.width,e.height)}let n=e.fontSize||16;i.font=`${n}px sans-serif`;let o=this.getTextBounds(e);return this.isTextTruncated(i,t,n,o.width,o.height)}finally{i.restore();}}isTextTruncated(e,t,i,n,o){let s=i*1.3,a=Math.max(1,Math.floor(o/s)),l=0;for(let c of t.split(`
|
|
5
|
+
`))if(l+=Math.max(1,this.wrapLine(e,c,n).length),l>a)return true;return false}isUmlRowTextTruncated(e,t,i,n=false){if(!t||e.type==="circle")return false;let o=e.width??0;if(o<=0)return false;let s=this.ctx;s.save();try{return s.font=`${n?"bold ":""}${i||ee}px sans-serif`,s.measureText(t).width>o-ne*2}finally{s.restore();}}static HANDLE_NORMALS=Tt;pickAutoHandle(e,t,i){return vt(e,t,i)}resolveAutoEndBinding(e,t,i,n){if(!e.auto||e.isPrecise)return e;let o=t.startBinding?.handle?r.HANDLE_NORMALS[t.startBinding.handle]:void 0;return {...e,handle:this.pickAutoHandle(i,{x:n.x,y:n.y},o)}}getBindingPoint(e,t){if(t.isPrecise&&t.normalizedAnchor){let i=this.getShapePageBounds(e),n={x:i.x+i.width*t.normalizedAnchor.x,y:i.y+i.height*t.normalizedAnchor.y},o={x:e.x,y:e.y};return this.nearestPointOnShapeOutline(e,o,n)}if(t.handle){let i=this.getShapeBounds(e);switch(t.handle){case "top":return {x:e.x,y:e.y+i.y};case "bottom":return {x:e.x,y:e.y+i.y+i.height};case "left":return {x:e.x+i.x,y:e.y};case "right":return {x:e.x+i.x+i.width,y:e.y}}}return {x:e.x,y:e.y}}resolveDockNormal(e,t,i,n){return e&&!e.isPrecise&&e.handle?r.HANDLE_NORMALS[e.handle]:this.getDockNormal(t,i,n,e?.toShapeId)}getDockNormal(e,t,i,n){if(!t||t.size===0)return;let o=null,s=1/0,a=.5;if(t.forEach((d,u)=>{if(u===i||d.type==="line"||d.type==="arrow")return;let p=this.getShapePageBounds(d);if(e.x>=p.x-a&&e.x<=p.x+p.width+a&&e.y>=p.y-a&&e.y<=p.y+p.height+a){let g=d.id===n?-1:(e.x-d.x)**2+(e.y-d.y)**2;g<s&&(s=g,o=d);}}),!o)return;let l=o,c=e.x-l.x,h=e.y-l.y;return Math.abs(h)>Math.abs(c)?{x:0,y:h<0?-1:1}:{x:c<0?-1:1,y:0}}getShapePageBounds(e){let t=this.getShapeBounds(e);return {x:e.x+t.x,y:e.y+t.y,width:t.width,height:t.height}}clampToShapeOutline(e,t,i,n){if(!t||t.size===0)return e;let o=null,s=1/0;if(t.forEach((l,c)=>{if(c===i)return;let h=this.getShapePageBounds(l);if(e.x>h.x&&e.x<h.x+h.width&&e.y>h.y&&e.y<h.y+h.height){let d=(l.x-n.x)**2+(l.y-n.y)**2;d<s&&(s=d,o=l);}}),!o)return e;let a=o;return this.nearestPointOnShapeOutline(a,{x:a.x,y:a.y},e)}nearestPointOnShapeOutline(e,t,i){let n=i.x-t.x,o=i.y-t.y,s=Math.hypot(n,o);if(s<1e-6)return {x:t.x,y:t.y};let a=n/s,l=o/s,c=Math.max(1e4,s*2),h={x:t.x+a*c,y:t.y+l*c},d=this.intersectShapeOutlineWithSegment(e,t,h);if(d.length===0)return i;let u=d[0],p=(u.x-t.x)**2+(u.y-t.y)**2;for(let g=1;g<d.length;g++){let m=(d[g].x-t.x)**2+(d[g].y-t.y)**2;m<p&&(p=m,u=d[g]);}return u}intersectShapeOutlineWithSegment(e,t,i){let n={x:t.x-e.x,y:t.y-e.y},o={x:i.x-e.x,y:i.y-e.y};return this.intersectLocalShapeOutlineWithSegment(e,n,o).map(a=>({x:a.x+e.x,y:a.y+e.y}))}intersectLocalShapeOutlineWithSegment(e,t,i){switch(e.type){case "rectangle":case "sticky-note":case "icon":case "image":case "rounded-rectangle":{let n=e.width,o=e.height,s={x:-n/2,y:-o/2,width:n,height:o};return this.intersectSegmentRect(t,i,s)}case "ellipse":case "diamond":case "triangle":{let n=e.width,o=e.height,s={x:-n/2,y:-o/2,width:n,height:o};return this.intersectSegmentRect(t,i,s)}case "hexagon":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "table":{let n=e.width,o=e.height,s={x:-n/2,y:-o/2,width:n,height:o};return this.intersectSegmentRect(t,i,s)}case "circle":{let n=e.radius;return this.intersectSegmentCircle(t,i,{x:0,y:0},n)}default:return []}}intersectSegmentRect(e,t,i){let n=i.x,o=i.y,s=i.width,a=i.height,l=[[{x:n,y:o},{x:n+s,y:o}],[{x:n+s,y:o},{x:n+s,y:o+a}],[{x:n+s,y:o+a},{x:n,y:o+a}],[{x:n,y:o+a},{x:n,y:o}]],c=[];for(let[h,d]of l){let u=this.segmentIntersection(e,t,h,d);u&&c.push(u);}return c}segmentIntersection(e,t,i,n){let o=e.x,s=e.y,a=t.x,l=t.y,c=i.x,h=i.y,d=n.x,u=n.y,p=(o-a)*(h-u)-(s-l)*(c-d);if(Math.abs(p)<1e-9)return null;let g=((o-c)*(h-u)-(s-h)*(c-d))/p,m=-((o-a)*(s-h)-(s-l)*(o-c))/p;return g<0||g>1||m<0||m>1?null:{x:o+g*(a-o),y:s+g*(l-s)}}intersectSegmentCircle(e,t,i,n){let o=t.x-e.x,s=t.y-e.y,a=e.x-i.x,l=e.y-i.y,c=o*o+s*s,h=2*(a*o+l*s),d=a*a+l*l-n*n,u=h*h-4*c*d;if(u<0)return [];u=Math.sqrt(u);let p=(-h-u)/(2*c),g=(-h+u)/(2*c),m=[];return p>=0&&p<=1&&m.push({x:e.x+p*o,y:e.y+p*s}),g>=0&&g<=1&&Math.abs(g-p)>1e-6&&m.push({x:e.x+g*o,y:e.y+g*s}),m}drawArrowHead(e,t,i){let n=Math.atan2(i.y-t.y,i.x-t.x),o=12;e.save(),e.setLineDash([]),e.beginPath(),e.moveTo(i.x,i.y),e.lineTo(i.x-o*Math.cos(n-Math.PI/6),i.y-o*Math.sin(n-Math.PI/6)),e.moveTo(i.x,i.y),e.lineTo(i.x-o*Math.cos(n+Math.PI/6),i.y-o*Math.sin(n+Math.PI/6)),e.stroke(),e.restore();}drawInheritanceHead(e,t,i){let n=Math.atan2(i.y-t.y,i.x-t.x),o=14,s=i.x,a=i.y,l=i.x-o*Math.cos(n),c=i.y-o*Math.sin(n),h=l+o*.5*Math.cos(n-Math.PI/2),d=c+o*.5*Math.sin(n-Math.PI/2),u=l+o*.5*Math.cos(n+Math.PI/2),p=c+o*.5*Math.sin(n+Math.PI/2);e.save(),e.setLineDash([]),e.fillStyle="#ffffff",e.beginPath(),e.moveTo(s,a),e.lineTo(h,d),e.lineTo(u,p),e.closePath(),e.fill(),e.stroke(),e.restore();}drawDiamondHead(e,t,i,n){let o=Math.atan2(i.y-t.y,i.x-t.x),s=14,a=i.x,l=i.y,c=i.x-s*.5*Math.cos(o),h=i.y-s*.5*Math.sin(o),d=i.x-s*Math.cos(o),u=i.y-s*Math.sin(o),p=c+s*.4*Math.cos(o-Math.PI/2),g=h+s*.4*Math.sin(o-Math.PI/2),m=c+s*.4*Math.cos(o+Math.PI/2),f=h+s*.4*Math.sin(o+Math.PI/2);e.save(),e.setLineDash([]),e.fillStyle=n?"#1f2937":"#ffffff",e.beginPath(),e.moveTo(a,l),e.lineTo(p,g),e.lineTo(d,u),e.lineTo(m,f),e.closePath(),e.fill(),e.stroke(),e.restore();}drawArrowHeads(e,t,i){if(i!=="none"){if(i==="start"||i==="both"){let n=t[0],o=t[1];this.drawArrowHead(e,o,n);}if(i==="end"||i==="both"){let n=t.length,o=t[n-2],s=t[n-1];this.drawArrowHead(e,o,s);}if(i==="inheritance"){let n=t.length,o=t[n-2],s=t[n-1];this.drawInheritanceHead(e,o,s);}if(i==="aggregation"){let n=t[0],o=t[1];this.drawDiamondHead(e,o,n,false);}if(i==="composition"){let n=t[0],o=t[1];this.drawDiamondHead(e,o,n,true);}if(i==="dependency"){let n=t.length;this.drawArrowHead(e,t[n-2],t[n-1]);}if(i==="realization"){let n=t.length;this.drawInheritanceHead(e,t[n-2],t[n-1]);}}}drawText(e,t){if(!t.text)return;let i=t.fontSize;e.font=`${i}px sans-serif`,e.textAlign="center",e.textBaseline="middle";let n=t.width,o=t.height,s=i*1.3,a=this.getDisplayLines(e,t,t.text,i,n,o),l=a.length*s,c=-l/2+s/2;if(t.highlightColor&&t.highlightColor!=="transparent"){let h=t.highlightOpacity??1;e.fillStyle=h<1?z(t.highlightColor,h):t.highlightColor;let d=i*.15;e.beginPath(),e.roundRect(-n/2-d,-l/2-d,n+d*2,l+d*2,4),e.fill();}e.fillStyle=t.textColor||"#1f2937",a.forEach((h,d)=>{let u=c+d*s;e.fillText(h,0,u);});}drawFreehand(e,t){if(t.points.length<2)return;let i=t.points;e.beginPath(),e.moveTo(i[0].x,i[0].y);for(let n=1;n<i.length-1;n++){let o=(i[n].x+i[n+1].x)/2,s=(i[n].y+i[n+1].y)/2;e.quadraticCurveTo(i[n].x,i[n].y,o,s);}e.lineTo(i[i.length-1].x,i[i.length-1].y),e.stroke();}visibleLockBadges(e,t,i){return this.allLockBadges(e,i).filter(n=>(n.memberIds.length?n.memberIds:n.shapeId?[n.shapeId]:[]).some(o=>t.has(o)||this.lockHoverId===o))}lockBadgeTargets(e,t){return this.allLockBadges(e,t)}allLockBadges(e,t){let i=1/t,n=20*i,o=[],s=new Map,a=null;for(let l of e){if(!l.locked)continue;if(l.groupId){let h=s.get(l.groupId);h?h.push(l):s.set(l.groupId,[l]);continue}if(l.type==="arrow"||l.type==="line"){a||(a=new Map(e.map(u=>[u.id,u])));let h=this.getConnectorRoute(l,a),d=hs(h);if(!d)continue;o.push({x:d.x+6*i,y:d.y-n-6*i,size:n,shapeId:l.id,memberIds:[]});continue}let c=this.getShapeWorldBounds(l);o.push({x:c.x+c.width+2*i,y:c.y-n+4*i,size:n,shapeId:l.id,memberIds:[]});}for(let[l,c]of s){let h=1/0,d=1/0,u=-1/0;for(let p of c){let g=this.getShapeWorldBounds(p);h=Math.min(h,g.x),d=Math.min(d,g.y),u=Math.max(u,g.x+g.width);}Number.isFinite(h)&&o.push({x:(h+u)/2-n/2,y:d-n+4*i,size:n,groupId:l,memberIds:c.map(p=>p.id)});}return o}lockHoverId=null;setLockHover(e){this.lockHoverId=e;}drawLockBadgeAt(e,t,i,n){let o=1/n,s=20*o,a=t+s/2;e.save(),e.setLineDash([]),e.lineJoin="round",e.lineCap="round",e.beginPath(),e.roundRect(t,i,s,s,6*o),e.fillStyle="rgba(255,255,255,0.97)",e.fill(),e.strokeStyle="#cbd5e1",e.lineWidth=o,e.stroke(),e.beginPath(),e.arc(a,i+8.5*o,3.4*o,Math.PI,0),e.strokeStyle="#4b5563",e.lineWidth=1.7*o,e.stroke(),e.beginPath(),e.roundRect(t+4.5*o,i+8.5*o,11*o,8*o,1.8*o),e.fillStyle="#4b5563",e.fill(),e.beginPath(),e.arc(a,i+11.6*o,1.2*o,0,Math.PI*2),e.fillStyle="#ffffff",e.fill(),e.restore();}drawGroupFrames(e,t,i,n){let o=t.filter(p=>i.has(p.id));if(o.length<2)return;let s=o[0].groupId;if(!s||!o.every(p=>p.groupId===s))return;let a=t.filter(p=>p.groupId===s);if(a.length!==o.length)return;let l=1/0,c=1/0,h=-1/0,d=-1/0;for(let p of a){let g=this.getShapeWorldBounds(p);l=Math.min(l,g.x),c=Math.min(c,g.y),h=Math.max(h,g.x+g.width),d=Math.max(d,g.y+g.height);}if(!Number.isFinite(l))return;let u=6/n;e.save(),e.strokeStyle=z(H.selection.outline,.7),e.lineWidth=1/n,e.setLineDash([6/n,5/n]),e.beginPath(),e.roundRect(l-u,c-u,h-l+u*2,d-c+u*2,6/n),e.stroke(),e.restore();}drawMultiSelectOutline(e,t,i){let n=this.getShapeBounds(t);e.save(),e.setLineDash([]),e.strokeStyle=z(H.selection.outline,.6),e.lineWidth=1/i,e.beginPath();let o=1.5/i;e.roundRect(n.x-o,n.y-o,n.width+o*2,n.height+o*2,3/i),e.stroke(),e.restore();}drawMultiSelectionBounds(e,t,i,n){let o=1/0,s=1/0,a=-1/0,l=-1/0;for(let h of t){if(!i.has(h.id))continue;let d=this.getShapeWorldBounds(h);o=Math.min(o,d.x),s=Math.min(s,d.y),a=Math.max(a,d.x+d.width),l=Math.max(l,d.y+d.height);}if(!Number.isFinite(o))return;let c=4/n;e.save(),e.setLineDash([]),e.strokeStyle=z(H.selection.outline,.9),e.lineWidth=1.5/n,e.beginPath(),e.roundRect(o-c,s-c,a-o+c*2,l-s+c*2,4/n),e.stroke(),e.restore();}drawSelectionOutline(e,t,i){let n=this.getShapeBounds(t);e.strokeStyle=H.selection.outline,e.lineWidth=1/i,e.setLineDash([]),e.save(),e.shadowColor=H.selection.shadow,e.shadowBlur=8,e.shadowOffsetX=0,e.shadowOffsetY=0,e.beginPath(),e.roundRect(n.x-2,n.y-2,n.width+4,n.height+4,4),e.stroke(),e.restore(),t.type!=="table"&&(e.fillStyle=H.selection.outlineFill,e.beginPath(),e.roundRect(n.x-2,n.y-2,n.width+4,n.height+4,4),e.fill());}drawSelectionHandles(e,t,i,n){let o=8/i;if((t.type==="line"||t.type==="arrow")&&t.points&&t.points.length>=2){let a=n?this.getConnectorRoute(t,n):[],l=a.length>=2?a:t.points,c={x:l[0].x-t.x,y:l[0].y-t.y},h={x:l[l.length-1].x-t.x,y:l[l.length-1].y-t.y};e.fillStyle=H.selection.handleFill,e.strokeStyle=H.selection.handleStroke,e.lineWidth=2/i,e.setLineDash([]),[c,h].forEach(d=>{e.beginPath(),e.arc(d.x,d.y,o/2,0,Math.PI*2),e.fill(),e.stroke();});}else {let a=this.getShapeBounds(t),l=o,c=[{x:a.x,y:a.y},{x:a.x+a.width,y:a.y},{x:a.x+a.width,y:a.y+a.height},{x:a.x,y:a.y+a.height}];e.fillStyle=H.selection.handleFill,e.strokeStyle=H.selection.handleStroke,e.lineWidth=2/i,e.setLineDash([]),c.forEach(p=>{e.beginPath(),e.roundRect(p.x-l/2,p.y-l/2,l,l,2),e.fill(),e.stroke();}),this.drawConnectionDots(e,a,i,1);let h=26/i,d=a.x+a.width/2,u=a.y-h;e.strokeStyle="#94a3b8",e.lineWidth=1.5/i,e.setLineDash([]),e.beginPath(),e.moveTo(d,a.y),e.lineTo(d,u),e.stroke(),e.beginPath(),e.arc(d,u,8/i,0,Math.PI*2),e.fillStyle=H.selection.handleFill,e.fill(),e.strokeStyle=H.primary,e.lineWidth=1.6/i,e.stroke(),this.drawRotateIcon(e,d,u,i);}}drawConnectionDots(e,t,i,n=1){let o=9/i,s=[{x:t.x+t.width/2,y:t.y},{x:t.x+t.width,y:t.y+t.height/2},{x:t.x+t.width/2,y:t.y+t.height},{x:t.x,y:t.y+t.height/2}];e.save(),e.globalAlpha=n,s.forEach(a=>{e.beginPath(),e.arc(a.x,a.y,o,0,Math.PI*2),e.fillStyle=H.selection.handleFill,e.fill(),e.strokeStyle=H.primary,e.lineWidth=1.5/i,e.stroke(),e.beginPath(),e.arc(a.x,a.y,o*.45,0,Math.PI*2),e.fillStyle=H.primary,e.fill();}),e.restore();}drawRotateIcon(e,t,i,n){let o=8/n;e.save(),e.translate(t,i),e.strokeStyle=H.primary,e.lineWidth=1.8/n,e.lineCap="round",e.beginPath(),e.arc(0,0,o*.5,Math.PI*.18,Math.PI*1.6,false),e.stroke();let s=Math.PI*.18,a=Math.cos(s)*o*.5,l=Math.sin(s)*o*.5,c=1;e.beginPath(),e.moveTo(a,l),e.lineTo(a-Math.cos(s)*o*.26+c*Math.sin(s)*o*.16,l-Math.sin(s)*o*.26-c*Math.cos(s)*o*.16),e.moveTo(a,l),e.lineTo(a-Math.cos(s)*o*.26-c*Math.sin(s)*o*.16,l-Math.sin(s)*o*.26+c*Math.cos(s)*o*.16),e.stroke(),e.restore();}getShapeBounds(e){switch(e.type){case "rectangle":case "sticky-note":case "icon":case "image":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "hexagon":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "mind-map":case "table":return {x:-e.width/2,y:-e.height/2,width:e.width,height:e.height};case "circle":return {x:-e.radius,y:-e.radius,width:e.radius*2,height:e.radius*2};case "line":case "arrow":{if(e.points.length===0)return {x:0,y:0,width:0,height:0};let t=1/0,i=1/0,n=-1/0,o=-1/0;return e.points.forEach(s=>{t=Math.min(t,s.x-e.x),i=Math.min(i,s.y-e.y),n=Math.max(n,s.x-e.x),o=Math.max(o,s.y-e.y);}),{x:t,y:i,width:n-t,height:o-i}}case "draw":{let t=e;if(typeof t.width=="number"&&typeof t.height=="number")return {x:-t.width/2,y:-t.height/2,width:t.width,height:t.height};if(t.points.length===0)return {x:0,y:0,width:0,height:0};let i=1/0,n=1/0,o=-1/0,s=-1/0;return t.points.forEach(a=>{let l=a.x-t.x,c=a.y-t.y;i=Math.min(i,l),n=Math.min(n,c),o=Math.max(o,l),s=Math.max(s,c);}),{x:i,y:n,width:o-i,height:s-n}}case "text":{let t=e;return {x:-t.width/2,y:-t.height/2,width:t.width,height:t.height}}default:return {x:0,y:0,width:0,height:0}}}};var We={create(r=0,e=0){return {x:r,y:e}},add(r,e){return {x:r.x+e.x,y:r.y+e.y}},subtract(r,e){return {x:r.x-e.x,y:r.y-e.y}},multiply(r,e){return {x:r.x*e,y:r.y*e}},divide(r,e){return {x:r.x/e,y:r.y/e}},dot(r,e){return r.x*e.x+r.y*e.y},length(r){return Math.sqrt(r.x*r.x+r.y*r.y)},normalize(r){let e=We.length(r);return e===0?{x:0,y:0}:{x:r.x/e,y:r.y/e}},distance(r,e){return We.length(We.subtract(r,e))},rotate(r,e){let t=Math.cos(e),i=Math.sin(e);return {x:r.x*t-r.y*i,y:r.x*i+r.y*t}},clone(r){return {x:r.x,y:r.y}},equals(r,e){return r.x===e.x&&r.y===e.y}};function Pe(r,e,t,i=8){let n=[];if(t==="horizontal"){let o=Math.min(r.x,e.x),s=Math.max(r.x+r.width,e.x+e.width),a=Math.abs(r.y-e.y)<=i,l=Math.abs(r.y+r.height-(e.y+e.height))<=i,c=Math.abs(r.y+r.height/2-(e.y+e.height/2))<=i;a&&n.push({type:"horizontal",position:(r.y+e.y)/2,start:o,end:s}),l&&n.push({type:"horizontal",position:(r.y+r.height+e.y+e.height)/2,start:o,end:s}),c&&!(a&&l)&&n.push({type:"horizontal",position:(r.y+r.height/2+e.y+e.height/2)/2,start:o,end:s});}else {let o=Math.min(r.y,e.y),s=Math.max(r.y+r.height,e.y+e.height),a=Math.abs(r.x-e.x)<=i,l=Math.abs(r.x+r.width-(e.x+e.width))<=i,c=Math.abs(r.x+r.width/2-(e.x+e.width/2))<=i;a&&n.push({type:"vertical",position:(r.x+e.x)/2,start:o,end:s}),l&&n.push({type:"vertical",position:(r.x+r.width+e.x+e.width)/2,start:o,end:s}),c&&!(a&&l)&&n.push({type:"vertical",position:(r.x+r.width/2+e.x+e.width/2)/2,start:o,end:s});}return n}var Dt=class r extends X{type="select";state="idle";cellSelectShapeId=null;translatingState=null;resizingState=null;generatingState=null;hoverGenPoint=null;hoverShapeId=null;hoverConnectorId=null;draggingSegment=null;rotatingState=null;draggingArrowId=null;draggingTerminal=null;pendingHistoryCommit=false;brushStart={x:0,y:0};brushShiftKey=false;defaultGenType(e){if(e){let t=this.context.getShapes().find(i=>i.id===e);if(t&&ln(t.type))return t.type}return "rectangle"}genPreviewOf(e,t,i={}){let n=this.context.getArrowStyle();return {from:e.point,to:t,type:i.type,size:i.type?this.genGhostSize(i.type,e.sourceShapeId):void 0,sourceShapeId:e.sourceShapeId,sourceEdge:e.edge,targetShapeId:i.targetShapeId,targetBinding:i.targetBinding,dragging:i.dragging,arrowStyle:{connectionType:"polyline",arrowHead:n.arrowHead,dashed:n.dashed},lineStyle:this.context.getLineStyle()}}genContext(e,t){return {from:e.point,to:t,sourceShapeId:e.sourceShapeId,edge:e.edge}}onPointerDown(e,t){let i=this.context.getShapes(),n=this.context.getSelectedIds(),o=n.length===1?this.hitTestArrowTerminal(e,i):null;if(o&&n.includes(o.shapeId)){this.state="dragging-terminal",this.draggingArrowId=o.shapeId,this.draggingTerminal=o.terminal,this.pendingHistoryCommit=true,this.context.updateArrowBinding(o.shapeId,o.terminal,null);return}let s=n.length===1?this.hitConnectorSegmentHandle(e,i,n):null;if(s){this.state="dragging-segment",this.draggingSegment={...s,startPoint:e,moved:false,...this.segmentSnapContext(s.shapeId,s.route,s.index,s.axis)},this.pendingHistoryCommit=true;return}let a=this.hoverShapeId??this.findHoverAnchorShape(e,i,n),l=this.hitGenPoint(e,i,n,a);if(l){this.state="generating",this.hoverShapeId=a,this.generatingState={source:l,startPoint:e,hasMoved:false,sourceWasSelected:!!l.sourceShapeId&&n.includes(l.sourceShapeId)},this.pendingHistoryCommit=true,this.context.setGenerationPreview(this.genPreviewOf(l,this.genPreviewTarget(l,e,false),{type:this.defaultGenType(l.sourceShapeId)}));return}let c=this.hitTest(e,i,n),h=this.findTableMoveHandleAt(e,i,n);if(h){this.context.selectShape(h.id,t.shiftKey),this.beginTranslating(e,i);return}if(c.handle==="rotation"){this.state="rotating",this.pendingHistoryCommit=true;let d=c.shape;this.rotatingState={shapeId:d.id,center:{x:d.x,y:d.y},startAngle:Math.atan2(e.y-d.y,e.x-d.x),startRotation:d.rotation};return}if(c.handle&&c.shape&&c.shape.type!=="mind-map"){this.state="resizing",this.resizingState={startPoint:e,startShape:c.shape,handle:c.handle},this.pendingHistoryCommit=true;return}if(c.shape){let d=c.shape,u=d.type==="line"||d.type==="arrow",p=n.includes(d.id);if(d.type==="table"){let m=d,f=this.context.getCamera().getZoom();if(!tt(m,e,f)){this.state="selecting-cells",this.cellSelectShapeId=m.id,this.pendingHistoryCommit=false;return}this.context.selectShape(d.id,t.shiftKey);}if(u&&!p){this.context.selectShape(d.id,t.shiftKey);return}if(d.type==="arrow"&&(!!d.startBinding||!!d.endBinding)){this.context.selectShape(d.id,t.shiftKey);return}this.state="translating",this.pendingHistoryCommit=true,p||(this.isInsideGroup(d,n)?this.context.selectShapeRaw(d.id):this.context.selectShape(d.id,t.shiftKey)),this.captureTranslatingStart(e,i),this.translatingState&&(this.translatingState.clickShapeId=d.id,this.translatingState.clickWasSelected=p,this.translatingState.clickShift=t.shiftKey,this.translatingState.moved=false);}else this.state="brushing",this.brushStart=e,this.brushShiftKey=t.shiftKey,t.shiftKey||this.context.selectShape("",false);}isInsideGroup(e,t){let i=e.groupId;if(!i||t.length===0)return false;let n=this.context.getShapes().filter(s=>s.groupId===i);if(n.length===0||t.length>=n.length)return false;let o=new Set(n.map(s=>s.id));return t.every(s=>o.has(s))}findTableMoveHandleAt(e,t,i){let n=this.context.getCamera().getZoom(),o=this.hitTest(e,t,i);if(o.shape&&o.shape.type!=="table")return null;for(let s=t.length-1;s>=0;s--){let a=t[s];if(a.type!=="table"||a.locked)continue;let l=a;if(tt(l,e,n))return l}return null}beginTranslating(e,t){this.state="translating",this.pendingHistoryCommit=true,this.captureTranslatingStart(e,t);}captureTranslatingStart(e,t){let i=this.context.getSelectedIds(),n=new Map,o=new Map,s=new Map,a=new Map,l=new Map;i.forEach(c=>{let h=t.find(d=>d.id===c);if(h&&(n.set(c,{x:h.x,y:h.y}),o.set(c,h.rotation),s.set(c,this.getShapeWorldBounds(h)),(h.type==="line"||h.type==="arrow")&&Array.isArray(h.points))){a.set(c,h.points.map(u=>({x:u.x,y:u.y})));let d=h.userPoints;d?.length&&l.set(c,d.map(u=>({x:u.x,y:u.y})));}}),this.translatingState={startPoint:e,startPositions:n,startRotation:o,startBounds:s,startPoints:a,startUserPoints:l};}onPointerMove(e,t){let i=this.context.getShapes();if(this.state==="translating"&&this.translatingState)this.pendingHistoryCommit&&(this.context.commitHistory(),this.pendingHistoryCommit=false),this.handleTranslating(e,t);else if(this.state==="selecting-cells"&&this.cellSelectShapeId){let n=i.find(o=>o.id===this.cellSelectShapeId);if(!n)this.state="idle",this.cellSelectShapeId=null;else {let o=St(n,Ie(n,e));this.context.selectTableCell(this.cellSelectShapeId,o.row,o.col,true);}}else if(this.state==="generating"&&this.generatingState)this.pendingHistoryCommit&&(this.context.commitHistory(),this.pendingHistoryCommit=false),this.handleGenerating(e,i);else if(this.state==="rotating"&&this.rotatingState)this.pendingHistoryCommit&&(this.context.commitHistory(),this.pendingHistoryCommit=false),this.handleRotating(e,t);else if(this.state==="resizing"&&this.resizingState)this.pendingHistoryCommit&&(this.context.commitHistory(),this.pendingHistoryCommit=false),this.handleResizing(e);else if(this.state==="dragging-terminal"&&this.draggingArrowId&&this.draggingTerminal){this.pendingHistoryCommit&&(this.context.commitHistory(),this.pendingHistoryCommit=false);let n=i.find(o=>o.id===this.draggingArrowId);if(n){let o=this.draggingTerminal==="start"?e:n.points[n.points.length-1],s=this.draggingTerminal==="start"?n.points[0]:e,a=this.computeSnapGuidesForArrow(o,s,e,n,i);this.context.setSnapGuides(a);let l=e;if(a.length>0){let d=a.filter(p=>p.type==="horizontal"),u=a.filter(p=>p.type==="vertical");if(d.length>0){let p=d[0].position,g=Math.abs(e.y-p);for(let m of d){let f=Math.abs(e.y-m.position);f<g&&(g=f,p=m.position);}l={...l,y:p};}else if(u.length>0){let p=u[0].position,g=Math.abs(e.x-p);for(let m of u){let f=Math.abs(e.x-m.position);f<g&&(g=f,p=m.position);}l={...l,x:p};}}let c=this.draggingTerminal==="start"?0:n.points.length-1,h=[...n.points];h[c]=l,this.context.updateShape(this.draggingArrowId,{points:h});}}else if(this.state==="dragging-segment"&&this.draggingSegment)this.pendingHistoryCommit&&(this.context.commitHistory(),this.pendingHistoryCommit=false),this.handleDraggingSegment(e);else if(this.state==="brushing")this.handleBrushing(e);else {let n=this.context.getSelectedIds(),o=this.hitGenPoint(e,i,n,this.hoverShapeId);o?(this.hoverGenPoint=o,this.context.setGenerationPreview(this.genPreviewOf(o,this.genPreviewTarget(o,e,false),{type:this.defaultGenType(o.sourceShapeId)}))):(this.hoverGenPoint=null,this.context.setGenerationPreview(null));let s=this.findTableMoveHandleAt(e,i,n),a=s?s.id:this.findHoverAnchorShape(e,i,n);a!==this.hoverShapeId&&(this.hoverShapeId=a,this.context.setHoverAnchorShape(a));let l=this.findHoverConnector(e,i,n);l!==this.hoverConnectorId&&(this.hoverConnectorId=l,this.context.setHoverConnector(l));}}onPointerUp(e,t){if(this.state==="translating"&&this.translatingState){let i=this.translatingState;!i.moved&&i.clickWasSelected&&i.clickShapeId&&this.context.getSelectedIds().length>1&&(this.context.selectShape(i.clickShapeId,!!i.clickShift),!i.clickShift&&this.context.getSelectedIds().length>1&&this.context.getSelectedIds().includes(i.clickShapeId)&&this.context.selectShapeRaw(i.clickShapeId));}if(this.state==="dragging-segment"&&this.draggingSegment&&this.finishSegmentDrag(this.draggingSegment.shapeId,this.draggingSegment.autoRoute,this.draggingSegment.moved),this.state==="dragging-terminal"&&this.draggingArrowId&&this.draggingTerminal){let i=this.context.getShapes(),n=this.findBindingNearPoint(e,i,this.draggingArrowId);n&&this.context.updateArrowBinding(this.draggingArrowId,this.draggingTerminal,n.toShapeId,n.binding);}if(this.state==="generating"&&this.generatingState){let i=this.generatingState,n=this.context.getShapes(),o=i.source,s=this.findBindingNearPoint(e,n,o.sourceShapeId);if(s)this.context.connectToExisting(this.genContext(o,e),s.toShapeId,s.binding);else if(!i.hasMoved)i.sourceWasSelected?this.context.createGeneratedConnection(this.genContext(o,this.genPreviewTarget(o,o.point,false)),{type:this.defaultGenType(o.sourceShapeId)}):o.sourceShapeId&&this.context.selectShape(o.sourceShapeId,false);else {let a=this.defaultGenType(o.sourceShapeId),l=this.avoidSourceOverlap(o,e,a),c=this.context.createFloatingLine(this.genContext(o,this.futureDockPoint(o,l,a)));this.context.openGenerationMenu({context:this.genContext(o,l),existingArrowId:c,defaultShapeType:a});}this.generatingState=null;}this.state==="brushing"&&this.context.setBrushRect(null),this.context.setGenerationPreview(null),this.context.setConnectingTarget(null),this.hoverGenPoint=null,this.pendingHistoryCommit=false,this.state="idle",this.draggingArrowId=null,this.draggingTerminal=null,this.draggingSegment=null,this.translatingState=null,this.resizingState=null,this.rotatingState=null,this.cellSelectShapeId=null,this.context.setSnapGuides([]);}isPointOnConnector(e,t,i,n=10){let o=this.context.getConnectorRoute(t),s=o.length>=2?o:i.points;for(let a=1;a<s.length;a++)if(this.pointToLineDistance(e,s[a-1],s[a])<=n)return true;return false}findHoverConnector(e,t,i){for(let n=t.length-1;n>=0;n--){let o=t[n];if(!(o.type!=="arrow"&&o.type!=="line")&&!i.includes(o.id)&&this.isPointOnConnector(e,o.id,o))return o.id}return null}hitConnectorSegmentHandle(e,t,i){for(let n of i){let o=t.find(d=>d.id===n);if(!o||o.type!=="arrow"&&o.type!=="line"||!ut(o))continue;let s=o.connectionType||"straight",a=!!o.userPoints?.length;if(!dt(s==="straight"&&a?"polyline":s))continue;let c=this.context.getConnectorRoute(n);if(c.length<2)continue;let h=On(c,e);if(h)return {shapeId:n,index:h.index,route:c,axis:h.axis}}return null}segmentSnapContext(e,t,i,n){let o=t[i],s=t[i+1],a=new Set;o&&s&&a.add(n==="H"?(o.y+s.y)/2:(o.x+s.x)/2);let l=this.context.getAutoConnectorRoute?.(e)??[];for(let c=0;c+1<l.length;c++){let h=l[c],d=l[c+1];(Math.abs(d.x-h.x)>=Math.abs(d.y-h.y)?"H":"V")===n&&a.add(n==="H"?(h.y+d.y)/2:(h.x+d.x)/2);}return {extraLevels:[...a],autoRoute:l}}segmentCursor(e){return e==="H"?"ns-resize":"ew-resize"}handleDraggingSegment(e){let t=this.draggingSegment;if(!t||Math.hypot(e.x-t.startPoint.x,e.y-t.startPoint.y)<3)return;let i=t.route[t.index],n=t.route[t.index+1],s=Math.abs(n.x-i.x)>=Math.abs(n.y-i.y)?e.y-(i.y+n.y)/2:e.x-(i.x+n.x)/2;t.moved=true,this.writeConnectorRoute(t.shapeId,zn(t.route,t.index,s,t.extraLevels));}writeConnectorRoute(e,t){let i=this.context.getShapes().find(s=>s.id===e);if(!i)return;let n=Ee(Ye(t));if(i.type==="arrow"&&(!!i.startBinding||!!i.endBinding)){let s=this.draggingSegment?.autoRoute??[],a=Wn(Gn(n),s);this.context.updateShape(e,{userPoints:a.length?a:void 0,userPointsRef:a.length?{start:{...n[0]},end:{...n[n.length-1]}}:void 0,userPointsBase:a.length&&s.length>=2?s.map(l=>({...l})):void 0});}else this.context.updateShape(e,{points:n});}finishSegmentDrag(e,t,i){if(!i||!t||t.length<2)return;let n=this.context.getConnectorRoute(e);n.length<2||Un(n,t)&&this.context.updateShape(e,{userPoints:void 0,userPointsRef:void 0,userPointsBase:void 0});}hasTransientState(){return this.state!=="idle"||!!this.generatingState}isDragging(){return this.state==="translating"||this.state==="resizing"||this.state==="rotating"||this.state==="dragging-terminal"||this.state==="dragging-segment"||this.state==="generating"}cancelTransient(){let e=this.state!=="idle"||!!this.generatingState||!!this.hoverGenPoint||!!this.hoverShapeId||!!this.hoverConnectorId||this.pendingHistoryCommit;return this.state="idle",this.generatingState=null,this.translatingState=null,this.resizingState=null,this.rotatingState=null,this.draggingArrowId=null,this.draggingTerminal=null,this.draggingSegment=null,this.pendingHistoryCommit=false,this.hoverGenPoint=null,this.hoverShapeId&&(this.hoverShapeId=null,this.context.setHoverAnchorShape(null)),this.hoverConnectorId&&(this.hoverConnectorId=null,this.context.setHoverConnector(null)),this.context.setGenerationPreview(null),this.context.setConnectingTarget(null),this.context.setSnapGuides([]),e}onKeyDown(e){let t=e.target;if(!(t&&(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable))){if(e.key==="Delete"||e.key==="Backspace"){let i=this.context.getShapes(),n=this.context.getSelectedIds().filter(o=>{let s=i.find(a=>a.id===o);return s&&!s.locked});n.length>0&&(this.context.commitHistory(),n.forEach(o=>{this.context.deleteShape(o);}));}e.key==="Escape"&&(this.context.selectShape("",false),this.cancelTransient()),(e.key==="+"||e.key==="=")&&e.shiftKey&&(this.context.commitHistory(),this.handleRotation(15)),e.key==="-"&&e.shiftKey&&(this.context.commitHistory(),this.handleRotation(-15)),e.key==="ArrowUp"&&(e.preventDefault(),this.context.commitHistory(),this.handleNudge(0,-5)),e.key==="ArrowDown"&&(e.preventDefault(),this.context.commitHistory(),this.handleNudge(0,5)),e.key==="ArrowLeft"&&(e.preventDefault(),this.context.commitHistory(),this.handleNudge(-5,0)),e.key==="ArrowRight"&&(e.preventDefault(),this.context.commitHistory(),this.handleNudge(5,0));}}onKeyUp(e){}getCursor(e){switch(this.state){case "translating":return "grabbing";case "generating":return "crosshair";case "rotating":return "grabbing";case "resizing":return this.resizingState?this.getHandleCursor(this.resizingState.handle,this.resizingState.startShape):"default";case "dragging-terminal":return "crosshair";case "dragging-segment":return this.segmentCursor(this.draggingSegment?.axis??"H");case "selecting-cells":return "cell";case "brushing":return "crosshair"}let t=this.context.getShapes(),i=this.context.getSelectedIds(),n=this.hitConnectorSegmentHandle(e,t,i);if(n)return this.segmentCursor(n.axis);if(this.hoverConnectorId||this.context.getMindMapCursorHitAtPoint(e))return "pointer";if(this.hitGenPoint(e,t,i,this.hoverShapeId))return "crosshair";if(this.hitTestArrowTerminal(e,t)&&i.includes(this.hitTestArrowTerminal(e,t).shapeId)||this.findTableMoveHandleAt(e,t,i))return "move";let o=this.hitTest(e,t,i);return o.handle==="rotation"?"grab":o.handle?this.getHandleCursor(o.handle,o.shape):o.shape?o.shape.type==="table"?"cell":"move":null}getHandleCursor(e,t){let n={e:0,se:45,s:90,sw:135,w:180,nw:225,n:270,ne:315}[e];if(n===void 0)return "grab";let o=((n+t.rotation*180/Math.PI)%360+360)%360,s=Math.round(o/45)%4;return ["ew-resize","nwse-resize","ns-resize","nesw-resize"][s]}static ALIGN_SNAP_THRESHOLD=8;handleTranslating(e,t){if(!this.translatingState)return;let i=We.subtract(e,this.translatingState.startPoint),n={...i};if(Math.hypot(i.x,i.y)<r.DRAG_START_THRESHOLD)return;this.translatingState.moved=true,t.shiftKey&&(Math.abs(i.x)>Math.abs(i.y)?n.y=0:n.x=0);let o=this.context.getShapes(),s=this.context.getSelectedIds(),a=new Set(s),l=[],c=[];if(this.translatingState.startBounds.forEach(h=>{c.push({x:h.x+n.x,y:h.y+n.y,width:h.width,height:h.height});}),!t.shiftKey&&c.length>0){let h=[];for(let p of o)a.has(p.id)||p.type==="line"||p.type==="arrow"||p.type==="draw"||h.push(this.getShapeWorldBounds(p));let d=[],u=[];for(let p of c){let g=[p.y,p.y+p.height/2,p.y+p.height],m=[p.x,p.x+p.width/2,p.x+p.width];for(let f of h){let b=[f.y,f.y+f.height/2,f.y+f.height];for(let I of g)for(let T of b){let S=T-I;Math.abs(S)<=r.ALIGN_SNAP_THRESHOLD&&d.push(S);}let x=[f.x,f.x+f.width/2,f.x+f.width];for(let I of m)for(let T of x){let S=T-I;Math.abs(S)<=r.ALIGN_SNAP_THRESHOLD&&u.push(S);}}}if(d.length>0){let p=d[0];for(let g of d)Math.abs(g)<Math.abs(p)&&(p=g);n.y+=p;}if(u.length>0){let p=u[0];for(let g of u)Math.abs(g)<Math.abs(p)&&(p=g);n.x+=p;}this.translatingState.startBounds.forEach(p=>{let g={x:p.x+n.x,y:p.y+n.y,width:p.width,height:p.height};for(let m of h)l.push(...Pe(g,m,"horizontal",1)),l.push(...Pe(g,m,"vertical",1));});}this.translatingState.startPositions.forEach((h,d)=>{let u=o.find(m=>m.id===d);if(u&&u.type==="arrow"&&(u.startBinding||u.endBinding))return;let p={x:h.x+n.x,y:h.y+n.y},g=this.translatingState?.startPoints.get(d);if(g){p.points=g.map(f=>({x:f.x+n.x,y:f.y+n.y}));let m=this.translatingState?.startUserPoints.get(d);m&&(p.userPoints=m.map(f=>({x:f.x+n.x,y:f.y+n.y})));}this.context.updateShape(d,p);}),this.context.setSnapGuides(this.mergeGuides(l));}handleResizing(e){if(!this.resizingState)return;let t=this.resizingState.startShape,i=this.resizingState.handle,n=this.resizingState.startPoint;if(!i||i==="rotation")return;let s={nw:[-1,-1],n:[0,-1],ne:[1,-1],w:[-1,0],e:[1,0],sw:[-1,1],s:[0,1],se:[1,1]}[i];if(!s)return;let[a,l]=s,c=We.subtract(e,n),h=[];for(let S of this.context.getShapes())S.id!==t.id&&(S.type==="line"||S.type==="arrow"||S.type==="draw"||h.push(this.getShapeWorldBounds(S)));let d=20,u=this.getShapeWorldBounds(t),p=u.x,g=u.y,m=u.x+u.width,f=u.y+u.height;a===1?m=Math.max(p+d,m+c.x):a===-1&&(p=Math.min(m-d,p+c.x)),l===1?f=Math.max(g+d,f+c.y):l===-1&&(g=Math.min(f-d,g+c.y));let b=(S,w)=>{let C=null;for(let v of w){let k=v-S;Math.abs(k)<=r.ALIGN_SNAP_THRESHOLD&&(C===null||Math.abs(k)<Math.abs(C))&&(C=k);}return C};if(a!==0&&h.length>0){let S=[];for(let C of h)S.push(C.x,C.x+C.width/2,C.x+C.width);let w=b(a===1?m:p,S);w!==null&&(a===1?m+=w:p+=w);}if(l!==0&&h.length>0){let S=[];for(let C of h)S.push(C.y,C.y+C.height/2,C.y+C.height);let w=b(l===1?f:g,S);w!==null&&(l===1?f+=w:g+=w);}let x={x:p,y:g,width:m-p,height:f-g},I=[];for(let S of h)a!==0&&I.push(...Pe(x,S,"vertical",1)),l!==0&&I.push(...Pe(x,S,"horizontal",1));this.context.setSnapGuides(this.mergeGuides(I));let T={};if(t.type==="circle"){let S=Math.max(10,Math.max(a!==0?x.width/2:0,l!==0?x.height/2:0));if(T.radius=S,a!==0){let w=a===1?u.x:u.x+u.width;T.x=a===1?w+S:w-S;}if(l!==0){let w=l===1?u.y:u.y+u.height;T.y=l===1?w+S:w-S;}}else if(t.type==="image"){let S=t,w=S.naturalWidth&&S.naturalHeight?S.naturalWidth/S.naturalHeight:Math.max(1,S.width)/Math.max(1,S.height),C=Math.max(d,x.width),v=Math.max(d,x.height);if(C/v>w?C=v*w:v=C/w,C=Math.max(d,C),v=Math.max(d,v),T.width=C,T.height=v,a!==0){let k=a===1?u.x:u.x+u.width;T.x=a===1?k+C/2:k-C/2;}if(l!==0){let k=l===1?u.y:u.y+u.height;T.y=l===1?k+v/2:k-v/2;}}else {if("width"in t&&a!==0&&(T.width=x.width,T.x=x.x+x.width/2),"height"in t&&l!==0&&(T.height=x.height,T.y=x.y+x.height/2),t.type==="draw"){let S=this.getShapeWorldBounds(t),w=a!==0?x.width/Math.max(1,S.width):1,C=l!==0?x.height/Math.max(1,S.height):1;T.points=t.points.map(v=>({x:v.x*w,y:v.y*C}));}if(t.type==="table"){let S=t,w=a!==0?x.width/Math.max(1,S.width):1,C=l!==0?x.height/Math.max(1,S.height):1;a!==0&&(T.colWidths=S.colWidths.map(v=>Math.max(40,Math.round(v*w)))),l!==0&&Math.abs(C-1)>1e-6&&(T.rowHeights=S.rowHeights.map(v=>Math.max(24,Math.round(v*C))));}}Object.keys(T).length>0&&this.context.updateShape(t.id,T);}mergeGuides(e){let t=new Map;for(let i of e){let n=`${i.type}\0${Math.round(i.position*2)/2}`,o=t.get(n);o?(o.start=Math.min(o.start,i.start),o.end=Math.max(o.end,i.end)):t.set(n,{...i});}return [...t.values()]}handleRotation(e){let t=this.context.getSelectedIds(),i=this.context.getShapes();t.forEach(n=>{let o=i.find(s=>s.id===n);o&&this.context.updateShape(n,{rotation:o.rotation+e*Math.PI/180});});}handleNudge(e,t){let i=this.context.getSelectedIds(),n=this.context.getShapes();i.forEach(o=>{let s=n.find(a=>a.id===o);s&&!s.locked&&this.context.updateShape(o,{x:s.x+e,y:s.y+t});});}handleBrushing(e){let t=Math.min(this.brushStart.x,e.x),i=Math.min(this.brushStart.y,e.y),n=Math.abs(e.x-this.brushStart.x),o=Math.abs(e.y-this.brushStart.y);this.context.setBrushRect({x:t,y:i,width:n,height:o});let s=this.context.getShapes(),a=[];for(let l of s){if(l.locked)continue;let c=this.getShapeWorldBounds(l);this.rectsIntersect({x:t,y:i,width:n,height:o},c)&&a.push(l.id);}if(this.brushShiftKey){let l=this.context.getSelectedIds(),c=new Set([...l,...a]);this.context.selectShapes([...c]);}else this.context.selectShapes(a);}getShapeWorldBounds(e){switch(e.type){case "rectangle":case "sticky-note":case "icon":case "image":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "hexagon":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "mind-map":case "table":return {x:e.x-e.width/2,y:e.y-e.height/2,width:e.width,height:e.height};case "circle":return {x:e.x-e.radius,y:e.y-e.radius,width:e.radius*2,height:e.radius*2};case "line":case "arrow":{if(!e.points||e.points.length===0)return {x:e.x,y:e.y,width:0,height:0};let t=1/0,i=1/0,n=-1/0,o=-1/0;return e.points.forEach(s=>{t=Math.min(t,s.x),i=Math.min(i,s.y),n=Math.max(n,s.x),o=Math.max(o,s.y);}),{x:t,y:i,width:n-t,height:o-i}}case "draw":{let t=e,i=t.width,n=t.height;if(typeof i=="number"&&typeof n=="number"&&i>0&&n>0)return {x:t.x-i/2,y:t.y-n/2,width:i,height:n};if(!t.points||t.points.length===0)return {x:t.x,y:t.y,width:0,height:0};let o=1/0,s=1/0,a=-1/0,l=-1/0;return t.points.forEach(c=>{let h=c.x+t.x,d=c.y+t.y;o=Math.min(o,h),s=Math.min(s,d),a=Math.max(a,h),l=Math.max(l,d);}),{x:o,y:s,width:a-o,height:l-s}}case "text":{let t=e;return {x:e.x-t.width/2,y:e.y-t.height/2,width:t.width,height:t.height}}default:{let t=e;return {x:t.x,y:t.y,width:0,height:0}}}}rectsIntersect(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}hitTest(e,t,i){let n=i.length===1;for(let o=t.length-1;o>=0;o--){let s=t[o];if(!s.locked){if(n&&i.includes(s.id)){let a=this.getHitHandle(e,s);if(a)return {shape:s,handle:a}}if(this.isPointInShape(e,s))return {shape:s,handle:null}}}return {shape:null,handle:null}}getHitHandle(e,t){if(t.type==="mind-map")return null;let i=14,n=this.getShapeBounds(t),o=Math.cos(-t.rotation),s=Math.sin(-t.rotation),a=e.x-t.x,l=e.y-t.y,c=a*o-l*s,h=a*s+l*o,d=[{type:"nw",x:n.x,y:n.y},{type:"ne",x:n.x+n.width,y:n.y},{type:"se",x:n.x+n.width,y:n.y+n.height},{type:"sw",x:n.x,y:n.y+n.height},{type:"rotation",x:n.x+n.width/2,y:n.y-26}];for(let u of d)if(Math.abs(c-u.x)<i&&Math.abs(h-u.y)<i)return u.type;return null}static GEN_HIT_THRESHOLD=14;static CLICK_MOVE_THRESHOLD=6;static DRAG_START_THRESHOLD=2;static GEN_GAP=76;static GEN_SUPPORTED_TYPES=new Set(["rectangle","sticky-note","rounded-rectangle","ellipse","diamond","triangle","hexagon","parallelogram","trapezoid","pentagon","octagon","star","uml-class","uml-interface","circle","draw","cylinder","cloud","heart","block-arrow-right","block-arrow-left","block-arrow-up","block-arrow-down","block-arrow-double","right-triangle","cross","speech-rect","speech-round","cube","sector","delay","predefined-process","document","stadium","class-catalog","chevron","brace-left","brace-right","envelope","checkbox","triangular-pyramid","quadrangular-pyramid","cuboid","sphere","ellipsoid","pie","hollow-pie","table"]);computeGenPoints(e,t,i){let n=[],o=new Set(t);i&&o.add(i);for(let s of o){let a=e.find(l=>l.id===s);if(a&&r.GEN_SUPPORTED_TYPES.has(a.type)){let l=this.getShapeBounds(a),c={x:a.x,y:a.y};n.push({point:{x:c.x+l.x+l.width/2,y:c.y+l.y},edge:"n",sourceShapeId:a.id}),n.push({point:{x:c.x+l.x+l.width,y:c.y+l.y+l.height/2},edge:"e",sourceShapeId:a.id}),n.push({point:{x:c.x+l.x+l.width/2,y:c.y+l.y+l.height},edge:"s",sourceShapeId:a.id}),n.push({point:{x:c.x+l.x,y:c.y+l.y+l.height/2},edge:"w",sourceShapeId:a.id});}}return n}hitGenPoint(e,t,i,n){let o=r.GEN_HIT_THRESHOLD,s=null,a=o;for(let l of this.computeGenPoints(t,i,n)){let c=Math.hypot(l.point.x-e.x,l.point.y-e.y);c<=a&&(a=c,s=l);}return s}findHoverAnchorShape(e,t,i){for(let o=t.length-1;o>=0;o--){let s=t[o];if(i.includes(s.id)||s.locked||!r.GEN_SUPPORTED_TYPES.has(s.type))continue;let a=this.getShapeWorldBounds(s);if(!(e.x<a.x-12||e.x>a.x+a.width+12||e.y<a.y-12||e.y>a.y+a.height+12))return s.id}return null}genPreviewTarget(e,t,i){if(i)return t;let{width:n,height:o}=this.genGhostSize(this.defaultGenType(e.sourceShapeId),e.sourceShapeId),s=r.GEN_GAP;if(e.edge)switch(e.edge){case "n":return {x:e.point.x,y:e.point.y-(s+o/2)};case "s":return {x:e.point.x,y:e.point.y+(s+o/2)};case "e":return {x:e.point.x+(s+n/2),y:e.point.y};case "w":return {x:e.point.x-(s+n/2),y:e.point.y}}return {x:e.point.x,y:e.point.y-(s+o/2)}}genGhostShape(e,t,i){let n=i?this.context.getShapes().find(o=>o.id===i):void 0;return Te(e,t,void 0,void 0,cn(e,n))}genGhostSize(e,t){let i=this.getShapeBounds(this.genGhostShape(e,{x:0,y:0},t));return {width:i.width,height:i.height}}handleGenerating(e,t){if(!this.generatingState)return;let i=this.generatingState,n=i.source;Math.hypot(e.x-i.startPoint.x,e.y-i.startPoint.y)>r.CLICK_MOVE_THRESHOLD&&(i.hasMoved=true);let s=this.findBindingNearPoint(e,t,n.sourceShapeId),a=this.defaultGenType(n.sourceShapeId),l=this.avoidSourceOverlap(n,e,a),c=s?this.bindingPosition(s.toShapeId,s.binding,t):i.hasMoved?l:this.genPreviewTarget(n,e,false);this.context.setConnectingTarget(s?s.toShapeId:null),this.context.setGenerationPreview(this.genPreviewOf(n,c,{dragging:i.hasMoved,targetShapeId:s?.toShapeId,targetBinding:s?.binding,type:s?void 0:a}));}handleRotating(e,t){if(!this.rotatingState)return;let i=this.rotatingState,n=Math.atan2(e.y-i.center.y,e.x-i.center.x),o=i.startRotation+(n-i.startAngle);t.shiftKey&&(o=Math.round(o/(Math.PI/12))*(Math.PI/12)),this.context.updateShape(i.shapeId,{rotation:o});}bindingPosition(e,t,i){let n=i.find(s=>s.id===e);if(!n)return {x:0,y:0};let o=this.getShapeWorldBounds(n);if(t.handle)switch(t.handle){case "top":return {x:n.x,y:o.y};case "bottom":return {x:n.x,y:o.y+o.height};case "left":return {x:o.x,y:n.y};case "right":return {x:o.x+o.width,y:n.y}}return t.normalizedAnchor?{x:o.x+o.width*t.normalizedAnchor.x,y:o.y+o.height*t.normalizedAnchor.y}:{x:n.x,y:n.y}}isPointInShape(e,t){let i=e.x-t.x,n=e.y-t.y;switch(t.type){case "rectangle":case "sticky-note":case "icon":case "image":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "mind-map":case "table":return Math.abs(i)<=t.width/2&&Math.abs(n)<=t.height/2;case "circle":return i*i+n*n<=t.radius*t.radius;case "hexagon":return this.isPointInHexagon(i,n,t.width,t.height);case "line":case "arrow":return this.isPointOnConnector(e,t.id,t);case "draw":{let o=t,s=Math.max((o.style?.strokeWidth??2)/2+3,6/this.context.getCamera().getZoom()),a=o.points||[];for(let l=1;l<a.length;l++)if(this.pointToLineDistance({x:i,y:n},a[l-1],a[l])<=s)return true;return a.length===1&&Math.hypot(i-a[0].x,n-a[0].y)<=s}case "text":return Math.abs(i)<=50&&Math.abs(n)<=t.fontSize/2;default:return false}}isPointInHexagon(e,t,i,n){let o=Math.abs(e),s=Math.abs(t),a=i/2,l=n/2;return o<=a&&s<=l&&o/a+s/l<=1.5}pointToLineDistance(e,t,i){return zt(e,t,i)}avoidSourceOverlap(e,t,i){if(!e.sourceShapeId)return t;let n=this.context.getShapes().find(g=>g.id===e.sourceShapeId);if(!n)return t;let o=this.genGhostShape(i,t,e.sourceShapeId),s=this.getShapeWorldBounds(o),a=this.getShapeWorldBounds(n),l=Math.min(s.x+s.width,a.x+a.width)-Math.max(s.x,a.x),c=Math.min(s.y+s.height,a.y+a.height)-Math.max(s.y,a.y);if(l<=0||c<=0)return t;let h=24,d={...t},u=t.x-n.x,p=t.y-n.y;return Math.abs(u)>=Math.abs(p)?d.x=u>=0?a.x+a.width+h+s.width/2:a.x-h-s.width/2:d.y=p>=0?a.y+a.height+h+s.height/2:a.y-h-s.height/2,d}futureDockPoint(e,t,i){let n=this.genGhostShape(i,t,e.sourceShapeId),o=this.getShapeBounds(n),s=un(e.point,t,e.edge);return wo(t,{width:o.width,height:o.height},s)}getShapeBounds(e){switch(e.type){case "rectangle":case "sticky-note":case "icon":case "image":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "hexagon":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "mind-map":case "table":return {x:-e.width/2,y:-e.height/2,width:e.width,height:e.height};case "circle":return {x:-e.radius,y:-e.radius,width:e.radius*2,height:e.radius*2};case "line":case "arrow":{if(e.points.length===0)return {x:0,y:0,width:0,height:0};let t=1/0,i=1/0,n=-1/0,o=-1/0;return e.points.forEach(s=>{t=Math.min(t,s.x-e.x),i=Math.min(i,s.y-e.y),n=Math.max(n,s.x-e.x),o=Math.max(o,s.y-e.y);}),{x:t,y:i,width:n-t,height:o-i}}case "draw":{let t=e;if(typeof t.width=="number"&&typeof t.height=="number")return {x:-t.width/2,y:-t.height/2,width:t.width,height:t.height};if(t.points.length===0)return {x:0,y:0,width:0,height:0};let i=1/0,n=1/0,o=-1/0,s=-1/0;return t.points.forEach(a=>{let l=a.x-t.x,c=a.y-t.y;i=Math.min(i,l),n=Math.min(n,c),o=Math.max(o,l),s=Math.max(s,c);}),{x:i,y:n,width:o-i,height:s-n}}case "text":return {x:-50,y:-e.fontSize/2,width:100,height:e.fontSize};default:return {x:0,y:0,width:0,height:0}}}hitTestArrowTerminal(e,t){for(let n of t){if(n.type!=="arrow")continue;let o=n;if(o.points.length<2)continue;let s=this.context.getConnectorRoute(o.id),a=s.length>=2?s[0]:o.points[0],l=s.length>=2?s[s.length-1]:o.points[o.points.length-1],c=Math.sqrt(Math.pow(e.x-a.x,2)+Math.pow(e.y-a.y,2)),h=Math.sqrt(Math.pow(e.x-l.x,2)+Math.pow(e.y-l.y,2));if(c<20)return {shapeId:o.id,terminal:"start"};if(h<20)return {shapeId:o.id,terminal:"end"}}return null}findShapeNearPoint(e,t,i){for(let o=t.length-1;o>=0;o--){let s=t[o];if(i&&s.id===i||s.type==="arrow"||s.type==="line"||s.type==="draw")continue;let a;switch(s.type){case "rectangle":case "sticky-note":case "icon":case "image":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "table":a=this.pointToRectDistance(e,{x:s.x-s.width/2,y:s.y-s.height/2,width:s.width,height:s.height});break;case "circle":a=Math.sqrt(Math.pow(e.x-s.x,2)+Math.pow(e.y-s.y,2))-s.radius;break;case "hexagon":{let l=s.width/2,c=s.height/2,h=Math.abs(e.x-s.x),d=Math.abs(e.y-s.y);a=h/l+d/c-1;break}default:continue}if(a<=30)return s}return null}pointToRectDistance(e,t){let i=Math.max(t.x,Math.min(e.x,t.x+t.width)),n=Math.max(t.y,Math.min(e.y,t.y+t.height));return Math.sqrt(Math.pow(e.x-i,2)+Math.pow(e.y-n,2))}static SNAP_THRESHOLD=32;static HANDLE_SNAP_DISTANCE=40;static ON_EDGE_SNAP=12;static ANCHOR_EPS=.001;computeSnapGuidesForArrow(e,t,i,n,o){let s=this.draggingTerminal==="start"?n.endBinding:n.startBinding,a=s?o.find(g=>g.id===s.toShapeId):null;if(!a)return [];let l=this.findShapeNearPoint(i,o,n.id);if(!l)return [];let c=this.getShapeWorldBounds(a),h=this.getShapeWorldBounds(l),d=t.x-e.x,u=t.y-e.y,p=Math.abs(d)>=Math.abs(u)?"horizontal":"vertical";return Pe(c,h,p)}findBindingNearPoint(e,t,i){let n,o;for(let a=t.length-1;a>=0;a--){let l=t[a];if(i&&l.id===i||l.type==="arrow"||l.type==="line"||l.type==="draw")continue;let c=this.getPageBounds(l),h={x:l.x,y:l.y},d=[{handle:"top",pos:{x:h.x,y:c.y}},{handle:"bottom",pos:{x:h.x,y:c.y+c.height}},{handle:"left",pos:{x:c.x,y:h.y}},{handle:"right",pos:{x:c.x+c.width,y:h.y}}];for(let m of d){let f=Math.hypot(m.pos.x-e.x,m.pos.y-e.y);f<=r.HANDLE_SNAP_DISTANCE&&(!n||f<n.distance)&&(n={toShapeId:l.id,binding:{toShapeId:l.id,handle:m.handle,isPrecise:false},distance:f});}let u=r.SNAP_THRESHOLD;if(e.x<c.x-u||e.x>c.x+c.width+u||e.y<c.y-u||e.y>c.y+c.height+u)continue;let p=this.nearestPointOnShapeOutline(l,e);if(p&&p.distance<=r.SNAP_THRESHOLD&&!n)if(p.distance<=r.ON_EDGE_SNAP){let m=[{handle:"top",d:Math.abs(p.point.y-c.y)},{handle:"bottom",d:Math.abs(c.y+c.height-p.point.y)},{handle:"left",d:Math.abs(p.point.x-c.x)},{handle:"right",d:Math.abs(c.x+c.width-p.point.x)}];m.sort((b,x)=>b.d-x.d);let f=d.find(b=>b.handle===m[0].handle);n={toShapeId:l.id,binding:{toShapeId:l.id,handle:f.handle,isPrecise:false},distance:Math.hypot(f.pos.x-e.x,f.pos.y-e.y)};}else {let m=this.computeNormalizedAnchor(c,p.point);(!o||p.distance<o.distance)&&(o={toShapeId:l.id,binding:{toShapeId:l.id,isPrecise:true,normalizedAnchor:m},distance:p.distance});}if(e.x>c.x&&e.x<c.x+c.width&&e.y>c.y&&e.y<c.y+c.height&&!n){let m=e.x-(c.x+c.width/2),f=e.y-(c.y+c.height/2),b=Math.abs(m)>=Math.abs(f)?m>=0?"right":"left":f>=0?"bottom":"top";n={toShapeId:l.id,binding:{toShapeId:l.id,handle:b,isPrecise:false},distance:0};}}let s=n??o;if(s)return {toShapeId:s.toShapeId,binding:s.binding}}getPageBounds(e){switch(e.type){case "rectangle":case "sticky-note":case "icon":case "image":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "hexagon":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "table":return {x:e.x-e.width/2,y:e.y-e.height/2,width:e.width,height:e.height};case "circle":return {x:e.x-e.radius,y:e.y-e.radius,width:e.radius*2,height:e.radius*2};default:return {x:e.x-50,y:e.y-50,width:100,height:100}}}computeNormalizedAnchor(e,t){let i=r.ANCHOR_EPS,n=e.width>0?(t.x-e.x)/e.width:.5,o=e.height>0?(t.y-e.y)/e.height:.5;return n=Math.max(i,Math.min(1-i,n)),o=Math.max(i,Math.min(1-i,o)),{x:n,y:o}}nearestPointOnShapeOutline(e,t){let i={x:t.x-e.x,y:t.y-e.y},n=this.nearestLocalPointOnShapeOutline(e,i);if(!n)return null;let o={x:n.point.x+e.x,y:n.point.y+e.y};return {point:o,distance:Math.hypot(o.x-t.x,o.y-t.y)}}nearestLocalPointOnShapeOutline(e,t){switch(e.type){case "rectangle":case "sticky-note":case "icon":case "image":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "hexagon":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "table":{let i=e.width,n=e.height;return this.nearestPointOnRectOutlineLocal(t,{x:-i/2,y:-n/2,width:i,height:n})}case "circle":{let i=e.radius;return this.nearestPointOnCircleOutlineLocal(t,{x:0,y:0},i)}default:return null}}nearestPointOnRectOutlineLocal(e,t){let i=[[{x:t.x,y:t.y},{x:t.x+t.width,y:t.y}],[{x:t.x+t.width,y:t.y},{x:t.x+t.width,y:t.y+t.height}],[{x:t.x+t.width,y:t.y+t.height},{x:t.x,y:t.y+t.height}],[{x:t.x,y:t.y+t.height},{x:t.x,y:t.y}]],n=null;for(let[o,s]of i){let a=this.nearestPointOnSegment(e,o,s);(!n||a.distance<n.distance)&&(n=a);}return n}nearestPointOnCircleOutlineLocal(e,t,i){let n=e.x-t.x,o=e.y-t.y,s=Math.hypot(n,o);if(s<1e-9)return {point:{x:t.x+i,y:t.y},distance:i};let a=t.x+n/s*i,l=t.y+o/s*i,c={x:a,y:l};return {point:c,distance:Math.hypot(c.x-e.x,c.y-e.y)}}nearestPointOnSegment(e,t,i){let n=i.x-t.x,o=i.y-t.y,s=n*n+o*o,a=s>0?((e.x-t.x)*n+(e.y-t.y)*o)/s:0;a=Math.max(0,Math.min(1,a));let l=t.x+a*n,c=t.y+a*o,h={x:l,y:c};return {point:h,distance:Math.hypot(h.x-e.x,h.y-e.y)}}};var Ht=class r extends X{type="hand";state="idle";startScreenPoint={x:0,y:0};initialCameraPos={x:0,y:0};static DRAG_THRESHOLD=4;onPointerDown(e,t){this.startScreenPoint={x:t.clientX,y:t.clientY};let i=this.context.getCamera();this.initialCameraPos={x:i.x,y:i.y},this.state="pointing";}onPointerMove(e,t){if(this.state!=="idle"){if(this.state==="pointing"){let i=t.clientX-this.startScreenPoint.x,n=t.clientY-this.startScreenPoint.y;if(Math.hypot(i,n)<r.DRAG_THRESHOLD)return;this.state="dragging",this.applyCameraDelta(i,n);return}if(this.state==="dragging"){let i=t.clientX-this.startScreenPoint.x,n=t.clientY-this.startScreenPoint.y;this.applyCameraDelta(i,n);}}}onPointerUp(e,t){if(this.state!=="idle"){if(this.state==="dragging"){let i=this.context.getCamera();this.initialCameraPos={x:i.x,y:i.y},this.startScreenPoint={x:t.clientX,y:t.clientY};}this.state="idle";}}onKeyDown(e){e.key==="Escape"&&this.state!=="idle"&&(this.context.setCameraPosition(this.initialCameraPos.x,this.initialCameraPos.y),this.state="idle");}onKeyUp(e){}getCursor(e){return this.state==="dragging"||this.state==="pointing"?"grabbing":"grab"}applyCameraDelta(e,t){this.context.setCameraPosition(this.initialCameraPos.x+e,this.initialCameraPos.y+t);}};var ds={strokeColor:"#1f2937",fillColor:"transparent",strokeWidth:2,strokeDash:null},Rt=class extends X{type="line";isDrawing=false;startPoint={x:0,y:0};currentShape=null;onPointerDown(e,t){this.isDrawing=true,this.startPoint=e,this.currentShape={id:`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,type:"line",x:e.x,y:e.y,points:[e],rotation:0,style:{...ds}},this.context.commitHistory(),this.context.addShape(this.currentShape);}onPointerMove(e,t){!this.isDrawing||!this.currentShape||this.context.updateShape(this.currentShape.id,{points:[this.startPoint,e]});}onPointerUp(e,t){let i=this.currentShape;this.isDrawing=false,this.currentShape=null,this.context.setActiveTool("select"),i&&i.points.length>=2&&this.context.selectShape(i.id,false);}onKeyDown(e){}onKeyUp(e){}getCursor(){return "crosshair"}};var us={strokeColor:"#1f2937",fillColor:"transparent",fillOpacity:1,strokeWidth:4,strokeDash:null},ps=.5,gs=16,bn="#ffeb3b",ms=4200,Le=class extends X{type;mode;isDrawing=false;points=[];currentShapeId=null;committed=false;fadeTimer=null;highlighterColor=bn;constructor(e,t){super(e),this.mode=t,this.type=t==="pen"?"pen":"highlighter";}setHighlighterColor(e){this.highlighterColor=e;}getHighlighterColor(){return this.highlighterColor}buildStyle(){return this.mode==="pen"?{...us}:{strokeColor:z(this.highlighterColor,ps),fillColor:"transparent",fillOpacity:1,strokeWidth:gs,strokeDash:null}}onPointerDown(e,t){this.isDrawing=true,this.committed=false,this.currentShapeId=null,this.points=[{...e}];}buildGeometry(e){let t=1/0,i=1/0,n=-1/0,o=-1/0;for(let u of e)u.x<t&&(t=u.x),u.y<i&&(i=u.y),u.x>n&&(n=u.x),u.y>o&&(o=u.y);let s=(t+n)/2,a=(i+o)/2,l=6,c=Math.max(1,n-t)+l*2,h=Math.max(1,o-i)+l*2,d=e.map(u=>({x:u.x-s,y:u.y-a}));return {x:s,y:a,width:c,height:h,points:d}}onPointerMove(e,t){if(this.isDrawing){if(this.points.push({...e}),!this.committed&&this.points.length>=2){this.context.commitHistory();let i=`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;this.currentShapeId=i;let n=this.buildGeometry(this.points),o=this.buildStyle(),s={id:i,type:"draw",x:n.x,y:n.y,width:n.width,height:n.height,points:n.points,rotation:0,style:o};this.context.addShape(s),this.committed=true;}else if(this.committed&&this.currentShapeId){let i=this.buildGeometry(this.points);this.context.updateShape(this.currentShapeId,{x:i.x,y:i.y,width:i.width,height:i.height,points:i.points});}}}onPointerUp(e,t){if(!this.isDrawing||(this.isDrawing=false,!this.committed||!this.currentShapeId))return;let i=this.currentShapeId;this.currentShapeId=null,this.mode==="highlighter"&&(this.fadeTimer=setTimeout(()=>{this.context.deleteShape(i);},ms));}onKeyDown(e){}onKeyUp(e){}getCursor(){return "crosshair"}dispose(){this.fadeTimer&&(clearTimeout(this.fadeTimer),this.fadeTimer=null);}};var fs={strokeColor:"#1f2937",fillColor:"transparent",strokeWidth:2,strokeDash:null},ys=4,Et=class extends X{type="arrow";isDrawing=false;startPoint={x:0,y:0};currentShapeId=null;startBindingInfo=null;startBinding;onPointerDown(e,t){this.isDrawing=true,this.startPoint=e,this.startBindingInfo=null,this.currentShapeId=null;let i=this.context.getShapes(),n=this.findShapeBinding(e,i),o=e;n&&(o=this.getBindingPosition(n.toShapeId,n.handle,i),this.startBindingInfo={...n,position:o}),this.startPoint=o,this.startBinding=n?{toShapeId:n.toShapeId,handle:n.handle}:void 0;}onPointerMove(e,t){if(!this.isDrawing)return;let i=this.context.getShapes(),n=this.findShapeBinding(e,i),o=e;n&&(o=this.getBindingPosition(n.toShapeId,n.handle,i));let s=this.startPoint;if(!this.currentShapeId){if(Math.hypot(o.x-s.x,o.y-s.y)<ys)return;let c=`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,h=this.context.getArrowStyle(),d={id:c,type:"arrow",x:s.x,y:s.y,points:[s,o],rotation:0,style:{...fs},startBinding:this.startBinding,connectionType:h.connectionType,arrowHead:h.arrowHead,dashed:h.dashed};this.context.commitHistory(),this.context.addShape(d),this.currentShapeId=c;}let a=this.computeSnapGuides(s,o,n,i);this.context.setSnapGuides(a),this.context.updateShape(this.currentShapeId,{points:[s,o],endBinding:n?{toShapeId:n.toShapeId,handle:n.handle}:void 0});}onPointerUp(e,t){let i=this.currentShapeId;this.isDrawing=false,this.currentShapeId=null,this.startBindingInfo=null,this.startBinding=void 0,this.context.setSnapGuides([]),i&&(this.context.setActiveTool("select"),this.context.selectShape(i,false));}onKeyDown(e){}onKeyUp(e){}getCursor(){return "crosshair"}computeSnapGuides(e,t,i,n){let o=this.startBindingInfo?n.find(u=>u.id===this.startBindingInfo.toShapeId):null,s=i?n.find(u=>u.id===i.toShapeId):null;if(!o||!s)return [];let a=this.getShapeBounds(o),l=this.getShapeBounds(s),c=t.x-e.x,h=t.y-e.y,d=Math.abs(c)>=Math.abs(h)?"horizontal":"vertical";return Pe(a,l,d)}getShapeBounds(e){switch(e.type){case "rectangle":case "sticky-note":case "icon":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "hexagon":return {x:e.x-e.width/2,y:e.y-e.height/2,width:e.width,height:e.height};case "circle":return {x:e.x-e.radius,y:e.y-e.radius,width:e.radius*2,height:e.radius*2};case "text":return {x:e.x-e.width/2,y:e.y-e.height/2,width:e.width,height:e.height};default:return {x:e.x-50,y:e.y-20,width:100,height:40}}}findShapeBinding(e,t){for(let n=t.length-1;n>=0;n--){let o=t[n];if(o.type==="arrow"||o.type==="line"||o.type==="draw")continue;let s;switch(o.type){case "rectangle":case "sticky-note":case "icon":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "uml-class":case "uml-interface":s=this.pointToRectDistance(e,{x:o.x-o.width/2,y:o.y-o.height/2,width:o.width,height:o.height});break;case "circle":{let a=Math.sqrt(Math.pow(e.x-o.x,2)+Math.pow(e.y-o.y,2));s=Math.abs(a-o.radius);break}case "hexagon":{let a=o.width/2,l=o.height/2,c=Math.abs(e.x-o.x),h=Math.abs(e.y-o.y);s=c/a+h/l-1;break}default:continue}if(s<=40){let a=this.getClosestHandle(e,o);return {toShapeId:o.id,handle:a}}}}pointToRectDistance(e,t){let i=Math.max(t.x,Math.min(e.x,t.x+t.width)),n=Math.max(t.y,Math.min(e.y,t.y+t.height));return Math.sqrt(Math.pow(e.x-i,2)+Math.pow(e.y-n,2))}getClosestHandle(e,t){let i=e.x-t.x,n=e.y-t.y;if(t.type==="circle"||t.type==="hexagon"){let c=Math.atan2(n,i);return c>=-Math.PI/4&&c<Math.PI/4?"right":c>=Math.PI/4&&c<3*Math.PI/4?"bottom":c>=3*Math.PI/4||c<-(3*Math.PI)/4?"left":"top"}let o="width"in t?t.width:100,s="height"in t?t.height:100,a=Math.abs(i)/(o/2),l=Math.abs(n)/(s/2);return a>l?i>0?"right":"left":n>0?"bottom":"top"}getBindingPosition(e,t,i){let n=i.find(o=>o.id===e);if(!n)return {x:0,y:0};switch(n.type){case "rectangle":case "sticky-note":case "icon":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":return this.getRectBindingPosition(n,t);case "circle":return this.getCircleBindingPosition(n,t);case "hexagon":return this.getRectBindingPosition(n,t);default:return {x:n.x,y:n.y}}}getRectBindingPosition(e,t){switch(t){case "top":return {x:e.x,y:e.y-e.height/2};case "bottom":return {x:e.x,y:e.y+e.height/2};case "left":return {x:e.x-e.width/2,y:e.y};case "right":return {x:e.x+e.width/2,y:e.y}}}getCircleBindingPosition(e,t){switch(t){case "top":return {x:e.x,y:e.y-e.radius};case "bottom":return {x:e.x,y:e.y+e.radius};case "left":return {x:e.x-e.radius,y:e.y};case "right":return {x:e.x+e.radius,y:e.y}}}};var bs={strokeColor:"transparent",fillColor:"transparent",strokeWidth:0,strokeDash:null},xn=class extends X{type="text";onPointerDown(e,t){let i=`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,n={id:i,type:"text",x:e.x,y:e.y,rotation:0,style:{...bs},text:"",fontSize:16,textColor:"#1f2937",width:200,height:24};this.context.commitHistory(),this.context.addShape(n),this.context.enterEditing(i);}onPointerMove(e,t){}onPointerUp(e,t){}onKeyDown(e){}onKeyUp(e){}getCursor(){return "text"}};var Fe="#1f2937";function Sn(r){switch(r.type){case "rectangle":case "image":case "sticky-note":case "icon":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "hexagon":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "mind-map":case "table":case "text":return {x:-(r.width/2),y:-(r.height/2),width:r.width,height:r.height};case "circle":return {x:-r.radius,y:-r.radius,width:r.radius*2,height:r.radius*2};case "line":case "arrow":{let e=r.points;if(!e||e.length===0)return {x:0,y:0,width:0,height:0};let t=1/0,i=1/0,n=-1/0,o=-1/0;for(let s of e){let a=s.x-r.x,l=s.y-r.y;t=Math.min(t,a),i=Math.min(i,l),n=Math.max(n,a),o=Math.max(o,l);}return {x:t,y:i,width:n-t,height:o-i}}case "draw":{let e=r,t=e.width,i=e.height;if(typeof t=="number"&&typeof i=="number")return {x:-t/2,y:-i/2,width:t,height:i};let n=e.points;if(!n||n.length===0)return {x:0,y:0,width:0,height:0};let o=1/0,s=1/0,a=-1/0,l=-1/0;for(let c of n)o=Math.min(o,c.x),s=Math.min(s,c.y),a=Math.max(a,c.x),l=Math.max(l,c.y);return {x:o,y:s,width:a-o,height:l-s}}default:return {x:0,y:0,width:0,height:0}}}function xs(r){let e=Sn(r),t=Math.cos(r.rotation),i=Math.sin(r.rotation),n=1/0,o=1/0,s=-1/0,a=-1/0,l=[[e.x,e.y],[e.x+e.width,e.y],[e.x+e.width,e.y+e.height],[e.x,e.y+e.height]];for(let[c,h]of l){let d=c*t-h*i+r.x,u=c*i+h*t+r.y;n=Math.min(n,d),o=Math.min(o,u),s=Math.max(s,d),a=Math.max(a,u);}return {x:n,y:o,width:s-n,height:a-o}}function at(r,e=24){if(!r||r.length===0)return {x:0,y:0,width:400,height:300};let t=1/0,i=1/0,n=-1/0,o=-1/0;for(let s of r){let a=xs(s);t=Math.min(t,a.x),i=Math.min(i,a.y),n=Math.max(n,a.x+a.width),o=Math.max(o,a.y+a.height);}return {x:t-e,y:i-e,width:n-t+e*2,height:o-i+e*2}}function Eo(r,e={}){let t=e.padding??24,i=e.background===void 0?"#ffffff":e.background??null,n=at(r,t),o=Math.max(1,Math.ceil(n.width)),s=Math.max(1,Math.ceil(n.height)),a=Math.max(.01,e.scale??2);e.maxSize&&e.maxSize>0&&(a=Math.min(a,e.maxSize/Math.max(o,s))),a=Math.max(.01,a);let l=document.createElement("canvas");l.width=Math.max(1,Math.round(o*a)),l.height=Math.max(1,Math.round(s*a));let c=new Ue(l,a);c.resize(o,s);let h=new Re;return h.zoom=1,h.x=-n.x,h.y=-n.y,c.render(r,h,new Set,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,i),l}function ws(r,e,t){return new Promise((i,n)=>{r.toBlob(o=>{o?i(o):n(new Error("canvas.toBlob failed"));},e,t);})}function Ss(r,e,t){return r.toDataURL(e,t)}var Nt=null;function De(r,e){return Nt||(Nt=document.createElement("canvas").getContext("2d")),Nt?(Nt.font=e,Nt.measureText(r).width):r.length*8}function Me(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Mn(r,e,t,i,n=false){let o=e*1.3,s=Math.max(1,Math.floor(i/o)),a=`${n?"bold ":""}${e}px sans-serif`,l=r.split(`
|
|
6
|
+
`),c=[];for(let d of l){let u="";for(let p of d){let g=u+p;De(g,a)>t&&u?(c.push(u),u=p):u=g;}u&&c.push(u);}let h=c.slice(0,s);if(c.length>s&&h.length>0){let d=h[h.length-1],u="...";for(;d.length>0&&De(d+u,a)>t;)d=d.slice(0,-1);h[h.length-1]=d+u;}return h}function Ai(r,e,t){if(De(r,t)<=e)return r;let i="\u2026",n=0,o=r.length;for(;n<o;){let s=n+o+1>>1;De(r.slice(0,s)+i,t)<=e?n=s:o=s-1;}return r.slice(0,n)+i}function Ae(r){return r.map(([e,t])=>`${M(e)},${M(t)}`).join(" ")}function wn(r){return r.map(e=>e[0]==="Z"?"Z":e[0]==="M"||e[0]==="L"?`${e[0]} ${M(e[1])} ${M(e[2])}`:`C ${M(e[1])} ${M(e[2])} ${M(e[3])} ${M(e[4])} ${M(e[5])} ${M(e[6])}`).join(" ")}function Ms(r){let e=r;if(!e.text||r.type==="text"||r.type==="line"||r.type==="arrow"||r.type==="draw")return "";let t=e.fontSize||16,i=r.type==="brace-left"||r.type==="brace-right",n=r.type==="sticky-note",o=e.width??(e.radius?e.radius*2:100),s=e.height??(e.radius?e.radius*2:40),a=n?Je:.85,l=o*(i?1-Lt:1)*a,c=s*a,h=Mn(String(e.text),t,l,c);return Ri(h,t,e.textColor||Fe,M(yn(r)),0)}function M(r){return Math.round(r*100)/100}var No="drawui-paper-shadow";function Cs(r){let e=M(r.offsetY??0),t=M(r.offsetX??0);return `<filter id="${No}" x="-40%" y="-40%" width="180%" height="180%"><feDropShadow dx="${t}" dy="${e}" stdDeviation="${M(r.blur*.45)}" flood-color="${r.color}" flood-opacity="${M(r.opacity??.2)}" /></filter>`}function Bo(r){return r.strokeDash&&r.strokeDash.length?r.strokeDash.join(","):void 0}function vo(r,e){let t=e.x-r.x,i=e.y-r.y,n=Math.cos(r.rotation),o=Math.sin(r.rotation);return {x:t*n-i*o+r.x,y:t*o+i*n+r.y}}var Di=Tt;function Is(r,e,t){return vt(r,e,t)}function Ts(r,e,t){let i=r.endBinding;if(!i||!i.auto||i.isPrecise)return i;let n=r.startBinding?.handle?Di[r.startBinding.handle]:void 0;return {...i,handle:Is(e,{x:t.x,y:t.y},n)}}function ko(r,e){if(e.isPrecise&&e.normalizedAnchor){let t=Sn(r),i=r.x+t.x+t.width*e.normalizedAnchor.x,n=r.y+t.y+t.height*e.normalizedAnchor.y;return {x:i,y:n}}if(e.handle){let t=Sn(r);switch(e.handle){case "top":return {x:r.x,y:r.y+t.y};case "bottom":return {x:r.x,y:r.y+t.y+t.height};case "left":return {x:r.x+t.x,y:r.y};case "right":return {x:r.x+t.x+t.width,y:r.y}}}return {x:r.x,y:r.y}}function vs(r,e){let t=r.points.map(c=>({...c})),i,n,o,s;if(t.length===0)return {raw:t,pts:t,fromN:i,toN:n};if(r.startBinding){let c=e.get(r.startBinding.toShapeId);c&&(t[0]=ko(c,r.startBinding),!r.startBinding.isPrecise&&r.startBinding.handle&&(i=Di[r.startBinding.handle]),o=Po(c));}if(r.endBinding){let c=e.get(r.endBinding.toShapeId);if(c){let h=Ts(r,t[0],c)??r.endBinding;t[t.length-1]=ko(c,h),!h.isPrecise&&h.handle&&(n=Di[h.handle]),s=Po(c);}}let a=t.map(c=>({...c})),l=t;if(r.userPoints&&r.userPoints.length>0&&t.length>=2){let c=Hi([t[0],t[t.length-1]]),h=r.connectionType||"straight",[d,u]=h==="curve"?[t[0],t[t.length-1]]:c,p=h==="curve"?r.userPoints.map(g=>({...g})):Ut(r.userPoints,r.userPointsRef,d,u,i,n);l=[d,...p,u];}return {raw:a.map(c=>vo(r,c)),pts:l.map(c=>vo(r,c)),fromN:i,toN:n,fromBox:o,toBox:s}}function Po(r){let e=Sn(r);return {x:r.x+e.x,y:r.y+e.y,width:e.width,height:e.height}}function Hi(r){if(r.length<2)return r;let e=r[0],t=r[r.length-1],i=t.x-e.x,n=t.y-e.y,o=8;if(Math.abs(n)<=o){let s=(e.y+t.y)/2;return r.map(a=>({x:a.x,y:s}))}if(Math.abs(i)<=o){let s=(e.x+t.x)/2;return r.map(a=>({x:s,y:a.y}))}return r}function ks(r){if(r.length<2)return "";let e=`M ${M(r[0].x)} ${M(r[0].y)}`,t=r[0];for(let i=1;i<r.length;i++){let n=r[i],o=n.x-t.x,s=n.y-t.y,a=Math.hypot(o,s),l={x:(t.x+n.x)/2,y:(t.y+n.y)/2};if(a>=1){let c=-s/a,h=o/a,d=Math.min(a*.2,30);l={x:l.x+c*d,y:l.y+h*d};}e+=` Q ${M(l.x)} ${M(l.y)} ${M(n.x)} ${M(n.y)}`,t=n;}return e}function Lo(r,e,t,i,n=false,o,s){let a=n&&e==="straight"?"polyline":e;return a==="curve"?r:a==="straight"?r.length===2?Hi(r):r:r.length===2?kt(Hi(r),{fromN:t,toN:i,fromBox:o,toBox:s}):kt(r,{fromN:t,toN:i,fromBox:o,toBox:s},Si,false)}function Ps(r){if(r.length<2)return "";let e=`M ${M(r[0].x)} ${M(r[0].y)}`;for(let t=1;t<r.length;t++)e+=` L ${M(r[t].x)} ${M(r[t].y)}`;return e}function Pi(r,e,t,i){let n=Math.atan2(e.y-r.y,e.x-r.x),o=12,s={x:e.x-o*Math.cos(n-Math.PI/6),y:e.y-o*Math.sin(n-Math.PI/6)},a={x:e.x-o*Math.cos(n+Math.PI/6),y:e.y-o*Math.sin(n+Math.PI/6)};return `<path d="M ${M(e.x)} ${M(e.y)} L ${M(s.x)} ${M(s.y)} M ${M(e.x)} ${M(e.y)} L ${M(a.x)} ${M(a.y)}" stroke="${t}" stroke-width="${i}" stroke-linecap="round" fill="none" />`}function Ao(r,e,t,i){let n=Math.atan2(e.y-r.y,e.x-r.x),o=14,s=e.x,a=e.y,l=e.x-o*Math.cos(n),c=e.y-o*Math.sin(n),h=l+o*.5*Math.cos(n-Math.PI/2),d=c+o*.5*Math.sin(n-Math.PI/2),u=l+o*.5*Math.cos(n+Math.PI/2),p=c+o*.5*Math.sin(n+Math.PI/2);return `<polygon points="${M(s)},${M(a)} ${M(h)},${M(d)} ${M(u)},${M(p)}" fill="#ffffff" stroke="${t}" stroke-width="${i}" />`}function Do(r,e,t,i,n){let o=Math.atan2(e.y-r.y,e.x-r.x),s=14,a=e.x,l=e.y,c=e.x-s*.5*Math.cos(o),h=e.y-s*.5*Math.sin(o),d=e.x-s*Math.cos(o),u=e.y-s*Math.sin(o),p=c+s*.4*Math.cos(o-Math.PI/2),g=h+s*.4*Math.sin(o-Math.PI/2),m=c+s*.4*Math.cos(o+Math.PI/2),f=h+s*.4*Math.sin(o+Math.PI/2);return `<polygon points="${M(a)},${M(l)} ${M(p)},${M(g)} ${M(d)},${M(u)} ${M(m)},${M(f)}" fill="${n?t:"#ffffff"}" stroke="${t}" stroke-width="${i}" />`}function Ls(r,e,t,i){if(e==="none"||r.length<2)return "";let n="";return (e==="start"||e==="both")&&(n+=Pi(r[1],r[0],t,i)),(e==="end"||e==="both")&&(n+=Pi(r[r.length-2],r[r.length-1],t,i)),e==="inheritance"&&(n+=Ao(r[r.length-2],r[r.length-1],t,i)),e==="aggregation"&&(n+=Do(r[1],r[0],t,i,false)),e==="composition"&&(n+=Do(r[1],r[0],t,i,true)),e==="dependency"&&(n+=Pi(r[r.length-2],r[r.length-1],t,i)),e==="realization"&&(n+=Ao(r[r.length-2],r[r.length-1],t,i)),n}function Ri(r,e,t,i=0,n=0){if(r.length===0)return "";let o=e*1.3,a=-(r.length*o)/2+o/2,l=r.map((c,h)=>`<tspan x="${M(i)}" y="${M(n+a+h*o)}">${Me(c)}</tspan>`).join("");return `<text text-anchor="middle" dominant-baseline="central" font-family="sans-serif" font-size="${e}" fill="${t}">${l}</text>`}function F(r,e,t){let i=t??Bo(r),n=e&&r.fillColor!=="transparent",o=r.fillOpacity??1,s=r.strokeOpacity??1;return [n?`fill="${r.fillColor}"`:'fill="none"',n&&o<1?`fill-opacity="${M(o)}"`:"",`stroke="${r.strokeColor}"`,s<1&&r.strokeColor!=="transparent"?`stroke-opacity="${M(s)}"`:"",`stroke-width="${r.strokeWidth}"`,'stroke-linecap="round"','stroke-linejoin="round"',i?`stroke-dasharray="${i}"`:""].filter(Boolean).join(" ")}function Ho(r,e){let{width:t,height:i}=r,n=t/2,o=i/2,s=`${ee}px sans-serif`,a=ge,l=e?0:r.attributes.length>0?r.attributes.length*V+_*2:_*2,c=t-ne*2,h=[];h.push(`<rect x="${M(-n)}" y="${M(-o)}" width="${t}" height="${i}" ${F(r.style,true)} />`),h.push(`<line x1="${M(-n)}" y1="${M(-o+a)}" x2="${M(n)}" y2="${M(-o+a)}" stroke="${r.style.strokeColor}" stroke-width="${r.style.strokeWidth}" />`),e||h.push(`<line x1="${M(-n)}" y1="${M(-o+a+l)}" x2="${M(n)}" y2="${M(-o+a+l)}" stroke="${r.style.strokeColor}" stroke-width="${r.style.strokeWidth}" />`);let d=e?`<<${r.className||"Interface"}>>`:r.className;h.push(`<text text-anchor="middle" dominant-baseline="central" font-family="sans-serif" font-weight="bold" font-size="${ee}" fill="${r.textColor||Fe}" x="0" y="${M(-o+a/2)}">${Me(Ai(d,c,s))}</text>`);let u=(g,m,f,b,x)=>{let I=`${f||ee}px sans-serif`,T=Ai(g,c,I),S=`<text text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-size="${f||ee}" fill="${b||Fe}" x="${M(-n+ne)}" y="${M(m)}">${Me(T)}</text>`;if(x){let w=De(T,I);S+=`<line x1="${M(-n+ne)}" y1="${M(m)}" x2="${M(-n+ne+w)}" y2="${M(m)}" stroke="${b||Fe}" stroke-width="1" />`;}return S};if(!e){let g=-o+a+_+V/2;r.attributes.forEach((m,f)=>{let b=Ne(m);b&&h.push(u(b,g+f*V,m.fontSize||r.fontSize||0,m.textColor||r.textColor||"",!!m.strikethrough));});}let p=-o+a+l+_+V/2;return r.methods.forEach((g,m)=>{let f=xe(g);f&&h.push(u(f,p+m*V,g.fontSize||r.fontSize||0,g.textColor||r.textColor||"",!!g.strikethrough));}),h.join("")}function As(r){let{width:e,height:t}=r,i=e/2,n=t/2,o=Ge(r.cells),s=[];r.style.fillColor!=="transparent"&&s.push(`<rect x="${M(-i)}" y="${M(-n)}" width="${M(e)}" height="${M(t)}" fill="${r.style.fillColor}" />`);for(let l=0;l<r.cells.length;l++)for(let c=0;c<(r.cells[l]?.length??0);c++){if(o[l]?.[c])continue;let h=r.cells[l][c];if(!h.fillColor)continue;let d=ie(r,l,c);s.push(`<rect x="${M(d.ox-i)}" y="${M(d.oy-n)}" width="${M(d.width)}" height="${M(d.height)}" fill="${h.fillColor}" />`);}let a=`stroke="${Qt}" stroke-width="${1}"`;for(let l=1;l<r.rowHeights.length;l++){let c=-n+r.rowHeights.slice(0,l).reduce((d,u)=>d+u,0),h=[];for(let d=0;d<l;d++)for(let u=0;u<(r.cells[d]?.length??0);u++){let g=r.cells[d][u].rowSpan??1;if(g>1&&d+g>l){let m=ie(r,d,u);h.push([m.ox-i,m.ox-i+m.width]);}}for(let[d,u]of Ro(-i,i,h))s.push(`<line x1="${M(d)}" y1="${M(c)}" x2="${M(u)}" y2="${M(c)}" ${a} />`);}for(let l=1;l<r.colWidths.length;l++){let c=-i+r.colWidths.slice(0,l).reduce((d,u)=>d+u,0),h=[];for(let d=0;d<l;d++)for(let u=0;u<r.cells.length;u++){let p=r.cells[u]?.[d];if(!p)continue;let g=p.colSpan??1;if(g>1&&d+g>l){let m=ie(r,u,d);h.push([m.oy-n,m.oy-n+m.height]);}}for(let[d,u]of Ro(-n,n,h))s.push(`<line x1="${M(c)}" y1="${M(d)}" x2="${M(c)}" y2="${M(u)}" ${a} />`);}s.push(`<rect x="${M(-i)}" y="${M(-n)}" width="${M(e)}" height="${M(t)}" ${F(r.style,true)} />`);for(let l=0;l<r.cells.length;l++)for(let c=0;c<(r.cells[l]?.length??0);c++){if(o[l]?.[c])continue;let h=r.cells[l][c];if(!h.text)continue;let d=ie(r,l,c),u=h.fontSize||r.fontSize||14,p=d.width-20,g=Math.max(u*1.3,d.height-8),m=Mn(h.text,u,p,g,!!h.bold),f=h.align==="center"?"middle":h.align==="right"?"end":"start",b=h.align==="center"?d.ox-i+d.width/2:h.align==="right"?d.ox-i+d.width-10:d.ox-i+10,x=h.bold?'font-weight="bold" ':"",I=u*1.3,T=d.oy-n+Mt(m.length,I,d.height);s.push(`<text text-anchor="${f}" dominant-baseline="central" font-family="sans-serif" ${x}font-size="${u}" fill="${h.textColor||r.textColor||en}">${m.map((S,w)=>`<tspan x="${M(b)}" y="${M(T+w*I)}">${Me(S)}</tspan>`).join("")}</text>`);}return s.join("")}function Ro(r,e,t){let i=[...t].sort((s,a)=>s[0]-a[0]),n=[],o=r;for(let[s,a]of i)if(s>o&&n.push([o,Math.min(s,e)]),o=Math.max(o,a),o>=e)break;return o<e&&n.push([o,e]),n.filter(([s,a])=>a-s>=.5)}function Ds(r){let t=N(r.root).positions,i=[],n=s=>{if(s.collapsed)return;let a=t.get(s.id);if(a)for(let l of s.children??[]){let c=t.get(l.id);if(!c)continue;let h=c.direction,d=Be(l,c.depth),u=h==="right"?r.x+a.x+a.width/2:h==="left"?r.x+a.x-a.width/2:r.x+a.x,p=h==="down"?r.y+a.y+a.height/2:h==="up"?r.y+a.y-a.height/2:r.y+a.y,g=h==="right"?r.x+c.x-c.width/2:h==="left"?r.x+c.x+c.width/2:r.x+c.x,m=h==="down"?r.y+c.y-c.height/2:h==="up"?r.y+c.y+c.height/2:r.y+c.y,f;if(h==="right"||h==="left"){let b=(u+g)/2;f=`M ${M(u)} ${M(p)} C ${M(b)} ${M(p)} ${M(b)} ${M(m)} ${M(g)} ${M(m)}`;}else {let b=(p+m)/2;f=`M ${M(u)} ${M(p)} C ${M(u)} ${M(b)} ${M(g)} ${M(b)} ${M(g)} ${M(m)}`;}i.push(`<path d="${f}" stroke="${d}" stroke-width="2" fill="none" stroke-linecap="round" />`),n(l);}};n(r.root);let o=s=>{let a=t.get(s.id);if(!a)return;let l=Be(s,a.depth),c=a.width/2,h=a.height/2,d=r.x+a.x,u=r.y+a.y;if(i.push(`<rect x="${M(d-c)}" y="${M(u-h)}" width="${a.width}" height="${a.height}" rx="6" ry="6" fill="#ffffff" stroke="${l}" stroke-width="2" />`),s.note){let I="11px sans-serif",T=s.noteColor??l,S=Math.min(De(s.note,I)+12,130),w=16,C=De(s.note,I)+12>130?s.note.slice(0,12)+"\u2026":s.note;i.push(`<rect x="${M(d-c)}" y="${M(u-h-w+2)}" width="${S}" height="${w}" rx="4" ry="4" fill="${T}" />`),i.push(`<text text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-size="11" fill="#ffffff" x="${M(d-c+6)}" y="${M(u-h-w/2+2)}">${Me(C)}</text>`);}let p=s.icon?18:0,g=a.width-p-(s.icon?8:0)-16,m=Ai(s.text||"",g,`${14}px sans-serif`),f=De(m,`${14}px sans-serif`),b=p+(p?8:0)+f,x=d-b/2;if(s.icon&&(i.push(`<text text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-size="16" fill="#1f2937" x="${M(x)}" y="${M(u)}">${Me(s.icon)}</text>`),x+=p+8),i.push(`<text text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-size="${14}" fill="#1f2937" x="${M(x)}" y="${M(u)}">${Me(m)}</text>`),s.children&&s.children.length>0&&!s.collapsed)for(let I of s.children)o(I);};return o(r.root),i.join("")}function Hs(r,e){let t=r.rotation*180/Math.PI,i=r.flipX||r.flipY?`<g transform="scale(${r.flipX?-1:1} ${r.flipY?-1:1})">`:"",n=i?"</g>":"",o=`<g transform="translate(${M(r.x)} ${M(r.y)}) rotate(${M(t)})">${i}`,s=`${n}${Ms(r)}</g>`,a=r.style;switch(r.type){case "image":{let l=r,c=l.width??0,h=l.height??0,d=Math.max(0,Math.min(l.borderRadius??0,c/2,h/2)),u=`x="${M(-c/2)}" y="${M(-h/2)}" width="${M(c)}" height="${M(h)}"`;if(!l.src)return `${o}<rect ${u}${d>0?` rx="${M(d)}"`:""} fill="#f3f4f6" stroke="#e5e7eb" />${s}`;let p=Nn(l.src)||l.src,g=`<image href="${Me(p)}" ${u} preserveAspectRatio="none" />`;if(d>0){let m=`dw-img-clip-${String(l.id).replace(/[^a-zA-Z0-9_-]/g,"")}`;return `${o}<defs><clipPath id="${m}"><rect ${u} rx="${M(d)}" /></clipPath></defs><g clip-path="url(#${m})">${g}</g>${s}`}return `${o}${g}${s}`}case "rectangle":{let l=r.width,c=r.height;return `${o}<rect x="${M(-l/2)}" y="${M(-c/2)}" width="${l}" height="${c}" ${F(a,true)} />${s}`}case "rounded-rectangle":{let l=r.width,c=r.height,h=r.borderRadius||8;return `${o}<rect x="${M(-l/2)}" y="${M(-c/2)}" width="${l}" height="${c}" rx="${h}" ry="${h}" ${F(a,true)} />${s}`}case "stadium":{let l=r.width,c=r.height,h=Math.min(l,c)/2;return `${o}<rect x="${M(-l/2)}" y="${M(-c/2)}" width="${l}" height="${c}" rx="${h}" ry="${h}" ${F(a,true)} />${s}`}case "circle":{let l=r.radius;return `${o}<circle cx="0" cy="0" r="${l}" ${F(a,true)} />${s}`}case "ellipse":{let l=r.width,c=r.height;return `${o}<ellipse cx="0" cy="0" rx="${l/2}" ry="${c/2}" ${F(a,true)} />${s}`}case "diamond":{let l=r.width,c=r.height;return `${o}<polygon points="${Ae([[0,-c/2],[l/2,0],[0,c/2],[-l/2,0]])}" ${F(a,true)} />${s}`}case "triangle":{let l=r.width,c=r.height;return `${o}<polygon points="${Ae([[0,-c/2],[l/2,c/2],[-l/2,c/2]])}" ${F(a,true)} />${s}`}case "hexagon":{let l=r.width,c=r.height,h=r.orientation==="flat"?Math.PI/6:0;return `${o}<polygon points="${Ae(Li(l,c,6,-Math.PI/2+h))}" ${F(a,true)} />${s}`}case "pentagon":{let l=r.width,c=r.height;return `${o}<polygon points="${Ae(Li(l,c,5,-Math.PI/2))}" ${F(a,true)} />${s}`}case "octagon":{let l=r.width,c=r.height;return `${o}<polygon points="${Ae(Li(l,c,8,-Math.PI/8))}" ${F(a,true)} />${s}`}case "star":{let l=r.width,c=r.height;return `${o}<polygon points="${Ae(Rs(l,c))}" ${F(a,true)} />${s}`}case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "sticky-note":{let l=r.width,c=r.height,h=At(r.type);if(!h)return "";let d=h.shadow?` filter="url(#${No})"`:"",u=`<path d="${wn(de(h.outline,l,c))}" ${F(a,!h.strokeOnly)}${d} />`,p=(h.overlays??[]).map(b=>{let x=b.fill??"auto",I=x==="none"?"transparent":x==="auto"?b.deriveFill?b.deriveFill(a.fillColor):a.fillColor:x,T={...a,fillColor:I,strokeColor:b.stroke===false?"transparent":a.strokeColor};return `<path d="${wn(de(b.cmds,l,c))}" ${F(T,x!=="none")} />`}).join(""),g=(h.seams??[]).map(b=>`<path d="${wn(de(b,l,c))}" ${F({...a,fillColor:"transparent"},true)} />`).join(""),m=`${M(a.strokeWidth*st[0])},${M(a.strokeWidth*st[1])}`,f=(h.hiddenSeams??[]).map(b=>`<path d="${wn(de(b,l,c))}" ${F({...a,fillColor:"transparent"},true,m)} />`).join("");return `${o}${u}${p}${g}${f}${s}`}case "icon":{let l=r.width,c=r.height,h=$e(r.iconId);if(!h)return `${o}${s}`;let d=a.fillColor!=="transparent"?a.fillColor:Fe,u=[];h.disc&&u.push(`<circle cx="${K/2}" cy="${K/2}" r="${K/2-1}" fill="${h.disc}" />`);for(let g of h.layers){let m=g.fill??"ink",f=g.stroke??"ink",b=[m==="none"?'fill="none"':`fill="${m==="ink"?d:m}"`,f==="none"?"":`stroke="${f==="ink"?d:f}" stroke-width="${g.w??1.8}" stroke-linecap="round" stroke-linejoin="round"`].filter(Boolean).join(" ");u.push(`<path d="${g.d}" ${b} />`);}let p=h.label;return p&&u.push(`<text x="${K/2}" y="${K/2+.5}" text-anchor="middle" dominant-baseline="central" font-family="sans-serif" font-size="${p.size??13}" fill="${p.color}">${Me(p.text)}</text>`),`${o}<g transform="translate(${M(-l/2)} ${M(-c/2)}) scale(${M(l/K)} ${M(c/K)})">${u.join("")}</g>${s}`}case "parallelogram":{let l=r.width,c=r.height,h=l*.2;return `${o}<polygon points="${Ae([[-l/2+h,-c/2],[l/2,-c/2],[l/2-h,c/2],[-l/2,c/2]])}" ${F(a,true)} />${s}`}case "trapezoid":{let l=r.width,c=r.height,h=r.topInset??l*.15;return `${o}<polygon points="${Ae([[-l/2+h,-c/2],[l/2-h,-c/2],[l/2,c/2],[-l/2,c/2]])}" ${F(a,true)} />${s}`}case "uml-class":return `${o}${Ho(r,false)}${s}`;case "uml-interface":return `${o}${Ho(r,true)}${s}`;case "table":return `${o}${As(r)}${s}`;case "mind-map":return Ds(r);case "line":case "arrow":{let l=r,c=l.connectionType||"straight",{raw:h,pts:d,fromN:u,toN:p,fromBox:g,toBox:m}=vs(l,e);if(d.length<2)return "";let f=!!(l.userPoints&&l.userPoints.length),b=Lo(h,c,u,p,false,g,m),x=b;if(f){let P=Lo(d,c,u,p,true,g,m);Wt({userRoute:P,autoRoute:b,base:l.userPointsBase,fromBox:g,toBox:m})||(x=c==="curve"?P:Ee(P));}if(x.length<2)return "";let I=l.style.strokeColor,T=l.style.strokeWidth,w=l.type==="arrow"&&(!!l.dashed||l.arrowHead==="dependency"||l.arrowHead==="realization")?"8,5":Bo(l.style),v=`<path d="${c==="curve"?ks(x):Ps(x)}" fill="none" stroke="${I}" stroke-width="${T}" stroke-linecap="round" stroke-linejoin="round"${w?` stroke-dasharray="${w}"`:""} />`,k=Ls(x,l.arrowHead||"end",I,T);return `${v}${k}`}case "draw":{let l=r,c=l.points;if(!c||c.length<2)return "";let h=Math.cos(l.rotation||0),d=Math.sin(l.rotation||0),u=c.map(g=>({x:g.x*h-g.y*d+l.x,y:g.x*d+g.y*h+l.y}));if(u.length<2)return "";let p=`M ${M(u[0].x)} ${M(u[0].y)}`;for(let g=1;g<u.length-1;g++){let m=(u[g].x+u[g+1].x)/2,f=(u[g].y+u[g+1].y)/2;p+=` Q ${M(u[g].x)} ${M(u[g].y)} ${M(m)} ${M(f)}`;}return p+=` L ${M(u[u.length-1].x)} ${M(u[u.length-1].y)}`,`<path d="${p}" fill="none" stroke="${a.strokeColor}" stroke-width="${a.strokeWidth}" stroke-linecap="round" stroke-linejoin="round" />`}case "text":{let l=r,c=l.fontSize||16,h=l.textColor||Fe,d=Mn(l.text||"",c,l.width,l.height),u="";if(l.highlightColor&&l.highlightColor!=="transparent"){let p=c*.15,g=typeof l.highlightOpacity=="number"?l.highlightOpacity:1,m=g<1?` fill-opacity="${M(g)}"`:"";u+=`<rect x="${M(-l.width/2-p)}" y="${M(-(d.length*c*1.3)/2-p)}" width="${l.width+p*2}" height="${d.length*c*1.3+p*2}" rx="4" fill="${l.highlightColor}"${m} />`;}return u+=Ri(d,c,h),`${o}${u}${s}`}default:{let l=r,c=l.width||100,h=l.height||40,d="";if(l.text){let u=l.fontSize||16,p=Mn(l.text,u,c*.85,h*.85);d+=Ri(p,u,l.textColor||Fe);}return `${o}<rect x="${M(-c/2)}" y="${M(-h/2)}" width="${c}" height="${h}" ${F(a,true)} />${d}${s}`}}}function Li(r,e,t,i){let n=r/2,o=e/2,s=[];for(let a=0;a<t;a++){let l=a*2*Math.PI/t+i;s.push([n*Math.cos(l),o*Math.sin(l)]);}return s}function Rs(r,e){let t=r/2,i=e/2,n=5,o=.4,s=[];for(let a=0;a<n*2;a++){let l=a*Math.PI/n-Math.PI/2,c=a%2===0?1:o;s.push([t*c*Math.cos(l),i*c*Math.sin(l)]);}return s}function _o(r,e={}){let t=e.padding??24,i=e.background===void 0?"#ffffff":e.background??null,n=at(r,t),o=Math.max(1,Math.ceil(n.width)),s=Math.max(1,Math.ceil(n.height)),a=new Map(r.map(u=>[u.id,u])),l=r.map(u=>Hs(u,a)).filter(Boolean).join(`
|
|
7
|
+
`),c=i?`<rect x="${M(n.x)}" y="${M(n.y)}" width="${o}" height="${s}" fill="${i}" />`:"",h=r.map(u=>At(u.type)?.shadow).find(u=>!!u),d=h?`<defs>${Cs(h)}</defs>`:"";return `<?xml version="1.0" encoding="UTF-8"?>
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${s}" viewBox="${M(n.x)} ${M(n.y)} ${o} ${s}" font-family="sans-serif">
|
|
9
|
+
${d?` ${d}
|
|
10
|
+
`:""} ${c}
|
|
11
11
|
${l}
|
|
12
|
-
</svg>`}function
|
|
12
|
+
</svg>`}function Bt(r){return r.toString().padStart(10,"0")}function Es(r,e,t){let i=r.split(",")[1]||"",n=atob(i),o=new Uint8Array(n.length);for(let C=0;C<n.length;C++)o[C]=n.charCodeAt(C);let s=Math.round(e),a=Math.round(t),l=`<< /Type /XObject /Subtype /Image /Width ${s} /Height ${a} /ColorSpace /DeviceRGB /BitsPerComponent 8 /Filter /DCTDecode /Length ${o.length} >>`,c=`q ${s} 0 0 ${a} 0 0 cm /Im0 Do Q`,h=`1 0 obj
|
|
13
13
|
<< /Type /Catalog /Pages 2 0 R >>
|
|
14
14
|
endobj
|
|
15
|
-
`,
|
|
15
|
+
`,d=`2 0 obj
|
|
16
16
|
<< /Type /Pages /Kids [3 0 R] /Count 1 >>
|
|
17
17
|
endobj
|
|
18
|
-
`,
|
|
18
|
+
`,u=`3 0 obj
|
|
19
19
|
<< /Type /Page /Parent 2 0 R /MediaBox [0 0 ${s} ${a}] /Resources << /XObject << /Im0 4 0 R >> >> /Contents 5 0 R >>
|
|
20
20
|
endobj
|
|
21
|
-
`,
|
|
21
|
+
`,p=`4 0 obj
|
|
22
22
|
${l}
|
|
23
23
|
stream
|
|
24
|
-
`,
|
|
24
|
+
`,g=`endstream
|
|
25
25
|
endobj
|
|
26
|
-
`,
|
|
27
|
-
<< /Length ${
|
|
26
|
+
`,m=`5 0 obj
|
|
27
|
+
<< /Length ${c.length} >>
|
|
28
28
|
stream
|
|
29
|
-
${
|
|
29
|
+
${c}
|
|
30
30
|
endstream
|
|
31
31
|
endobj
|
|
32
|
-
`,
|
|
33
|
-
`,
|
|
32
|
+
`,f=`%PDF-1.4
|
|
33
|
+
`,b=f.length,x=b+h.length,I=x+d.length,T=I+u.length,S=T+p.length+o.length+g.length,w=`xref
|
|
34
34
|
0 6
|
|
35
35
|
0000000000 65535 f
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
`+Bt(b)+` 00000 n
|
|
37
|
+
`+Bt(x)+` 00000 n
|
|
38
|
+
`+Bt(I)+` 00000 n
|
|
39
|
+
`+Bt(T)+` 00000 n
|
|
40
|
+
`+Bt(S)+` 00000 n
|
|
41
41
|
trailer
|
|
42
42
|
<< /Size 6 /Root 1 0 R >>
|
|
43
43
|
startxref
|
|
44
|
-
${
|
|
45
|
-
%%EOF`;return new Blob([y+d+u+p+g,o,m+f+x],{type:"application/pdf"})}async function I0(r,e,t={}){if(r.some(o=>o.type==="image")&&await F0(r),e==="svg"){let o=_i(r,t);return new Blob([o],{type:"image/svg+xml;charset=utf-8"})}let i=Fi(r,t);if(e==="png")return S1(i,"image/png");let n=k1(i,"image/jpeg",.92);return F1(n,i.width,i.height)}function z0(r,e){let t=URL.createObjectURL(r),i=document.createElement("a");i.href=t,i.download=e,document.body.appendChild(i),i.click(),document.body.removeChild(i),setTimeout(()=>URL.revokeObjectURL(t),1e3);}function B1(r,e){return !r||!e?r===e:r.length!==e.length?false:r.every((t,i)=>t===e[i])}var N1=360,$i={width:320,height:240},_n="drawui-canvas-data",_1=50,$n=()=>typeof performance<"u"?performance.now():Date.now(),Zn=class{canvas;renderer;camera;tools=new Map;activeTool="select";shapes=[];selectedIds=[];listeners=new Set;notificationListeners=new Set;uiListeners=new Set;isPanning=false;panStart={x:0,y:0};dragStartPositions=new Map;interactionDragging=false;lastClickTime=0;lastClickShapeId=null;editingShapeId=null;textInput=null;textOverlay=null;isNewTextShape=false;originalTextValue="";undoStack=[];redoStack=[];isUndoing=false;brushRect=null;snapGuides=[];connectingTargetId=null;genPreview=null;hoverAnchorShapeId=null;hoverConnectorId=null;eraserPoint=null;eraseFades=new Map;eraseFadeRaf=null;mindMapEditingShapeId=null;mindMapSelectedNode=null;mindMapHoverNode=null;pendingMindMapHandle=null;mindMapNodeDragCandidate=null;isNodeDragging=false;mindMapReorderTarget=null;mindMapReparentPlan=null;tableSelection=null;tableEditing=null;renderScheduled=false;pointerIsDown=false;notifyScheduled=false;persist=true;arrowStyle={connectionType:"straight",arrowHead:"end",dashed:false};stickyNoteColor=i0;imageUploadOption=null;removeImageReadyListener=null;ownImageUrls=new Set;imageInsertSeq=0;imagePasteHandled=false;iconInsertSeq=0;clipboardShapes=[];pasteSeq=0;copiedStyle=null;constructor(e,t={}){this.canvas=e,this.persist=t.persist??!t.shapes,t.theme&&Xt(t.theme),t.language&&Jt(t.language);let i=e.getBoundingClientRect();this.renderer=new Ye(e),this.renderer.resize(i.width,i.height),this.camera=new _e,this.imageUploadOption=t.imageUpload??null,this.removeImageReadyListener=R0(()=>this.requestRender()),window.addEventListener("paste",this.handlePasteEvent);let n={addShape:o=>this.addShape(o),updateShape:(o,s)=>this.updateShape(o,s),deleteShape:o=>this.deleteShape(o),eraseShape:o=>this.eraseShape(o),selectShape:(o,s)=>this.selectShape(o,s),selectShapes:o=>this.selectShapes(o),getShapes:()=>[...this.shapes],getSelectedIds:()=>[...this.selectedIds],setActiveTool:o=>this.setActiveTool(o),screenToPage:o=>this.screenToPage(o),getCamera:()=>this.camera,panBy:(o,s)=>this.panBy(o,s),setCameraPosition:(o,s)=>this.setCameraPosition(o,s),getShapeAtPoint:(o,s)=>this.getShapeAtPoint(o,s),getShapesInBrushRadius:(o,s)=>this.getShapesInBrushRadius(o,s),setEraserPoint:o=>this.setEraserPoint(o),updateArrowBinding:(o,s,a,l)=>this.updateArrowBinding(o,s,a,l),enterEditing:o=>this.enterEditing(o),exitEditing:()=>this.exitEditing(),commitHistory:()=>this.commitHistory(),setBrushRect:o=>this.setBrushRect(o),setSnapGuides:o=>this.setSnapGuides(o),setConnectingTarget:o=>this.setConnectingTarget(o),setGenerationPreview:o=>this.setGenerationPreview(o),setHoverAnchorShape:o=>this.setHoverAnchorShape(o),setHoverConnector:o=>this.setHoverConnector(o),getConnectorRoute:o=>this.getConnectorRoute(o),getAutoConnectorRoute:o=>this.getAutoConnectorRoute(o),getLineStyle:()=>this.lineStyle(),openGenerationMenu:o=>this.openGenerationMenu(o),createGeneratedConnection:(o,s)=>this.createGeneratedConnection(o,s),createFloatingLine:o=>this.createFloatingLine(o),connectToExisting:(o,s,a)=>this.connectToExisting(o,s,a),updateSelectedShapesStyle:o=>this.updateSelectedShapesStyle(o),updateSelectedShapesText:o=>this.updateSelectedShapesText(o),updateConnectionType:o=>this.updateConnectionType(o),getArrowStyle:()=>this.getArrowStyle(),getStickyNoteColor:()=>this.getStickyNoteColor(),getMindMapCursorHitAtPoint:o=>this.getMindMapCursorHitAtPoint(o),selectMindMapNode:(o,s)=>this.selectMindMapNode(o,s),selectTableCell:(o,s,a,l)=>this.selectTableCell(o,s,a,l)};this.tools.set("select",new Vt(n)),this.tools.set("hand",new Ft(n)),this.tools.set("rectangle",new R(n,"rectangle")),this.tools.set("rounded-rectangle",new R(n,"rounded-rectangle")),this.tools.set("circle",new R(n,"circle")),this.tools.set("ellipse",new R(n,"ellipse")),this.tools.set("diamond",new R(n,"diamond")),this.tools.set("triangle",new R(n,"triangle")),this.tools.set("hexagon",new R(n,"hexagon")),this.tools.set("parallelogram",new R(n,"parallelogram")),this.tools.set("trapezoid",new R(n,"trapezoid")),this.tools.set("pentagon",new R(n,"pentagon")),this.tools.set("octagon",new R(n,"octagon")),this.tools.set("star",new R(n,"star")),this.tools.set("cylinder",new R(n,"cylinder")),this.tools.set("cloud",new R(n,"cloud")),this.tools.set("heart",new R(n,"heart")),this.tools.set("block-arrow-right",new R(n,"block-arrow-right")),this.tools.set("block-arrow-left",new R(n,"block-arrow-left")),this.tools.set("block-arrow-up",new R(n,"block-arrow-up")),this.tools.set("block-arrow-down",new R(n,"block-arrow-down")),this.tools.set("block-arrow-double",new R(n,"block-arrow-double")),this.tools.set("right-triangle",new R(n,"right-triangle")),this.tools.set("cross",new R(n,"cross")),this.tools.set("speech-rect",new R(n,"speech-rect")),this.tools.set("speech-round",new R(n,"speech-round")),this.tools.set("cube",new R(n,"cube")),this.tools.set("sector",new R(n,"sector")),this.tools.set("delay",new R(n,"delay")),this.tools.set("predefined-process",new R(n,"predefined-process")),this.tools.set("document",new R(n,"document")),this.tools.set("stadium",new R(n,"stadium")),this.tools.set("class-catalog",new R(n,"class-catalog")),this.tools.set("chevron",new R(n,"chevron")),this.tools.set("brace-left",new R(n,"brace-left")),this.tools.set("brace-right",new R(n,"brace-right")),this.tools.set("envelope",new R(n,"envelope")),this.tools.set("checkbox",new R(n,"checkbox")),this.tools.set("triangular-pyramid",new R(n,"triangular-pyramid")),this.tools.set("quadrangular-pyramid",new R(n,"quadrangular-pyramid")),this.tools.set("cuboid",new R(n,"cuboid")),this.tools.set("sphere",new R(n,"sphere")),this.tools.set("ellipsoid",new R(n,"ellipsoid")),this.tools.set("pie",new R(n,"pie")),this.tools.set("hollow-pie",new R(n,"hollow-pie")),this.tools.set("sticky-note",new R(n,"sticky-note")),this.tools.set("icon",new R(n,"icon")),this.tools.set("image",new R(n,"image")),this.tools.set("uml-class",new R(n,"uml-class")),this.tools.set("uml-interface",new R(n,"uml-interface")),this.tools.set("line",new Bt(n)),this.tools.set("arrow",new Nt(n)),this.tools.set("text",new k0(n)),this.tools.set("pen",new Ve(n,"pen")),this.tools.set("highlighter",new Ve(n,"highlighter")),this.tools.set("eraser",new y0(n)),this.tools.set("mind-map",new R(n,"mind-map")),this.tools.set("table",new R(n,"table")),this.setupEventListeners(),t.shapes?this.shapes=t.shapes.map(o=>({...o,style:{...o.style}})):this.persist&&this.loadFromStorage(),this.render();}setupEventListeners(){this.canvas.addEventListener("pointerdown",this.handlePointerDown),this.canvas.addEventListener("pointerleave",this.handlePointerUp),window.addEventListener("pointermove",this.handlePointerMove),window.addEventListener("pointerup",this.handlePointerUp),window.addEventListener("pointercancel",this.handlePointerUp),window.addEventListener("blur",this.handleWindowBlur),window.addEventListener("pointerdown",this.handleGlobalPointerDown,true),this.canvas.addEventListener("wheel",this.handleWheel,{passive:false}),window.addEventListener("keydown",this.handleKeyDown),window.addEventListener("keyup",this.handleKeyUp),window.addEventListener("resize",this.handleResize);}handleWindowBlur=()=>{this.pointerIsDown=false,this.isPanning=false,this.cancelTransientInteraction(),this.scheduleRender();};handleGlobalPointerDown=e=>{e.target!==this.canvas&&(!e.isPrimary||e.button!==0||(this.pointerIsDown=false,this.isPanning=false,this.cancelTransientInteraction()&&this.scheduleRender()));};shouldRecoverTransient(){let e=this.tools.get(this.activeTool);return !!this.connectingTargetId||this.snapGuides.length>0||!!this.brushRect||!!e&&e.hasTransientState()}cancelTransientInteraction(){let e=!!this.tools.get(this.activeTool)?.cancelTransient(),t=this.clearTransientPreview();return e||t}handlePointerDown=e=>{if(e.button===2){this.clearTransientPreview();return}if(this.editingShapeId)return this.textInput&&e.target===this.textInput,void 0;this.clearTransientPreview(),this.pointerIsDown=true;try{this.canvas.hasPointerCapture(e.pointerId)||this.canvas.setPointerCapture(e.pointerId);}catch{}if(e.button===1||e.button===0&&e.altKey){this.isPanning=true,this.panStart={x:e.clientX,y:e.clientY},this.canvas.setPointerCapture(e.pointerId),this.canvas.style.cursor="grabbing";return}let t=this.screenToPage({x:e.clientX,y:e.clientY}),i=this.activeTool==="select"?this.getMindMapCollapseHitAtPoint(t):null;if(i){this.toggleMindMapCollapse(i.shapeId,i.nodeId);return}let n=this.activeTool==="select"?this.getMindMapHandleAtPoint(t):null;if(n){this.pendingMindMapHandle=n;return}if(this.activeTool==="select"){let s=Date.now(),a=this.getShapeAtPoint(t);if(s-this.lastClickTime<400&&this.lastClickShapeId&&a&&!a.locked&&a.id===this.lastClickShapeId&&this.canEditShape(a)){this.enterEditing(a.id),this.lastClickTime=0,this.lastClickShapeId=null;return}if(this.lastClickTime=s,this.lastClickShapeId=a&&!a.locked?a.id:null,a&&a.type==="mind-map"){let l=this.getMindMapNodeBoxAtPoint(t);if(l&&l.shapeId===a.id){this.lastClickTime=s,this.lastClickShapeId=a.id,this.selectedIds.includes(a.id)||(this.selectedIds=[a.id]),this.mindMapSelectedNode=l;let d=Oe(a.root,l.nodeId);this.mindMapNodeDragCandidate={shapeId:l.shapeId,nodeId:l.nodeId,startPage:t,direction:d?.direction??"right",siblingIds:d?.siblings.map(u=>u.id)??[]},this.notifyListeners(),this.render();return}}if(a&&!a.locked&&(this.dragStartPositions.clear(),this.selectedIds.forEach(l=>{let h=this.shapes.find(d=>d.id===l);h&&this.dragStartPositions.set(l,{x:h.x,y:h.y});}),a.type==="table"&&!this.isTableMoveHandleHit(a.id,t))){let l=this.getTableAtPoint(t);l&&this.selectTableCell(l.shapeId,l.row,l.col,e.shiftKey);}}this.tools.get(this.activeTool)?.onPointerDown(t,e),this.updateCursor(t),this.render();};handlePointerMove=e=>{if(this.editingShapeId||(e.buttons===0&&this.pointerIsDown&&(this.pointerIsDown=false,this.setInteractionDragging(false),this.shouldRecoverTransient()&&(this.cancelTransientInteraction(),this.scheduleRender())),!this.pointerIsDown&&this.shouldRecoverTransient()&&this.cancelTransientInteraction(),!this.pointerIsDown&&e.target!==this.canvas))return;if(this.isPanning){let n=e.clientX-this.panStart.x,o=e.clientY-this.panStart.y;this.camera.translate(n,o),this.panStart={x:e.clientX,y:e.clientY},this.scheduleRender(),this.notifyListeners(),this.setInteractionDragging(false);return}let t=this.screenToPage({x:e.clientX,y:e.clientY});if(this.mindMapNodeDragCandidate){let{shapeId:n,nodeId:o,startPage:s,direction:a,siblingIds:l}=this.mindMapNodeDragCandidate,h=t.x-s.x,d=t.y-s.y;if(!this.isNodeDragging){if(Math.abs(h)<5&&Math.abs(d)<5)return;this.isNodeDragging=true;}let u=this.shapes.find(p=>p.id===n);if(u&&u.type==="mind-map"){let p=u,g=this.pageToMindMapLocal(p,t),f=Z(p.root).positions,y=this.hitMindMapNodeBox(p.root,f,g,o,0),k=y?null:this.hitMindMapNodeBox(p.root,f,g,o);if(y){let x=this.mindMapChildGroup(p.root,f,y,g),C=x.childIds.length?this.calcMindMapReorderTarget(f,x.childIds,x.direction,g.x,g.y,o):0;this.mindMapReparentPlan={shapeId:n,nodeId:o,mode:"child",targetParentId:y,direction:x.direction,insertIndex:C},this.setReorderIndicator({shapeId:n,nodeId:o,targetIndex:C,direction:x.direction,siblingIds:this.mindMapSortByCross(x.childIds,x.direction,f),childParentId:y}),this.updateCursor(t),this.setInteractionDragging(this.isNodeDragging);return}let S=k?Oe(p.root,k):null,v=Oe(p.root,o),I=!!S&&!!v&&S.parent.id===v.parent.id&&S.direction===v.direction;if(S&&!I){let x=S.siblings.map(z=>z.id),C=this.calcMindMapReorderTarget(f,x,S.direction,g.x,g.y,o);this.mindMapReparentPlan={shapeId:n,nodeId:o,mode:"sibling",targetParentId:S.parent.id,direction:S.direction,insertIndex:C},this.setReorderIndicator({shapeId:n,nodeId:o,targetIndex:C,direction:S.direction,siblingIds:this.mindMapSortByCross(x,S.direction,f),childParentId:S.parent.id}),this.updateCursor(t),this.setInteractionDragging(this.isNodeDragging);return}this.mindMapReparentPlan=null;let w=this.calcMindMapReorderTarget(f,l,a,g.x,g.y,o);this.setReorderIndicator({shapeId:n,nodeId:o,targetIndex:w,direction:a,siblingIds:this.mindMapSortByCross(l,a,f)});}this.updateCursor(t),this.setInteractionDragging(this.isNodeDragging);return}let i=this.tools.get(this.activeTool);i?.onPointerMove(t,e),this.updateCursor(t),this.scheduleRender(),this.setInteractionDragging(!!i?.isDragging?.());};handlePointerUp=e=>{if(e.type==="pointerleave"){if(this.mindMapHoverNode=null,this.pointerIsDown){this.scheduleRender();return}}else {if(!this.pointerIsDown&&e.target!==this.canvas)return;this.canvas.hasPointerCapture(e.pointerId)&&this.canvas.releasePointerCapture(e.pointerId);}if(this.pointerIsDown=false,this.setInteractionDragging(false),this.editingShapeId)return;if(this.isPanning){this.isPanning=false,this.updateCursor(this.screenToPage({x:e.clientX,y:e.clientY}));return}if(this.pendingMindMapHandle){let n=this.pendingMindMapHandle;this.pendingMindMapHandle=null;let o=this.screenToPage({x:e.clientX,y:e.clientY}),s=this.getMindMapHandleAtPoint(o);s&&s.shapeId===n.shapeId&&s.nodeId===n.nodeId&&s.kind===n.kind&&s.direction===n.direction&&this.addMindMapNodeFromHandle(s),this.updateCursor(o),this.scheduleRender();return}if(this.mindMapNodeDragCandidate){let n=this.mindMapReparentPlan,o=this.mindMapReorderTarget,{shapeId:s,nodeId:a}=this.mindMapNodeDragCandidate;this.mindMapNodeDragCandidate=null,this.isNodeDragging=false,this.mindMapReparentPlan=null,n&&n.shapeId===s&&n.nodeId===a?this.moveMindMapNodeToParent(s,a,n.targetParentId,n.direction,n.insertIndex):o&&o.shapeId===s&&o.nodeId===a?this.reorderMindMapNode(s,a,o.targetIndex):(this.mindMapReorderTarget=null,this.scheduleRender());return}let t=this.screenToPage({x:e.clientX,y:e.clientY});this.tools.get(this.activeTool)?.onPointerUp(t,e),this.updateCursor(t),this.scheduleRender();};updateCursor(e){let i=this.tools.get(this.activeTool)?.getCursor(e)??"default";if(this.canvas.style.cursor!==i&&(this.canvas.style.cursor=i),!this.pointerIsDown){let n=this.getMindMapCursorHitAtPoint(e);(n?.shapeId!==this.mindMapHoverNode?.shapeId||n?.nodeId!==this.mindMapHoverNode?.nodeId)&&(this.mindMapHoverNode=n,this.scheduleRender());}}handleWheel=e=>{if(e.preventDefault(),e.ctrlKey||e.metaKey){let n=e.deltaY>0?.9:1.1;this.camera.zoomAt({x:e.clientX,y:e.clientY},n),this.scheduleRender(),this.notifyListeners();return}let t=e.deltaX||0,i=e.deltaY||0;e.deltaMode===1?(t*=40,i*=40):e.deltaMode===2&&(t*=120,i*=120),e.shiftKey&&(t=t||i,i=0),this.camera.translate(-t,-i),this.scheduleRender(),this.notifyListeners();};handleKeyDown=e=>{if(this.editingShapeId)return;let t=e.target;if(t&&(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable))return;if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()==="z"){e.preventDefault(),e.shiftKey?this.redo():this.undo();return}if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()==="y"){e.preventDefault(),this.redo();return}if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()==="s"){e.preventDefault(),this.saveToStorage();return}let i=e.ctrlKey||e.metaKey;if(i&&e.altKey&&e.key.toLowerCase()==="c"){e.preventDefault(),this.copyStyle();return}if(i&&e.altKey&&e.key.toLowerCase()==="v"){e.preventDefault(),this.pasteStyle();return}if(i&&e.altKey&&e.key.toLowerCase()==="l"){e.preventDefault();let o=this.getSelectedShapes();o.length>0&&this.setSelectedShapesLocked(!o.every(s=>s.locked));return}if(i&&!e.altKey&&!e.shiftKey&&e.key.toLowerCase()==="c"){e.preventDefault(),this.copySelected();return}if(i&&!e.altKey&&e.key.toLowerCase()==="v"){e.preventDefault(),this.imagePasteHandled=false,setTimeout(()=>{this.imagePasteHandled||this.paste(),this.imagePasteHandled=false;},0);return}if(i&&!e.altKey&&e.key.toLowerCase()==="d"){e.preventDefault(),this.duplicateSelected();return}if(i&&!e.altKey&&e.key.toLowerCase()==="g"){e.preventDefault(),e.shiftKey?this.ungroupSelected():this.groupSelected();return}if(e.shiftKey&&!i&&!e.altKey){let o=e.key.toLowerCase();if(o==="h"){e.preventDefault(),this.flipSelected("horizontal");return}if(o==="v"){e.preventDefault(),this.flipSelected("vertical");return}}if(!e.ctrlKey&&!e.metaKey&&!e.altKey){if(e.key==="v"||e.key==="V"){this.setActiveTool("select"),e.preventDefault();return}if(e.key==="h"||e.key==="H"){this.setActiveTool("hand"),e.preventDefault();return}if(e.key==="n"||e.key==="N"){this.setActiveTool("sticky-note"),e.preventDefault();return}if(e.key==="a"||e.key==="A"){this.setActiveTool("arrow"),e.preventDefault();return}if(e.key==="t"||e.key==="T"){this.setActiveTool("text"),e.preventDefault();return}if(e.key==="e"||e.key==="E"){this.setActiveTool("eraser"),e.preventDefault();return}}if(e.key==="Delete"||e.key==="Backspace"){let o=this.mindMapSelectedNode;if(o){let s=this.shapes.find(a=>a.id===o.shapeId);if(s&&s.type==="mind-map"){e.preventDefault(),this.deleteMindMapNode(o.shapeId,o.nodeId);return}}}this.tools.get(this.activeTool)?.onKeyDown(e),this.scheduleRender();};handleKeyUp=e=>{if(this.editingShapeId)return;let t=e.target;if(t&&(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable))return;this.tools.get(this.activeTool)?.onKeyUp(e),this.scheduleRender();};handleResize=()=>{this.renderer.resize(window.innerWidth,window.innerHeight),this.scheduleRender();};screenToPage(e){let t=this.canvas.getBoundingClientRect();return this.camera.screenToPage({x:e.x-t.left,y:e.y-t.top})}addShape(e){this.shapes.push(e),this.notifyListeners();}updateShape(e,t){let i=this.shapes.findIndex(n=>n.id===e);if(i!==-1){let n=this.shapes[i];this.shapes[i]={...n,...t};let o=this.shapes[i],s=t;if(o.type==="table"){let a=s.rowHeights!==void 0&&!B1(s.rowHeights,n.rowHeights),l=s.cells!==void 0||s.colWidths!==void 0||s.fontSize!==void 0;!a&&l&&this.autoGrowTableRows(i);}(t.x!==void 0||t.y!==void 0)&&this.updateBoundArrows(e),this.notifyListeners();}}tableTopLeftAnchored(e,t,i){let n=(t-e.width)/2,o=(i-e.height)/2,s=Math.cos(e.rotation),a=Math.sin(e.rotation);return {x:e.x+n*s-o*a,y:e.y+n*a+o*s}}writeTable(e,t,i){let n=lt(i.colWidths),o=ct(i.rowHeights),s=this.tableTopLeftAnchored(t,n,o);this.shapes[e]={...t,cells:i.cells,rowHeights:i.rowHeights,colWidths:i.colWidths,width:n,height:o,x:s.x,y:s.y},this.updateBoundArrows(t.id);}autoGrowTableRows(e){let t=this.shapes[e];if(!t||t.type!=="table")return;let i=yn(t);if(!i)return;let n=t;this.writeTable(e,n,{cells:n.cells,rowHeights:i,colWidths:n.colWidths});}updateBoundArrows(e){let t=this.shapes.find(i=>i.id===e);t&&this.shapes.forEach(i=>{if(i.type==="arrow"){let n=i,o={};if(n.startBinding?.toShapeId===e){let s=this.getBindingPosition(t,n.startBinding.handle||"top");o.points=n.points.map((a,l)=>l===0?s:a);}if(n.endBinding?.toShapeId===e){let s=this.getBindingPosition(t,n.endBinding.handle||"top"),a=o.points||[...n.points];o.points=a.map((l,h)=>h===a.length-1?s:l);}o.points&&(this.shapes[this.shapes.indexOf(i)]={...n,...o});}});}getBindingPosition(e,t){switch(e.type){case "rectangle":case "sticky-note":case "icon":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "table":switch(t){case "top":return {x:e.x,y:e.y-e.height/2};case "bottom":return {x:e.x,y:e.y+e.height/2};case "left":return {x:e.x-e.width/2,y:e.y};case "right":return {x:e.x+e.width/2,y:e.y}}case "circle":switch(t){case "top":return {x:e.x,y:e.y-e.radius};case "bottom":return {x:e.x,y:e.y+e.radius};case "left":return {x:e.x-e.radius,y:e.y};case "right":return {x:e.x+e.radius,y:e.y}}case "hexagon":switch(t){case "top":return {x:e.x,y:e.y-e.height/2};case "bottom":return {x:e.x,y:e.y+e.height/2};case "left":return {x:e.x-e.width/2,y:e.y};case "right":return {x:e.x+e.width/2,y:e.y}}default:return {x:e.x,y:e.y}}}deleteShape(e){this.shapes=this.shapes.filter(t=>t.id!==e),this.selectedIds=this.selectedIds.filter(t=>t!==e),this.shapes=this.shapes.map(t=>{if(t.type==="arrow"){let i=t;if(i.startBinding?.toShapeId===e)return {...i,startBinding:void 0};if(i.endBinding?.toShapeId===e)return {...i,endBinding:void 0}}return t}),this.notifyListeners(),this.scheduleRender();}eraseShape(e){this.eraseFades.has(e)||this.shapes.some(t=>t.id===e)&&(this.eraseFades.set(e,$n()),this.selectedIds.includes(e)&&(this.selectedIds=this.selectedIds.filter(t=>t!==e)),this.scheduleRender(),this.tickEraseFade());}tickEraseFade(){if(this.eraseFadeRaf!==null)return;let e=()=>{this.eraseFadeRaf=null;let t=$n(),i=false;for(let[n,o]of [...this.eraseFades])t-o>=Tn?(this.eraseFades.delete(n),this.deleteShape(n)):i=true;this.scheduleRender(),i?this.eraseFadeRaf=requestAnimationFrame(e):this.notifyListeners();};this.eraseFadeRaf=requestAnimationFrame(e);}eraseFadeMap(){if(this.eraseFades.size===0)return;let e=$n(),t=new Map;for(let[i,n]of this.eraseFades)t.set(i,Math.max(0,1-(e-n)/Tn));return t}clearEraseFades(){this.eraseFades.size!==0&&(this.eraseFades.clear(),this.eraseFadeRaf!==null&&(cancelAnimationFrame(this.eraseFadeRaf),this.eraseFadeRaf=null));}selectShape(e,t){if(!e)this.selectedIds=[];else {let i=this.getGroupMembers(e);if(t){let n=i.filter(o=>!this.selectedIds.includes(o));n.length>0?this.selectedIds=[...this.selectedIds,...n]:this.selectedIds=this.selectedIds.filter(o=>!i.includes(o));}else this.selectedIds=i;}this.notifyListeners(),this.scheduleRender();}selectShapes(e){let t=new Set;for(let i of e)for(let n of this.getGroupMembers(i))t.add(n);this.selectedIds=[...t],this.notifyListeners(),this.scheduleRender();}getGroupMembers(e){let t=this.shapes.find(i=>i.id===e);return !t||!t.groupId?[e]:this.shapes.filter(i=>i.groupId===t.groupId&&!i.locked).map(i=>i.id)}getSelectedGroupId(){let e=this.getSelectedShapes();if(e.length===0)return null;let t=e[0].groupId;return !t||!e.every(n=>n.groupId===t)||this.shapes.filter(n=>n.groupId===t).length!==e.length?null:t}hasSelectedGroup(){return this.getSelectedShapes().some(e=>!!e.groupId)}groupMemberIds(e){return this.shapes.filter(t=>t.groupId===e).map(t=>t.id)}groupSelected(){let e=this.getSelectedShapes();if(e.length<2)return null;let t=`grp_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;this.commitHistory();for(let i of e){let n=this.shapes.findIndex(o=>o.id===i.id);n!==-1&&(this.shapes[n]={...this.shapes[n],groupId:t,locked:true});}return this.selectedIds=[],this.notifyListeners(),this.render(),t}ungroupSelected(){let e=new Set(this.getSelectedShapes().filter(t=>!!t.groupId).map(t=>t.groupId));return this.ungroupIds([...e])}ungroupIds(e){if(e.length===0)return false;let t=new Set;for(let i of e)for(let n of this.groupMemberIds(i))t.add(n);if(t.size===0)return false;this.commitHistory();for(let i of this.shapes.keys()){let n=this.shapes[i];if(!t.has(n.id))continue;let o={...n};delete o.groupId,n.locked&&n.groupId&&(o.locked=false),this.shapes[i]=o;}return this.notifyListeners(),this.render(),true}setGroupLocked(e,t){let i=this.groupMemberIds(e);if(i.length===0)return false;this.commitHistory();for(let n of this.shapes.keys())i.includes(this.shapes[n].id)&&(this.shapes[n]={...this.shapes[n],locked:t});return t?this.selectedIds=this.selectedIds.filter(n=>!i.includes(n)):this.selectedIds=[...i],this.notifyListeners(),this.render(),true}selectShapeRaw(e){this.selectedIds=e?[e]:[],this.notifyListeners(),this.scheduleRender();}getGroupIdOfSelected(){for(let e of this.getSelectedShapes())if(e.groupId)return e.groupId;return null}setBrushRect(e){this.brushRect=e,this.scheduleRender();}setSnapGuides(e){this.snapGuides=e;}setConnectingTarget(e){this.connectingTargetId!==e&&(this.connectingTargetId=e,this.scheduleRender());}setGenerationPreview(e){let t=this.genPreview;t?.from.x===e?.from.x&&t?.from.y===e?.from.y&&t?.to.x===e?.to.x&&t?.to.y===e?.to.y&&t?.type===e?.type&&t?.targetShapeId===e?.targetShapeId&&t?.dragging===e?.dragging&&t?.sourceEdge===e?.sourceEdge||(this.genPreview=e,this.scheduleRender());}setHoverAnchorShape(e){this.hoverAnchorShapeId!==e&&(this.hoverAnchorShapeId=e,this.scheduleRender());}setHoverConnector(e){this.hoverConnectorId!==e&&(this.hoverConnectorId=e,this.scheduleRender());}getConnectorRoute(e){let t=this.shapes.find(n=>n.id===e);if(!t)return [];let i=new Map(this.shapes.map(n=>[n.id,n]));return this.renderer.getConnectorRoute(t,i)}getAutoConnectorRoute(e){let t=this.shapes.find(n=>n.id===e);if(!t)return [];let i=new Map(this.shapes.map(n=>[n.id,n]));return this.renderer.getConnectorRoute(t,i,{ignoreUserPoints:true})}clearTransientPreview(){return !!this.genPreview||!!this.connectingTargetId||this.snapGuides.length>0||!!this.brushRect||!!this.hoverAnchorShapeId||!!this.hoverConnectorId||!!this.pendingMindMapHandle?(this.genPreview=null,this.connectingTargetId=null,this.snapGuides=[],this.brushRect=null,this.hoverAnchorShapeId=null,this.hoverConnectorId=null,this.pendingMindMapHandle=null,true):false}openGenerationMenu(e){let t=this.camera.getZoom(),i=(e.context.to.x+this.camera.x)*t,n=(e.context.to.y+this.camera.y)*t;this.emitUi({kind:"shapeTypeMenu",screenX:i,screenY:n,context:e.context,existingArrowId:e.existingArrowId,defaultShapeType:e.defaultShapeType});}lineStyle(){return {strokeColor:"#1f2937",fillColor:"transparent",strokeWidth:2,strokeDash:null}}computeSourceBinding(e){if(!e.sourceShapeId||!e.edge)return;let t=this.shapes.find(n=>n.id===e.sourceShapeId);if(!t)return;let i={n:"top",e:"right",s:"bottom",w:"left"};return {toShapeId:t.id,handle:i[e.edge]}}connectHandle(e,t,i){return f0(e,t,i)}createFloatingLine(e){this.commitHistory();let t=e.from,i=e.to,n=`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,o={id:n,type:"arrow",x:t.x,y:t.y,points:[{x:t.x,y:t.y},{x:i.x,y:i.y}],rotation:0,style:this.lineStyle(),startBinding:this.computeSourceBinding(e),connectionType:"polyline",arrowHead:this.arrowStyle.arrowHead,dashed:this.arrowStyle.dashed};return this.addShape(o),this.selectedIds=[n],this.notifyListeners(),this.render(),n}createGeneratedConnection(e,t){this.commitHistory();let i=t.type,n,o;e.sourceShapeId&&(o=this.shapes.find(d=>d.id===e.sourceShapeId),o&&u0(o.type)&&(n={...o.style}));let s=n?void 0:this.stickyNoteColor,a=He(i,e.to,n,s,p0(i,o));this.addShape(a);let l=e.from,h={toShapeId:a.id,handle:this.connectHandle(l,e.to,e.edge),auto:true};if(t.existingArrowId)this.updateArrowBinding(t.existingArrowId,"end",a.id,{toShapeId:a.id,handle:this.connectHandle(l,e.to,e.edge),auto:true});else {let u={id:`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,type:"arrow",x:l.x,y:l.y,points:[{x:l.x,y:l.y},{x:e.to.x,y:e.to.y}],rotation:0,style:this.lineStyle(),startBinding:this.computeSourceBinding(e),endBinding:h,connectionType:"polyline",arrowHead:this.arrowStyle.arrowHead,dashed:this.arrowStyle.dashed};this.addShape(u);}this.selectedIds=[a.id],this.notifyListeners(),this.render();}connectToExisting(e,t,i){this.commitHistory();let n=this.shapes.find(d=>d.id===t);if(!n)return;let o=e.from,s=i?.handle??this.connectHandle(o,{x:n.x,y:n.y},e.edge),a=this.getBindingPosition(n,s),l=`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,h={id:l,type:"arrow",x:o.x,y:o.y,points:[{x:o.x,y:o.y},{x:a.x,y:a.y}],rotation:0,style:this.lineStyle(),startBinding:this.computeSourceBinding(e),endBinding:{toShapeId:t,handle:s,auto:!i||!i.handle&&!i.isPrecise},connectionType:"polyline",arrowHead:this.arrowStyle.arrowHead,dashed:this.arrowStyle.dashed};this.addShape(h),this.selectedIds=[l],this.notifyListeners(),this.render();}subscribeUi(e){return this.uiListeners.add(e),()=>this.uiListeners.delete(e)}emitUi(e){this.uiListeners.forEach(t=>t(e));}setInteractionDragging(e){e!==this.interactionDragging&&(this.interactionDragging=e,this.emitUi({kind:"drag",active:e}));}updateSelectedShapesStyle(e){this.selectedIds.length!==0&&(this.commitHistory(),this.selectedIds.forEach(t=>{let i=this.shapes.findIndex(n=>n.id===t);i!==-1&&(this.shapes[i]={...this.shapes[i],style:{...this.shapes[i].style,...e}});}),this.notifyListeners(),this.render());}updateSelectedShapesText(e){this.selectedIds.length!==0&&(this.commitHistory(),this.selectedIds.forEach(t=>{let i=this.shapes.findIndex(n=>n.id===t);i!==-1&&(this.shapes[i]={...this.shapes[i],...e});}),this.notifyListeners(),this.render());}updateConnectionType(e){this.selectedIds.length!==0&&(this.commitHistory(),this.selectedIds.forEach(t=>{let i=this.shapes.findIndex(n=>n.id===t);if(i!==-1){let n=this.shapes[i];(n.type==="line"||n.type==="arrow")&&(this.shapes[i]={...n,connectionType:e});}}),this.notifyListeners(),this.render());}getSelectedShapes(){return this.shapes.filter(e=>this.selectedIds.includes(e.id))}isEditing(){return this.editingShapeId!==null}deleteSelected(){let e=this.selectedIds.filter(t=>{let i=this.shapes.find(n=>n.id===t);return i&&!i.locked});return e.length===0?false:(this.commitHistory(),e.forEach(t=>this.deleteShape(t)),this.releaseUnusedImageUrls(),true)}copySelected(){let e=this.getSelectedShapes().filter(t=>!t.locked);return e.length===0?false:(this.clipboardShapes=this.cloneShapes(e),this.pasteSeq=0,true)}hasClipboard(){return this.clipboardShapes.length>0}cloneWithOffset(e,t){let i=()=>`shape_${Date.now()}_${Math.random().toString(36).slice(2,9)}`,n=new Map,o=()=>`grp_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return this.cloneShapes(e).map(s=>{let a={...s,id:i()};if(s.groupId){let l=n.get(s.groupId);l||(l=o(),n.set(s.groupId,l)),a.groupId=l;}return a.x+=t,a.y+=t,Array.isArray(a.points)&&(a.points=a.points.map(l=>({x:l.x+t,y:l.y+t}))),Array.isArray(a.userPoints)&&(a.userPoints=a.userPoints.map(l=>({x:l.x+t,y:l.y+t}))),delete a.startBinding,delete a.endBinding,a})}paste(){if(this.clipboardShapes.length===0)return false;let e=20*(this.pasteSeq+1);this.pasteSeq+=1,this.commitHistory();let t=this.cloneWithOffset(this.clipboardShapes,e);return this.shapes.push(...t),this.selectedIds=t.map(i=>i.id),this.notifyListeners(),this.render(),true}duplicateSelected(){let e=this.getSelectedShapes().filter(i=>!i.locked);if(e.length===0)return false;this.commitHistory();let t=this.cloneWithOffset(e,20);return this.shapes.push(...t),this.selectedIds=t.map(i=>i.id),this.notifyListeners(),this.render(),true}async copySelectedAsImage(){let e=this.getSelectedShapes().filter(t=>!t.locked);if(e.length===0)return false;try{if(!navigator.clipboard||typeof ClipboardItem>"u")return !1;let t=await I0(e,"png",{background:null,padding:16});return await navigator.clipboard.write([new ClipboardItem({"image/png":t})]),!0}catch{return false}}copyStyle(){let e=this.getSelectedShapes().find(t=>!t.locked);return e?(this.copiedStyle={style:{...e.style},...e.textColor!==void 0?{textColor:e.textColor}:{},...e.fontSize!==void 0?{fontSize:e.fontSize}:{}},true):false}hasCopiedStyle(){return this.copiedStyle!==null}pasteStyle(){if(!this.copiedStyle||this.selectedIds.length===0)return false;this.commitHistory();let e=this.copiedStyle;return this.selectedIds.forEach(t=>{let i=this.shapes.find(n=>n.id===t);i&&this.updateShape(t,{style:{...i.style,...e.style},...e.textColor!==void 0?{textColor:e.textColor}:{},...e.fontSize!==void 0?{fontSize:e.fontSize}:{}});}),true}flipSelected(e){let t=this.getSelectedShapes().filter(i=>!i.locked&&$0(i.type));return t.length===0?false:(this.commitHistory(),t.forEach(i=>{this.updateShape(i.id,e==="horizontal"?{flipX:!i.flipX}:{flipY:!i.flipY});}),true)}rotateSelected(e){let t=this.getSelectedShapes().filter(o=>!o.locked);if(t.length===0)return false;this.commitHistory();let i=e*Math.PI/180,n=Math.PI*2;return t.forEach(o=>{this.updateShape(o.id,{rotation:((o.rotation+i)%n+n)%n});}),true}rotateSelected90(e=true){return this.rotateSelected(e?90:-90)}setSelectedShapesLocked(e){let t=this.getSelectedShapes();return t.length===0?false:(this.commitHistory(),t.forEach(i=>this.updateShape(i.id,{locked:e})),e&&(this.selectedIds=[],this.notifyListeners(),this.render()),true)}setShapeLocked(e,t){let i=this.shapes.find(n=>n.id===e);if(!i)return false;if(this.commitHistory(),this.updateShape(e,{locked:t}),t){let n=i.groupId?this.groupMemberIds(i.groupId):[e];this.selectedIds=this.selectedIds.filter(o=>!n.includes(o)),this.notifyListeners();}return this.render(),true}isShapeLocked(e){return !!this.shapes.find(t=>t.id===e)?.locked}bringToFront(){if(this.selectedIds.length===0)return false;this.commitHistory();let e=new Set(this.selectedIds),t=this.shapes.filter(n=>e.has(n.id)),i=this.shapes.filter(n=>!e.has(n.id));return this.shapes=[...i,...t],this.notifyListeners(),this.render(),true}sendToBack(){if(this.selectedIds.length===0)return false;this.commitHistory();let e=new Set(this.selectedIds),t=this.shapes.filter(n=>e.has(n.id)),i=this.shapes.filter(n=>!e.has(n.id));return this.shapes=[...t,...i],this.notifyListeners(),this.render(),true}bringForward(){if(this.selectedIds.length===0)return false;this.commitHistory();let e=new Set(this.selectedIds),t=[...this.shapes];for(let i=t.length-2;i>=0;i--)e.has(t[i].id)&&!e.has(t[i+1].id)&&([t[i],t[i+1]]=[t[i+1],t[i]]);return this.shapes=t,this.notifyListeners(),this.render(),true}sendBackward(){if(this.selectedIds.length===0)return false;this.commitHistory();let e=new Set(this.selectedIds),t=[...this.shapes];for(let i=1;i<t.length;i++)e.has(t[i].id)&&!e.has(t[i-1].id)&&([t[i],t[i-1]]=[t[i-1],t[i]]);return this.shapes=t,this.notifyListeners(),this.render(),true}updateArrowHeadType(e){if(this.selectedIds.length===0)return;this.commitHistory();let t=e==="dependency"||e==="realization";this.selectedIds.forEach(i=>{let n=this.shapes.findIndex(o=>o.id===i);if(n!==-1){let o=this.shapes[n];o.type==="arrow"&&(this.shapes[n]=t?{...o,arrowHead:e,dashed:true}:{...o,arrowHead:e});}}),this.notifyListeners(),this.render();}updateArrowStyle(e){this.selectedIds.length!==0&&(this.commitHistory(),this.selectedIds.forEach(t=>{let i=this.shapes.findIndex(a=>a.id===t);if(i===-1)return;let n=this.shapes[i];if(n.type!=="arrow")return;let o=e.arrowHead??n.arrowHead??"end",s=o==="dependency"||o==="realization";this.shapes[i]={...n,...e,arrowHead:o,dashed:s?true:e.dashed??n.dashed??false};}),this.notifyListeners(),this.render());}getArrowStyle(){return {...this.arrowStyle}}setArrowStyle(e){let t={...this.arrowStyle,...e};(t.arrowHead==="dependency"||t.arrowHead==="realization")&&(t.dashed=true),this.arrowStyle=t,this.notifyListeners();}getStickyNoteColor(){return this.stickyNoteColor}insertIcon(e,t=dn){let i=Ue(e);if(!i||!hn(e))return;let n=this.viewportCenter(),o=this.iconInsertSeq++%6*14,s=un(i),a={id:`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,type:"icon",iconId:e,x:n.x+o,y:n.y+o,width:t,height:t,rotation:0,style:{strokeColor:s,fillColor:s,fillOpacity:1,strokeWidth:2,strokeDash:null}};return this.commitHistory(),this.addShape(a),this.selectShape(a.id,false),this.setActiveTool("select"),a.id}setImageUpload(e){this.imageUploadOption=e??null;}getImageUpload(){return this.imageUploadOption}hasImageUploader(){return !!this.imageUploadOption}getTemporaryImageSrcs(){return _0(this.shapes)}hasTemporaryImages(){return this.getTemporaryImageSrcs().length>0}insertImageShape(e){let t=e.naturalWidth??0,i=e.naturalHeight??0,n=$i.width,o=$i.height;if(t>0&&i>0){let h=Math.min(1,N1/Math.max(t,i));n=Math.max(24,Math.round(t*h)),o=Math.max(24,Math.round(i*h));}let s=e.at??this.viewportCenter(),a=this.imageInsertSeq++%6*16,l={id:`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,type:"image",src:e.src,...e.temporary?{temporary:true}:{},...t>0?{naturalWidth:t}:{},...i>0?{naturalHeight:i}:{},x:s.x+a,y:s.y+a,width:n,height:o,rotation:0,borderRadius:4,style:{strokeColor:"transparent",fillColor:"#f3f4f6",fillOpacity:1,strokeWidth:0,strokeDash:null}};return this.commitHistory(),this.addShape(l),this.selectShape(l.id,false),this.setActiveTool("select"),l.id}async insertImageFile(e,t){if(!e||!/^image\//.test(e.type||""))throw new Error("\u4E0D\u662F\u56FE\u7247\u6587\u4EF6");let i=typeof this.imageUploadOption=="object"&&this.imageUploadOption?this.imageUploadOption.maxSizeBytes??31457280:31457280;if(e.size>i)throw new Error(`image.tooLarge: \u56FE\u7247\u5927\u5C0F ${(e.size/1024/1024).toFixed(2)} MB \u8D85\u8FC7\u4E0A\u9650 ${(i/1024/1024).toFixed(2)} MB`);let n,o=false;this.imageUploadOption?n=await qn(this.imageUploadOption,e):(n=URL.createObjectURL(e),jn(n),this.ownImageUrls.add(n),o=true);let s=await Je(n);return this.insertImageShape({src:n,naturalWidth:s?.width,naturalHeight:s?.height,temporary:o,at:t})}async insertImageFiles(e,t){let i=Array.from(e).filter(o=>!!o&&/^image\//.test(o.type||"")),n=[];for(let o of i)n.push(await this.insertImageFile(o,t));return n}async insertImageFromUrl(e,t){if(!e)throw new Error("\u56FE\u7247\u5730\u5740\u4E3A\u7A7A");let i=await Je(e);return this.insertImageShape({src:e,naturalWidth:i?.width,naturalHeight:i?.height,temporary:e.startsWith("blob:"),at:t})}releaseUnusedImageUrls(){if(this.ownImageUrls.size===0)return;let e=new Set(this.shapes.filter(t=>t.type==="image").map(t=>t.src));for(let t of Array.from(this.ownImageUrls))e.has(t)||(this.ownImageUrls.delete(t),N0(t));}handlePasteEvent=e=>{if(this.editingShapeId)return;let t=e.target;if(t&&(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable))return;let i=e.clipboardData?.items;if(!i)return;let n=[];for(let o of Array.from(i))if(o.kind==="file"&&(o.type||"").startsWith("image/")){let s=o.getAsFile();s&&n.push(s);}n.length!==0&&(e.preventDefault(),this.imagePasteHandled=true,this.insertImageFiles(n).catch(o=>{this.emitUi({kind:"imageError",message:o instanceof Error?o.message:String(o)});}));};viewportCenter(){let e=this.canvas.getBoundingClientRect();return this.camera.screenToPage({x:e.width/2,y:e.height/2})}setStickyNoteColor(e){if(!an(e))return;let t=e.trim().toLowerCase();t!==this.stickyNoteColor&&(this.stickyNoteColor=t,this.notifyListeners());}updateArrowDashed(e){this.selectedIds.length!==0&&(this.commitHistory(),this.selectedIds.forEach(t=>{let i=this.shapes.findIndex(n=>n.id===t);if(i!==-1){let n=this.shapes[i];n.type==="arrow"&&(this.shapes[i]={...n,dashed:e});}}),this.notifyListeners(),this.render());}updateUmlClass(e,t){let i=this.shapes.findIndex(d=>d.id===e);if(i===-1)return;let n=this.shapes[i];if(n.type!=="uml-class")return;this.commitHistory();let o=t.className??n.className,s=t.attributes??n.attributes,a=t.methods??n.methods,{width:l,height:h}=g0(o,s,a);this.shapes[i]={...n,className:o,attributes:s,methods:a,width:l,height:h},this.notifyListeners(),this.render();}updateUmlInterface(e,t){let i=this.shapes.findIndex(d=>d.id===e);if(i===-1)return;let n=this.shapes[i];if(n.type!=="uml-interface")return;this.commitHistory();let o=n,s=t.className??o.className,a=t.methods??o.methods,{width:l,height:h}=An(s,a);this.shapes[i]={...n,className:s,methods:a,width:l,height:h},this.notifyListeners(),this.render();}getSelectedUml(){if(this.selectedIds.length!==1)return null;let e=this.shapes.find(t=>t.id===this.selectedIds[0]);return e&&(e.type==="uml-class"||e.type==="uml-interface")?e:null}getUmlById(e){let t=this.shapes.find(i=>i.id===e);return t&&(t.type==="uml-class"||t.type==="uml-interface")?t:null}pageToMindMapLocal(e,t){let i=t.x-e.x,n=t.y-e.y,o=Math.cos(e.rotation),s=Math.sin(e.rotation);return {x:i*o+n*s,y:-i*s+n*o}}calcMindMapReorderTarget(e,t,i,n,o,s){if(t.length<=1)return 0;let a=ye(i),l=a?o:n,h=t.filter(u=>u!==s).map(u=>e.get(u)).filter(u=>!!u).map(u=>a?u.y:u.x).sort((u,p)=>u-p),d=0;for(let u of h)if(l>u)d++;else break;return d}anchorMindMapAtRoot(e,t,i){let n=Z(t).positions.get(t.id),o=Z(i).positions.get(i.id);if(!n||!o)return {x:e.x,y:e.y};let s=Math.cos(e.rotation),a=Math.sin(e.rotation),l=n.x*s-n.y*a,h=n.x*a+n.y*s,d=o.x*s-o.y*a,u=o.x*a+o.y*s;return {x:e.x+(l-d),y:e.y+(h-u)}}getSelectedMindMap(){if(this.selectedIds.length!==1)return null;let e=this.shapes.find(t=>t.id===this.selectedIds[0]);return e&&e.type==="mind-map"?e:null}getMindMapNodeAtPoint(e){for(let t=this.shapes.length-1;t>=0;t--){let i=this.shapes[t];if(i.type!=="mind-map")continue;let n=i,o=e.x-n.x,s=e.y-n.y,a=Math.cos(n.rotation),l=Math.sin(n.rotation),h=o*a+s*l,d=-o*l+s*a;if(Math.abs(h)>n.width/2||Math.abs(d)>n.height/2)continue;let u=Z(n.root);for(let[p,g]of u.positions)if(Math.abs(h-g.x)<=g.width/2&&Math.abs(d-g.y)<=g.height/2)return {shapeId:n.id,nodeId:p};return {shapeId:n.id,nodeId:n.root.id}}return null}getMindMapNodeAtScreenPoint(e){return this.getMindMapNodeAtPoint(this.screenToPage(e))}getMindMapNodeBoxAtPoint(e){for(let t=this.shapes.length-1;t>=0;t--){let i=this.shapes[t];if(i.type!=="mind-map")continue;let n=i,o=e.x-n.x,s=e.y-n.y,a=Math.cos(n.rotation),l=Math.sin(n.rotation),h=o*a+s*l,d=-o*l+s*a,u=Z(n.root);for(let[p,g]of u.positions)if(Math.abs(h-g.x)<=g.width/2&&Math.abs(d-g.y)<=g.height/2)return {shapeId:n.id,nodeId:p}}return null}hitMindMapNodeBox(e,t,i,n,o=48){let s=o,a=X(e,n),l=null,h=1/0;for(let[d,u]of t){if(d===n||a&&X(a,d))continue;let p=Math.abs(i.x-u.x)-(u.width/2+s),g=Math.abs(i.y-u.y)-(u.height/2+s);if(p>0||g>0)continue;let m=Math.abs(i.x-u.x)+Math.abs(i.y-u.y);m<h&&(h=m,l=d);}return l}mindMapChildGroup(e,t,i,n){let s=X(e,i)?.children??[];if(i!==e.id)return {direction:t.get(i)?.direction??"right",childIds:s.map(u=>u.id)};if(s.length===0)return {direction:"right",childIds:[]};let a="right",l=1/0;for(let d of et){let u=s.filter(m=>ie(m,"right")===d);if(u.length===0)continue;let p=t.get(u[0].id);if(!p)continue;let g=ye(d)?Math.abs(n.y-p.y):Math.abs(n.x-p.x);g<l&&(l=g,a=d);}let h=s.filter(d=>ie(d,"right")===a).map(d=>d.id);return {direction:a,childIds:h}}mindMapSortByCross(e,t,i){return [...e].sort((n,o)=>{let s=i.get(n),a=i.get(o);return !s||!a?0:ye(t)?s.y-a.y:s.x-a.x})}setReorderIndicator(e){let t=this.mindMapReorderTarget;!t&&!e||t&&e&&t.shapeId===e.shapeId&&t.nodeId===e.nodeId&&t.targetIndex===e.targetIndex&&t.direction===e.direction&&t.childParentId===e.childParentId&&t.siblingIds.join(",")===e.siblingIds.join(",")||(this.mindMapReorderTarget=e,this.scheduleRender());}getMindMapCursorHitAtPoint(e){let t=this.getMindMapCollapseHitAtPoint(e);if(t)return t;let i=this.getMindMapHandleAtPoint(e);if(i)return {shapeId:i.shapeId,nodeId:i.nodeId};for(let n=this.shapes.length-1;n>=0;n--){let o=this.shapes[n];if(o.type!=="mind-map")continue;let s=o,a=e.x-s.x,l=e.y-s.y,h=Math.cos(s.rotation),d=Math.sin(s.rotation),u=a*h+l*d,p=-a*d+l*h,g=Z(s.root);for(let[m,f]of g.positions)if(Math.abs(u-f.x)<=f.width/2&&Math.abs(p-f.y)<=f.height/2)return {shapeId:s.id,nodeId:m}}return null}selectMindMapNode(e,t){let i=this.shapes.find(n=>n.id===e);!i||i.type!=="mind-map"||(this.selectedIds=[e],this.mindMapSelectedNode={shapeId:e,nodeId:t},this.notifyListeners(),this.render());}getMindMapEditingShapeId(){return this.mindMapEditingShapeId}getMindMapSelectedNode(){return this.mindMapSelectedNode}getMindMapNode(e,t){let i=this.shapes.find(n=>n.id===e);return !i||i.type!=="mind-map"?null:X(i.root,t)}getMindMapNodeScreenRect(e,t){let i=this.shapes.find(k=>k.id===e);if(!i||i.type!=="mind-map")return null;let n=i,s=Z(n.root).positions.get(t);if(!s)return null;let a=this.camera.getZoom(),l=s.x,h=s.y,d=Math.cos(n.rotation),u=Math.sin(n.rotation),p=l*d-h*u,g=l*u+h*d,m=this.camera.pageToScreen({x:n.x,y:n.y}),f=m.x+p*a,y=m.y+g*a;return {x:f-s.width*a/2,y:y-s.height*a/2,width:s.width*a,height:s.height*a}}getMindMapCollapseHitAtPoint(e){for(let t of this.shapes){if(t.type!=="mind-map")continue;let i=t,n=Z(i.root),o=this.pageToMindMapLocal(i,e);for(let[s,a]of n.positions){let l=X(i.root,s);if(!l||!l.children||l.children.length===0)continue;let h=n0(a,a.direction),d=o.x-h.x,u=o.y-h.y;if(d*d+u*u<=121)return {shapeId:t.id,nodeId:s}}}return null}getMindMapHandleAtPoint(e){for(let t=this.shapes.length-1;t>=0;t--){let i=this.shapes[t];if(i.type!=="mind-map")continue;let n=i,o=this.pageToMindMapLocal(n,e);if(Math.abs(o.x)>n.width/2+40||Math.abs(o.y)>n.height/2+40)continue;let s=nn(n.root,Z(n.root).positions,o.x,o.y);if(s)return {shapeId:i.id,nodeId:s.nodeId,kind:s.kind,direction:s.direction}}return null}addMindMapNodeFromHandle(e){e.kind==="child"?this.addMindMapChild(e.shapeId,e.nodeId,e.direction):this.addMindMapSibling(e.shapeId,e.nodeId),this.mindMapHoverNode=null;}beginMindMapEdit(e,t){let i=this.shapes.find(o=>o.id===e);if(!i||i.type!=="mind-map")return;let n=i;this.mindMapEditingShapeId=e,this.mindMapSelectedNode={shapeId:e,nodeId:t&&X(n.root,t)?t:n.root.id},this.selectedIds=[e],this.notifyListeners(),this.render();}exitMindMapEdit(){this.mindMapEditingShapeId=null,this.notifyListeners(),this.render();}updateMindMapNode(e,t,i,n=true){let o=this.shapes.findIndex(m=>m.id===e);if(o===-1)return;let s=this.shapes[o];if(s.type!=="mind-map")return;let a=s,l=X(a.root,t);if(!l||!Object.keys(i).some(m=>l[m]!==i[m]))return;n&&this.commitHistory();let d=tt(a.root,t,i),{width:u,height:p}=Z(d),g=this.anchorMindMapAtRoot(a,a.root,d);this.shapes[o]={...a,root:d,width:u,height:p,x:g.x,y:g.y},this.notifyListeners(),this.render();}setMindMapNodeOffset(e,t,i){let n=this.shapes.findIndex(p=>p.id===e);if(n===-1)return;let o=this.shapes[n];if(o.type!=="mind-map")return;let s=o,a=X(s.root,t);if(!a||a.offset?.dx===i.dx&&a.offset?.dy===i.dy)return;let l=tt(s.root,t,{offset:i}),{width:h,height:d}=Z(l),u=this.anchorMindMapAtRoot(s,s.root,l);this.shapes[n]={...s,root:l,width:h,height:d,x:u.x,y:u.y},this.render();}addMindMapChild(e,t,i){let n=this.shapes.findIndex(m=>m.id===e);if(n===-1)return;let o=this.shapes[n];if(o.type!=="mind-map")return;let s=o,a=X(s.root,t);if(!a)return;let l=i??ie(a,"right"),h={id:`mm_${Date.now()}_${Math.random().toString(36).substr(2,6)}`,text:fe("mindmap.defaultBranch"),direction:l},d=Q0(s.root,t,h);this.commitHistory();let{width:u,height:p}=Z(d),g=this.anchorMindMapAtRoot(s,s.root,d);this.shapes[n]={...s,root:d,width:u,height:p,x:g.x,y:g.y},this.mindMapSelectedNode={shapeId:e,nodeId:h.id},this.notifyListeners(),this.render();}addMindMapSibling(e,t){let i=this.shapes.findIndex(g=>g.id===e);if(i===-1)return;let n=this.shapes[i];if(n.type!=="mind-map")return;let o=n,s=X(o.root,t);if(!s||!nt(o.root,t))return;let a=ie(s,"right"),l={id:`mm_${Date.now()}_${Math.random().toString(36).substr(2,6)}`,text:fe("mindmap.defaultBranch"),direction:a},h=en(o.root,t,l);this.commitHistory();let{width:d,height:u}=Z(h),p=this.anchorMindMapAtRoot(o,o.root,h);this.shapes[i]={...o,root:h,width:d,height:u,x:p.x,y:p.y},this.mindMapSelectedNode={shapeId:e,nodeId:l.id},this.notifyListeners(),this.render();}reorderMindMapNode(e,t,i){let n=this.shapes.findIndex(p=>p.id===e);if(n===-1)return;let o=this.shapes[n];if(o.type!=="mind-map")return;let s=o,a=Oe(s.root,t);if(!a||i===a.index){this.mindMapReorderTarget=null,this.scheduleRender();return}this.commitHistory();let l=on(s.root,t,i),{width:h,height:d}=Z(l),u=this.anchorMindMapAtRoot(s,s.root,l);this.shapes[n]={...s,root:l,width:h,height:d,x:u.x,y:u.y},this.mindMapSelectedNode={shapeId:e,nodeId:t},this.mindMapReorderTarget=null,this.notifyListeners(),this.render();}moveMindMapNodeToParent(e,t,i,n,o){let s=this.shapes.findIndex(g=>g.id===e);if(s===-1)return;let a=this.shapes[s];if(a.type!=="mind-map")return;let l=a,h=sn(l.root,t,i,n,o);if(this.mindMapReorderTarget=null,this.mindMapReparentPlan=null,h===l.root){this.scheduleRender();return}this.commitHistory();let{width:d,height:u}=Z(h),p=this.anchorMindMapAtRoot(l,l.root,h);this.shapes[s]={...l,root:h,width:d,height:u,x:p.x,y:p.y},this.mindMapSelectedNode={shapeId:e,nodeId:t},this.notifyListeners(),this.render();}deleteMindMapNode(e,t){let i=this.shapes.findIndex(u=>u.id===e);if(i===-1)return;let n=this.shapes[i];if(n.type!=="mind-map")return;let o=n;if(o.root.id===t){this.commitHistory(),this.shapes=this.shapes.filter(u=>u.id!==e),this.selectedIds=this.selectedIds.filter(u=>u!==e),this.mindMapEditingShapeId=null,this.mindMapSelectedNode=null,this.notifyListeners(),this.render();return}let s=e0(o.root,t);if(!s)return;this.commitHistory();let{width:a,height:l}=Z(s),h=this.anchorMindMapAtRoot(o,o.root,s);this.shapes[i]={...o,root:s,width:a,height:l,x:h.x,y:h.y};let d=nt(o.root,t);this.mindMapSelectedNode=d?{shapeId:e,nodeId:d.id}:{shapeId:e,nodeId:s.id},this.notifyListeners(),this.render();}toggleMindMapCollapse(e,t){let i=this.shapes.findIndex(u=>u.id===e);if(i===-1)return;let n=this.shapes[i];if(n.type!=="mind-map")return;let o=n,s=X(o.root,t);if(!s||!s.children||s.children.length===0)return;this.commitHistory();let a=tt(o.root,t,{collapsed:!s.collapsed}),{width:l,height:h}=Z(a),d=this.anchorMindMapAtRoot(o,o.root,a);this.shapes[i]={...o,root:a,width:l,height:h,x:d.x,y:d.y},this.notifyListeners(),this.render();}canPromoteMindMapNode(e,t,i){let n=this.shapes.find(a=>a.id===e);if(!n||n.type!=="mind-map")return false;let o=n;return o.root.id===t?false:t0(o.root,t)>=i+1}promoteMindMapNode(e,t,i){let n=this.shapes.findIndex(u=>u.id===e);if(n===-1)return;let o=this.shapes[n];if(o.type!=="mind-map")return;let s=o;if(s.root.id===t||!this.canPromoteMindMapNode(e,t,i))return;let a=rn(s.root,t,i);if(a===s.root)return;this.commitHistory();let{width:l,height:h}=Z(a),d=this.anchorMindMapAtRoot(s,s.root,a);this.shapes[n]={...s,root:a,width:l,height:h,x:d.x,y:d.y},this.mindMapSelectedNode={shapeId:e,nodeId:t},this.notifyListeners(),this.render();}getSelectedTable(){if(this.selectedIds.length!==1)return null;let e=this.shapes.find(t=>t.id===this.selectedIds[0]);return e&&e.type==="table"?e:null}getTableById(e){let t=this.shapes.find(i=>i.id===e);return t&&t.type==="table"?t:null}getTableCell(e,t,i){return this.getTableById(e)?.cells[t]?.[i]??null}getTableAtPoint(e){for(let t=this.shapes.length-1;t>=0;t--){let i=this.shapes[t];if(i.type!=="table")continue;let n=i,o=Le(n,e),s=xn(n,o.x,o.y);if(s)return {shapeId:n.id,row:s.row,col:s.col}}return null}getTableAtScreenPoint(e){return this.getTableAtPoint(this.screenToPage(e))}getTableCellAtPointClamped(e,t){let i=this.getTableById(e);return i?vt(i,Le(i,t)):null}isTableMoveHandleHit(e,t){let i=this.getTableById(e);return i?at(i,t,this.camera.getZoom()):false}getTableScreenRect(e,t,i){let n=this.getTableById(e);if(!n)return null;let o=t!==void 0&&i!==void 0?ue(n,t,i):{ox:0,oy:0,width:n.width,height:n.height},s=this.camera.getZoom(),a=o.ox-n.width/2,l=o.oy-n.height/2,h=Math.cos(n.rotation),d=Math.sin(n.rotation),u=a*h-l*d,p=a*d+l*h,g=this.camera.pageToScreen({x:n.x,y:n.y});return {x:g.x+u*s,y:g.y+p*s,width:o.width*s,height:o.height*s}}getTableSelection(){return this.tableSelection}selectTableCell(e,t,i,n=false){let o=this.getTableById(e);!o||!o.cells[t]?.[i]||(n&&this.tableSelection&&this.tableSelection.shapeId===e?this.tableSelection.focus={row:t,col:i}:this.tableSelection={shapeId:e,anchor:{row:t,col:i},focus:{row:t,col:i}},this.tableEditing=null,this.selectedIds=[e],this.notifyListeners(),this.render());}getTableEditing(){return this.tableEditing}beginTableEdit(e,t,i){let n=this.getTableById(e);!n||!n.cells[t]?.[i]||(this.tableEditing={shapeId:e,row:t,col:i},this.tableSelection={shapeId:e,anchor:{row:t,col:i},focus:{row:t,col:i}},this.selectedIds=[e],this.notifyListeners(),this.render());}exitTableEdit(){this.tableEditing&&(this.tableEditing=null,this.notifyListeners(),this.render());}updateTableCell(e,t,i,n,o=true){let s=this.shapes.findIndex(p=>p.id===e);if(s===-1)return;let a=this.shapes[s];if(a.type!=="table")return;let l=a,h=l.cells[t]?.[i];if(!h||!Object.keys(n).some(p=>h[p]!==n[p]))return;o&&this.commitHistory();let u=Me(l.cells);u[t][i]={...u[t][i],...n},this.shapes[s]={...l,cells:u},this.autoGrowTableRows(s),this.notifyListeners(),this.render();}insertTable(e=3,t=3){let i=this.viewportCenter(),n=this.iconInsertSeq++%6*14,o=He("table",{x:i.x+n,y:i.y+n}),s=Array.from({length:t},(l,h)=>o.colWidths[h]??140),a=Array.from({length:e},(l,h)=>o.rowHeights[h]??36);return this.commitHistory(),this.addShape({...o,colWidths:s,rowHeights:a,width:lt(s),height:ct(a),cells:zt(e,t,false)}),this.selectShape(o.id,false),this.setActiveTool("select"),o.id}insertTableRow(e,t){let i=this.shapes.findIndex(l=>l.id===e);if(i===-1)return;let n=this.getTableById(e);if(!n)return;let o=this.tableSelection,s=t??(o&&o.shapeId===e?o.focus.row+1:n.cells.length),a=l0(n.cells,n.rowHeights,s);this.commitHistory(),this.writeTable(i,n,{cells:a.cells,rowHeights:a.rowHeights,colWidths:n.colWidths}),this.notifyListeners(),this.render();}insertTableColumn(e,t){let i=this.shapes.findIndex(l=>l.id===e);if(i===-1)return;let n=this.getTableById(e);if(!n)return;let o=this.tableSelection,s=t??(o&&o.shapeId===e?o.focus.col+1:n.colWidths.length),a=c0(n.cells,n.colWidths,s);this.commitHistory(),this.writeTable(i,n,{cells:a.cells,rowHeights:n.rowHeights,colWidths:a.colWidths}),this.notifyListeners(),this.render();}deleteTableRow(e,t){let i=this.shapes.findIndex(l=>l.id===e);if(i===-1)return;let n=this.getTableById(e);if(!n)return;let o=this.tableSelection,s=t??(o&&o.shapeId===e?o.focus.row:0),a=h0(n.cells,n.rowHeights,s);if(a){if(this.commitHistory(),this.writeTable(i,n,{cells:a.cells,rowHeights:a.rowHeights,colWidths:n.colWidths}),this.tableSelection?.shapeId===e){let l=h=>Math.min(h,a.cells.length-1);this.tableSelection.anchor={...this.tableSelection.anchor,row:l(this.tableSelection.anchor.row)},this.tableSelection.focus={...this.tableSelection.focus,row:l(this.tableSelection.focus.row)};}this.tableEditing?.shapeId===e&&this.tableEditing.row>=a.cells.length&&(this.tableEditing=null),this.notifyListeners(),this.render();}}deleteTableColumn(e,t){let i=this.shapes.findIndex(l=>l.id===e);if(i===-1)return;let n=this.getTableById(e);if(!n)return;let o=this.tableSelection,s=t??(o&&o.shapeId===e?o.focus.col:0),a=d0(n.cells,n.colWidths,s);if(a){if(this.commitHistory(),this.writeTable(i,n,{cells:a.cells,rowHeights:n.rowHeights,colWidths:a.colWidths}),this.tableSelection?.shapeId===e){let l=a.cells[0]?.length??1,h=d=>Math.min(d,l-1);this.tableSelection.anchor={...this.tableSelection.anchor,col:h(this.tableSelection.anchor.col)},this.tableSelection.focus={...this.tableSelection.focus,col:h(this.tableSelection.focus.col)};}this.tableEditing?.shapeId===e&&this.tableEditing.col>=(a.cells[0]?.length??1)&&(this.tableEditing=null),this.notifyListeners(),this.render();}}getTableSelRange(e){let t=this.tableSelection;if(!t||t.shapeId!==e)return null;let i=this.getTableById(e);if(!i)return null;let n=i.cells.length-1,o=(i.cells[0]?.length??1)-1,s=(u,p)=>Math.max(0,Math.min(p,u)),a=s(Math.min(t.anchor.row,t.focus.row),n),l=s(Math.max(t.anchor.row,t.focus.row),n),h=s(Math.min(t.anchor.col,t.focus.col),o),d=s(Math.max(t.anchor.col,t.focus.col),o);return Tt(i,a,h,l,d)}insertTableRowRelative(e,t){let i=this.shapes.findIndex(m=>m.id===e);if(i===-1)return;let n=this.getTableById(e);if(!n)return;let o=this.getTableSelRange(e),s=n.cells.length-1,a=(n.cells[0]?.length??1)-1,l=o?o.r1:0,h=o?o.r2:s,d=o?o.c1:0,u=o?o.c2:a,p=t==="above"?l:h+1,g=l0(n.cells,n.rowHeights,p);this.commitHistory(),this.writeTable(i,n,{cells:g.cells,rowHeights:g.rowHeights,colWidths:n.colWidths}),this.tableSelection={shapeId:e,anchor:{row:p,col:d},focus:{row:p,col:u}},this.tableEditing=null,this.notifyListeners(),this.render();}insertTableColumnRelative(e,t){let i=this.shapes.findIndex(m=>m.id===e);if(i===-1)return;let n=this.getTableById(e);if(!n)return;let o=this.getTableSelRange(e),s=n.cells.length-1,a=(n.cells[0]?.length??1)-1,l=o?o.r1:0,h=o?o.r2:s,d=o?o.c1:0,u=o?o.c2:a,p=t==="left"?d:u+1,g=c0(n.cells,n.colWidths,p);this.commitHistory(),this.writeTable(i,n,{cells:g.cells,rowHeights:n.rowHeights,colWidths:g.colWidths}),this.tableSelection={shapeId:e,anchor:{row:l,col:p},focus:{row:h,col:p}},this.tableEditing=null,this.notifyListeners(),this.render();}deleteTableRowsInSelection(e){let t=this.shapes.findIndex(l=>l.id===e);if(t===-1)return;let i=this.getTableById(e);if(!i)return;let n=this.getTableSelRange(e);if(!n||i.cells.length-(n.r2-n.r1+1)<1)return;let s=i.cells,a=i.rowHeights;for(let l=n.r2;l>=n.r1;l--){let h=h0(s,a,l);if(!h)break;s=h.cells,a=h.rowHeights;}this.commitHistory(),this.writeTable(t,i,{cells:s,rowHeights:a,colWidths:i.colWidths}),this.clampTableSelectionAfterDelete(e,s,Math.min(n.r1,s.length-1)),this.notifyListeners(),this.render();}deleteTableColsInSelection(e){let t=this.shapes.findIndex(l=>l.id===e);if(t===-1)return;let i=this.getTableById(e);if(!i)return;let n=this.getTableSelRange(e);if(!n||(i.cells[0]?.length??1)-(n.c2-n.c1+1)<1)return;let s=i.cells,a=i.colWidths;for(let l=n.c2;l>=n.c1;l--){let h=d0(s,a,l);if(!h)break;s=h.cells,a=h.colWidths;}this.commitHistory(),this.writeTable(t,i,{cells:s,rowHeights:i.rowHeights,colWidths:a}),this.clampTableSelectionAfterDelete(e,s,void 0,Math.min(n.c1,(s[0]?.length??1)-1)),this.notifyListeners(),this.render();}clampTableSelectionAfterDelete(e,t,i,n){let o=t.length-1,s=(t[0]?.length??1)-1;if(this.tableSelection?.shapeId===e){let a=this.tableSelection,l=(u,p)=>Math.max(0,Math.min(p,u)),h={row:l(i??a.anchor.row,o),col:l(n??a.anchor.col,s)},d={row:l(i??a.focus.row,o),col:l(n??a.focus.col,s)};this.tableSelection={shapeId:e,anchor:h,focus:d};}if(this.tableEditing?.shapeId===e){let a=this.tableEditing;(a.row>o||a.col>s)&&(this.tableEditing=null);}}mergeTableCells(e){let t=e??this.tableSelection?.shapeId;if(!t)return;let i=this.shapes.findIndex(a=>a.id===t);if(i===-1)return;let n=this.getTableById(t);if(!n)return;let o=this.getTableSelRange(t);if(!o)return;let s=Mn(n.cells,o.r1,o.c1,o.r2,o.c2);s!==n.cells&&(this.commitHistory(),this.shapes[i]={...n,cells:s},this.autoGrowTableRows(i),this.tableSelection={shapeId:t,anchor:{row:o.r1,col:o.c1},focus:{row:o.r1,col:o.c1}},this.tableEditing=null,this.notifyListeners(),this.render());}splitTableCells(e){let t=e??this.tableSelection?.shapeId;if(!t)return;let i=this.shapes.findIndex(a=>a.id===t);if(i===-1)return;let n=this.getTableById(t);if(!n)return;let o=this.getTableSelRange(t);if(!o)return;let s=wn(n,o.r1,o.c1,o.r2,o.c2);s!==n.cells&&(this.commitHistory(),this.shapes[i]={...n,cells:s},this.tableEditing=null,this.notifyListeners(),this.render());}splitTableCell(e){let t=e??this.tableSelection?.shapeId;if(!t)return;let i=this.shapes.findIndex(l=>l.id===t);if(i===-1)return;let n=this.getTableById(t);if(!n)return;let o=this.tableSelection;if(!o||o.shapeId!==t)return;let s=bn(n,o.focus.row,o.focus.col),a=a0(n.cells,s.row,s.col);a!==n.cells&&(this.commitHistory(),this.shapes[i]={...n,cells:a},this.notifyListeners(),this.render());}addUmlAttribute(e){let t=this.shapes.find(n=>n.id===e);if(!t||t.type!=="uml-class")return;let i={id:`attr_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,visibility:"+",name:"newField",type:"string"};this.updateUmlClass(e,{attributes:[...t.attributes,i]});}addUmlMethod(e){let t=this.getUmlById(e);if(!t)return;let i={id:`meth_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,visibility:"+",name:"newMethod",params:"",returnType:"void"};t.type==="uml-class"?this.updateUmlClass(e,{methods:[...t.methods,i]}):this.updateUmlInterface(e,{methods:[...t.methods,i]});}removeUmlAttribute(e,t){let i=this.shapes.find(n=>n.id===e);!i||i.type!=="uml-class"||this.updateUmlClass(e,{attributes:i.attributes.filter(n=>n.id!==t)});}removeUmlMethod(e,t){let i=this.getUmlById(e);if(!i)return;let n=i.methods.filter(o=>o.id!==t);i.type==="uml-class"?this.updateUmlClass(e,{methods:n}):this.updateUmlInterface(e,{methods:n});}reorderUmlAttribute(e,t,i){let n=this.shapes.find(a=>a.id===e);if(!n||n.type!=="uml-class"||t===i)return;let o=[...n.attributes];if(t<0||t>=o.length||i<0||i>=o.length)return;let[s]=o.splice(t,1);o.splice(i,0,s),this.updateUmlClass(e,{attributes:o});}reorderUmlMethod(e,t,i){let n=this.getUmlById(e);if(!n||t===i)return;let o=[...n.methods];if(t<0||t>=o.length||i<0||i>=o.length)return;let[s]=o.splice(t,1);o.splice(i,0,s),n.type==="uml-class"?this.updateUmlClass(e,{methods:o}):this.updateUmlInterface(e,{methods:o});}updateUmlRowStyle(e,t,i,n){let o=this.getUmlById(e);if(o)if(t==="attribute"){if(o.type!=="uml-class")return;let s=o.attributes.map(a=>a.id===i?{...a,textColor:n.textColor===null?void 0:n.textColor??a.textColor,fontSize:n.fontSize===null?void 0:n.fontSize??a.fontSize,strikethrough:n.strikethrough===null?void 0:n.strikethrough??a.strikethrough}:a);this.updateUmlClass(e,{attributes:s});}else {let s=o.methods.map(a=>a.id===i?{...a,textColor:n.textColor===null?void 0:n.textColor??a.textColor,fontSize:n.fontSize===null?void 0:n.fontSize??a.fontSize,strikethrough:n.strikethrough===null?void 0:n.strikethrough??a.strikethrough}:a);o.type==="uml-class"?this.updateUmlClass(e,{methods:s}):this.updateUmlInterface(e,{methods:s});}}getUmlRowAtScreenPoint(e){let t=this.camera.screenToPage(e);for(let i=this.shapes.length-1;i>=0;i--){let n=this.shapes[i];if(n.type!=="uml-class"&&n.type!=="uml-interface")continue;let o=n.width/2,s=n.height/2;if(t.x<n.x-o||t.x>n.x+o||t.y<n.y-s||t.y>n.y+s)continue;let a=xe,l=t.y-n.y;if(l>=-s&&l<=-s+a)return {shape:n,section:"className",rowIndex:-1,text:n.className};if(n.type==="uml-interface"){let m=-s+a,f=s;if(n.methods.length>0&&l>=m&&l<=f){let y=Math.floor((l-m-O)/G);if(y>=0&&y<n.methods.length){let k=n.methods[y];return {shape:n,section:"method",rowIndex:y,text:`${k.visibility} ${k.name}(${k.params}): ${k.returnType}`}}return {shape:n,section:"method",rowIndex:-1,text:""}}return {shape:n,section:"className",rowIndex:-1,text:n.className}}let h=n.attributes.length>0?n.attributes.length*G+O*2:O*2,d=-s+a,u=d+h;if(n.attributes.length>0&&l>=d&&l<=u){let m=Math.floor((l-d-O)/G);if(m>=0&&m<n.attributes.length){let f=n.attributes[m];return {shape:n,section:"attribute",rowIndex:m,text:`${f.visibility} ${f.name}: ${f.type}`}}return {shape:n,section:"attribute",rowIndex:-1,text:""}}let p=u,g=s;if(n.methods.length>0&&l>=p&&l<=g){let m=Math.floor((l-p-O)/G);if(m>=0&&m<n.methods.length){let f=n.methods[m];return {shape:n,section:"method",rowIndex:m,text:`${f.visibility} ${f.name}(${f.params}): ${f.returnType}`}}return {shape:n,section:"method",rowIndex:-1,text:""}}return {shape:n,section:"className",rowIndex:-1,text:n.className}}return null}setActiveTool(e){this.tools.has(e)&&(this.tools.get(this.activeTool)?.cancelTransient(),this.clearTransientPreview(),this.activeTool=e,this.eraserPoint=null,this.notifyListeners(),this.scheduleRender());}getActiveTool(){return this.activeTool}setHighlighterColor(e){let t=this.tools.get("highlighter");t instanceof Ve&&t.setHighlighterColor(e);}getHighlighterColor(){let e=this.tools.get("highlighter");return e instanceof Ve?e.getHighlighterColor():S0}getShapes(){return [...this.shapes]}getData(){return {shapes:this.getShapes(),camera:{x:this.camera.x,y:this.camera.y,zoom:this.camera.zoom}}}setShapes(e){return Array.isArray(e)?(this.clearEraseFades(),this.shapes=e.map(t=>({...t,style:{...t.style}})),this.selectedIds=[],this.undoStack=[],this.redoStack=[],this.releaseUnusedImageUrls(),this.notifyListeners(),this.render(),true):false}setTheme(e){Xt(e),this.scheduleRender();}setLanguage(e){Jt(e);}getSelectedIds(){return [...this.selectedIds]}getCamera(){return this.camera}isPointerDown(){return this.pointerIsDown}isShapeTextTruncated(e){let t=this.shapes.find(i=>i.id===e);return t?this.renderer.isShapeTextTruncated(t):false}isUmlRowTextTruncated(e){let t=e.shape,i=t.fontSize||ce,n=false;if(e.section==="className")n=true;else if(e.section==="attribute"){let o=t.attributes?.[e.rowIndex];o?.fontSize&&(i=o.fontSize);}else if(e.section==="method"){let o=t.methods[e.rowIndex];o?.fontSize&&(i=o.fontSize);}return this.renderer.isUmlRowTextTruncated(t,e.text,i,n)}getContentBounds(e=24){return Zt(this.shapes,e)}getViewportBounds(){let e=this.canvas.getBoundingClientRect(),t=this.camera.getZoom(),i=this.camera.screenToPage({x:0,y:0});return {x:i.x,y:i.y,width:e.width/t,height:e.height/t}}getBoardExtent(e=40){let t=this.shapes.length?this.getContentBounds(e):null,i=this.getViewportBounds(),n=t?{x:t.x,y:t.y,width:t.width,height:t.height}:null;return gt(n,{x:i.x-e,y:i.y-e,width:i.width+e*2,height:i.height+e*2})}async exportImage(e,t={}){return I0(this.getShapes(),e,t)}async downloadImage(e="drawui",t="png",i={}){let n=await this.exportImage(t,i);z0(n,`${e}.${t}`);}zoomIn(){this.camera.zoomAt({x:window.innerWidth/2,y:window.innerHeight/2},1.2),this.scheduleRender(),this.notifyListeners();}zoomOut(){this.camera.zoomAt({x:window.innerWidth/2,y:window.innerHeight/2},.8),this.scheduleRender(),this.notifyListeners();}resetZoom(){this.camera.reset(),this.scheduleRender(),this.notifyListeners();}panBy(e,t){this.camera.translate(e,t),this.scheduleRender(),this.notifyListeners();}setCameraPosition(e,t){this.camera.x=e,this.camera.y=t,this.scheduleRender(),this.notifyListeners();}requestRender(){this.scheduleRender(),this.notifyListeners();}setShowGrid(e){this.renderer.setShowGrid(e),this.scheduleRender();}render(){this.renderer.setTableSelection(this.tableSelection),this.renderer.render(this.shapes,this.camera,new Set(this.selectedIds),this.brushRect,this.snapGuides,this.connectingTargetId,this.genPreview,this.eraserPoint,this.mindMapSelectedNode,this.mindMapHoverNode,this.mindMapReorderTarget,void 0,this.hoverAnchorShapeId,this.hoverConnectorId,this.eraseFadeMap());}scheduleRender(){this.renderScheduled||(this.renderScheduled=true,requestAnimationFrame(()=>{this.renderScheduled=false,this.render();}));}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}subscribeNotifications(e){return this.notificationListeners.add(e),()=>this.notificationListeners.delete(e)}notify(e){this.notificationListeners.forEach(t=>t(e));}notifyListeners(){this.notifyScheduled||(this.notifyScheduled=true,queueMicrotask(()=>{this.notifyScheduled=false,this.mindMapEditingShapeId&&!this.selectedIds.includes(this.mindMapEditingShapeId)&&(this.mindMapEditingShapeId=null),this.mindMapSelectedNode&&!this.selectedIds.includes(this.mindMapSelectedNode.shapeId)&&(this.mindMapSelectedNode=null),this.tableSelection&&!this.selectedIds.includes(this.tableSelection.shapeId)&&(this.tableSelection=null),this.tableEditing&&!this.selectedIds.includes(this.tableEditing.shapeId)&&(this.tableEditing=null),this.listeners.forEach(e=>e());}));}cloneShapes(e){return e.map(t=>{let i={...t,style:{...t.style}};Array.isArray(t.points)&&(i.points=t.points.map(o=>({...o}))),Array.isArray(t.userPoints)&&(i.userPoints=t.userPoints.map(o=>({...o})));let n=t.userPointsRef;if(n?.start&&n?.end&&(i.userPointsRef={start:{...n.start},end:{...n.end}}),t.startBinding&&(i.startBinding={...t.startBinding}),t.endBinding&&(i.endBinding={...t.endBinding}),t.root&&(i.root=Qt(t.root)),t.type==="table"&&Array.isArray(t.cells)){let o=t;i.colWidths=[...o.colWidths],i.rowHeights=[...o.rowHeights],i.cells=Me(o.cells);}return i})}commitHistory(){if(this.isUndoing)return;let e={shapes:this.cloneShapes(this.shapes),selectedIds:[...this.selectedIds]};this.undoStack.push(e),this.undoStack.length>_1&&this.undoStack.shift(),this.redoStack=[];}mark(){this.commitHistory();}undo(){if(this.undoStack.length!==0){this.clearEraseFades(),this.isUndoing=true;try{this.redoStack.push({shapes:this.cloneShapes(this.shapes),selectedIds:[...this.selectedIds]});let e=this.undoStack.pop();this.shapes=this.cloneShapes(e.shapes),this.selectedIds=[...e.selectedIds];}finally{this.isUndoing=false;}this.notifyListeners(),this.render();}}redo(){if(this.redoStack.length!==0){this.clearEraseFades(),this.isUndoing=true;try{this.undoStack.push({shapes:this.cloneShapes(this.shapes),selectedIds:[...this.selectedIds]});let e=this.redoStack.pop();this.shapes=this.cloneShapes(e.shapes),this.selectedIds=[...e.selectedIds];}finally{this.isUndoing=false;}this.notifyListeners(),this.render();}}canUndo(){return this.undoStack.length>0}canRedo(){return this.redoStack.length>0}saveToStorage(){if(!this.persist)return false;try{let e=JSON.stringify({version:1,shapes:this.shapes,savedAt:Date.now()});return localStorage.setItem(_n,e),this.notifyListeners(),this.notify(fe("save.success")),!0}catch(e){return console.error("\u4FDD\u5B58\u5931\u8D25:",e),this.notify(fe("save.fail")),false}}loadFromStorage(){if(!this.persist)return false;try{let e=localStorage.getItem(_n);if(!e)return !1;let t=JSON.parse(e);return t.shapes&&Array.isArray(t.shapes)?(this.shapes=t.shapes,this.selectedIds=[],this.undoStack=[],this.redoStack=[],this.notifyListeners(),this.scheduleRender(),!0):!1}catch(e){return console.error("\u52A0\u8F7D\u5931\u8D25:",e),false}}clearStorage(){localStorage.removeItem(_n);}exportJSON(){return JSON.stringify({app:"drawui",version:1,shapes:this.shapes,camera:{x:this.camera.x,y:this.camera.y,zoom:this.camera.zoom},savedAt:Date.now()},null,2)}importJSON(e){try{let t=JSON.parse(e);if(t.shapes&&Array.isArray(t.shapes)){this.commitHistory(),this.shapes=t.shapes,this.selectedIds=[];let i=t.camera;return i&&typeof i.x=="number"&&typeof i.y=="number"&&typeof i.zoom=="number"&&(this.camera.x=i.x,this.camera.y=i.y,this.camera.zoom=i.zoom),this.notifyListeners(),this.render(),!0}return !1}catch(t){return console.error("\u5BFC\u5165\u5931\u8D25:",t),false}}downloadJSON(e="drawui-data"){let t=this.exportJSON();z0(new Blob([t],{type:"application/json;charset=utf-8"}),`${e}.json`);}getEditingShapeId(){return this.editingShapeId}canEditShape(e){return !(e.type==="line"||e.type==="arrow"||e.type==="draw"||e.type==="uml-class"||e.type==="uml-interface"||e.type==="mind-map"||e.type==="table"||e.type==="image")}enterEditing(e){let t=this.shapes.find(i=>i.id===e);!t||!this.canEditShape(t)||(this.editingShapeId=e,this.selectedIds=[e],this.isNewTextShape=t.type==="text"&&!t.text,this.originalTextValue=t.text||"",this.notifyListeners(),this.scheduleRender(),requestAnimationFrame(()=>{this.createTextInput(t);}));}exitEditing(){if(!this.editingShapeId)return;let e=this.editingShapeId,t=this.shapes.find(n=>n.id===e),i=this.textInput?this.textInput.value:"";if(this.removeTextInput(),t)if(t.type==="text")if(this.commitHistory(),!i.trim()&&this.isNewTextShape)this.shapes=this.shapes.filter(n=>n.id!==e),this.selectedIds=this.selectedIds.filter(n=>n!==e);else {let n=t,o=n.fontSize||16,s=o*1.3,a=n.width||200,l=i.split(`
|
|
46
|
-
`),h=0;for(let p of
|
|
47
|
-
`+d.value.substring(g),d.selectionStart=d.selectionEnd=p+1;}}),t.appendChild(d),d.focus(),e.type==="text"&&!e.text&&(d.placeholder="\u8F93\u5165\u6587\u672C..."),this.textInput=d;}getShapeScreenBounds(e){let t=this.camera.getZoom(),i=this.camera.pageToScreen({x:e.x,y:e.y});switch(e.type){case "rectangle":case "sticky-note":case "icon":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "hexagon":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":return {x:i.x-e.width*t/2,y:i.y-e.height*t/2,width:e.width*t,height:e.height*t};case "circle":return {x:i.x-e.radius*t,y:i.y-e.radius*t,width:e.radius*2*t,height:e.radius*2*t};case "text":{let n=e,o=n.width*t,s=n.height*t;return {x:i.x-o/2,y:i.y-s/2,width:o,height:s}}default:return {x:i.x-50*t,y:i.y-20*t,width:100*t,height:40*t}}}getShapeAtScreenPoint(e){let t=this.screenToPage(e);return this.getShapeAtPoint(t)}getShapeAtPoint(e,t){for(let i=this.shapes.length-1;i>=0;i--){let n=this.shapes[i];if(!(t&&n.id===t)&&this.isPointInShape(e,n))return n}return null}getShapesInBrushRadius(e,t){let i=[];for(let n of this.shapes)this.shapeIntersectsBrush(n,e,t)&&i.push(n);return i}shapeIntersectsBrush(e,t,i){switch(e.type){case "line":case "arrow":{let n=e.points,o=i+4;for(let s=1;s<n.length;s++)if(this.pointToSegmentDist(t,n[s-1],n[s])<=o)return true;return n.length>0&&Math.hypot(t.x-n[0].x,t.y-n[0].y)<=o}case "draw":{let n=e.points,o=i+4;for(let s=1;s<n.length;s++){let a={x:e.x+n[s-1].x,y:e.y+n[s-1].y},l={x:e.x+n[s].x,y:e.y+n[s].y};if(this.pointToSegmentDist(t,a,l)<=o)return true}return n.length>0&&Math.hypot(t.x-(e.x+n[0].x),t.y-(e.y+n[0].y))<=o}case "circle":return Math.hypot(t.x-e.x,t.y-e.y)<=e.radius+i;case "text":{let n=e;return Math.abs(t.x-e.x)<=n.width/2+i&&Math.abs(t.y-e.y)<=n.height/2+i}default:return Math.abs(t.x-e.x)<=e.width/2+i&&Math.abs(t.y-e.y)<=e.height/2+i}}pointToSegmentDist(e,t,i){let n=i.x-t.x,o=i.y-t.y,s=n*n+o*o,a=s===0?0:Math.max(0,Math.min(1,((e.x-t.x)*n+(e.y-t.y)*o)/s));return Math.hypot(e.x-(t.x+a*n),e.y-(t.y+a*o))}setEraserPoint(e){this.eraserPoint=e,this.scheduleRender();}isPointInShape(e,t){let i=e.x-t.x,n=e.y-t.y;switch(t.type){case "rectangle":case "sticky-note":case "icon":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "table":return Math.abs(i)<=t.width/2&&Math.abs(n)<=t.height/2;case "circle":return i*i+n*n<=t.radius*t.radius;case "hexagon":{let o=t.width/2,s=t.height/2;return Math.abs(i)<=o&&Math.abs(n)<=s&&Math.abs(i)/o+Math.abs(n)/s<=1.5}case "mind-map":return Math.abs(i)<=t.width/2&&Math.abs(n)<=t.height/2;case "text":{let o=t;return Math.abs(i)<=o.width/2&&Math.abs(n)<=o.height/2}default:return false}}updateArrowBinding(e,t,i,n){let o=this.shapes.find(l=>l.id===e);if(!o||o.type!=="arrow")return;let s=o,a={};if(i){let l=this.shapes.find(p=>p.id===i);if(!l)return;let h=n?.handle||this.getClosestHandle(s,l),d=this.getBindingPosition(l,h),u=n?.handle?{...n,toShapeId:i,auto:false}:n?.auto?n:{toShapeId:i,handle:h,auto:false};t==="start"?(a.startBinding=u,a.points=s.points.map((p,g)=>g===0?d:p)):(a.endBinding=u,a.points=s.points.map((p,g)=>g===s.points.length-1?d:p));}else t==="start"?a.startBinding=void 0:a.endBinding=void 0;this.updateShape(e,a);}getClosestHandle(e,t){let i=e.points[0],n=e.points[e.points.length-1],o=e.endBinding?n:i,s=o.x-t.x,a=o.y-t.y;return Math.abs(s)>Math.abs(a)?s>0?"right":"left":a>0?"bottom":"top"}dispose(){this.eraseFadeRaf!==null&&(cancelAnimationFrame(this.eraseFadeRaf),this.eraseFadeRaf=null),this.eraseFades.clear(),this.canvas.removeEventListener("pointerdown",this.handlePointerDown),this.canvas.removeEventListener("pointerleave",this.handlePointerUp),window.removeEventListener("pointermove",this.handlePointerMove),window.removeEventListener("pointerup",this.handlePointerUp),window.removeEventListener("pointercancel",this.handlePointerUp),window.removeEventListener("blur",this.handleWindowBlur),window.removeEventListener("pointerdown",this.handleGlobalPointerDown,true),this.canvas.removeEventListener("wheel",this.handleWheel),window.removeEventListener("keydown",this.handleKeyDown),window.removeEventListener("keyup",this.handleKeyUp),window.removeEventListener("resize",this.handleResize),window.removeEventListener("paste",this.handlePasteEvent),this.removeImageReadyListener?.(),this.removeImageReadyListener=null,this.removeTextInput(),this.tools.forEach(e=>e.dispose()),this.listeners.clear();}};// @license 本文件表情图形来自 Twemoji (https://github.com/twitter/twemoji)。
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
${S+m.length}
|
|
45
|
+
%%EOF`;return new Blob([f+h+d+u+p,o,g+m+w],{type:"application/pdf"})}async function Cn(r,e,t={}){r.some(s=>s.type==="image")&&await En(r);let i=r.filter(s=>s.type==="icon").map(s=>s.iconId);if(i.length>0&&await ft(i),e==="svg"){let s=_o(r,t);return new Blob([s],{type:"image/svg+xml;charset=utf-8"})}let n=Eo(r,t);if(e==="png")return ws(n,"image/png");let o=Ss(n,"image/jpeg",.92);return Es(o,n.width,n.height)}function In(r,e){let t=URL.createObjectURL(r),i=document.createElement("a");i.href=t,i.download=e,document.body.appendChild(i),i.click(),document.body.removeChild(i),setTimeout(()=>URL.revokeObjectURL(t),1e3);}function Ns(r,e){return !r||!e?r===e:r.length!==e.length?false:r.every((t,i)=>t===e[i])}var Bs=360,Vo={width:320,height:240},Ei="drawui-canvas-data",_s=50,Ni=()=>typeof performance<"u"?performance.now():Date.now(),Bi=class{canvas;renderer;camera;tools=new Map;activeTool="select";shapes=[];selectedIds=[];listeners=new Set;notificationListeners=new Set;uiListeners=new Set;isPanning=false;panStart={x:0,y:0};dragStartPositions=new Map;interactionDragging=false;lastClickTime=0;lastClickShapeId=null;editingShapeId=null;textInput=null;textOverlay=null;textInputRaf=null;isNewTextShape=false;originalTextValue="";undoStack=[];redoStack=[];isUndoing=false;brushRect=null;snapGuides=[];connectingTargetId=null;genPreview=null;hoverAnchorShapeId=null;hoverConnectorId=null;hoverLockedShapeId=null;eraserPoint=null;eraseFades=new Map;eraseFadeRaf=null;mindMapEditingShapeId=null;mindMapSelectedNode=null;mindMapHoverNode=null;pendingMindMapHandle=null;mindMapNodeDragCandidate=null;isNodeDragging=false;mindMapReorderTarget=null;mindMapReparentPlan=null;tableSelection=null;tableEditing=null;renderScheduled=false;pointerIsDown=false;notifyScheduled=false;persist=true;arrowStyle={connectionType:"straight",arrowHead:"end",dashed:false};stickyNoteColor=Jt;imageUploadOption=null;removeImageReadyListener=null;ownImageUrls=new Set;imageInsertSeq=0;imagePasteHandled=false;iconInsertSeq=0;clipboardShapes=[];pasteSeq=0;copiedStyle=null;constructor(e,t={}){this.canvas=e,this.persist=t.persist??!t.shapes,t.theme&&Ft(t.theme),t.language&&Yt(t.language);let i=e.getBoundingClientRect();this.renderer=new Ue(e),this.renderer.resize(i.width,i.height),this.camera=new Re,this.imageUploadOption=t.imageUpload??null,this.removeImageReadyListener=Hn(()=>this.requestRender()),window.addEventListener("paste",this.handlePasteEvent);let n={addShape:o=>this.addShape(o),updateShape:(o,s)=>this.updateShape(o,s),deleteShape:o=>this.deleteShape(o),eraseShape:o=>this.eraseShape(o),selectShape:(o,s)=>this.selectShape(o,s),selectShapeRaw:o=>this.selectShapeRaw(o),selectShapes:o=>this.selectShapes(o),getShapes:()=>[...this.shapes],getSelectedIds:()=>[...this.selectedIds],setActiveTool:o=>this.setActiveTool(o),screenToPage:o=>this.screenToPage(o),getCamera:()=>this.camera,panBy:(o,s)=>this.panBy(o,s),setCameraPosition:(o,s)=>this.setCameraPosition(o,s),getShapeAtPoint:(o,s)=>this.getShapeAtPoint(o,s),getShapesInBrushRadius:(o,s)=>this.getShapesInBrushRadius(o,s),setEraserPoint:o=>this.setEraserPoint(o),updateArrowBinding:(o,s,a,l)=>this.updateArrowBinding(o,s,a,l),enterEditing:o=>this.enterEditing(o),exitEditing:()=>this.exitEditing(),commitHistory:()=>this.commitHistory(),setBrushRect:o=>this.setBrushRect(o),setSnapGuides:o=>this.setSnapGuides(o),setConnectingTarget:o=>this.setConnectingTarget(o),setGenerationPreview:o=>this.setGenerationPreview(o),setHoverAnchorShape:o=>this.setHoverAnchorShape(o),setHoverConnector:o=>this.setHoverConnector(o),getConnectorRoute:o=>this.getConnectorRoute(o),getAutoConnectorRoute:o=>this.getAutoConnectorRoute(o),getLineStyle:()=>this.lineStyle(),openGenerationMenu:o=>this.openGenerationMenu(o),createGeneratedConnection:(o,s)=>this.createGeneratedConnection(o,s),createFloatingLine:o=>this.createFloatingLine(o),connectToExisting:(o,s,a)=>this.connectToExisting(o,s,a),updateSelectedShapesStyle:o=>this.updateSelectedShapesStyle(o),updateSelectedShapesText:o=>this.updateSelectedShapesText(o),updateConnectionType:o=>this.updateConnectionType(o),getArrowStyle:()=>this.getArrowStyle(),getStickyNoteColor:()=>this.getStickyNoteColor(),getMindMapCursorHitAtPoint:o=>this.getMindMapCursorHitAtPoint(o),selectMindMapNode:(o,s)=>this.selectMindMapNode(o,s),selectTableCell:(o,s,a,l)=>this.selectTableCell(o,s,a,l)};this.tools.set("select",new Dt(n)),this.tools.set("hand",new Ht(n)),this.tools.set("rectangle",new A(n,"rectangle")),this.tools.set("rounded-rectangle",new A(n,"rounded-rectangle")),this.tools.set("circle",new A(n,"circle")),this.tools.set("ellipse",new A(n,"ellipse")),this.tools.set("diamond",new A(n,"diamond")),this.tools.set("triangle",new A(n,"triangle")),this.tools.set("hexagon",new A(n,"hexagon")),this.tools.set("parallelogram",new A(n,"parallelogram")),this.tools.set("trapezoid",new A(n,"trapezoid")),this.tools.set("pentagon",new A(n,"pentagon")),this.tools.set("octagon",new A(n,"octagon")),this.tools.set("star",new A(n,"star")),this.tools.set("cylinder",new A(n,"cylinder")),this.tools.set("cloud",new A(n,"cloud")),this.tools.set("heart",new A(n,"heart")),this.tools.set("block-arrow-right",new A(n,"block-arrow-right")),this.tools.set("block-arrow-left",new A(n,"block-arrow-left")),this.tools.set("block-arrow-up",new A(n,"block-arrow-up")),this.tools.set("block-arrow-down",new A(n,"block-arrow-down")),this.tools.set("block-arrow-double",new A(n,"block-arrow-double")),this.tools.set("right-triangle",new A(n,"right-triangle")),this.tools.set("cross",new A(n,"cross")),this.tools.set("speech-rect",new A(n,"speech-rect")),this.tools.set("speech-round",new A(n,"speech-round")),this.tools.set("cube",new A(n,"cube")),this.tools.set("sector",new A(n,"sector")),this.tools.set("delay",new A(n,"delay")),this.tools.set("predefined-process",new A(n,"predefined-process")),this.tools.set("document",new A(n,"document")),this.tools.set("stadium",new A(n,"stadium")),this.tools.set("class-catalog",new A(n,"class-catalog")),this.tools.set("chevron",new A(n,"chevron")),this.tools.set("brace-left",new A(n,"brace-left")),this.tools.set("brace-right",new A(n,"brace-right")),this.tools.set("envelope",new A(n,"envelope")),this.tools.set("checkbox",new A(n,"checkbox")),this.tools.set("triangular-pyramid",new A(n,"triangular-pyramid")),this.tools.set("quadrangular-pyramid",new A(n,"quadrangular-pyramid")),this.tools.set("cuboid",new A(n,"cuboid")),this.tools.set("sphere",new A(n,"sphere")),this.tools.set("ellipsoid",new A(n,"ellipsoid")),this.tools.set("pie",new A(n,"pie")),this.tools.set("hollow-pie",new A(n,"hollow-pie")),this.tools.set("sticky-note",new A(n,"sticky-note")),this.tools.set("icon",new A(n,"icon")),this.tools.set("image",new A(n,"image")),this.tools.set("uml-class",new A(n,"uml-class")),this.tools.set("uml-interface",new A(n,"uml-interface")),this.tools.set("line",new Rt(n)),this.tools.set("arrow",new Et(n)),this.tools.set("text",new xn(n)),this.tools.set("pen",new Le(n,"pen")),this.tools.set("highlighter",new Le(n,"highlighter")),this.tools.set("eraser",new pn(n)),this.tools.set("mind-map",new A(n,"mind-map")),this.tools.set("table",new A(n,"table")),this.setupEventListeners(),t.shapes?this.shapes=t.shapes.map(o=>({...o,style:{...o.style}})):this.persist&&this.loadFromStorage(),this.render();}setupEventListeners(){this.canvas.addEventListener("pointerdown",this.handlePointerDown),this.canvas.addEventListener("pointerleave",this.handlePointerUp),window.addEventListener("pointermove",this.handlePointerMove),window.addEventListener("pointerup",this.handlePointerUp),window.addEventListener("pointercancel",this.handlePointerUp),window.addEventListener("blur",this.handleWindowBlur),window.addEventListener("pointerdown",this.handleGlobalPointerDown,true),this.canvas.addEventListener("wheel",this.handleWheel,{passive:false}),window.addEventListener("keydown",this.handleKeyDown),window.addEventListener("keyup",this.handleKeyUp),window.addEventListener("resize",this.handleResize);}handleWindowBlur=()=>{this.pointerIsDown=false,this.isPanning=false,this.cancelTransientInteraction(),this.scheduleRender();};handleGlobalPointerDown=e=>{e.target!==this.canvas&&(!e.isPrimary||e.button!==0||(this.pointerIsDown=false,this.isPanning=false,this.cancelTransientInteraction()&&this.scheduleRender()));};shouldRecoverTransient(){let e=this.tools.get(this.activeTool);return !!this.connectingTargetId||this.snapGuides.length>0||!!this.brushRect||!!e&&e.hasTransientState()}cancelTransientInteraction(){let e=!!this.tools.get(this.activeTool)?.cancelTransient(),t=this.clearTransientPreview();return e||t}handlePointerDown=e=>{if(e.button===2){this.clearTransientPreview();return}if(this.editingShapeId){if(this.textInput&&e.target===this.textInput)return;if(!this.textInput&&e.target===this.canvas)this.exitEditing();else return}this.clearTransientPreview(),this.pointerIsDown=true;try{this.canvas.hasPointerCapture(e.pointerId)||this.canvas.setPointerCapture(e.pointerId);}catch{}if(e.button===1||e.button===0&&e.altKey){this.isPanning=true,this.panStart={x:e.clientX,y:e.clientY},this.canvas.setPointerCapture(e.pointerId),this.canvas.style.cursor="grabbing";return}let t=this.screenToPage({x:e.clientX,y:e.clientY});if(this.activeTool==="select"){let s=this.lockBadgeAtPoint(t);if(s){this.unlockFromBadge(s);return}}let i=this.activeTool==="select"?this.getMindMapCollapseHitAtPoint(t):null;if(i){this.toggleMindMapCollapse(i.shapeId,i.nodeId);return}let n=this.activeTool==="select"?this.getMindMapHandleAtPoint(t):null;if(n){this.pendingMindMapHandle=n;return}if(this.activeTool==="select"){let s=Date.now(),a=this.getShapeAtPoint(t);if(s-this.lastClickTime<400&&this.lastClickShapeId&&a&&!a.locked&&a.id===this.lastClickShapeId&&this.canEditShape(a)){this.enterEditing(a.id),this.lastClickTime=0,this.lastClickShapeId=null;return}if(this.lastClickTime=s,this.lastClickShapeId=a&&!a.locked?a.id:null,a&&a.type==="mind-map"){let l=this.getMindMapNodeBoxAtPoint(t);if(l&&l.shapeId===a.id){this.lastClickTime=s,this.lastClickShapeId=a.id,this.selectedIds.includes(a.id)||(this.selectedIds=[a.id]),this.mindMapSelectedNode=l;let h=_e(a.root,l.nodeId);this.mindMapNodeDragCandidate={shapeId:l.shapeId,nodeId:l.nodeId,startPage:t,direction:h?.direction??"right",siblingIds:h?.siblings.map(d=>d.id)??[]},this.notifyListeners(),this.render();return}this.mindMapSelectedNode&&this.mindMapSelectedNode.shapeId===a.id&&(this.mindMapSelectedNode=null,this.scheduleRender());}if(a&&!a.locked&&(this.dragStartPositions.clear(),this.selectedIds.forEach(l=>{let c=this.shapes.find(h=>h.id===l);c&&this.dragStartPositions.set(l,{x:c.x,y:c.y});}),a.type==="table"&&!this.isTableMoveHandleHit(a.id,t))){let l=this.getTableAtPoint(t);l&&this.selectTableCell(l.shapeId,l.row,l.col,e.shiftKey);}}this.tools.get(this.activeTool)?.onPointerDown(t,e),this.updateCursor(t),this.render();};handlePointerMove=e=>{if(this.editingShapeId||(e.buttons===0&&this.pointerIsDown&&(this.pointerIsDown=false,this.setInteractionDragging(false),this.shouldRecoverTransient()&&(this.cancelTransientInteraction(),this.scheduleRender())),!this.pointerIsDown&&this.shouldRecoverTransient()&&this.cancelTransientInteraction(),!this.pointerIsDown&&e.target!==this.canvas))return;if(this.isPanning){let n=e.clientX-this.panStart.x,o=e.clientY-this.panStart.y;this.camera.translate(n,o),this.panStart={x:e.clientX,y:e.clientY},this.scheduleRender(),this.notifyListeners(),this.setInteractionDragging(false);return}let t=this.screenToPage({x:e.clientX,y:e.clientY});if(this.mindMapNodeDragCandidate){let{shapeId:n,nodeId:o,startPage:s,direction:a,siblingIds:l}=this.mindMapNodeDragCandidate,c=t.x-s.x,h=t.y-s.y;if(!this.isNodeDragging){if(Math.abs(c)<5&&Math.abs(h)<5)return;this.isNodeDragging=true;}let d=this.shapes.find(u=>u.id===n);if(d&&d.type==="mind-map"){let u=d,p=this.pageToMindMapLocal(u,t),m=N(u.root).positions,f=this.hitMindMapNodeBox(u.root,m,p,o,0),b=f?null:this.hitMindMapNodeBox(u.root,m,p,o);if(f){let w=this.mindMapChildGroup(u.root,m,f,p),C=w.childIds.length?this.calcMindMapReorderTarget(m,w.childIds,w.direction,p.x,p.y,o):0;this.mindMapReparentPlan={shapeId:n,nodeId:o,mode:"child",targetParentId:f,direction:w.direction,insertIndex:C},this.setReorderIndicator({shapeId:n,nodeId:o,targetIndex:C,direction:w.direction,siblingIds:this.mindMapSortByCross(w.childIds,w.direction,m),childParentId:f}),this.updateCursor(t),this.setInteractionDragging(this.isNodeDragging);return}let x=b?_e(u.root,b):null,I=_e(u.root,o),T=!!x&&!!I&&x.parent.id===I.parent.id&&x.direction===I.direction;if(x&&!T){let w=x.siblings.map(v=>v.id),C=this.calcMindMapReorderTarget(m,w,x.direction,p.x,p.y,o);this.mindMapReparentPlan={shapeId:n,nodeId:o,mode:"sibling",targetParentId:x.parent.id,direction:x.direction,insertIndex:C},this.setReorderIndicator({shapeId:n,nodeId:o,targetIndex:C,direction:x.direction,siblingIds:this.mindMapSortByCross(w,x.direction,m),childParentId:x.parent.id}),this.updateCursor(t),this.setInteractionDragging(this.isNodeDragging);return}this.mindMapReparentPlan=null;let S=this.calcMindMapReorderTarget(m,l,a,p.x,p.y,o);this.setReorderIndicator({shapeId:n,nodeId:o,targetIndex:S,direction:a,siblingIds:this.mindMapSortByCross(l,a,m)});}this.updateCursor(t),this.setInteractionDragging(this.isNodeDragging);return}let i=this.tools.get(this.activeTool);i?.onPointerMove(t,e),this.updateCursor(t),this.scheduleRender(),this.setInteractionDragging(!!i?.isDragging?.());};handlePointerUp=e=>{if(e.type==="pointerleave"){if(this.mindMapHoverNode=null,this.hoverLockedShapeId=null,this.pointerIsDown){this.scheduleRender();return}}else {if(!this.pointerIsDown&&e.target!==this.canvas)return;this.canvas.hasPointerCapture(e.pointerId)&&this.canvas.releasePointerCapture(e.pointerId);}if(this.pointerIsDown=false,this.setInteractionDragging(false),this.editingShapeId)return;if(this.isPanning){this.isPanning=false,this.updateCursor(this.screenToPage({x:e.clientX,y:e.clientY}));return}if(this.pendingMindMapHandle){let n=this.pendingMindMapHandle;this.pendingMindMapHandle=null;let o=this.screenToPage({x:e.clientX,y:e.clientY}),s=this.getMindMapHandleAtPoint(o);s&&s.shapeId===n.shapeId&&s.nodeId===n.nodeId&&s.kind===n.kind&&s.direction===n.direction&&this.addMindMapNodeFromHandle(s),this.updateCursor(o),this.scheduleRender();return}if(this.mindMapNodeDragCandidate){let n=this.mindMapReparentPlan,o=this.mindMapReorderTarget,{shapeId:s,nodeId:a}=this.mindMapNodeDragCandidate;this.mindMapNodeDragCandidate=null,this.isNodeDragging=false,this.mindMapReparentPlan=null,n&&n.shapeId===s&&n.nodeId===a?this.moveMindMapNodeToParent(s,a,n.targetParentId,n.direction,n.insertIndex):o&&o.shapeId===s&&o.nodeId===a?this.reorderMindMapNode(s,a,o.targetIndex):(this.mindMapReorderTarget=null,this.scheduleRender());return}let t=this.screenToPage({x:e.clientX,y:e.clientY});this.tools.get(this.activeTool)?.onPointerUp(t,e),this.updateCursor(t),this.scheduleRender();};updateCursor(e){let i=this.tools.get(this.activeTool)?.getCursor(e)??"default";if(this.canvas.style.cursor!==i&&(this.canvas.style.cursor=i),!this.pointerIsDown){let n=this.getMindMapCursorHitAtPoint(e);(n?.shapeId!==this.mindMapHoverNode?.shapeId||n?.nodeId!==this.mindMapHoverNode?.nodeId)&&(this.mindMapHoverNode=n,this.scheduleRender()),this.updateLockHover(e);}}updateLockHover(e){let t=null;if(this.activeTool==="select"){let i=this.getShapeAtPoint(e);if(i&&i.locked)t=i.id;else {let n=this.lockBadgeAtPoint(e);n&&(t=n.shapeId??n.memberIds[0]??null);}}t!==this.hoverLockedShapeId&&(this.hoverLockedShapeId=t,this.scheduleRender());}lockBadgeAtPoint(e){if(!this.hasLockedShapes())return null;let t=this.camera.getZoom(),i=4/t,n=this.renderer.lockBadgeTargets(this.shapes,t);for(let o=n.length-1;o>=0;o--){let s=n[o];if(e.x>=s.x-i&&e.x<=s.x+s.size+i&&e.y>=s.y-i&&e.y<=s.y+s.size+i)return s}return null}unlockFromBadge(e){e.groupId?this.setGroupLocked(e.groupId,false):e.shapeId&&this.setShapeLocked(e.shapeId,false),this.hoverLockedShapeId=e.shapeId??e.memberIds[0]??null,this.scheduleRender();}handleWheel=e=>{if(e.preventDefault(),e.ctrlKey||e.metaKey){let n=e.deltaY>0?.9:1.1;this.camera.zoomAt({x:e.clientX,y:e.clientY},n),this.scheduleRender(),this.notifyListeners();return}let t=e.deltaX||0,i=e.deltaY||0;e.deltaMode===1?(t*=40,i*=40):e.deltaMode===2&&(t*=120,i*=120),e.shiftKey&&(t=t||i,i=0),this.camera.translate(-t,-i),this.scheduleRender(),this.notifyListeners();};handleKeyDown=e=>{if(this.editingShapeId)return;let t=e.target;if(t&&(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable))return;if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()==="z"){e.preventDefault(),e.shiftKey?this.redo():this.undo();return}if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()==="y"){e.preventDefault(),this.redo();return}if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()==="s"){e.preventDefault(),this.saveToStorage();return}if((e.ctrlKey||e.metaKey)&&!e.altKey&&e.key.toLowerCase()==="a"){e.preventDefault(),this.selectAll();return}let i=e.ctrlKey||e.metaKey;if(i&&e.altKey&&e.key.toLowerCase()==="c"){e.preventDefault(),this.copyStyle();return}if(i&&e.altKey&&e.key.toLowerCase()==="v"){e.preventDefault(),this.pasteStyle();return}if(i&&e.altKey&&e.key.toLowerCase()==="l"){e.preventDefault();let o=this.getSelectedShapes();o.length>0&&this.setSelectedShapesLocked(!o.every(s=>s.locked));return}if(i&&!e.altKey&&!e.shiftKey&&e.key.toLowerCase()==="c"){e.preventDefault(),this.copySelected();return}if(i&&!e.altKey&&e.key.toLowerCase()==="v"){e.preventDefault(),this.imagePasteHandled=false,setTimeout(()=>{this.imagePasteHandled||this.paste(),this.imagePasteHandled=false;},0);return}if(i&&!e.altKey&&e.key.toLowerCase()==="d"){e.preventDefault(),this.duplicateSelected();return}if(i&&!e.altKey&&e.key.toLowerCase()==="g"){e.preventDefault(),e.shiftKey?this.ungroupSelected():this.groupSelected();return}if(e.shiftKey&&!i&&!e.altKey){let o=e.key.toLowerCase();if(o==="h"){e.preventDefault(),this.flipSelected("horizontal");return}if(o==="v"){e.preventDefault(),this.flipSelected("vertical");return}}if(!e.ctrlKey&&!e.metaKey&&!e.altKey){if(e.key==="v"||e.key==="V"){this.setActiveTool("select"),e.preventDefault();return}if(e.key==="h"||e.key==="H"){this.setActiveTool("hand"),e.preventDefault();return}if(e.key==="n"||e.key==="N"){this.setActiveTool("sticky-note"),e.preventDefault();return}if(e.key==="a"||e.key==="A"){this.setActiveTool("arrow"),e.preventDefault();return}if(e.key==="t"||e.key==="T"){this.setActiveTool("text"),e.preventDefault();return}if(e.key==="e"||e.key==="E"){this.setActiveTool("eraser"),e.preventDefault();return}}if(e.key==="Delete"||e.key==="Backspace"){let o=this.mindMapSelectedNode;if(o){let s=this.shapes.find(a=>a.id===o.shapeId);if(s&&s.type==="mind-map"){e.preventDefault(),this.deleteMindMapNode(o.shapeId,o.nodeId);return}}}this.tools.get(this.activeTool)?.onKeyDown(e),this.scheduleRender();};handleKeyUp=e=>{if(this.editingShapeId)return;let t=e.target;if(t&&(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable))return;this.tools.get(this.activeTool)?.onKeyUp(e),this.scheduleRender();};handleResize=()=>{this.renderer.resize(window.innerWidth,window.innerHeight),this.scheduleRender();};screenToPage(e){let t=this.canvas.getBoundingClientRect();return this.camera.screenToPage({x:e.x-t.left,y:e.y-t.top})}insertTemplate(e){if(!e||e.length===0)return;this.closeInlineEditing();let t=at(e,0),i=this.canvas.getBoundingClientRect(),n=this.camera.screenToPage({x:i.width/2,y:i.height/2}),o=n.x-(t.x+t.width/2),s=n.y-(t.y+t.height/2),a=e.map(l=>{let c={...l,style:{...l.style}};return c.type==="arrow"||c.type==="line"?c.points=c.points.map(h=>({x:h.x+o,y:h.y+s})):(c.x+=o,c.y+=s),c});this.commitHistory(),this.shapes=[...this.shapes,...a],this.selectedIds=[],this.prefetchShapeIcons(),this.notifyListeners(),this.render();}addShape(e){this.shapes.push(e),this.prefetchShapeIcons(),this.notifyListeners();}prefetchShapeIcons(){let e=[];for(let t of this.shapes)t.type==="icon"&&e.push(t.iconId);e.length!==0&&ft(e).then(()=>this.scheduleRender()).catch(()=>{});}updateShape(e,t){let i=this.shapes.findIndex(n=>n.id===e);if(i!==-1){let n=this.shapes[i];this.shapes[i]={...n,...t};let o=this.shapes[i],s=t;if(o.type==="table"){let a=s.rowHeights!==void 0&&!Ns(s.rowHeights,n.rowHeights),l=s.cells!==void 0||s.colWidths!==void 0||s.fontSize!==void 0;!a&&l&&this.autoGrowTableRows(i);}(t.x!==void 0||t.y!==void 0)&&this.updateBoundArrows(e),this.notifyListeners();}}tableTopLeftAnchored(e,t,i){let n=(t-e.width)/2,o=(i-e.height)/2,s=Math.cos(e.rotation),a=Math.sin(e.rotation);return {x:e.x+n*s-o*a,y:e.y+n*a+o*s}}writeTable(e,t,i){let n=nt(i.colWidths),o=it(i.rowHeights),s=this.tableTopLeftAnchored(t,n,o);this.shapes[e]={...t,cells:i.cells,rowHeights:i.rowHeights,colWidths:i.colWidths,width:n,height:o,x:s.x,y:s.y},this.updateBoundArrows(t.id);}autoGrowTableRows(e){let t=this.shapes[e];if(!t||t.type!=="table")return;let i=di(t);if(!i)return;let n=t;this.writeTable(e,n,{cells:n.cells,rowHeights:i,colWidths:n.colWidths});}updateBoundArrows(e){let t=this.shapes.find(i=>i.id===e);t&&this.shapes.forEach(i=>{if(i.type==="arrow"){let n=i,o={};if(n.startBinding?.toShapeId===e){let s=this.getBindingPosition(t,n.startBinding.handle||"top");o.points=n.points.map((a,l)=>l===0?s:a);}if(n.endBinding?.toShapeId===e){let s=this.getBindingPosition(t,n.endBinding.handle||"top"),a=o.points||[...n.points];o.points=a.map((l,c)=>c===a.length-1?s:l);}o.points&&(this.shapes[this.shapes.indexOf(i)]={...n,...o});}});}getBindingPosition(e,t){switch(e.type){case "rectangle":case "sticky-note":case "icon":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "table":switch(t){case "top":return {x:e.x,y:e.y-e.height/2};case "bottom":return {x:e.x,y:e.y+e.height/2};case "left":return {x:e.x-e.width/2,y:e.y};case "right":return {x:e.x+e.width/2,y:e.y}}case "circle":switch(t){case "top":return {x:e.x,y:e.y-e.radius};case "bottom":return {x:e.x,y:e.y+e.radius};case "left":return {x:e.x-e.radius,y:e.y};case "right":return {x:e.x+e.radius,y:e.y}}case "hexagon":switch(t){case "top":return {x:e.x,y:e.y-e.height/2};case "bottom":return {x:e.x,y:e.y+e.height/2};case "left":return {x:e.x-e.width/2,y:e.y};case "right":return {x:e.x+e.width/2,y:e.y}}default:return {x:e.x,y:e.y}}}deleteShape(e){this.shapes=this.shapes.filter(t=>t.id!==e),this.selectedIds=this.selectedIds.filter(t=>t!==e),this.shapes=this.shapes.map(t=>{if(t.type==="arrow"){let i=t;if(i.startBinding?.toShapeId===e)return {...i,startBinding:void 0};if(i.endBinding?.toShapeId===e)return {...i,endBinding:void 0}}return t}),this.notifyListeners(),this.scheduleRender();}eraseShape(e){this.eraseFades.has(e)||this.shapes.some(t=>t.id===e)&&(this.eraseFades.set(e,Ni()),this.selectedIds.includes(e)&&(this.selectedIds=this.selectedIds.filter(t=>t!==e)),this.scheduleRender(),this.tickEraseFade());}tickEraseFade(){if(this.eraseFadeRaf!==null)return;let e=()=>{this.eraseFadeRaf=null;let t=Ni(),i=false;for(let[n,o]of [...this.eraseFades])t-o>=Ci?(this.eraseFades.delete(n),this.deleteShape(n)):i=true;this.scheduleRender(),i?this.eraseFadeRaf=requestAnimationFrame(e):this.notifyListeners();};this.eraseFadeRaf=requestAnimationFrame(e);}eraseFadeMap(){if(this.eraseFades.size===0)return;let e=Ni(),t=new Map;for(let[i,n]of this.eraseFades)t.set(i,Math.max(0,1-(e-n)/Ci));return t}clearEraseFades(){this.eraseFades.size!==0&&(this.eraseFades.clear(),this.eraseFadeRaf!==null&&(cancelAnimationFrame(this.eraseFadeRaf),this.eraseFadeRaf=null));}selectShape(e,t){if(!e)this.selectedIds=[];else {let i=this.getGroupMembers(e);if(t){let n=i.filter(o=>!this.selectedIds.includes(o));n.length>0?this.selectedIds=[...this.selectedIds,...n]:this.selectedIds=this.selectedIds.filter(o=>!i.includes(o));}else this.selectedIds=i;}this.notifyListeners(),this.scheduleRender();}selectShapes(e){let t=new Set;for(let i of e)for(let n of this.getGroupMembers(i))t.add(n);this.selectedIds=[...t],this.notifyListeners(),this.scheduleRender();}selectAll(){let e=this.shapes.filter(t=>!t.locked).map(t=>t.id);return e.length===0?false:(this.selectShapes(e),true)}getGroupMembers(e){let t=this.shapes.find(i=>i.id===e);return !t||!t.groupId?[e]:this.shapes.filter(i=>i.groupId===t.groupId&&!i.locked).map(i=>i.id)}getSelectedGroupId(){let e=this.getSelectedShapes();if(e.length===0)return null;let t=e[0].groupId;return !t||!e.every(n=>n.groupId===t)||this.shapes.filter(n=>n.groupId===t).length!==e.length?null:t}hasSelectedGroup(){return this.getSelectedShapes().some(e=>!!e.groupId)}groupMemberIds(e){return this.shapes.filter(t=>t.groupId===e).map(t=>t.id)}groupSelected(){let e=this.getSelectedShapes();if(e.length<2)return null;let t=`grp_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;this.commitHistory();for(let i of e){let n=this.shapes.findIndex(o=>o.id===i.id);n!==-1&&(this.shapes[n]={...this.shapes[n],groupId:t,locked:true});}return this.selectedIds=[],this.notifyListeners(),this.render(),t}ungroupSelected(){let e=new Set(this.getSelectedShapes().filter(t=>!!t.groupId).map(t=>t.groupId));return this.ungroupIds([...e])}ungroupIds(e){if(e.length===0)return false;let t=new Set;for(let i of e)for(let n of this.groupMemberIds(i))t.add(n);if(t.size===0)return false;this.commitHistory();for(let i of this.shapes.keys()){let n=this.shapes[i];if(!t.has(n.id))continue;let o={...n};delete o.groupId,n.locked&&n.groupId&&(o.locked=false),this.shapes[i]=o;}return this.notifyListeners(),this.render(),true}setGroupLocked(e,t){let i=this.groupMemberIds(e);if(i.length===0)return false;this.commitHistory();for(let n of this.shapes.keys())i.includes(this.shapes[n].id)&&(this.shapes[n]={...this.shapes[n],locked:t});return t?this.selectedIds=this.selectedIds.filter(n=>!i.includes(n)):this.selectedIds=[...i],this.notifyListeners(),this.render(),true}selectShapeRaw(e){this.selectedIds=e?[e]:[],this.notifyListeners(),this.scheduleRender();}getGroupIdOfSelected(){for(let e of this.getSelectedShapes())if(e.groupId)return e.groupId;return null}setBrushRect(e){this.brushRect=e,this.scheduleRender();}setSnapGuides(e){this.snapGuides=e;}setConnectingTarget(e){this.connectingTargetId!==e&&(this.connectingTargetId=e,this.scheduleRender());}setGenerationPreview(e){let t=this.genPreview;t?.from.x===e?.from.x&&t?.from.y===e?.from.y&&t?.to.x===e?.to.x&&t?.to.y===e?.to.y&&t?.type===e?.type&&t?.targetShapeId===e?.targetShapeId&&t?.dragging===e?.dragging&&t?.sourceEdge===e?.sourceEdge||(this.genPreview=e,this.scheduleRender());}setHoverAnchorShape(e){this.hoverAnchorShapeId!==e&&(this.hoverAnchorShapeId=e,this.scheduleRender());}setHoverConnector(e){this.hoverConnectorId!==e&&(this.hoverConnectorId=e,this.scheduleRender());}getConnectorRoute(e){let t=this.shapes.find(n=>n.id===e);if(!t)return [];let i=new Map(this.shapes.map(n=>[n.id,n]));return this.renderer.getConnectorRoute(t,i)}getAutoConnectorRoute(e){let t=this.shapes.find(n=>n.id===e);if(!t)return [];let i=new Map(this.shapes.map(n=>[n.id,n]));return this.renderer.getConnectorRoute(t,i,{ignoreUserPoints:true})}clearTransientPreview(){return !!this.genPreview||!!this.connectingTargetId||this.snapGuides.length>0||!!this.brushRect||!!this.hoverAnchorShapeId||!!this.hoverConnectorId||!!this.pendingMindMapHandle?(this.genPreview=null,this.connectingTargetId=null,this.snapGuides=[],this.brushRect=null,this.hoverAnchorShapeId=null,this.hoverConnectorId=null,this.pendingMindMapHandle=null,true):false}openGenerationMenu(e){let t=this.camera.getZoom(),i=(e.context.to.x+this.camera.x)*t,n=(e.context.to.y+this.camera.y)*t;this.emitUi({kind:"shapeTypeMenu",screenX:i,screenY:n,context:e.context,existingArrowId:e.existingArrowId,defaultShapeType:e.defaultShapeType});}lineStyle(){return {strokeColor:"#1f2937",fillColor:"transparent",strokeWidth:2,strokeDash:null}}computeSourceBinding(e){if(!e.sourceShapeId||!e.edge)return;let t=this.shapes.find(n=>n.id===e.sourceShapeId);if(!t)return;let i={n:"top",e:"right",s:"bottom",w:"left"};return {toShapeId:t.id,handle:i[e.edge]}}connectHandle(e,t,i){return un(e,t,i)}createFloatingLine(e){this.commitHistory();let t=e.from,i=e.to,n=`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,o={id:n,type:"arrow",x:t.x,y:t.y,points:[{x:t.x,y:t.y},{x:i.x,y:i.y}],rotation:0,style:this.lineStyle(),startBinding:this.computeSourceBinding(e),connectionType:"polyline",arrowHead:this.arrowStyle.arrowHead,dashed:this.arrowStyle.dashed};return this.addShape(o),this.selectedIds=[n],this.notifyListeners(),this.render(),n}createGeneratedConnection(e,t){this.commitHistory();let i=t.type,n,o;e.sourceShapeId&&(o=this.shapes.find(h=>h.id===e.sourceShapeId),o&&ln(o.type)&&(n={...o.style}));let s=n?void 0:this.stickyNoteColor,a=Te(i,e.to,n,s,cn(i,o));this.addShape(a);let l=e.from,c={toShapeId:a.id,handle:this.connectHandle(l,e.to,e.edge),auto:true};if(t.existingArrowId)this.updateArrowBinding(t.existingArrowId,"end",a.id,{toShapeId:a.id,handle:this.connectHandle(l,e.to,e.edge),auto:true});else {let d={id:`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,type:"arrow",x:l.x,y:l.y,points:[{x:l.x,y:l.y},{x:e.to.x,y:e.to.y}],rotation:0,style:this.lineStyle(),startBinding:this.computeSourceBinding(e),endBinding:c,connectionType:"polyline",arrowHead:this.arrowStyle.arrowHead,dashed:this.arrowStyle.dashed};this.addShape(d);}this.selectedIds=[a.id],this.notifyListeners(),this.render();}connectToExisting(e,t,i){this.commitHistory();let n=this.shapes.find(h=>h.id===t);if(!n)return;let o=e.from,s=i?.handle??this.connectHandle(o,{x:n.x,y:n.y},e.edge),a=this.getBindingPosition(n,s),l=`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,c={id:l,type:"arrow",x:o.x,y:o.y,points:[{x:o.x,y:o.y},{x:a.x,y:a.y}],rotation:0,style:this.lineStyle(),startBinding:this.computeSourceBinding(e),endBinding:{toShapeId:t,handle:s,auto:!i||!i.handle&&!i.isPrecise},connectionType:"polyline",arrowHead:this.arrowStyle.arrowHead,dashed:this.arrowStyle.dashed};this.addShape(c),this.selectedIds=[l],this.notifyListeners(),this.render();}subscribeUi(e){return this.uiListeners.add(e),()=>this.uiListeners.delete(e)}emitUi(e){this.uiListeners.forEach(t=>t(e));}setInteractionDragging(e){e!==this.interactionDragging&&(this.interactionDragging=e,this.emitUi({kind:"drag",active:e}));}updateSelectedShapesStyle(e){this.selectedIds.length!==0&&(this.commitHistory(),this.selectedIds.forEach(t=>{let i=this.shapes.findIndex(n=>n.id===t);i!==-1&&(this.shapes[i]={...this.shapes[i],style:{...this.shapes[i].style,...e}});}),this.notifyListeners(),this.render());}updateSelectedShapesText(e){this.selectedIds.length!==0&&(this.commitHistory(),this.selectedIds.forEach(t=>{let i=this.shapes.findIndex(n=>n.id===t);i!==-1&&(this.shapes[i]={...this.shapes[i],...e});}),this.notifyListeners(),this.render());}updateConnectionType(e){this.selectedIds.length!==0&&(this.commitHistory(),this.selectedIds.forEach(t=>{let i=this.shapes.findIndex(n=>n.id===t);if(i!==-1){let n=this.shapes[i];(n.type==="line"||n.type==="arrow")&&(this.shapes[i]={...n,connectionType:e});}}),this.notifyListeners(),this.render());}getSelectedShapes(){return this.shapes.filter(e=>this.selectedIds.includes(e.id))}isEditing(){return this.editingShapeId!==null}deleteSelected(){let e=this.selectedIds.filter(t=>{let i=this.shapes.find(n=>n.id===t);return i&&!i.locked});return e.length===0?false:(this.commitHistory(),e.forEach(t=>this.deleteShape(t)),this.releaseUnusedImageUrls(),true)}copySelected(){let e=this.getSelectedShapes().filter(t=>!t.locked);return e.length===0?false:(this.clipboardShapes=this.cloneShapes(e),this.pasteSeq=0,true)}hasClipboard(){return this.clipboardShapes.length>0}cloneWithOffset(e,t){let i=()=>`shape_${Date.now()}_${Math.random().toString(36).slice(2,9)}`,n=new Map,o=()=>`grp_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return this.cloneShapes(e).map(s=>{let a={...s,id:i()};if(s.groupId){let l=n.get(s.groupId);l||(l=o(),n.set(s.groupId,l)),a.groupId=l;}return a.x+=t,a.y+=t,Array.isArray(a.points)&&(a.points=a.points.map(l=>({x:l.x+t,y:l.y+t}))),Array.isArray(a.userPoints)&&(a.userPoints=a.userPoints.map(l=>({x:l.x+t,y:l.y+t}))),Array.isArray(a.userPointsBase)&&(a.userPointsBase=a.userPointsBase.map(l=>({x:l.x+t,y:l.y+t}))),delete a.startBinding,delete a.endBinding,a})}paste(){if(this.clipboardShapes.length===0)return false;let e=20*(this.pasteSeq+1);this.pasteSeq+=1,this.commitHistory();let t=this.cloneWithOffset(this.clipboardShapes,e);return this.shapes.push(...t),this.selectedIds=t.map(i=>i.id),this.notifyListeners(),this.render(),true}duplicateSelected(){let e=this.getSelectedShapes().filter(i=>!i.locked);if(e.length===0)return false;this.commitHistory();let t=this.cloneWithOffset(e,20);return this.shapes.push(...t),this.selectedIds=t.map(i=>i.id),this.notifyListeners(),this.render(),true}async copySelectedAsImage(){let e=this.getSelectedShapes().filter(t=>!t.locked);if(e.length===0)return false;try{if(!navigator.clipboard||typeof ClipboardItem>"u")return !1;let t=await Cn(e,"png",{background:null,padding:16});return await navigator.clipboard.write([new ClipboardItem({"image/png":t})]),!0}catch{return false}}copyStyle(){let e=this.getSelectedShapes().find(t=>!t.locked);return e?(this.copiedStyle={style:{...e.style},...e.textColor!==void 0?{textColor:e.textColor}:{},...e.fontSize!==void 0?{fontSize:e.fontSize}:{}},true):false}hasCopiedStyle(){return this.copiedStyle!==null}pasteStyle(){if(!this.copiedStyle||this.selectedIds.length===0)return false;this.commitHistory();let e=this.copiedStyle;return this.selectedIds.forEach(t=>{let i=this.shapes.find(n=>n.id===t);i&&this.updateShape(t,{style:{...i.style,...e.style},...e.textColor!==void 0?{textColor:e.textColor}:{},...e.fontSize!==void 0?{fontSize:e.fontSize}:{}});}),true}flipSelected(e){let t=this.getSelectedShapes().filter(i=>!i.locked&&Vn(i.type));return t.length===0?false:(this.commitHistory(),t.forEach(i=>{this.updateShape(i.id,e==="horizontal"?{flipX:!i.flipX}:{flipY:!i.flipY});}),true)}rotateSelected(e){let t=this.getSelectedShapes().filter(o=>!o.locked);if(t.length===0)return false;this.commitHistory();let i=e*Math.PI/180,n=Math.PI*2;return t.forEach(o=>{this.updateShape(o.id,{rotation:((o.rotation+i)%n+n)%n});}),true}rotateSelected90(e=true){return this.rotateSelected(e?90:-90)}setSelectedShapesLocked(e){let t=this.getSelectedShapes();return t.length===0?false:(this.commitHistory(),t.forEach(i=>this.updateShape(i.id,{locked:e})),e&&(this.selectedIds=[],this.notifyListeners(),this.render()),true)}setShapeLocked(e,t){let i=this.shapes.find(n=>n.id===e);if(!i)return false;if(this.commitHistory(),this.updateShape(e,{locked:t}),t){let n=i.groupId?this.groupMemberIds(i.groupId):[e];this.selectedIds=this.selectedIds.filter(o=>!n.includes(o)),this.notifyListeners();}return this.render(),true}isShapeLocked(e){return !!this.shapes.find(t=>t.id===e)?.locked}hasLockedShapes(){return this.shapes.some(e=>!!e.locked)}unlockAll(){let e=this.shapes.filter(i=>i.locked);if(e.length===0)return false;this.commitHistory();let t=new Set(e.map(i=>i.id));return this.shapes=this.shapes.map(i=>t.has(i.id)?{...i,locked:false}:i),this.notifyListeners(),this.render(),true}bringToFront(){if(this.selectedIds.length===0)return false;this.commitHistory();let e=new Set(this.selectedIds),t=this.shapes.filter(n=>e.has(n.id)),i=this.shapes.filter(n=>!e.has(n.id));return this.shapes=[...i,...t],this.notifyListeners(),this.render(),true}sendToBack(){if(this.selectedIds.length===0)return false;this.commitHistory();let e=new Set(this.selectedIds),t=this.shapes.filter(n=>e.has(n.id)),i=this.shapes.filter(n=>!e.has(n.id));return this.shapes=[...t,...i],this.notifyListeners(),this.render(),true}bringForward(){if(this.selectedIds.length===0)return false;this.commitHistory();let e=new Set(this.selectedIds),t=[...this.shapes];for(let i=t.length-2;i>=0;i--)e.has(t[i].id)&&!e.has(t[i+1].id)&&([t[i],t[i+1]]=[t[i+1],t[i]]);return this.shapes=t,this.notifyListeners(),this.render(),true}sendBackward(){if(this.selectedIds.length===0)return false;this.commitHistory();let e=new Set(this.selectedIds),t=[...this.shapes];for(let i=1;i<t.length;i++)e.has(t[i].id)&&!e.has(t[i-1].id)&&([t[i],t[i-1]]=[t[i-1],t[i]]);return this.shapes=t,this.notifyListeners(),this.render(),true}updateArrowHeadType(e){if(this.selectedIds.length===0)return;this.commitHistory();let t=e==="dependency"||e==="realization";this.selectedIds.forEach(i=>{let n=this.shapes.findIndex(o=>o.id===i);if(n!==-1){let o=this.shapes[n];o.type==="arrow"&&(this.shapes[n]=t?{...o,arrowHead:e,dashed:true}:{...o,arrowHead:e});}}),this.notifyListeners(),this.render();}updateArrowStyle(e){this.selectedIds.length!==0&&(this.commitHistory(),this.selectedIds.forEach(t=>{let i=this.shapes.findIndex(a=>a.id===t);if(i===-1)return;let n=this.shapes[i];if(n.type!=="arrow")return;let o=e.arrowHead??n.arrowHead??"end",s=o==="dependency"||o==="realization";this.shapes[i]={...n,...e,arrowHead:o,dashed:s?true:e.dashed??n.dashed??false};}),this.notifyListeners(),this.render());}getArrowStyle(){return {...this.arrowStyle}}setArrowStyle(e){let t={...this.arrowStyle,...e};(t.arrowHead==="dependency"||t.arrowHead==="realization")&&(t.dashed=true),this.arrowStyle=t,this.notifyListeners();}getStickyNoteColor(){return this.stickyNoteColor}insertIcon(e,t=ri){let i=$e(e);if(!i||!oi(e))return;let n=this.viewportCenter(),o=this.iconInsertSeq++%6*14,s=si(i),a={id:`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,type:"icon",iconId:e,x:n.x+o,y:n.y+o,width:t,height:t,rotation:0,style:{strokeColor:s,fillColor:s,fillOpacity:1,strokeWidth:2,strokeDash:null}};return this.commitHistory(),this.addShape(a),this.selectShape(a.id,false),this.setActiveTool("select"),a.id}setImageUpload(e){this.imageUploadOption=e??null;}getImageUpload(){return this.imageUploadOption}hasImageUploader(){return !!this.imageUploadOption}getTemporaryImageSrcs(){return _n(this.shapes)}hasTemporaryImages(){return this.getTemporaryImageSrcs().length>0}insertImageShape(e){let t=e.naturalWidth??0,i=e.naturalHeight??0,n=Vo.width,o=Vo.height;if(t>0&&i>0){let c=Math.min(1,Bs/Math.max(t,i));n=Math.max(24,Math.round(t*c)),o=Math.max(24,Math.round(i*c));}let s=e.at??this.viewportCenter(),a=this.imageInsertSeq++%6*16,l={id:`shape_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,type:"image",src:e.src,...e.temporary?{temporary:true}:{},...t>0?{naturalWidth:t}:{},...i>0?{naturalHeight:i}:{},x:s.x+a,y:s.y+a,width:n,height:o,rotation:0,borderRadius:4,style:{strokeColor:"transparent",fillColor:"#f3f4f6",fillOpacity:1,strokeWidth:0,strokeDash:null}};return this.commitHistory(),this.addShape(l),this.selectShape(l.id,false),this.setActiveTool("select"),l.id}async insertImageFile(e,t){if(!e||!/^image\//.test(e.type||""))throw new Error("\u4E0D\u662F\u56FE\u7247\u6587\u4EF6");let i=typeof this.imageUploadOption=="object"&&this.imageUploadOption?this.imageUploadOption.maxSizeBytes??31457280:31457280;if(e.size>i)throw new Error(`image.tooLarge: \u56FE\u7247\u5927\u5C0F ${(e.size/1024/1024).toFixed(2)} MB \u8D85\u8FC7\u4E0A\u9650 ${(i/1024/1024).toFixed(2)} MB`);let n,o=false;this.imageUploadOption?n=await Yi(this.imageUploadOption,e):(n=URL.createObjectURL(e),Gi(n),this.ownImageUrls.add(n),o=true);let s=await Ke(n);return this.insertImageShape({src:n,naturalWidth:s?.width,naturalHeight:s?.height,temporary:o,at:t})}async insertImageFiles(e,t){let i=Array.from(e).filter(o=>!!o&&/^image\//.test(o.type||"")),n=[];for(let o of i)n.push(await this.insertImageFile(o,t));return n}async insertImageFromUrl(e,t){if(!e)throw new Error("\u56FE\u7247\u5730\u5740\u4E3A\u7A7A");let i=await Ke(e);return this.insertImageShape({src:e,naturalWidth:i?.width,naturalHeight:i?.height,temporary:e.startsWith("blob:"),at:t})}releaseUnusedImageUrls(){if(this.ownImageUrls.size===0)return;let e=new Set(this.shapes.filter(t=>t.type==="image").map(t=>t.src));for(let t of Array.from(this.ownImageUrls))e.has(t)||(this.ownImageUrls.delete(t),Bn(t));}handlePasteEvent=e=>{if(this.editingShapeId)return;let t=e.target;if(t&&(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable))return;let i=e.clipboardData?.items;if(!i)return;let n=[];for(let o of Array.from(i))if(o.kind==="file"&&(o.type||"").startsWith("image/")){let s=o.getAsFile();s&&n.push(s);}n.length!==0&&(e.preventDefault(),this.imagePasteHandled=true,this.insertImageFiles(n).catch(o=>{this.emitUi({kind:"imageError",message:o instanceof Error?o.message:String(o)});}));};viewportCenter(){let e=this.canvas.getBoundingClientRect();return this.camera.screenToPage({x:e.width/2,y:e.height/2})}setStickyNoteColor(e){if(!ii(e))return;let t=e.trim().toLowerCase();t!==this.stickyNoteColor&&(this.stickyNoteColor=t,this.notifyListeners());}updateArrowDashed(e){this.selectedIds.length!==0&&(this.commitHistory(),this.selectedIds.forEach(t=>{let i=this.shapes.findIndex(n=>n.id===t);if(i!==-1){let n=this.shapes[i];n.type==="arrow"&&(this.shapes[i]={...n,dashed:e});}}),this.notifyListeners(),this.render());}updateUmlClass(e,t){let i=this.shapes.findIndex(h=>h.id===e);if(i===-1)return;let n=this.shapes[i];if(n.type!=="uml-class")return;this.commitHistory();let o=t.className??n.className,s=t.attributes??n.attributes,a=t.methods??n.methods,{width:l,height:c}=hn(o,s,a);this.shapes[i]={...n,className:o,attributes:s,methods:a,width:l,height:c},this.notifyListeners(),this.render();}updateUmlInterface(e,t){let i=this.shapes.findIndex(h=>h.id===e);if(i===-1)return;let n=this.shapes[i];if(n.type!=="uml-interface")return;this.commitHistory();let o=n,s=t.className??o.className,a=t.methods??o.methods,{width:l,height:c}=xi(s,a);this.shapes[i]={...n,className:s,methods:a,width:l,height:c},this.notifyListeners(),this.render();}getSelectedUml(){if(this.selectedIds.length!==1)return null;let e=this.shapes.find(t=>t.id===this.selectedIds[0]);return e&&(e.type==="uml-class"||e.type==="uml-interface")?e:null}getUmlById(e){let t=this.shapes.find(i=>i.id===e);return t&&(t.type==="uml-class"||t.type==="uml-interface")?t:null}pageToMindMapLocal(e,t){let i=t.x-e.x,n=t.y-e.y,o=Math.cos(e.rotation),s=Math.sin(e.rotation);return {x:i*o+n*s,y:-i*s+n*o}}calcMindMapReorderTarget(e,t,i,n,o,s){if(t.length<=1)return 0;let a=ce(i),l=a?o:n,c=t.filter(d=>d!==s).map(d=>e.get(d)).filter(d=>!!d).map(d=>a?d.y:d.x).sort((d,u)=>d-u),h=0;for(let d of c)if(l>d)h++;else break;return h}anchorMindMapAtRoot(e,t,i){let n=N(t).positions.get(t.id),o=N(i).positions.get(i.id);if(!n||!o)return {x:e.x,y:e.y};let s=Math.cos(e.rotation),a=Math.sin(e.rotation),l=n.x*s-n.y*a,c=n.x*a+n.y*s,h=o.x*s-o.y*a,d=o.x*a+o.y*s;return {x:e.x+(l-h),y:e.y+(c-d)}}getSelectedMindMap(){if(this.selectedIds.length!==1)return null;let e=this.shapes.find(t=>t.id===this.selectedIds[0]);return e&&e.type==="mind-map"?e:null}getMindMapNodeAtPoint(e){for(let t=this.shapes.length-1;t>=0;t--){let i=this.shapes[t];if(i.type!=="mind-map")continue;let n=i,o=e.x-n.x,s=e.y-n.y,a=Math.cos(n.rotation),l=Math.sin(n.rotation),c=o*a+s*l,h=-o*l+s*a;if(Math.abs(c)>n.width/2||Math.abs(h)>n.height/2)continue;let d=N(n.root);for(let[u,p]of d.positions)if(Math.abs(c-p.x)<=p.width/2&&Math.abs(h-p.y)<=p.height/2)return {shapeId:n.id,nodeId:u};return {shapeId:n.id,nodeId:n.root.id}}return null}getMindMapNodeAtScreenPoint(e){return this.getMindMapNodeAtPoint(this.screenToPage(e))}getMindMapNodeBoxAtPoint(e){for(let t=this.shapes.length-1;t>=0;t--){let i=this.shapes[t];if(i.type!=="mind-map")continue;let n=i,o=e.x-n.x,s=e.y-n.y,a=Math.cos(n.rotation),l=Math.sin(n.rotation),c=o*a+s*l,h=-o*l+s*a,d=N(n.root);for(let[u,p]of d.positions)if(Math.abs(c-p.x)<=p.width/2&&Math.abs(h-p.y)<=p.height/2)return {shapeId:n.id,nodeId:u}}return null}hitMindMapNodeBox(e,t,i,n,o=48){let s=o,a=W(e,n),l=null,c=1/0;for(let[h,d]of t){if(h===n||a&&W(a,h))continue;let u=Math.abs(i.x-d.x)-(d.width/2+s),p=Math.abs(i.y-d.y)-(d.height/2+s);if(u>0||p>0)continue;let g=Math.abs(i.x-d.x)+Math.abs(i.y-d.y);g<c&&(c=g,l=h);}return l}mindMapChildGroup(e,t,i,n){let s=W(e,i)?.children??[];if(i!==e.id)return {direction:t.get(i)?.direction??"right",childIds:s.map(d=>d.id)};if(s.length===0)return {direction:"right",childIds:[]};let a="right",l=1/0;for(let h of Ze){let d=s.filter(g=>Z(g,"right")===h);if(d.length===0)continue;let u=t.get(d[0].id);if(!u)continue;let p=ce(h)?Math.abs(n.y-u.y):Math.abs(n.x-u.x);p<l&&(l=p,a=h);}let c=s.filter(h=>Z(h,"right")===a).map(h=>h.id);return {direction:a,childIds:c}}mindMapSortByCross(e,t,i){return [...e].sort((n,o)=>{let s=i.get(n),a=i.get(o);return !s||!a?0:ce(t)?s.y-a.y:s.x-a.x})}setReorderIndicator(e){let t=this.mindMapReorderTarget;!t&&!e||t&&e&&t.shapeId===e.shapeId&&t.nodeId===e.nodeId&&t.targetIndex===e.targetIndex&&t.direction===e.direction&&t.childParentId===e.childParentId&&t.siblingIds.join(",")===e.siblingIds.join(",")||(this.mindMapReorderTarget=e,this.scheduleRender());}getMindMapCursorHitAtPoint(e){let t=this.getMindMapCollapseHitAtPoint(e);if(t)return t;let i=this.getMindMapHandleAtPoint(e);if(i)return {shapeId:i.shapeId,nodeId:i.nodeId};for(let n=this.shapes.length-1;n>=0;n--){let o=this.shapes[n];if(o.type!=="mind-map")continue;let s=o,a=e.x-s.x,l=e.y-s.y,c=Math.cos(s.rotation),h=Math.sin(s.rotation),d=a*c+l*h,u=-a*h+l*c,p=N(s.root);for(let[g,m]of p.positions)if(Math.abs(d-m.x)<=m.width/2&&Math.abs(u-m.y)<=m.height/2)return {shapeId:s.id,nodeId:g}}return null}selectMindMapNode(e,t){let i=this.shapes.find(n=>n.id===e);!i||i.type!=="mind-map"||(this.selectedIds=[e],this.mindMapSelectedNode={shapeId:e,nodeId:t},this.notifyListeners(),this.render());}getMindMapEditingShapeId(){return this.mindMapEditingShapeId}getMindMapSelectedNode(){return this.mindMapSelectedNode}getMindMapNode(e,t){let i=this.shapes.find(n=>n.id===e);return !i||i.type!=="mind-map"?null:W(i.root,t)}getMindMapNodeScreenRect(e,t){let i=this.shapes.find(b=>b.id===e);if(!i||i.type!=="mind-map")return null;let n=i,s=N(n.root).positions.get(t);if(!s)return null;let a=this.camera.getZoom(),l=s.x,c=s.y,h=Math.cos(n.rotation),d=Math.sin(n.rotation),u=l*h-c*d,p=l*d+c*h,g=this.camera.pageToScreen({x:n.x,y:n.y}),m=g.x+u*a,f=g.y+p*a;return {x:m-s.width*a/2,y:f-s.height*a/2,width:s.width*a,height:s.height*a}}getMindMapCollapseHitAtPoint(e){for(let t of this.shapes){if(t.type!=="mind-map")continue;let i=t,n=N(i.root),o=this.pageToMindMapLocal(i,e);for(let[s,a]of n.positions){let l=W(i.root,s);if(!l||!l.children||l.children.length===0)continue;let c=qt(a,a.direction),h=o.x-c.x,d=o.y-c.y;if(h*h+d*d<=121)return {shapeId:t.id,nodeId:s}}}return null}getMindMapHandleAtPoint(e){for(let t=this.shapes.length-1;t>=0;t--){let i=this.shapes[t];if(i.type!=="mind-map")continue;let n=i,o=this.pageToMindMapLocal(n,e);if(Math.abs(o.x)>n.width/2+40||Math.abs(o.y)>n.height/2+40)continue;let s=Qn(n.root,N(n.root).positions,o.x,o.y);if(s)return {shapeId:i.id,nodeId:s.nodeId,kind:s.kind,direction:s.direction}}return null}addMindMapNodeFromHandle(e){e.kind==="child"?this.addMindMapChild(e.shapeId,e.nodeId,e.direction):this.addMindMapSibling(e.shapeId,e.nodeId),this.mindMapHoverNode=null;}beginMindMapEdit(e,t){let i=this.shapes.find(o=>o.id===e);if(!i||i.type!=="mind-map")return;let n=i;this.mindMapEditingShapeId=e,this.mindMapSelectedNode={shapeId:e,nodeId:t&&W(n.root,t)?t:n.root.id},this.selectedIds=[e],this.notifyListeners(),this.render();}exitMindMapEdit(){this.mindMapEditingShapeId=null,this.notifyListeners(),this.render();}updateMindMapNode(e,t,i,n=true){let o=this.shapes.findIndex(g=>g.id===e);if(o===-1)return;let s=this.shapes[o];if(s.type!=="mind-map")return;let a=s,l=W(a.root,t);if(!l||!Object.keys(i).some(g=>l[g]!==i[g]))return;n&&this.commitHistory();let h=je(a.root,t,i),{width:d,height:u}=N(h),p=this.anchorMindMapAtRoot(a,a.root,h);this.shapes[o]={...a,root:h,width:d,height:u,x:p.x,y:p.y},this.notifyListeners(),this.render();}setMindMapNodeOffset(e,t,i){let n=this.shapes.findIndex(u=>u.id===e);if(n===-1)return;let o=this.shapes[n];if(o.type!=="mind-map")return;let s=o,a=W(s.root,t);if(!a||a.offset?.dx===i.dx&&a.offset?.dy===i.dy)return;let l=je(s.root,t,{offset:i}),{width:c,height:h}=N(l),d=this.anchorMindMapAtRoot(s,s.root,l);this.shapes[n]={...s,root:l,width:c,height:h,x:d.x,y:d.y},this.render();}addMindMapChild(e,t,i){let n=this.shapes.findIndex(g=>g.id===e);if(n===-1)return;let o=this.shapes[n];if(o.type!=="mind-map")return;let s=o,a=W(s.root,t);if(!a)return;let l=i??Z(a,"right"),c={id:`mm_${Date.now()}_${Math.random().toString(36).substr(2,6)}`,text:le("mindmap.defaultBranch"),direction:l},h=jn(s.root,t,c);this.commitHistory();let{width:d,height:u}=N(h),p=this.anchorMindMapAtRoot(s,s.root,h);this.shapes[n]={...s,root:h,width:d,height:u,x:p.x,y:p.y},this.mindMapSelectedNode={shapeId:e,nodeId:c.id},this.notifyListeners(),this.render();}addMindMapSibling(e,t){let i=this.shapes.findIndex(p=>p.id===e);if(i===-1)return;let n=this.shapes[i];if(n.type!=="mind-map")return;let o=n,s=W(o.root,t);if(!s||!qe(o.root,t))return;let a=Z(s,"right"),l={id:`mm_${Date.now()}_${Math.random().toString(36).substr(2,6)}`,text:le("mindmap.defaultBranch"),direction:a},c=qn(o.root,t,l);this.commitHistory();let{width:h,height:d}=N(c),u=this.anchorMindMapAtRoot(o,o.root,c);this.shapes[i]={...o,root:c,width:h,height:d,x:u.x,y:u.y},this.mindMapSelectedNode={shapeId:e,nodeId:l.id},this.notifyListeners(),this.render();}reorderMindMapNode(e,t,i){let n=this.shapes.findIndex(u=>u.id===e);if(n===-1)return;let o=this.shapes[n];if(o.type!=="mind-map")return;let s=o,a=_e(s.root,t);if(!a||i===a.index){this.mindMapReorderTarget=null,this.scheduleRender();return}this.commitHistory();let l=ei(s.root,t,i),{width:c,height:h}=N(l),d=this.anchorMindMapAtRoot(s,s.root,l);this.shapes[n]={...s,root:l,width:c,height:h,x:d.x,y:d.y},this.mindMapSelectedNode={shapeId:e,nodeId:t},this.mindMapReorderTarget=null,this.notifyListeners(),this.render();}moveMindMapNodeToParent(e,t,i,n,o){let s=this.shapes.findIndex(p=>p.id===e);if(s===-1)return;let a=this.shapes[s];if(a.type!=="mind-map")return;let l=a,c=ni(l.root,t,i,n,o);if(this.mindMapReorderTarget=null,this.mindMapReparentPlan=null,c===l.root){this.scheduleRender();return}this.commitHistory();let{width:h,height:d}=N(c),u=this.anchorMindMapAtRoot(l,l.root,c);this.shapes[s]={...l,root:c,width:h,height:d,x:u.x,y:u.y},this.mindMapSelectedNode={shapeId:e,nodeId:t},this.notifyListeners(),this.render();}deleteMindMapNode(e,t){let i=this.shapes.findIndex(d=>d.id===e);if(i===-1)return;let n=this.shapes[i];if(n.type!=="mind-map")return;let o=n;if(o.root.id===t){this.commitHistory(),this.shapes=this.shapes.filter(d=>d.id!==e),this.selectedIds=this.selectedIds.filter(d=>d!==e),this.mindMapEditingShapeId=null,this.mindMapSelectedNode=null,this.notifyListeners(),this.render();return}let s=Zt(o.root,t);if(!s)return;this.commitHistory();let{width:a,height:l}=N(s),c=this.anchorMindMapAtRoot(o,o.root,s);this.shapes[i]={...o,root:s,width:a,height:l,x:c.x,y:c.y};let h=qe(o.root,t);this.mindMapSelectedNode=h?{shapeId:e,nodeId:h.id}:{shapeId:e,nodeId:s.id},this.notifyListeners(),this.render();}toggleMindMapCollapse(e,t){let i=this.shapes.findIndex(d=>d.id===e);if(i===-1)return;let n=this.shapes[i];if(n.type!=="mind-map")return;let o=n,s=W(o.root,t);if(!s||!s.children||s.children.length===0)return;this.commitHistory();let a=je(o.root,t,{collapsed:!s.collapsed}),{width:l,height:c}=N(a),h=this.anchorMindMapAtRoot(o,o.root,a);this.shapes[i]={...o,root:a,width:l,height:c,x:h.x,y:h.y},this.notifyListeners(),this.render();}canPromoteMindMapNode(e,t,i){let n=this.shapes.find(a=>a.id===e);if(!n||n.type!=="mind-map")return false;let o=n;return o.root.id===t?false:jt(o.root,t)>=i+1}promoteMindMapNode(e,t,i){let n=this.shapes.findIndex(d=>d.id===e);if(n===-1)return;let o=this.shapes[n];if(o.type!=="mind-map")return;let s=o;if(s.root.id===t||!this.canPromoteMindMapNode(e,t,i))return;let a=ti(s.root,t,i);if(a===s.root)return;this.commitHistory();let{width:l,height:c}=N(a),h=this.anchorMindMapAtRoot(s,s.root,a);this.shapes[n]={...s,root:a,width:l,height:c,x:h.x,y:h.y},this.mindMapSelectedNode={shapeId:e,nodeId:t},this.notifyListeners(),this.render();}getSelectedTable(){if(this.selectedIds.length!==1)return null;let e=this.shapes.find(t=>t.id===this.selectedIds[0]);return e&&e.type==="table"?e:null}getTableById(e){let t=this.shapes.find(i=>i.id===e);return t&&t.type==="table"?t:null}getTableCell(e,t,i){return this.getTableById(e)?.cells[t]?.[i]??null}getTableAtPoint(e){for(let t=this.shapes.length-1;t>=0;t--){let i=this.shapes[t];if(i.type!=="table")continue;let n=i,o=Ie(n,e),s=mi(n,o.x,o.y);if(s)return {shapeId:n.id,row:s.row,col:s.col}}return null}getTableAtScreenPoint(e){return this.getTableAtPoint(this.screenToPage(e))}getTableCellAtPointClamped(e,t){let i=this.getTableById(e);return i?St(i,Ie(i,t)):null}isTableMoveHandleHit(e,t){let i=this.getTableById(e);return i?tt(i,t,this.camera.getZoom()):false}getTableScreenRect(e,t,i){let n=this.getTableById(e);if(!n)return null;let o=t!==void 0&&i!==void 0?ie(n,t,i):{ox:0,oy:0,width:n.width,height:n.height},s=this.camera.getZoom(),a=o.ox-n.width/2,l=o.oy-n.height/2,c=Math.cos(n.rotation),h=Math.sin(n.rotation),d=a*c-l*h,u=a*h+l*c,p=this.camera.pageToScreen({x:n.x,y:n.y});return {x:p.x+d*s,y:p.y+u*s,width:o.width*s,height:o.height*s}}getTableSelection(){return this.tableSelection}selectTableCell(e,t,i,n=false){let o=this.getTableById(e);!o||!o.cells[t]?.[i]||(n&&this.tableSelection&&this.tableSelection.shapeId===e?this.tableSelection.focus={row:t,col:i}:this.tableSelection={shapeId:e,anchor:{row:t,col:i},focus:{row:t,col:i}},this.tableEditing=null,this.selectedIds=[e],this.notifyListeners(),this.render());}getTableEditing(){return this.tableEditing}beginTableEdit(e,t,i){let n=this.getTableById(e);!n||!n.cells[t]?.[i]||(this.tableEditing={shapeId:e,row:t,col:i},this.tableSelection={shapeId:e,anchor:{row:t,col:i},focus:{row:t,col:i}},this.selectedIds=[e],this.notifyListeners(),this.render());}exitTableEdit(){this.tableEditing&&(this.tableEditing=null,this.notifyListeners(),this.render());}updateTableCell(e,t,i,n,o=true){let s=this.shapes.findIndex(u=>u.id===e);if(s===-1)return;let a=this.shapes[s];if(a.type!=="table")return;let l=a,c=l.cells[t]?.[i];if(!c||!Object.keys(n).some(u=>c[u]!==n[u]))return;o&&this.commitHistory();let d=he(l.cells);d[t][i]={...d[t][i],...n},this.shapes[s]={...l,cells:d},this.autoGrowTableRows(s),this.notifyListeners(),this.render();}insertTable(e=3,t=3){let i=this.viewportCenter(),n=this.iconInsertSeq++%6*14,o=Te("table",{x:i.x+n,y:i.y+n}),s=Array.from({length:t},(l,c)=>o.colWidths[c]??140),a=Array.from({length:e},(l,c)=>o.rowHeights[c]??36);return this.commitHistory(),this.addShape({...o,colWidths:s,rowHeights:a,width:nt(s),height:it(a),cells:Ct(e,t,false)}),this.selectShape(o.id,false),this.setActiveTool("select"),o.id}insertTableRow(e,t){let i=this.shapes.findIndex(l=>l.id===e);if(i===-1)return;let n=this.getTableById(e);if(!n)return;let o=this.tableSelection,s=t??(o&&o.shapeId===e?o.focus.row+1:n.cells.length),a=on(n.cells,n.rowHeights,s);this.commitHistory(),this.writeTable(i,n,{cells:a.cells,rowHeights:a.rowHeights,colWidths:n.colWidths}),this.notifyListeners(),this.render();}insertTableColumn(e,t){let i=this.shapes.findIndex(l=>l.id===e);if(i===-1)return;let n=this.getTableById(e);if(!n)return;let o=this.tableSelection,s=t??(o&&o.shapeId===e?o.focus.col+1:n.colWidths.length),a=rn(n.cells,n.colWidths,s);this.commitHistory(),this.writeTable(i,n,{cells:a.cells,rowHeights:n.rowHeights,colWidths:a.colWidths}),this.notifyListeners(),this.render();}deleteTableRow(e,t){let i=this.shapes.findIndex(l=>l.id===e);if(i===-1)return;let n=this.getTableById(e);if(!n)return;let o=this.tableSelection,s=t??(o&&o.shapeId===e?o.focus.row:0),a=sn(n.cells,n.rowHeights,s);if(a){if(this.commitHistory(),this.writeTable(i,n,{cells:a.cells,rowHeights:a.rowHeights,colWidths:n.colWidths}),this.tableSelection?.shapeId===e){let l=c=>Math.min(c,a.cells.length-1);this.tableSelection.anchor={...this.tableSelection.anchor,row:l(this.tableSelection.anchor.row)},this.tableSelection.focus={...this.tableSelection.focus,row:l(this.tableSelection.focus.row)};}this.tableEditing?.shapeId===e&&this.tableEditing.row>=a.cells.length&&(this.tableEditing=null),this.notifyListeners(),this.render();}}deleteTableColumn(e,t){let i=this.shapes.findIndex(l=>l.id===e);if(i===-1)return;let n=this.getTableById(e);if(!n)return;let o=this.tableSelection,s=t??(o&&o.shapeId===e?o.focus.col:0),a=an(n.cells,n.colWidths,s);if(a){if(this.commitHistory(),this.writeTable(i,n,{cells:a.cells,rowHeights:n.rowHeights,colWidths:a.colWidths}),this.tableSelection?.shapeId===e){let l=a.cells[0]?.length??1,c=h=>Math.min(h,l-1);this.tableSelection.anchor={...this.tableSelection.anchor,col:c(this.tableSelection.anchor.col)},this.tableSelection.focus={...this.tableSelection.focus,col:c(this.tableSelection.focus.col)};}this.tableEditing?.shapeId===e&&this.tableEditing.col>=(a.cells[0]?.length??1)&&(this.tableEditing=null),this.notifyListeners(),this.render();}}getTableSelRange(e){let t=this.tableSelection;if(!t||t.shapeId!==e)return null;let i=this.getTableById(e);if(!i)return null;let n=i.cells.length-1,o=(i.cells[0]?.length??1)-1,s=(d,u)=>Math.max(0,Math.min(u,d)),a=s(Math.min(t.anchor.row,t.focus.row),n),l=s(Math.max(t.anchor.row,t.focus.row),n),c=s(Math.min(t.anchor.col,t.focus.col),o),h=s(Math.max(t.anchor.col,t.focus.col),o);return It(i,a,c,l,h)}insertTableRowRelative(e,t){let i=this.shapes.findIndex(g=>g.id===e);if(i===-1)return;let n=this.getTableById(e);if(!n)return;let o=this.getTableSelRange(e),s=n.cells.length-1,a=(n.cells[0]?.length??1)-1,l=o?o.r1:0,c=o?o.r2:s,h=o?o.c1:0,d=o?o.c2:a,u=t==="above"?l:c+1,p=on(n.cells,n.rowHeights,u);this.commitHistory(),this.writeTable(i,n,{cells:p.cells,rowHeights:p.rowHeights,colWidths:n.colWidths}),this.tableSelection={shapeId:e,anchor:{row:u,col:h},focus:{row:u,col:d}},this.tableEditing=null,this.notifyListeners(),this.render();}insertTableColumnRelative(e,t){let i=this.shapes.findIndex(g=>g.id===e);if(i===-1)return;let n=this.getTableById(e);if(!n)return;let o=this.getTableSelRange(e),s=n.cells.length-1,a=(n.cells[0]?.length??1)-1,l=o?o.r1:0,c=o?o.r2:s,h=o?o.c1:0,d=o?o.c2:a,u=t==="left"?h:d+1,p=rn(n.cells,n.colWidths,u);this.commitHistory(),this.writeTable(i,n,{cells:p.cells,rowHeights:n.rowHeights,colWidths:p.colWidths}),this.tableSelection={shapeId:e,anchor:{row:l,col:u},focus:{row:c,col:u}},this.tableEditing=null,this.notifyListeners(),this.render();}deleteTableRowsInSelection(e){let t=this.shapes.findIndex(l=>l.id===e);if(t===-1)return;let i=this.getTableById(e);if(!i)return;let n=this.getTableSelRange(e);if(!n||i.cells.length-(n.r2-n.r1+1)<1)return;let s=i.cells,a=i.rowHeights;for(let l=n.r2;l>=n.r1;l--){let c=sn(s,a,l);if(!c)break;s=c.cells,a=c.rowHeights;}this.commitHistory(),this.writeTable(t,i,{cells:s,rowHeights:a,colWidths:i.colWidths}),this.clampTableSelectionAfterDelete(e,s,Math.min(n.r1,s.length-1)),this.notifyListeners(),this.render();}deleteTableColsInSelection(e){let t=this.shapes.findIndex(l=>l.id===e);if(t===-1)return;let i=this.getTableById(e);if(!i)return;let n=this.getTableSelRange(e);if(!n||(i.cells[0]?.length??1)-(n.c2-n.c1+1)<1)return;let s=i.cells,a=i.colWidths;for(let l=n.c2;l>=n.c1;l--){let c=an(s,a,l);if(!c)break;s=c.cells,a=c.colWidths;}this.commitHistory(),this.writeTable(t,i,{cells:s,rowHeights:i.rowHeights,colWidths:a}),this.clampTableSelectionAfterDelete(e,s,void 0,Math.min(n.c1,(s[0]?.length??1)-1)),this.notifyListeners(),this.render();}clampTableSelectionAfterDelete(e,t,i,n){let o=t.length-1,s=(t[0]?.length??1)-1;if(this.tableSelection?.shapeId===e){let a=this.tableSelection,l=(d,u)=>Math.max(0,Math.min(u,d)),c={row:l(i??a.anchor.row,o),col:l(n??a.anchor.col,s)},h={row:l(i??a.focus.row,o),col:l(n??a.focus.col,s)};this.tableSelection={shapeId:e,anchor:c,focus:h};}if(this.tableEditing?.shapeId===e){let a=this.tableEditing;(a.row>o||a.col>s)&&(this.tableEditing=null);}}mergeTableCells(e){let t=e??this.tableSelection?.shapeId;if(!t)return;let i=this.shapes.findIndex(a=>a.id===t);if(i===-1)return;let n=this.getTableById(t);if(!n)return;let o=this.getTableSelRange(t);if(!o)return;let s=ui(n.cells,o.r1,o.c1,o.r2,o.c2);s!==n.cells&&(this.commitHistory(),this.shapes[i]={...n,cells:s},this.autoGrowTableRows(i),this.tableSelection={shapeId:t,anchor:{row:o.r1,col:o.c1},focus:{row:o.r1,col:o.c1}},this.tableEditing=null,this.notifyListeners(),this.render());}splitTableCells(e){let t=e??this.tableSelection?.shapeId;if(!t)return;let i=this.shapes.findIndex(a=>a.id===t);if(i===-1)return;let n=this.getTableById(t);if(!n)return;let o=this.getTableSelRange(t);if(!o)return;let s=gi(n,o.r1,o.c1,o.r2,o.c2);s!==n.cells&&(this.commitHistory(),this.shapes[i]={...n,cells:s},this.tableEditing=null,this.notifyListeners(),this.render());}splitTableCell(e){let t=e??this.tableSelection?.shapeId;if(!t)return;let i=this.shapes.findIndex(l=>l.id===t);if(i===-1)return;let n=this.getTableById(t);if(!n)return;let o=this.tableSelection;if(!o||o.shapeId!==t)return;let s=pi(n,o.focus.row,o.focus.col),a=nn(n.cells,s.row,s.col);a!==n.cells&&(this.commitHistory(),this.shapes[i]={...n,cells:a},this.notifyListeners(),this.render());}addUmlAttribute(e){let t=this.shapes.find(n=>n.id===e);if(!t||t.type!=="uml-class")return;let i={id:`attr_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,visibility:"+",name:"newField",type:"string"};this.updateUmlClass(e,{attributes:[...t.attributes,i]});}addUmlMethod(e){let t=this.getUmlById(e);if(!t)return;let i={id:`meth_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,visibility:"+",name:"newMethod",params:"",returnType:"void"};t.type==="uml-class"?this.updateUmlClass(e,{methods:[...t.methods,i]}):this.updateUmlInterface(e,{methods:[...t.methods,i]});}removeUmlAttribute(e,t){let i=this.shapes.find(n=>n.id===e);!i||i.type!=="uml-class"||this.updateUmlClass(e,{attributes:i.attributes.filter(n=>n.id!==t)});}removeUmlMethod(e,t){let i=this.getUmlById(e);if(!i)return;let n=i.methods.filter(o=>o.id!==t);i.type==="uml-class"?this.updateUmlClass(e,{methods:n}):this.updateUmlInterface(e,{methods:n});}reorderUmlAttribute(e,t,i){let n=this.shapes.find(a=>a.id===e);if(!n||n.type!=="uml-class"||t===i)return;let o=[...n.attributes];if(t<0||t>=o.length||i<0||i>=o.length)return;let[s]=o.splice(t,1);o.splice(i,0,s),this.updateUmlClass(e,{attributes:o});}reorderUmlMethod(e,t,i){let n=this.getUmlById(e);if(!n||t===i)return;let o=[...n.methods];if(t<0||t>=o.length||i<0||i>=o.length)return;let[s]=o.splice(t,1);o.splice(i,0,s),n.type==="uml-class"?this.updateUmlClass(e,{methods:o}):this.updateUmlInterface(e,{methods:o});}updateUmlRowStyle(e,t,i,n){let o=this.getUmlById(e);if(o)if(t==="attribute"){if(o.type!=="uml-class")return;let s=o.attributes.map(a=>a.id===i?{...a,textColor:n.textColor===null?void 0:n.textColor??a.textColor,fontSize:n.fontSize===null?void 0:n.fontSize??a.fontSize,strikethrough:n.strikethrough===null?void 0:n.strikethrough??a.strikethrough}:a);this.updateUmlClass(e,{attributes:s});}else {let s=o.methods.map(a=>a.id===i?{...a,textColor:n.textColor===null?void 0:n.textColor??a.textColor,fontSize:n.fontSize===null?void 0:n.fontSize??a.fontSize,strikethrough:n.strikethrough===null?void 0:n.strikethrough??a.strikethrough}:a);o.type==="uml-class"?this.updateUmlClass(e,{methods:s}):this.updateUmlInterface(e,{methods:s});}}getUmlRowAtScreenPoint(e){let t=this.camera.screenToPage(e);for(let i=this.shapes.length-1;i>=0;i--){let n=this.shapes[i];if(n.type!=="uml-class"&&n.type!=="uml-interface")continue;let o=n.width/2,s=n.height/2;if(t.x<n.x-o||t.x>n.x+o||t.y<n.y-s||t.y>n.y+s)continue;let a=ge,l=t.y-n.y;if(l>=-s&&l<=-s+a)return {shape:n,section:"className",rowIndex:-1,text:n.className};if(n.type==="uml-interface"){let g=-s+a,m=s;if(n.methods.length>0&&l>=g&&l<=m){let f=Math.floor((l-g-_)/V);if(f>=0&&f<n.methods.length){let b=n.methods[f];return {shape:n,section:"method",rowIndex:f,text:`${b.visibility} ${b.name}(${b.params}): ${b.returnType}`}}return {shape:n,section:"method",rowIndex:-1,text:""}}return {shape:n,section:"className",rowIndex:-1,text:n.className}}let c=n.attributes.length>0?n.attributes.length*V+_*2:_*2,h=-s+a,d=h+c;if(n.attributes.length>0&&l>=h&&l<=d){let g=Math.floor((l-h-_)/V);if(g>=0&&g<n.attributes.length){let m=n.attributes[g];return {shape:n,section:"attribute",rowIndex:g,text:`${m.visibility} ${m.name}: ${m.type}`}}return {shape:n,section:"attribute",rowIndex:-1,text:""}}let u=d,p=s;if(n.methods.length>0&&l>=u&&l<=p){let g=Math.floor((l-u-_)/V);if(g>=0&&g<n.methods.length){let m=n.methods[g];return {shape:n,section:"method",rowIndex:g,text:`${m.visibility} ${m.name}(${m.params}): ${m.returnType}`}}return {shape:n,section:"method",rowIndex:-1,text:""}}return {shape:n,section:"className",rowIndex:-1,text:n.className}}return null}setActiveTool(e){this.tools.has(e)&&(this.tools.get(this.activeTool)?.cancelTransient(),this.clearTransientPreview(),this.activeTool=e,this.eraserPoint=null,this.notifyListeners(),this.scheduleRender());}getActiveTool(){return this.activeTool}setHighlighterColor(e){let t=this.tools.get("highlighter");t instanceof Le&&t.setHighlighterColor(e);}getHighlighterColor(){let e=this.tools.get("highlighter");return e instanceof Le?e.getHighlighterColor():bn}getShapes(){return [...this.shapes]}getData(){return {shapes:this.getShapes(),camera:{x:this.camera.x,y:this.camera.y,zoom:this.camera.zoom}}}setShapes(e){return Array.isArray(e)?(this.closeInlineEditing(),this.clearEraseFades(),this.shapes=e.map(t=>({...t,style:{...t.style}})),this.selectedIds=[],this.undoStack=[],this.redoStack=[],this.releaseUnusedImageUrls(),this.prefetchShapeIcons(),this.notifyListeners(),this.render(),true):false}setTheme(e){Ft(e),this.scheduleRender();}setLanguage(e){Yt(e);}getSelectedIds(){return [...this.selectedIds]}getCamera(){return this.camera}isPointerDown(){return this.pointerIsDown}isShapeTextTruncated(e){let t=this.shapes.find(i=>i.id===e);return t?this.renderer.isShapeTextTruncated(t):false}isUmlRowTextTruncated(e){let t=e.shape,i=t.fontSize||ee,n=false;if(e.section==="className")n=true;else if(e.section==="attribute"){let o=t.attributes?.[e.rowIndex];o?.fontSize&&(i=o.fontSize);}else if(e.section==="method"){let o=t.methods[e.rowIndex];o?.fontSize&&(i=o.fontSize);}return this.renderer.isUmlRowTextTruncated(t,e.text,i,n)}getContentBounds(e=24){return at(this.shapes,e)}getViewportBounds(){let e=this.canvas.getBoundingClientRect(),t=this.camera.getZoom(),i=this.camera.screenToPage({x:0,y:0});return {x:i.x,y:i.y,width:e.width/t,height:e.height/t}}getBoardExtent(e=40){let t=this.shapes.length?this.getContentBounds(e):null,i=this.getViewportBounds(),n=t?{x:t.x,y:t.y,width:t.width,height:t.height}:null;return ht(n,{x:i.x-e,y:i.y-e,width:i.width+e*2,height:i.height+e*2})}async exportImage(e,t={}){return Cn(this.getShapes(),e,t)}async downloadImage(e="drawui",t="png",i={}){let n=await this.exportImage(t,i);In(n,`${e}.${t}`);}zoomIn(){this.camera.zoomAt({x:window.innerWidth/2,y:window.innerHeight/2},1.2),this.scheduleRender(),this.notifyListeners();}zoomOut(){this.camera.zoomAt({x:window.innerWidth/2,y:window.innerHeight/2},.8),this.scheduleRender(),this.notifyListeners();}resetZoom(){this.camera.reset(),this.scheduleRender(),this.notifyListeners();}panBy(e,t){this.camera.translate(e,t),this.scheduleRender(),this.notifyListeners();}setCameraPosition(e,t){this.camera.x=e,this.camera.y=t,this.scheduleRender(),this.notifyListeners();}requestRender(){this.scheduleRender(),this.notifyListeners();}setShowGrid(e){this.renderer.setShowGrid(e),this.scheduleRender();}render(){this.renderer.setTableSelection(this.tableSelection),this.renderer.setLockHover(this.hoverLockedShapeId),this.renderer.render(this.shapes,this.camera,new Set(this.selectedIds),this.brushRect,this.snapGuides,this.connectingTargetId,this.genPreview,this.eraserPoint,this.mindMapSelectedNode,this.mindMapHoverNode,this.mindMapReorderTarget,void 0,this.hoverAnchorShapeId,this.hoverConnectorId,this.eraseFadeMap());}scheduleRender(){this.renderScheduled||(this.renderScheduled=true,requestAnimationFrame(()=>{this.renderScheduled=false,this.render();}));}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}subscribeNotifications(e){return this.notificationListeners.add(e),()=>this.notificationListeners.delete(e)}notify(e){this.notificationListeners.forEach(t=>t(e));}notifyListeners(){this.notifyScheduled||(this.notifyScheduled=true,queueMicrotask(()=>{this.notifyScheduled=false,this.mindMapEditingShapeId&&!this.selectedIds.includes(this.mindMapEditingShapeId)&&(this.mindMapEditingShapeId=null),this.mindMapSelectedNode&&!this.selectedIds.includes(this.mindMapSelectedNode.shapeId)&&(this.mindMapSelectedNode=null),this.tableSelection&&!this.selectedIds.includes(this.tableSelection.shapeId)&&(this.tableSelection=null),this.tableEditing&&!this.selectedIds.includes(this.tableEditing.shapeId)&&(this.tableEditing=null),this.listeners.forEach(e=>e());}));}cloneShapes(e){return e.map(t=>{let i={...t,style:{...t.style}};Array.isArray(t.points)&&(i.points=t.points.map(o=>({...o}))),Array.isArray(t.userPoints)&&(i.userPoints=t.userPoints.map(o=>({...o}))),Array.isArray(t.userPointsBase)&&(i.userPointsBase=t.userPointsBase.map(o=>({...o})));let n=t.userPointsRef;if(n?.start&&n?.end&&(i.userPointsRef={start:{...n.start},end:{...n.end}}),t.startBinding&&(i.startBinding={...t.startBinding}),t.endBinding&&(i.endBinding={...t.endBinding}),t.root&&(i.root=Xt(t.root)),t.type==="table"&&Array.isArray(t.cells)){let o=t;i.colWidths=[...o.colWidths],i.rowHeights=[...o.rowHeights],i.cells=he(o.cells);}return i})}commitHistory(){if(this.isUndoing)return;let e={shapes:this.cloneShapes(this.shapes),selectedIds:[...this.selectedIds]};this.undoStack.push(e),this.undoStack.length>_s&&this.undoStack.shift(),this.redoStack=[];}mark(){this.commitHistory();}undo(){if(this.undoStack.length!==0){this.clearEraseFades(),this.isUndoing=true;try{this.redoStack.push({shapes:this.cloneShapes(this.shapes),selectedIds:[...this.selectedIds]});let e=this.undoStack.pop();this.shapes=this.cloneShapes(e.shapes),this.selectedIds=[...e.selectedIds];}finally{this.isUndoing=false;}this.notifyListeners(),this.render();}}redo(){if(this.redoStack.length!==0){this.clearEraseFades(),this.isUndoing=true;try{this.undoStack.push({shapes:this.cloneShapes(this.shapes),selectedIds:[...this.selectedIds]});let e=this.redoStack.pop();this.shapes=this.cloneShapes(e.shapes),this.selectedIds=[...e.selectedIds];}finally{this.isUndoing=false;}this.notifyListeners(),this.render();}}canUndo(){return this.undoStack.length>0}canRedo(){return this.redoStack.length>0}saveToStorage(){if(!this.persist)return false;try{let e=JSON.stringify({version:1,shapes:this.shapes,savedAt:Date.now()});return localStorage.setItem(Ei,e),this.notifyListeners(),this.notify(le("save.success")),!0}catch(e){return console.error("\u4FDD\u5B58\u5931\u8D25:",e),this.notify(le("save.fail")),false}}loadFromStorage(){if(!this.persist)return false;try{let e=localStorage.getItem(Ei);if(!e)return !1;let t=JSON.parse(e);return t.shapes&&Array.isArray(t.shapes)?(this.shapes=t.shapes,this.selectedIds=[],this.undoStack=[],this.redoStack=[],this.notifyListeners(),this.scheduleRender(),!0):!1}catch(e){return console.error("\u52A0\u8F7D\u5931\u8D25:",e),false}}clearStorage(){localStorage.removeItem(Ei);}exportJSON(){return JSON.stringify({app:"drawui",version:1,shapes:this.shapes,camera:{x:this.camera.x,y:this.camera.y,zoom:this.camera.zoom},savedAt:Date.now()},null,2)}importJSON(e){try{let t=JSON.parse(e);if(t.shapes&&Array.isArray(t.shapes)){this.closeInlineEditing(),this.commitHistory(),this.shapes=t.shapes,this.selectedIds=[];let i=t.camera;return i&&typeof i.x=="number"&&typeof i.y=="number"&&typeof i.zoom=="number"&&(this.camera.x=i.x,this.camera.y=i.y,this.camera.zoom=i.zoom),this.notifyListeners(),this.render(),!0}return !1}catch(t){return console.error("\u5BFC\u5165\u5931\u8D25:",t),false}}downloadJSON(e="drawui-data"){let t=this.exportJSON();In(new Blob([t],{type:"application/json;charset=utf-8"}),`${e}.json`);}getEditingShapeId(){return this.editingShapeId}canEditShape(e){return !(e.type==="line"||e.type==="arrow"||e.type==="draw"||e.type==="uml-class"||e.type==="uml-interface"||e.type==="mind-map"||e.type==="table"||e.type==="image")}enterEditing(e){let t=this.shapes.find(i=>i.id===e);!t||!this.canEditShape(t)||(this.editingShapeId=e,this.selectedIds=[e],this.isNewTextShape=t.type==="text"&&!t.text,this.originalTextValue=t.text||"",this.notifyListeners(),this.scheduleRender(),this.cancelTextInputRaf(),this.textInputRaf=requestAnimationFrame(()=>{this.textInputRaf=null,!(this.editingShapeId!==e||this.textInput)&&this.createTextInput(t);}));}cancelTextInputRaf(){this.textInputRaf!==null&&(cancelAnimationFrame(this.textInputRaf),this.textInputRaf=null);}exitEditing(){if(!this.editingShapeId)return;this.cancelTextInputRaf();let e=this.editingShapeId,t=this.shapes.find(o=>o.id===e),i=this.textInput?this.textInput.value:this.originalTextValue,n=i!==this.originalTextValue;if(this.removeTextInput(),t)if(t.type==="text")if(n&&this.commitHistory(),!i.trim()&&this.isNewTextShape)this.shapes=this.shapes.filter(o=>o.id!==e),this.selectedIds=this.selectedIds.filter(o=>o!==e);else {let o=t,s=o.fontSize||16,a=s*1.3,l=o.width||200,c=i.split(`
|
|
46
|
+
`),h=0;for(let p of c){let g="";for(let m of p){let f=g+m;f.length*s*.6>l&&g?(h++,g=m):g=f;}g&&h++;}let d={...o,text:i,height:Math.max(h*a,a)},u=this.shapes.indexOf(t);u!==-1&&(this.shapes[u]=d),i.trim()||(this.shapes=this.shapes.filter(p=>p.id!==e),this.selectedIds=this.selectedIds.filter(p=>p!==e));}else n&&this.commitHistory(),this.updateShape(e,{text:i,textColor:t.textColor||H.text,fontSize:t.fontSize||16});this.editingShapeId=null,this.isNewTextShape=false,this.originalTextValue="",this.setActiveTool("select"),this.notifyListeners(),this.render();}closeInlineEditing(){if(this.isNewTextShape&&this.editingShapeId){let e=this.editingShapeId,t=this.shapes.find(i=>i.id===e);t&&t.type==="text"&&!t.text&&(this.shapes=this.shapes.filter(i=>i.id!==e),this.selectedIds=this.selectedIds.filter(i=>i!==e));}this.removeTextInput(),this.editingShapeId=null,this.isNewTextShape=false,this.originalTextValue="",this.tableEditing=null,this.mindMapEditingShapeId=null,this.lastClickTime=0,this.lastClickShapeId=null;}removeTextInput(){this.cancelTextInputRaf(),this.textOverlay&&(this.textOverlay.remove(),this.textOverlay=null),this.textInput&&(this.textInput.remove(),this.textInput=null);}createTextInput(e){this.removeTextInput();let t=this.canvas.parentElement;if(!t||!this.canvas.isConnected){this.closeInlineEditing();return}let i=this.canvas.getBoundingClientRect(),n=t.getBoundingClientRect(),o=i.left-n.left,s=i.top-n.top;this.textOverlay=document.createElement("div"),this.textOverlay.style.position="absolute",this.textOverlay.style.left=`${o}px`,this.textOverlay.style.top=`${s}px`,this.textOverlay.style.width=`${i.width}px`,this.textOverlay.style.height=`${i.height}px`,this.textOverlay.style.background="transparent",this.textOverlay.style.zIndex="1000",this.textOverlay.style.cursor="text",this.textOverlay.addEventListener("pointerdown",d=>{this.textInput&&d.target!==this.textInput&&(d.preventDefault(),this.exitEditing());}),t.appendChild(this.textOverlay);let a=this.getShapeScreenBounds(e),l=this.camera.getZoom(),c=(e.fontSize||16)*l,h=document.createElement("textarea");h.style.position="absolute",h.style.left=`${o+a.x}px`,h.style.top=`${s+a.y}px`,h.style.width=`${Math.max(a.width,60)}px`,h.style.height=`${Math.max(a.height,24)}px`,h.style.fontSize=`${c}px`,h.style.color=e.textColor||"#1f2937",h.style.textAlign="center",h.style.border=`2px solid ${H.editBorder}`,h.style.borderRadius="4px",h.style.background="rgba(255, 255, 255, 0.95)",h.style.resize="none",h.style.padding="4px 8px",h.style.boxSizing="border-box",h.style.lineHeight="1.4",h.style.fontFamily="sans-serif",h.style.outline="none",h.style.whiteSpace="pre-wrap",h.style.wordBreak="break-word",h.style.overflow="hidden",h.style.zIndex="1001",h.value=e.text||"",h.dataset.shapeId=e.id,h.addEventListener("pointerdown",d=>{d.stopPropagation();}),h.addEventListener("mousedown",d=>{d.stopPropagation();}),h.addEventListener("keydown",d=>{if(d.stopPropagation(),d.key==="Escape"&&(d.preventDefault(),this.textInput&&(this.textInput.value=this.originalTextValue),this.exitEditing()),d.key==="Enter"&&!d.shiftKey&&(d.preventDefault(),this.exitEditing()),d.key==="Enter"&&d.shiftKey){d.preventDefault();let u=h.selectionStart,p=h.selectionEnd;h.value=h.value.substring(0,u)+`
|
|
47
|
+
`+h.value.substring(p),h.selectionStart=h.selectionEnd=u+1;}}),t.appendChild(h),h.focus(),e.type==="text"&&!e.text&&(h.placeholder="\u8F93\u5165\u6587\u672C..."),this.textInput=h;}getShapeScreenBounds(e){let t=this.camera.getZoom(),i=this.camera.pageToScreen({x:e.x,y:e.y});switch(e.type){case "rectangle":case "sticky-note":case "icon":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "hexagon":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":return {x:i.x-e.width*t/2,y:i.y-e.height*t/2,width:e.width*t,height:e.height*t};case "circle":return {x:i.x-e.radius*t,y:i.y-e.radius*t,width:e.radius*2*t,height:e.radius*2*t};case "text":{let n=e,o=n.width*t,s=n.height*t;return {x:i.x-o/2,y:i.y-s/2,width:o,height:s}}default:return {x:i.x-50*t,y:i.y-20*t,width:100*t,height:40*t}}}getShapeAtScreenPoint(e){let t=this.screenToPage(e);return this.getShapeAtPoint(t)}getShapeAtPoint(e,t){let i=null;for(let n=this.shapes.length-1;n>=0;n--){let o=this.shapes[n];if(!(t&&o.id===t)){if(o.type==="arrow"||o.type==="line"){if(i||(i=new Map(this.shapes.map(s=>[s.id,s]))),this.isPointOnConnector(e,o,i))return o;continue}if(this.isPointInShape(e,o))return o}}return null}isPointOnConnector(e,t,i){let n=this.renderer.getConnectorRoute(t,i);if(n.length<2)return false;let o=this.camera.getZoom(),s=Math.max(6/o,(t.style?.strokeWidth??2)/2+2);for(let a=1;a<n.length;a++)if(this.pointToSegmentDist(e,n[a-1],n[a])<=s)return true;return false}getShapesInBrushRadius(e,t){let i=[];for(let n of this.shapes)this.shapeIntersectsBrush(n,e,t)&&i.push(n);return i}shapeIntersectsBrush(e,t,i){switch(e.type){case "line":case "arrow":{let n=e.points,o=i+4;for(let s=1;s<n.length;s++)if(this.pointToSegmentDist(t,n[s-1],n[s])<=o)return true;return n.length>0&&Math.hypot(t.x-n[0].x,t.y-n[0].y)<=o}case "draw":{let n=e.points,o=i+4;for(let s=1;s<n.length;s++){let a={x:e.x+n[s-1].x,y:e.y+n[s-1].y},l={x:e.x+n[s].x,y:e.y+n[s].y};if(this.pointToSegmentDist(t,a,l)<=o)return true}return n.length>0&&Math.hypot(t.x-(e.x+n[0].x),t.y-(e.y+n[0].y))<=o}case "circle":return Math.hypot(t.x-e.x,t.y-e.y)<=e.radius+i;case "text":{let n=e;return Math.abs(t.x-e.x)<=n.width/2+i&&Math.abs(t.y-e.y)<=n.height/2+i}default:return Math.abs(t.x-e.x)<=e.width/2+i&&Math.abs(t.y-e.y)<=e.height/2+i}}pointToSegmentDist(e,t,i){let n=i.x-t.x,o=i.y-t.y,s=n*n+o*o,a=s===0?0:Math.max(0,Math.min(1,((e.x-t.x)*n+(e.y-t.y)*o)/s));return Math.hypot(e.x-(t.x+a*n),e.y-(t.y+a*o))}setEraserPoint(e){this.eraserPoint=e,this.scheduleRender();}isPointInShape(e,t){let i=e.x-t.x,n=e.y-t.y;switch(t.type){case "rectangle":case "sticky-note":case "icon":case "rounded-rectangle":case "ellipse":case "diamond":case "triangle":case "parallelogram":case "trapezoid":case "pentagon":case "octagon":case "star":case "cylinder":case "cloud":case "heart":case "block-arrow-right":case "block-arrow-left":case "block-arrow-up":case "block-arrow-down":case "block-arrow-double":case "right-triangle":case "cross":case "speech-rect":case "speech-round":case "cube":case "sector":case "delay":case "predefined-process":case "document":case "stadium":case "class-catalog":case "chevron":case "brace-left":case "brace-right":case "envelope":case "checkbox":case "triangular-pyramid":case "quadrangular-pyramid":case "cuboid":case "sphere":case "ellipsoid":case "pie":case "hollow-pie":case "uml-class":case "uml-interface":case "table":return Math.abs(i)<=t.width/2&&Math.abs(n)<=t.height/2;case "circle":return i*i+n*n<=t.radius*t.radius;case "hexagon":{let o=t.width/2,s=t.height/2;return Math.abs(i)<=o&&Math.abs(n)<=s&&Math.abs(i)/o+Math.abs(n)/s<=1.5}case "mind-map":return Math.abs(i)<=t.width/2&&Math.abs(n)<=t.height/2;case "draw":{let o=t,s=Math.max((o.style?.strokeWidth??2)/2+3,6/this.camera.getZoom()),a=o.points||[];for(let l=1;l<a.length;l++)if(this.pointToSegmentDist({x:i,y:n},a[l-1],a[l])<=s)return true;return a.length===1&&Math.hypot(i-a[0].x,n-a[0].y)<=s}case "text":{let o=t;return Math.abs(i)<=o.width/2&&Math.abs(n)<=o.height/2}default:return false}}updateArrowBinding(e,t,i,n){let o=this.shapes.find(l=>l.id===e);if(!o||o.type!=="arrow")return;let s=o,a={};if(i){let l=this.shapes.find(u=>u.id===i);if(!l)return;let c=n?.handle||this.getClosestHandle(s,l),h=this.getBindingPosition(l,c),d=n?.handle?{...n,toShapeId:i,auto:false}:n?.auto?n:{toShapeId:i,handle:c,auto:false};t==="start"?(a.startBinding=d,a.points=s.points.map((u,p)=>p===0?h:u)):(a.endBinding=d,a.points=s.points.map((u,p)=>p===s.points.length-1?h:u));}else t==="start"?a.startBinding=void 0:a.endBinding=void 0;this.updateShape(e,a);}getClosestHandle(e,t){let i=e.points[0],n=e.points[e.points.length-1],o=e.endBinding?n:i,s=o.x-t.x,a=o.y-t.y;return Math.abs(s)>Math.abs(a)?s>0?"right":"left":a>0?"bottom":"top"}dispose(){this.eraseFadeRaf!==null&&(cancelAnimationFrame(this.eraseFadeRaf),this.eraseFadeRaf=null),this.eraseFades.clear(),this.canvas.removeEventListener("pointerdown",this.handlePointerDown),this.canvas.removeEventListener("pointerleave",this.handlePointerUp),window.removeEventListener("pointermove",this.handlePointerMove),window.removeEventListener("pointerup",this.handlePointerUp),window.removeEventListener("pointercancel",this.handlePointerUp),window.removeEventListener("blur",this.handleWindowBlur),window.removeEventListener("pointerdown",this.handleGlobalPointerDown,true),this.canvas.removeEventListener("wheel",this.handleWheel),window.removeEventListener("keydown",this.handleKeyDown),window.removeEventListener("keyup",this.handleKeyUp),window.removeEventListener("resize",this.handleResize),window.removeEventListener("paste",this.handlePasteEvent),this.removeImageReadyListener?.(),this.removeImageReadyListener=null,this.removeTextInput(),this.editingShapeId=null,this.tools.forEach(e=>e.dispose()),this.listeners.clear();}};var Vs=[{id:"flow",zh:"\u6D41\u7A0B\u56FE",en:"Flow"},{id:"org",zh:"\u7EC4\u7EC7\u4E0E\u7ED3\u6784",en:"Org & structure"},{id:"analysis",zh:"\u5206\u6790\u6A21\u578B",en:"Analysis"},{id:"plan",zh:"\u89C4\u5212\u4E0E\u6392\u671F",en:"Planning"},{id:"tech",zh:"\u6280\u672F\u67B6\u6784",en:"Architecture"},{id:"uml",zh:"UML / \u6570\u636E\u5E93",en:"UML & data"}],Y="#1f2937";function ue(r="transparent",e=Y,t=2){return {strokeColor:e,fillColor:r,strokeWidth:t,strokeDash:null}}var Oo=0,oe=r=>`tpl_${r}_${(Oo++).toString(36)}`;function D(r,e,t,i,n,o,s={}){return {id:oe("box"),type:s.type??"rounded-rectangle",x:r,y:e,width:t,height:i,rotation:0,text:n,textColor:s.textColor,borderRadius:s.radius??8,orientation:s.orientation,topInset:s.topInset,style:ue(o,s.stroke??Y,s.strokeWidth??2)}}function lt(r,e={}){return {id:oe("deco"),type:"arrow",x:0,y:0,points:r,rotation:0,connectionType:e.straight?"straight":"orthogonal",arrowHead:e.head??"none",dashed:!!e.dashed,freeform:true,style:ue("transparent",e.stroke??Y,e.width??1)}}function $s(r,e,t,i,n){return {id:oe("icon"),type:"icon",x:r,y:e,width:i,height:i,rotation:0,iconId:t,style:ue(n,n,2)}}function B(r,e,t,i,n,o=Y,s=14){return {id:oe("label"),type:"text",x:r,y:e,width:t,height:i,rotation:0,text:n,fontSize:s,style:ue("transparent",o,1)}}function _i(r,e,t,i,n){let s=68+(i.length+n.length)*22;return {id:oe("uml"),type:"uml-class",x:r,y:e,width:220,height:s,rotation:0,className:t,attributes:i.map(([a,l,c])=>({id:oe("attr"),visibility:a,name:l,type:c})),methods:n.map(([a,l,c,h])=>({id:oe("meth"),visibility:a,name:l,params:c,returnType:h})),textColor:Y,style:ue("#eef2ff")}}function $o(r,e){let t=r,i=t.width??0,n=t.height??0;switch(e){case "top":return {x:r.x,y:r.y-n/2};case "bottom":return {x:r.x,y:r.y+n/2};case "left":return {x:r.x-i/2,y:r.y};default:return {x:r.x+i/2,y:r.y}}}var Os={top:"bottom",bottom:"top",left:"right",right:"left"};function R(r,e,t={}){let i=t.aSide??(Math.abs(e.y-r.y)>=Math.abs(e.x-r.x)?e.y>r.y?"bottom":"top":e.x>r.x?"right":"left"),n=t.bSide??Os[i];return {id:oe("link"),type:"arrow",x:0,y:0,points:[$o(r,i),$o(e,n)],rotation:0,connectionType:"orthogonal",arrowHead:t.head??"end",dashed:!!t.dashed,startBinding:{toShapeId:r.id,handle:i},endBinding:{toShapeId:e.id,handle:n},style:ue("transparent",t.stroke??Y,t.strokeWidth??2)}}function se(r){let e=`tpl_grp_${(Oo++).toString(36)}`;return r.map(t=>({...t,groupId:e}))}var L={blue:"#dbeafe",blueSoft:"#eff6ff",indigo:"#e0e7ff",green:"#dcfce7",amber:"#fef3c7",red:"#fee2e2",slate:"#f1f5f9",violet:"#f3e8ff",white:"#ffffff"},zs=()=>{let r=D(0,-240,140,52,"\u5F00\u59CB",L.green),e=D(0,-130,180,64,"\u5904\u7406\u6B65\u9AA4",L.blue),t=D(0,10,190,120,"\u6761\u4EF6\u5224\u65AD\uFF1F",L.amber,{type:"diamond",strokeWidth:2}),i=D(250,10,150,62,"\u8865\u5145\u8D44\u6599",L.violet,{strokeWidth:1.5}),n=D(0,200,140,52,"\u7ED3\u675F",L.red);return [r,e,t,i,n,R(r,e),R(e,t),R(t,n,{aSide:"bottom",bSide:"top"}),B(26,112,40,24,"\u662F","#15803d",13),R(t,i,{aSide:"right",bSide:"left"}),B(150,-8,40,24,"\u5426","#b45309",13),R(i,e,{aSide:"top",bSide:"right"})]},Gs=()=>{let r=D(-230,0,130,56,"\u8F93\u5165",L.green),e=D(-40,0,150,56,"\u5904\u7406",L.blue),t=D(160,0,130,56,"\u8F93\u51FA",L.amber);return [r,e,t,R(r,e,{aSide:"right",bSide:"left"}),R(e,t,{aSide:"right",bSide:"left"})]};function Us(r,e,t){let i=1/0,n=1/0,o=-1/0,s=-1/0;for(let h of r)i=Math.min(i,h.x),n=Math.min(n,h.y),o=Math.max(o,h.x),s=Math.max(s,h.y);let a=(i+o)/2,l=(n+s)/2,c=t/2;return {id:oe("track"),type:"draw",x:a,y:l,width:o-i+c*2,height:s-n+c*2,rotation:0,points:r.map(h=>({x:h.x-a,y:h.y-l})),style:ue("transparent",e,t)}}function Ws(r){let{leftX:e,rightX:t,topY:i,midY:n,botY:o,endX:s}=r,a=(n-i)/2,l=(o-n)/2,c=[],h=8,d=(p,g,m,f)=>{let b=Math.hypot(m-p,f-g),x=Math.max(1,Math.round(b/h));for(let I=0;I<=x;I++)c.push({x:p+(m-p)*I/x,y:g+(f-g)*I/x});},u=(p,g,m,f,b)=>{let x=Math.max(4,Math.round(Math.abs(b-f)*m/h));for(let I=0;I<=x;I++){let T=f+(b-f)*I/x;c.push({x:p+m*Math.cos(T),y:g+m*Math.sin(T)});}};return d(e,i,t,i),u(t,i+a,a,-Math.PI/2,Math.PI/2),d(t,n,e,n),u(e,n+l,l,Math.PI/2,Math.PI*3/2),d(e,o,s,o),c}var Fs=()=>{let l=[Us(Ws({leftX:-330,rightX:330,topY:-90,midY:30,botY:180,endX:120}),"#e7e2fb",30)],c=(u,p,g,m,f,b,x)=>{let I=x<p?p-48:p+48,T=[D(u,p,160,96,g,m,{radius:6,strokeWidth:1,stroke:f}),D(u,p+96/2-24,136,28,"\u5F97\u5206",b,{radius:4,strokeWidth:0,stroke:"#ffffff",textColor:"#ffffff"}),lt([{x:u,y:I},{x:u,y:x}],{stroke:Y,width:2,straight:true}),{id:oe("dot"),type:"circle",x:u,y:x,radius:5,rotation:0,style:ue("#1f2937")}];l.push(...se(T));},h=[{x:-140,t:"\u7B2C\u4E00\u6B65"},{x:45,t:"\u7B2C\u4E8C\u6B65"},{x:230,t:"\u7B2C\u4E09\u6B65"}];for(let u of h)c(u.x,-195,u.t,"#fdf4dc","#a16207","#eab308",-90);let d=[{x:-150,t:"\u7B2C\u56DB\u6B65"},{x:30,t:"\u7B2C\u4E94\u6B65"},{x:210,t:"\u7B2C\u516D\u6B65"}];for(let u of d)c(u.x,125,u.t,"#f1edfd","#6d28d9","#8b5cf6",31);return l.push(B(-455,-232,40,40,"\u{1F4E3}",Y,26),B(-352,-238,90,22,"\u65F6\u95F4",Y,15),B(-330,-212,200,20,"xx\u6708xx\u65E5 - xx\u6708xx\u65E5","#6b7280",12),B(-412,-90,110,22,"\u5F00\u59CB \u25B6\u25B6",Y,14),B(432,22,120,22,"\u25C0\u25C0 \u8FC7\u7A0B\u4E2D",Y,14),B(150,210,100,22,"\u901A\u5173\u5566",Y,15),B(330,202,46,46,"\u{1F3C6}",Y,34),B(452,196,110,22,"\u8BE6\u7EC6\u60C5\u51B5","#6b7280",13)),l},Ks=()=>{let r=D(0,-150,160,52,"\u8D1F\u8D23\u4EBA",L.indigo),e=[D(-170,-20,140,48,"\u4EA7\u54C1",L.blue),D(0,-20,140,48,"\u7814\u53D1",L.blue),D(170,-20,140,48,"\u8BBE\u8BA1",L.blue)],t=e.map(n=>D(n.x,110,140,46,"\u6210\u5458",L.slate)),i=[r,...e,...t];for(let n of e)i.push(R(r,n,{head:"none",strokeWidth:1.5}));return e.forEach((n,o)=>i.push(R(n,t[o],{head:"none",strokeWidth:1.5}))),i},Ys=()=>{let r=[],e=[{y:-240,name:"\u63A5\u5165\u5C42",fill:L.blueSoft,stroke:"#2563eb",cells:["\u53CD\u5411\u4EE3\u7406","\u901A\u7528\u7F51\u5173","\u9274\u6743\u63D2\u4EF6","\u9650\u6D41\u63D2\u4EF6"]},{y:-110,name:"\u5E94\u7528\u5C42",fill:"#fffbeb",stroke:"#b45309",cells:["Application 1","Application 2","Application 3"]},{y:20,name:"\u9886\u57DF\u5C42",fill:"#faf5ff",stroke:"#7c3aed",cells:["Service 1","Service 2","Service 3"]},{y:150,name:"\u57FA\u5EFA\u5C42",fill:"#eef2ff",stroke:"#4338ca",cells:["\u4E2D\u53F0\u670D\u52A1 1","\u4E2D\u53F0\u670D\u52A1 2","\u4E2D\u53F0\u670D\u52A1 3"]}];for(let i of e){let n=[D(-40,i.y,780,110,"",i.fill,{stroke:i.stroke,strokeWidth:1.5,radius:10}),B(-520,i.y,120,44,i.name,i.stroke,15)],o=i.cells.length,s=Math.min(190,(760-(o-1)*10)/o),a=o*s+(o-1)*10;i.cells.forEach((l,c)=>{let h=-40-a/2+s/2+c*(s+10);n.push(D(h,i.y,s,46,l,L.white,{stroke:i.stroke,strokeWidth:1,radius:6}));}),r.push(...se(n));}let t=[D(520,150,300,116,"","#eef2ff",{stroke:"#4338ca",strokeWidth:1.5,radius:10})];return ["MySQL","Redis","MQ"].forEach((i,n)=>{t.push(D(430+n*90,152,80,72,i,L.white,{type:"cylinder",stroke:"#4338ca",strokeWidth:1}));}),r.push(...se(t)),r},Xs=()=>[D(-115,-85,210,150,"\u4F18\u52BF S",L.green),D(115,-85,210,150,"\u52A3\u52BF W",L.red),D(-115,85,210,150,"\u673A\u4F1A O",L.blue),D(115,85,210,150,"\u5A01\u80C1 T",L.amber)],Zs=()=>{let e=Math.round(Math.sqrt(3)/2*230),t=e,i=[{t:"How",d:`\u4F55\u679C\uFF1F
|
|
48
|
+
\u6700\u7EC8\u662F\u4EC0\u4E48\u7ED3\u679C`,deg:-90,fill:"#e0e7ff",stroke:"#6366f1"},{t:"What",d:`\u4F55\u4E8B\uFF1F
|
|
49
|
+
\u53D1\u751F\u4E86\u4EC0\u4E48\u4E8B\u60C5`,deg:-30,fill:"#ede9fe",stroke:"#8b5cf6"},{t:"Why",d:`\u4F55\u56E0\uFF1F
|
|
50
|
+
\u4E3A\u4EC0\u4E48\u53D1\u751F\uFF1F`,deg:30,fill:"#fee2e2",stroke:"#f87171"},{t:"When",d:`\u4F55\u65F6\uFF1F
|
|
51
|
+
\u65B0\u95FB\u53D1\u751F\u7684\u65F6\u95F4`,deg:90,fill:"#fef3c7",stroke:"#fbbf24"},{t:"Where",d:`\u4F55\u5730\uFF1F
|
|
52
|
+
\u65B0\u95FB\u53D1\u751F\u7684\u5730\u70B9`,deg:150,fill:"#dcfce7",stroke:"#4ade80"},{t:"Who",d:`\u4F55\u4EBA\uFF1F
|
|
53
|
+
\u65B0\u95FB\u7684\u4E3B\u4F53`,deg:210,fill:"#e0e7ff",stroke:"#a5b4fc"}],n=(s,a,l,c,h,d)=>se([D(s,a,230,230,"",h,{type:"hexagon",orientation:"flat",stroke:d,strokeWidth:1}),B(s,a-e*.27,230*.6,28,l,Y,15),lt([{x:s-230*.18,y:a-e*.09},{x:s+230*.18,y:a-e*.09}],{stroke:d,width:1}),B(s,a+e*.17,230*.62,60,c,"#5b6572",12)]),o=[...se([D(0,0,230,230,"","#f4f4f5",{type:"hexagon",orientation:"flat",stroke:"#d4d4d8",strokeWidth:1}),B(0,0,230*.5,70,`\u65B0\u95FB
|
|
54
|
+
\u516D\u8981\u7D20`,Y,16)])];for(let s of i){let a=s.deg*Math.PI/180;o.push(...n(Math.cos(a)*t,Math.sin(a)*t,s.t,s.d,s.fill,s.stroke));}return o},js=()=>[{x:-330,y:-160,t:"\u5173\u952E\u4F19\u4F34",fill:L.blueSoft},{x:0,y:-160,t:"\u5173\u952E\u4E1A\u52A1",fill:L.blueSoft},{x:330,y:-160,t:"\u4EF7\u503C\u4E3B\u5F20",fill:L.amber},{x:-330,y:0,t:"\u6838\u5FC3\u8D44\u6E90",fill:L.blueSoft},{x:0,y:0,t:"\u6E20\u9053\u901A\u8DEF",fill:L.green},{x:330,y:0,t:"\u5BA2\u6237\u5173\u7CFB",fill:L.green},{x:-330,y:160,t:"\u6210\u672C\u7ED3\u6784",fill:L.red},{x:0,y:160,t:"\u6536\u5165\u6765\u6E90",fill:L.red},{x:330,y:160,t:"\u5BA2\u6237\u7EC6\u5206",fill:L.green}].map(e=>D(e.x,e.y,300,140,e.t,e.fill,{type:"rectangle",strokeWidth:1.5})),qs=()=>{let t=.9782608695652174,i=176,n=i/2/t,o=[i,i+180,i+360,i+540],s=[n,92,92,92],a=["\u76EE\u6807","\u6838\u5FC3\u5C42","\u652F\u6491\u5C42","\u57FA\u7840\u5C42"],l=[L.red,L.amber,L.green,L.blueSoft],h=-s.reduce((u,p)=>u+p,0)/2,d=[];for(let u=0;u<o.length;u++){let p=s[u],g=h+p/2;d.push(u===0?D(0,g,o[u],p,a[u],l[u],{type:"triangle",strokeWidth:1.5}):D(0,g,o[u],p,a[u],l[u],{type:"trapezoid",strokeWidth:1.5,topInset:90})),h+=p;}return d},Js=()=>[D(-170,-150,320,260,`\u91CD\u8981\u4E14\u7D27\u6025
|
|
55
|
+
\u9A6C\u4E0A\u505A`,L.red,{type:"rectangle",strokeWidth:1.5}),D(170,-150,320,260,`\u91CD\u8981\u4E0D\u7D27\u6025
|
|
56
|
+
\u8BA1\u5212\u505A`,L.blue,{type:"rectangle",strokeWidth:1.5}),D(-170,120,320,260,`\u7D27\u6025\u4E0D\u91CD\u8981
|
|
57
|
+
\u59D4\u6258\u505A`,L.amber,{type:"rectangle",strokeWidth:1.5}),D(170,120,320,260,`\u4E0D\u91CD\u8981\u4E0D\u7D27\u6025
|
|
58
|
+
\u522B\u505A`,L.slate,{type:"rectangle",strokeWidth:1.5})],Qs=()=>[{id:oe("axis"),type:"arrow",x:0,y:0,points:[{x:-280,y:0},{x:280,y:0}],rotation:0,connectionType:"orthogonal",arrowHead:"end",style:ue("transparent",Y,3)},D(-200,-70,120,48,"\u9636\u6BB5\u4E00",L.blue),D(-60,70,120,48,"\u9636\u6BB5\u4E8C",L.green),D(80,-70,120,48,"\u9636\u6BB5\u4E09",L.amber),D(220,70,120,48,"\u9636\u6BB5\u56DB",L.violet)],ea=()=>{let r=[{x:-210,title:"\u5F85\u529E",fill:L.slate,cards:3},{x:0,title:"\u8FDB\u884C\u4E2D",fill:"#e0f2fe",cards:2},{x:210,title:"\u5DF2\u5B8C\u6210",fill:L.green,cards:1}],e=[];for(let t of r){let i=[D(t.x,-160,180,44,t.title,t.fill),D(t.x,20,180,300,"",L.white,{strokeWidth:1})];for(let n=0;n<t.cards;n++)i.push(D(t.x,-86+n*70,150,54,`\u4EFB\u52A1 ${n+1}`,L.amber,{radius:6,strokeWidth:1}));e.push(...se(i));}return e},ta=()=>{let r=[],e=[{name:"\u9700\u6C42\u68B3\u7406",start:0,len:2,fill:L.blue},{name:"\u65B9\u6848\u8BBE\u8BA1",start:1.5,len:2.5,fill:L.green},{name:"\u5F00\u53D1\u5B9E\u73B0",start:3,len:4,fill:L.amber},{name:"\u6D4B\u8BD5\u9A8C\u8BC1",start:6,len:2,fill:L.violet},{name:"\u4E0A\u7EBF\u53D1\u5E03",start:7.5,len:1.5,fill:L.red}],t=62,i=-220,n=e.length;for(let o=0;o<=9;o++){r.push(B(i+o*t,-n*32-30,54,26,`W${o+1}`,"#64748b",12));let s={id:oe("grid"),type:"arrow",x:0,y:0,points:[{x:i+o*t,y:-n*32-14},{x:i+o*t,y:n*32-30}],rotation:0,connectionType:"orthogonal",arrowHead:"none",style:ue("transparent","#e2e8f0",1)};r.push(s);}return e.forEach((o,s)=>{let a=-n*32+s*64+20;r.push(...se([B(i-110,a,150,34,o.name,Y,13),D(i+o.start*t+o.len*t/2,a,o.len*t,34,"",o.fill,{radius:6,strokeWidth:1})]));}),r},na=()=>{let r=_i(0,-240,"Base",[["+","id","string"]],[["+","save","","void"]]),e=_i(-170,40,"ChildA",[["+","name","string"]],[["+","render","","void"]]),t=_i(170,40,"ChildB",[["+","count","number"]],[["+","update","","void"]]);return [r,e,t,R(e,r,{head:"inheritance",strokeWidth:1.8}),R(t,r,{head:"inheritance",strokeWidth:1.8})]};function Vi(r,e,t,i){let a=e+38,l=[D(r,e+38/2,200,38,t,L.blue,{type:"rectangle",strokeWidth:1.5}),D(r,a+i.length*30/2,200,i.length*30,"",L.white,{type:"rectangle",strokeWidth:1.5})];return i.forEach((c,h)=>{if(l.push(B(r,a+30/2+h*30,184,26,c,Y,13)),h>0){let d={id:oe("sep"),type:"arrow",x:0,y:0,points:[{x:r-100,y:a+h*30},{x:r+100,y:a+h*30}],rotation:0,connectionType:"orthogonal",arrowHead:"none",style:ue("transparent","#e2e8f0",1)};l.push(d);}}),se(l)}var ia=()=>{let r=Vi(-300,-180,"user",["id bigint PK","name varchar","email varchar"]),e=Vi(190,-180,"order",["id bigint PK","user_id bigint FK","amount decimal"]),t=Vi(-300,60,"address",["id bigint PK","user_id bigint FK"]),i=r[0],n=e[0],o=t[0];return [...r,...e,...t,R(i,n,{aSide:"right",bSide:"left",head:"none",strokeWidth:1.5}),R(i,o,{aSide:"bottom",bSide:"top",head:"none",strokeWidth:1.5})]},oa=()=>{let r=[{y:-170,name:"\u5BA2\u6237",fill:"#eff6ff",stroke:"#60a5fa"},{y:0,name:"\u5BA2\u670D",fill:"#f0fdf4",stroke:"#4ade80"},{y:170,name:"\u7CFB\u7EDF",fill:"#faf5ff",stroke:"#a78bfa"}],e=[];for(let a of r)e.push(...se([D(10,a.y,1060,150,"",a.fill,{type:"rectangle",stroke:a.stroke,strokeWidth:1.5,radius:6}),B(-580,a.y,120,40,a.name,a.stroke,15)]));let t=D(-330,-170,180,62,"\u63D0\u51FA\u95EE\u9898",L.white,{stroke:"#60a5fa",strokeWidth:1.5}),i=D(-90,0,180,62,"\u53D7\u7406\u5DE5\u5355",L.white,{stroke:"#4ade80",strokeWidth:1.5}),n=D(170,170,180,62,"\u81EA\u52A8\u5206\u6D3E",L.white,{stroke:"#a78bfa",strokeWidth:1.5}),o=D(430,170,180,62,"\u5904\u7406\u5B8C\u6210",L.white,{stroke:"#a78bfa",strokeWidth:1.5}),s=D(430,-170,180,62,"\u786E\u8BA4\u7ED3\u679C",L.white,{stroke:"#60a5fa",strokeWidth:1.5});return [...e,t,i,n,o,s,R(t,i),R(i,n),R(n,o),R(o,s)]},ra=()=>{let r=[lt([{x:-470,y:0},{x:430,y:0}],{width:3,head:"end"}),D(510,0,150,96,"\u95EE\u9898",L.red,{type:"rectangle",strokeWidth:2})],e=[{x:-320,dir:-1,t:"\u4EBA",c:"#60a5fa"},{x:-120,dir:1,t:"\u673A",c:"#4ade80"},{x:100,dir:-1,t:"\u6599",c:"#fbbf24"},{x:300,dir:1,t:"\u6CD5",c:"#a78bfa"}];for(let t of e){let i=t.x+80,n=t.dir*150;r.push(...se([lt([{x:t.x,y:0},{x:i,y:n}],{width:2,stroke:t.c,straight:true}),B(i,n+t.dir*34,90,30,t.t,t.c,16)])),r.push(B(t.x+20,t.dir*95,120,26,"\u539F\u56E0 A","#5b6572",12)),r.push(B(t.x+110,t.dir*95,120,26,"\u539F\u56E0 B","#5b6572",12));}return r},sa=()=>{let s=[B(0,-360,900,56,"\u8425\u9500\u65E5\u5386 \xB7 \u672C\u6708",Y,24)];["\u5468\u65E5","\u5468\u4E00","\u5468\u4E8C","\u5468\u4E09","\u5468\u56DB","\u5468\u4E94","\u5468\u516D"].forEach((h,d)=>{s.push(D(-532+d*152+152/2,-300,140,40,h,L.slate,{radius:20,strokeWidth:1,stroke:"#cbd5e1"}));});for(let h=0;h<=5;h++)s.push(lt([{x:-532,y:-262+h*96},{x:532,y:-262+h*96}],{stroke:"#e2e8f0",width:1}));for(let h=0;h<=7;h++)s.push(lt([{x:-532+h*152,y:-262},{x:-532+h*152,y:218}],{stroke:"#e2e8f0",width:1}));let l=3;for(let h=1;h<=31;h++){let d=l+h-1,u=d%7,p=Math.floor(d/7),g=-532+u*152+152/2,m=-262+p*96+96/2;s.push(B(g,m-26,128,24,String(h),"#94a3b8",12));}let c=[{d:1,t:"\u52B3\u52A8\u8282",c:"#ef4444"},{d:4,t:"\u9752\u5E74\u8282",c:"#ef4444"},{d:10,t:"\u54C1\u724C\u65E5",c:"#3b82f6"},{d:18,t:"\u535A\u7269\u9986\u65E5",c:"#3b82f6"},{d:21,t:"\u5C0F\u6EE1 \xB7 \u8282\u6C14",c:"#22c55e"},{d:30,t:"\u79D1\u6280\u5DE5\u4F5C\u8005\u65E5",c:"#ef4444"}];for(let h of c){let d=l+h.d-1,u=d%7,p=Math.floor(d/7),g=-532+u*152+152/2,m=-262+p*96+96/2;s.push(B(g,m+10,132,40,h.t,h.c,11));}return s},aa=()=>{let r=(x,I,T,S,w)=>se([D(x,I,T,S,"","#f8fafc",{type:"rectangle",stroke:"#94a3b8",strokeWidth:1,radius:4}),B(x,I-S/2+22,T-24,28,w,"#475569",13)]),e=[...r(-220,-250,540,260,"Isolation Region"),...r(460,-250,360,220,"Recovery Center")],t=(x,I,T,S,w)=>se([$s(x,I-8,T,46,w),B(x,I+30,150,24,S,"#475569",12)]),i=t(-390,-190,"server","\u4E1A\u52A1\u670D\u52A1\u5668","#3b82f6"),n=t(-220,-190,"server","\u4E1A\u52A1\u670D\u52A1\u5668","#3b82f6"),o=t(-50,-190,"server","\u4E1A\u52A1\u670D\u52A1\u5668","#3b82f6"),s=t(-220,-80,"chip","\u8D1F\u8F7D\u5747\u8861","#8b5cf6"),a=t(390,-200,"database","\u5907\u4EFD\u6570\u636E\u5E93","#22c55e"),l=t(550,-200,"server","\u5907\u4EFD\u670D\u52A1\u5668","#22c55e"),c=t(-600,40,"cloud","\u4E91\u8D44\u6E90\u6C60","#0ea5e9"),h=t(-600,200,"shield","\u9632\u706B\u5899","#f97316"),d=t(-220,40,"device-router","\u6838\u5FC3\u4EA4\u6362\u673A","#8b5cf6"),u=t(120,40,"shield","\u9632\u706B\u5899","#f97316"),p=t(-330,230,"server","\u5E94\u7528\u670D\u52A1\u5668","#3b82f6"),g=t(-150,230,"server","\u5E94\u7528\u670D\u52A1\u5668","#3b82f6"),m=t(340,190,"device-desktop","\u529E\u516C\u7EC8\u7AEF","#64748b"),f=t(340,290,"device-wifi","\u65E0\u7EBF AP","#64748b"),b=x=>x[0];return [...e,...i,...n,...o,...s,...a,...l,...c,...h,...d,...u,...p,...g,...m,...f,R(b(i),b(s),{head:"none",strokeWidth:1.5}),R(b(n),b(s),{head:"none",strokeWidth:1.5}),R(b(o),b(s),{head:"none",strokeWidth:1.5}),R(b(s),b(a),{head:"none",strokeWidth:1.5}),R(b(a),b(l),{head:"none",strokeWidth:1.5}),R(b(c),b(d),{head:"none",strokeWidth:2}),R(b(d),b(u),{head:"none",strokeWidth:2}),R(b(u),b(m),{head:"none",strokeWidth:2}),R(b(m),b(f),{head:"none",strokeWidth:1.5}),R(b(d),b(s),{head:"none",strokeWidth:2}),R(b(d),b(p),{head:"none",strokeWidth:2}),R(b(d),b(g),{head:"none",strokeWidth:2}),R(b(h),b(d),{head:"none",strokeWidth:2})]},Tn=[{id:"flow-basic",cat:"flow",zh:"\u7EB5\u5411\u6D41\u7A0B\u56FE",en:"Vertical flowchart",kw:"flow chart \u6D41\u7A0B \u6B65\u9AA4 \u5F00\u59CB \u7ED3\u675F",build:zs},{id:"flow-horizontal",cat:"flow",zh:"\u6A2A\u5411\u6D41\u7A0B",en:"Horizontal flow",kw:"flow horizontal \u6D41\u7A0B \u6A2A\u5411 \u8F93\u5165 \u8F93\u51FA",build:Gs},{id:"steps-s",cat:"flow",zh:"\u516D\u6B65\u95EF\u5173\u6D41\u7A0B",en:"Six-step journey",kw:"steps journey \u95EF\u5173 \u6B65\u9AA4 \u5F97\u5206 \u6E38\u620F \u52A8\u7EBF",build:Fs},{id:"swimlane",cat:"flow",zh:"\u6CF3\u9053\u6D41\u7A0B\u56FE",en:"Swimlane flow",kw:"swimlane \u6CF3\u9053 \u8DE8\u90E8\u95E8 \u6D41\u7A0B \u89D2\u8272",build:oa},{id:"org-chart",cat:"org",zh:"\u7EC4\u7EC7\u67B6\u6784",en:"Org chart",kw:"org chart team \u7EC4\u7EC7 \u67B6\u6784 \u56E2\u961F \u6C47\u62A5",build:Ks},{id:"layered-arch",cat:"tech",zh:"\u5206\u5C42\u67B6\u6784\u56FE",en:"Layered architecture",kw:"layered architecture \u5206\u5C42 \u67B6\u6784 \u63A5\u5165 \u5E94\u7528 \u9886\u57DF \u57FA\u5EFA \u4E2D\u53F0",build:Ys},{id:"net-topology",cat:"tech",zh:"\u7F51\u7EDC\u62D3\u6251\u56FE",en:"Network topology",kw:"network topology \u7F51\u7EDC \u62D3\u6251 \u673A\u623F \u670D\u52A1\u5668 \u4EA4\u6362\u673A \u9632\u706B\u5899",build:aa},{id:"swot",cat:"analysis",zh:"SWOT \u5206\u6790",en:"SWOT analysis",kw:"swot \u5206\u6790 \u4F18\u52BF \u52A3\u52BF \u673A\u4F1A \u5A01\u80C1",build:Xs},{id:"hexa-5w1h",cat:"analysis",zh:"5W1H \u8702\u5DE2",en:"5W1H honeycomb",kw:"5w1h \u516D\u8981\u7D20 \u8702\u5DE2 \u65B0\u95FB \u516D\u8FB9\u5F62 honeycomb",build:Zs},{id:"business-canvas",cat:"analysis",zh:"\u5546\u4E1A\u6A21\u5F0F\u753B\u5E03",en:"Business model canvas",kw:"business canvas \u5546\u4E1A\u6A21\u5F0F \u753B\u5E03 \u4EF7\u503C\u4E3B\u5F20 \u5BA2\u7FA4 \u6536\u5165",build:js},{id:"pyramid",cat:"analysis",zh:"\u91D1\u5B57\u5854",en:"Pyramid",kw:"pyramid \u91D1\u5B57\u5854 \u5C42\u7EA7 \u76EE\u6807 \u652F\u6491",build:qs},{id:"quadrant",cat:"analysis",zh:"\u56DB\u8C61\u9650\u77E9\u9635",en:"2x2 matrix",kw:"quadrant matrix \u56DB\u8C61\u9650 \u77E9\u9635 \u91CD\u8981 \u7D27\u6025",build:Js},{id:"fishbone",cat:"analysis",zh:"\u9C7C\u9AA8\u56FE",en:"Fishbone / Ishikawa",kw:"fishbone ishikawa \u9C7C\u9AA8 \u56E0\u679C \u539F\u56E0 \u77F3\u5DDD",build:ra},{id:"timeline",cat:"plan",zh:"\u65F6\u95F4\u7EBF",en:"Timeline",kw:"timeline \u65F6\u95F4\u7EBF \u9636\u6BB5 \u91CC\u7A0B\u7891 \u6392\u671F",build:Qs},{id:"kanban",cat:"plan",zh:"\u770B\u677F",en:"Kanban board",kw:"kanban board \u770B\u677F \u4EFB\u52A1 \u5F85\u529E \u8FDB\u884C\u4E2D",build:ea},{id:"gantt",cat:"plan",zh:"\u7518\u7279\u56FE",en:"Gantt chart",kw:"gantt \u7518\u7279 \u6392\u671F \u8FDB\u5EA6 \u5468 \u4EFB\u52A1",build:ta},{id:"marketing-calendar",cat:"plan",zh:"\u8425\u9500\u65E5\u5386",en:"Marketing calendar",kw:"calendar \u65E5\u5386 \u6708\u5386 \u8425\u9500 \u6392\u671F \u8282\u65E5",build:sa},{id:"uml-class",cat:"uml",zh:"UML \u7C7B\u56FE",en:"UML class diagram",kw:"uml class \u7C7B\u56FE \u7EE7\u627F \u5C5E\u6027 \u65B9\u6CD5",build:na},{id:"erd",cat:"uml",zh:"\u6570\u636E\u8868\u5173\u7CFB",en:"ER diagram",kw:"er database \u6570\u636E\u8868 \u5173\u7CFB \u8868\u7ED3\u6784 \u5916\u952E",build:ia}];function la(r){return Tn.find(e=>e.id===r)}function ca(r){let e=r.trim().toLowerCase();if(!e)return Tn;let t=e.split(/\s+/);return Tn.filter(i=>{let n=`${i.zh} ${i.en} ${i.kw}`.toLowerCase();return t.every(o=>n.includes(o))})}exports.ArrowTool=Et;exports.BoardExtentKeeper=kn;exports.Camera=Re;exports.DEFAULT_HIGHLIGHTER_COLOR=bn;exports.DEFAULT_IMAGE_MAX_SIZE_BYTES=Ot;exports.DEFAULT_PAGE_THEME=nr;exports.Editor=Bi;exports.FreehandTool=Le;exports.HandTool=Ht;exports.ICONS=Qe;exports.ICON_CATEGORIES=gr;exports.ICON_CATEGORY_INK=mo;exports.ICON_DEFAULT_INK=yt;exports.ICON_DEFAULT_SIZE=ri;exports.ICON_GRID=K;exports.LANGUAGES=ir;exports.LineTool=Rt;exports.MINDMAP_COLORS=Zn;exports.MINDMAP_DIRECTIONS=Ze;exports.MINDMAP_FONT_SIZE=Ce;exports.MINDMAP_HANDLE_HIT_RADIUS=hr;exports.MINDMAP_HANDLE_RADIUS=pt;exports.MINDMAP_MAX_WIDTH=cr;exports.MINDMAP_MIN_WIDTH=lr;exports.MINDMAP_NODE_HEIGHT=ar;exports.MIN_HANDLE_SEGMENT=Zo;exports.MIN_JOG=jo;exports.Mat2d=be;exports.PAGE_THEMES=tr;exports.Renderer=Ue;exports.STICKY_FOLD_RATIO=re;exports.STICKY_NOTE_COLORS=ao;exports.STICKY_NOTE_DEFAULT_COLOR=Jt;exports.STICKY_TEXT_SCALE=Je;exports.SelectTool=Dt;exports.ShapeTool=A;exports.TABLE_CELL_PADDING_X=we;exports.TABLE_CELL_PADDING_Y=wt;exports.TABLE_DEFAULT_COL_WIDTH=Oe;exports.TABLE_DEFAULT_ROW_HEIGHT=ze;exports.TABLE_FONT_SIZE=xt;exports.TABLE_HEADER_FILL=ci;exports.TABLE_LINE_HEIGHT_RATIO=et;exports.TABLE_MAX_AUTO_LINES=Mr;exports.TABLE_MIN_COL_WIDTH=ai;exports.TABLE_MIN_ROW_HEIGHT=li;exports.TABLE_MOVE_HANDLE_GAP=Tr;exports.TABLE_MOVE_HANDLE_HEIGHT=Ir;exports.TABLE_MOVE_HANDLE_WIDTH=Cr;exports.TEMPLATES=Tn;exports.TEMPLATE_CATEGORIES=Vs;exports.THEME=H;exports.UML_FONT_SIZE=ee;exports.UML_HEADER_HEIGHT=ge;exports.UML_LINE_HEIGHT=V;exports.UML_MIN_WIDTH=bi;exports.UML_PADDING_X=ne;exports.UML_PADDING_Y=_;exports.Vec=We;exports.addImageReadyListener=Hn;exports.calcUmlClassSize=hn;exports.clearImageCache=Fo;exports.cloneMindMapNode=Xt;exports.cloneTable=Ar;exports.cloneTableCells=he;exports.collapseRoute=Ye;exports.collectTemporaryImageSrcs=_n;exports.connectorSegmentHandles=Gt;exports.countMindMapNodes=eo;exports.createTableCells=Ct;exports.downloadBlob=In;exports.effectiveDirection=Z;exports.ensureIcons=ft;exports.ensureImagesLoaded=En;exports.exportToBlob=Cn;exports.findMindMapNode=W;exports.getContentBounds=at;exports.getIcon=$e;exports.getLanguage=rr;exports.getMindMapNodeDepth=jt;exports.getMindMapNodeSiblings=_e;exports.getMindMapParent=qe;exports.getTheme=er;exports.hasIcon=oi;exports.hexToRgba=z;exports.hitTableBody=kr;exports.hitTableMoveHandle=tt;exports.iconInk=si;exports.iconsByCategory=wr;exports.imageDataUrl=Nn;exports.isEmptyRect=He;exports.isFlippableShapeType=Vn;exports.isHorizontalDirection=ce;exports.isIconCatalogLoaded=xr;exports.isImageFailed=Rn;exports.isImageLoading=Uo;exports.isStubCorner=$n;exports.isUploaderFunction=Ui;exports.layoutMindMap=N;exports.loadIconCatalog=po;exports.loadImage=Ke;exports.mergeShallowSteps=Ee;exports.mindMapHandleAtLocalPoint=Qn;exports.mindMapNodeColor=Be;exports.mindMapNodeHandles=Jn;exports.mindMapNodeSize=Qi;exports.moveMindMapNodeInTree=ni;exports.offsetConnectorSegment=zn;exports.parseUploadResponse=Fi;exports.peekImage=$t;exports.pickSegmentHandle=On;exports.pointToSegmentDistance=zt;exports.promoteMindMapNodeInTree=ti;exports.pruneStubBends=Wn;exports.rectsIntersect=Ln;exports.renderSVGString=_o;exports.renderToCanvas=Eo;exports.reorderMindMapNodeInTree=ei;exports.routeToUserPoints=Gn;exports.sameRoute=Un;exports.searchIcons=Sr;exports.searchTemplates=ca;exports.setImageCrossOrigin=zo;exports.setLanguage=Yt;exports.setTheme=Ft;exports.shadeColor=Kn;exports.subscribeLanguage=sr;exports.subscribeTheme=Qo;exports.subtractUnion=Oi;exports.t=le;exports.tableAnchorAt=pi;exports.tableCellAtLocalClamped=St;exports.tableCellLineCount=bo;exports.tableCellLocalRect=ie;exports.tableCellTextStartOffset=Mt;exports.tableCoveredMap=Ge;exports.tableDeleteColumn=an;exports.tableDeleteRow=sn;exports.tableExpandRangeToMerges=It;exports.tableGrowRowHeights=di;exports.tableInsertColumn=rn;exports.tableInsertRow=on;exports.tableLocalPoint=Ie;exports.tableMerge=ui;exports.tableMoveHandleLocalRect=tn;exports.tablePagePoint=vr;exports.tableRangeHasMerge=Dr;exports.tableRangeLocalRect=hi;exports.tableRowAtPoint=mi;exports.tableSplit=nn;exports.tableSplitRange=gi;exports.tableTotalHeight=it;exports.tableTotalWidth=nt;exports.templateById=la;exports.umlAttrRowText=Ne;exports.umlMethodRowText=xe;exports.unionRect=ht;exports.uploadImageViaConfig=Ki;
|