From deb33940a29001e65f50f267c87fa71abd00a5c8 Mon Sep 17 00:00:00 2001 From: kangax Date: Thu, 23 Aug 2012 15:15:11 +0200 Subject: [PATCH] Avoid rendering dot in FF on click in free drawing mode. --- HEADER.js | 2 +- dist/all.js | 3 ++- dist/all.min.js | 4 ++-- dist/all.min.js.gz | Bin 42034 -> 42039 bytes package.json | 4 ++-- src/canvas.class.js | 1 + 6 files changed, 8 insertions(+), 6 deletions(-) diff --git a/HEADER.js b/HEADER.js index b0390e83..c93148e3 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.9.1" }; +var fabric = fabric || { version: "0.9.2" }; if (typeof exports != 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index 1ac35c2d..8afe3517 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL` */ /*! Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.9.1" }; +var fabric = fabric || { version: "0.9.2" }; if (typeof exports != 'undefined') { exports.fabric = fabric; @@ -6630,6 +6630,7 @@ fabric.util.string = { if (path === "M 0 0 L 0 0 ") { // do not create 0 width/height paths, as they are rendered inconsistently across browsers // Firefox 4, for example, renders a dot, whereas Chrome 10 renders nothing + this.renderAll(); return; } diff --git a/dist/all.min.js b/dist/all.min.js index 44b6834f..5fdb4727 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,7 +1,7 @@ /* Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric=fabric||{version:"0.9.1"};if(typeof exports!="undefined"){exports.fabric=fabric}if(typeof document!="undefined"&&typeof window!="undefined"){fabric.document=document;fabric.window=window}else{fabric.document=require("jsdom").jsdom("");fabric.window=fabric.document.createWindow()}fabric.isTouchSupported="ontouchstart" in fabric.document.documentElement;fabric.isLikelyNode=typeof Buffer!=="undefined"&&typeof window==="undefined"; +var fabric=fabric||{version:"0.9.2"};if(typeof exports!="undefined"){exports.fabric=fabric}if(typeof document!="undefined"&&typeof window!="undefined"){fabric.document=document;fabric.window=window}else{fabric.document=require("jsdom").jsdom("");fabric.window=fabric.document.createWindow()}fabric.isTouchSupported="ontouchstart" in fabric.document.documentElement;fabric.isLikelyNode=typeof Buffer!=="undefined"&&typeof window==="undefined"; /* * Copyright (c) 2009 Simo Kinnunen. * Licensed under the MIT license. */ -var Cufon=(function(){var k=function(){return k.replace.apply(null,arguments)};var u=k.DOM={ready:(function(){var z=false,B={loaded:1,complete:1};var y=[],A=function(){if(z){return}z=true;for(var C;C=y.shift();C()){}};if(fabric.document.addEventListener){fabric.document.addEventListener("DOMContentLoaded",A,false);fabric.window.addEventListener("pageshow",A,false)}if(!fabric.window.opera&&fabric.document.readyState){(function(){B[fabric.document.readyState]?A():setTimeout(arguments.callee,10)})()}if(fabric.document.readyState&&fabric.document.createStyleSheet){(function(){try{fabric.document.body.doScroll("left");A()}catch(C){setTimeout(arguments.callee,1)}})()}o(fabric.window,"load",A);return function(C){if(!arguments.length){A()}else{z?C():y.push(C)}}})()};var l=k.CSS={Size:function(z,y){this.value=parseFloat(z);this.unit=String(z).match(/[a-z%]*$/)[0]||"px";this.convert=function(A){return A/y*this.value};this.convertFrom=function(A){return A/this.value*y};this.toString=function(){return this.value+this.unit}},getStyle:function(y){return new a(y.style)},quotedList:i(function(B){var A=[],z=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,y;while(y=z.exec(B)){A.push(y[3]||y[1])}return A}),ready:(function(){var A=false;var z=[],B=function(){A=true;for(var D;D=z.shift();D()){}};var y=Object.prototype.propertyIsEnumerable?f("style"):{length:0};var C=f("link");u.ready(function(){var G=0,F;for(var E=0,D=C.length;F=C[E],E=y.length+G){B()}else{setTimeout(arguments.callee,10)}});return function(D){if(A){D()}else{z.push(D)}}})(),supports:function(A,z){var y=fabric.document.createElement("span").style;if(y[A]===undefined){return false}y[A]=z;return y[A]===z},textAlign:function(B,A,y,z){if(A.get("textAlign")=="right"){if(y>0){B=" "+B}}else{if(y400}if(F==500){F=400}for(var G in D){G=parseInt(G,10);if(!C||GA){A=G}H.push(G)}if(FA){F=A}H.sort(function(J,I){return(B?(J>F&&I>F)?JI:(JI:Jz){z=e}L.push(e);e=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}e+=D=Number(B.w||ab.w)+U}L.push(e);e=Math.max(z,e);var m=[];for(var aa=L.length;aa--;){m[aa]=e-L[aa]}if(D===null){return null}V+=(H.width-D);C+=H.minX;var v,p;if(n){v=J;p=J.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=E;p=fabric.document.createElement("canvas");v.appendChild(p);if(A.printable){var Y=fabric.document.createElement("span");Y.className="cufon-alt";Y.appendChild(fabric.document.createTextNode(E));v.appendChild(Y)}}var ah=v.style;var O=p.style||{};var k=o.convert(H.height-I+T);var af=Math.ceil(k);var S=af/k;p.width=Math.ceil(o.convert(e+V-C)*S);p.height=af;I+=H.minY;O.top=Math.round(o.convert(I-ab.ascent))+"px";O.left=Math.round(o.convert(C))+"px";var j=Math.ceil(o.convert(e*S));var t=j+"px";var s=o.convert(ab.height);var F=(A.lineHeight-1)*o.convert(-ab.ascent/5)*(M-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*M)+F;Cufon.textOptions.lines=M;Cufon.textOptions.totalLineHeight=F;if(a){ah.width=t;ah.height=s+"px"}else{ah.paddingLeft=t;ah.paddingBottom=(s-1)+"px"}var ad=Cufon.textOptions.context||p.getContext("2d"),K=af/H.height;Cufon.textOptions.fontAscent=ab.ascent*K;Cufon.textOptions.boundaries=null;for(var w=Cufon.textOptions.shadowOffsets,aa=R.length;aa--;){w[aa]=[R[aa][0]*K,R[aa][1]*K]}ad.save();ad.scale(K,K);ad.translate(-C-((1/K*p.width)/2)+(Cufon.fonts[ab.family].offsetLeft||0),-I-((Cufon.textOptions.height/K)/2)+(Cufon.fonts[ab.family].offsetTop||0));ad.lineWidth=ab.face["underline-thickness"];ad.save();function q(l,i){ad.strokeStyle=i;ad.beginPath();ad.moveTo(0,l);ad.lineTo(e,l);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var aj=0,an=0,y=[{left:0}];if(A.textAlign==="right"){ad.translate(m[an],0);y[0].left=m[an]*K}else{if(A.textAlign==="center"){ad.translate(m[an]/2,0);y[0].left=m[an]/2*K}}for(var al=0,ak=ag.length;al.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}');function c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;Sw?p:(o-n);s(t(currentTime,m,byValue,p));if(o>w||q()){x.onComplete&&x.onComplete();return}k(r)})()}var f=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(n,m){fabric.window.setTimeout(n,1000/60)};var k=function(){return f.apply(fabric.window,arguments)};function b(n,p,o){if(n){var m=new Image();m.onload=function(){p&&p.call(o,m);m=m.onload=null};m.src=n}else{p&&p.call(o,n)}}function i(o,s){function n(t){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(t))]}var q=[],p=0,m=o.filter(function(t){return n(t.type).async}).length;var r=this;o.forEach(function(v,u){if(!v.type){return}var t=n(v.type);if(t.async){t.fromObject(v,function(w){q[u]=w;if(++p===m){if(s){s(q)}}})}else{q[u]=t.fromObject(v)}});if(m===0&&s){s(q)}}function a(o,n,p){var m=o.length>1?new fabric.PathGroup(o,n):o[0];if(typeof p!=="undefined"){m.setSourcePath(p)}return m}fabric.util.removeFromArray=j;fabric.util.degreesToRadians=c;fabric.util.toFixed=e;fabric.util.getRandomInt=g;fabric.util.falseFunction=l;fabric.util.animate=d;fabric.util.requestAnimFrame=k;fabric.util.loadImage=b;fabric.util.enlivenObjects=i;fabric.util.groupSVGElements=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]/g,">")}fabric.util.string={camelize:b,capitalize:c,escapeXml:a}}());(function(){var c=Array.prototype.slice,a=Function.prototype.apply,b=function(){};if(!Function.prototype.bind){Function.prototype.bind=function(d){var g=this,e=c.call(arguments,1),f;if(e.length){f=function(){return a.call(g,this instanceof b?this:d,e.concat(c.call(arguments)))}}else{f=function(){return a.call(g,this instanceof b?this:d,arguments)}}b.prototype=this.prototype;f.prototype=new b;return f}}})();(function(){var f=Array.prototype.slice,e=function(){};var c=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();var b=function(g,j,h){for(var i in j){if(i in g.prototype&&typeof g.prototype[i]=="function"){g.prototype[i]=(function(k){return function(){var m=this.constructor.superclass;this.constructor.superclass=h;var l=j[k].apply(this,arguments);this.constructor.superclass=m;if(k!=="initialize"){return l}}})(i)}else{g.prototype[i]=j[i]}if(c){if(j.toString!==Object.prototype.toString){g.prototype.toString=j.toString}if(j.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=j.valueOf}}}};function a(){}function d(){var k=null,j=f.call(arguments,0);if(typeof j[0]==="function"){k=j.shift()}function g(){this.initialize.apply(this,arguments)}g.superclass=k;g.subclasses=[];if(k){a.prototype=k.prototype;g.prototype=new a;k.subclasses.push(g)}for(var h=0,l=j.length;h-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=d})();(function(){function d(e,f){return e+(/\?/.test(e)?"&":"?")+f}var c=(function(){var h=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest()}];for(var e=h.length;e--;){try{var g=h[e]();if(g){return h[e]}}catch(f){}}})();function a(){}function b(g,f){f||(f={});var j=f.method?f.method.toUpperCase():"GET",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=b})();(function(){function d(F,E,H,G){return H*(F/=G)*F+E}function l(F,E,H,G){return -H*(F/=G)*(F-2)+E}function r(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E}function B(F,E,H,G){return H*(F/=G)*F*F+E}function q(F,E,H,G){return H*((F=F/G-1)*F*F+1)+E}function u(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F+E}return H/2*((F-=2)*F*F+2)+E}function t(F,E,H,G){return H*(F/=G)*F*F*F+E}function g(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E}function k(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E}function y(F,E,H,G){return H*(F/=G)*F*F*F*F+E}function j(F,E,H,G){return H*((F=F/G-1)*F*F*F*F+1)+E}function n(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F*F+E}return H/2*((F-=2)*F*F*F*F+2)+E}function f(F,E,H,G){return -H*Math.cos(F/G*(Math.PI/2))+H+E}function o(F,E,H,G){return H*Math.sin(F/G*(Math.PI/2))+E}function v(F,E,H,G){return -H/2*(Math.cos(Math.PI*F/G)-1)+E}function D(F,E,H,G){return(F==0)?E:H*Math.pow(2,10*(F/G-1))+E}function c(F,E,H,G){return(F==G)?E+H:H*(-Math.pow(2,-10*F/G)+1)+E}function i(F,E,H,G){if(F==0){return E}if(F==G){return E+H}if((F/=G/2)<1){return H/2*Math.pow(2,10*(F-1))+E}return H/2*(-Math.pow(2,-10*--F)+2)+E}function h(F,E,H,G){return -H*(Math.sqrt(1-(F/=G)*F)-1)+E}function p(F,E,H,G){return H*Math.sqrt(1-(F=F/G-1)*F)+E}function x(F,E,H,G){if((F/=G/2)<1){return -H/2*(Math.sqrt(1-F*F)-1)+E}return H/2*(Math.sqrt(1-(F-=2)*F)+1)+E}function s(G,E,K,J){var H=1.70158;var I=0;var F=K;if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(F-1;w=w.split(/\s+/);var u=[];if(y){for(var v=0,t=w.length;v/i,""))}if(!x.documentElement){return}h.parseSVGDocument(x.documentElement,function(A,z){k.set(u,{objects:h.util.array.invoke(A,"toObject"),options:z});w(A,z)},t)}}function b(v){var u=v.objects,t=v.options;u=u.map(function(w){return h[f(w.type)].fromObject(w)});return({objects:u,options:t})}function n(u,x,t){u=u.trim();var v;if(typeof DOMParser!=="undefined"){var w=new DOMParser();if(w&&w.parseFromString){v=w.parseFromString(u,"text/xml")}}else{if(h.window.ActiveXObject){var v=new ActiveXObject("Microsoft.XMLDOM");v.async="false";v.loadXML(u.replace(//i,""))}}h.parseSVGDocument(v.documentElement,function(z,y){x(z,y)},t)}function m(w){var u="";for(var v=0,t=w.length;v",'",""].join("")}return u}p(h,{parseAttributes:e,parseElements:g,parseStyleAttribute:i,parsePointsAttribute:s,getCSSRules:d,loadSVGFromURL:c,loadSVGFromString:n,createSVGFontFacesMarkup:m})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);if(k[k.length-1]===""){k.pop()}for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient=fabric.util.createClass({initialize:function(d){d||(d={});this.x1=d.x1||0;this.y1=d.y1||0;this.x2=d.x2||0;this.y2=d.y2||0;this.colorStops=d.colorStops},toObject:function(){return{x1:this.x1,x2:this.x2,y1:this.y1,y2:this.y2,colorStops:this.colorStops}},toLiveGradient:function(e){var g=e.createLinearGradient(this.x1,this.y1,this.x2||e.canvas.width,this.y2);for(var d in this.colorStops){var f=this.colorStops[d];g.addColorStop(parseFloat(d),f)}return g}});fabric.util.object.extend(fabric.Gradient,{fromElement:function(h,e){var l=h.getElementsByTagName("stop"),h,k,f={},d,j={x1:h.getAttribute("x1")||0,y1:h.getAttribute("y1")||0,x2:h.getAttribute("x2")||"100%",y2:h.getAttribute("y2")||0};for(var g=l.length;g--;){h=l[g];k=h.getAttribute("offset");k=parseFloat(k)/(/%$/.test(k)?100:1);f[k]=c(h)||h.getAttribute("stop-color")}a(e,j);return new fabric.Gradient({x1:j.x1,y1:j.y1,x2:j.x2,y2:j.y2,colorStops:f})},forObject:function(e,d){d||(d={});a(e,d);return new fabric.Gradient(d)}});function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.id]=g}for(var e=d.length;e--;){g=d[e];h[g.id]=g}return h}fabric.getGradientDefs=b})();(function(b){var c=b.fabric||(b.fabric={});if(c.Point){c.warn("fabric.Point is already defined");return}c.Point=a;function a(d,e){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},add:function(d){return new a(this.x+d.x,this.y+d.y)},addEquals:function(d){this.x+=d.x;this.y+=d.y;return this},scalarAdd:function(d){return new a(this.x+d,this.y+d)},scalarAddEquals:function(d){this.x+=d;this.y+=d;return this},subtract:function(d){return new a(this.x-d.x,this.y-d.y)},subtractEquals:function(d){this.x-=d.x;this.y-=d.y;return this},scalarSubtract:function(d){return new a(this.x-d,this.y-d)},scalarSubtractEquals:function(d){this.x-=d;this.y-=d;return this},multiply:function(d){return new a(this.x*d,this.y*d)},multiplyEquals:function(d){this.x*=d;this.y*=d;return this},divide:function(d){return new a(this.x/d,this.y/d)},divideEquals:function(d){this.x/=d;this.y/=d;return this},eq:function(d){return(this.x==d.x&&this.y==d.y)},lt:function(d){return(this.xd.x&&this.y>d.y)},gte:function(d){return(this.x>=d.x&&this.y>=d.y)},lerp:function(e,d){return new a(this.x+(e.x-this.x)*d,this.y+(e.y-this.y)*d)},distanceFrom:function(f){var e=this.x-f.x,d=this.y-f.y;return Math.sqrt(e*e+d*d)},min:function(d){return new a(Math.min(this.x,d.x),Math.min(this.y,d.y))},max:function(d){return new a(Math.max(this.x,d.x),Math.max(this.y,d.y))},toString:function(){return this.x+","+this.y},setXY:function(d,e){this.x=d;this.y=e},setFromPoint:function(d){this.x=d.x;this.y=d.y},swap:function(e){var d=this.x,f=this.y;this.x=e.x;this.y=e.y;e.x=d;e.y=f}}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Intersection){b.warn("fabric.Intersection is already defined");return}function c(d){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},appendPoint:function(d){this.points.push(d)},appendPoints:function(d){this.points=this.points.concat(d)}};b.Intersection.intersectLineLine=function(h,f,l,k){var m,i=(k.x-l.x)*(h.y-l.y)-(k.y-l.y)*(h.x-l.x),j=(f.x-h.x)*(h.y-l.y)-(f.y-h.y)*(h.x-l.x),g=(k.y-l.y)*(f.x-h.x)-(k.x-l.x)*(f.y-h.y);if(g!=0){var e=i/g,d=j/g;if(0<=e&&e<=1&&0<=d&&d<=1){m=new c("Intersection");m.points.push(new b.Point(h.x+e*(f.x-h.x),h.y+e*(f.y-h.y)))}else{m=new c("No Intersection")}}else{if(i==0||j==0){m=new c("Coincident")}else{m=new c("Parallel")}}return m};b.Intersection.intersectLinePolygon=function(e,d,l){var m=new c("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),l=j.length;for(var k=0;k0){f.status="Intersection"}return f};b.Intersection.intersectPolygonRectangle=function(n,e,d){var g=e.min(d),m=e.max(d),f=new b.Point(m.x,g.y),l=new b.Point(g.x,m.y),k=c.intersectLinePolygon(g,f,n),j=c.intersectLinePolygon(f,m,n),i=c.intersectLinePolygon(m,l,n),h=c.intersectLinePolygon(l,g,n),o=new c("No Intersection");o.appendPoints(k.points);o.appendPoints(j.points);o.appendPoints(i.points);o.appendPoints(h.points);if(o.points.length>0){o.status="Intersection"}return o}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];if(this.backgroundImage){h.push('')}for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.fire("before:selection:cleared",{target:g});this.discardActiveObject();this.fire("selection:cleared")}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.containerClass});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});r.fire("selected",{e:s});return this},getActiveObject:function(){return this._activeObject},discardActiveObject:function(){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=null;return this},setActiveGroup:function(r){this._activeGroup=r;r&&r.setActive(true);return this},getActiveGroup:function(){return this._activeGroup},discardActiveGroup:function(){var r=this.getActiveGroup();if(r){r.destroy()}return this.setActiveGroup(null)},deactivateAll:function(){var s=this.getObjects(),t=0,r=s.length;for(;t1)?q.apply(this,o.call(arguments,1)):q.call(this)},initialize:function(i){if(i){this.setOptions(i);this._initGradient(i)}},_initGradient:function(i){if(i.fill&&typeof i.fill=="object"&&!(i.fill instanceof d.Gradient)){this.set("fill",new d.Gradient(i.fill))}},setOptions:function(q){var r=this.stateProperties.length,s;while(r--){s=this.stateProperties[r];if(s in q){this.set(s,q[s])}}},transform:function(i){i.globalAlpha=this.opacity;i.translate(this.left,this.top);i.rotate(this.theta);i.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var i={type:this.type,left:c(this.left,this.NUM_FRACTION_DIGITS),top:c(this.top,this.NUM_FRACTION_DIGITS),width:c(this.width,this.NUM_FRACTION_DIGITS),height:c(this.height,this.NUM_FRACTION_DIGITS),fill:(this.fill&&this.fill.toObject)?this.fill.toObject():this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,strokeDashArray:this.strokeDashArray,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","stroke-dasharray: ",(this.strokeDashArray?this.strokeDashArray.join(" "):"; "),"fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";"].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",c(this.left,2)," ",c(this.top,2),")",i!==0?(" rotate("+c(i,2)+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,2)+" "+c(this.scaleY,2)+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(i,q){if(typeof i==="object"){for(var r in i){this._set(r,i[r])}}else{if(typeof q==="function"){this._set(i,q(this.get(i)))}else{this._set(i,q)}}return this},_set:function(i,q){var r=(i==="scaleX"||i==="scaleY")&&qi){var C=x-i}if(E){z+=(D*E)-(C*E||0)}else{v+=(D*y)-(C*y||0)}B[1&s?"moveTo":"lineTo"](z,v);if(s>=u){s=0}}}q(1,0);q(0,1);q(-1,0);q(0,-1);B.stroke();B.closePath();B.restore()},drawCorners:function(B){if(!this.hasControls){return}var D=this.cornersize,y=D/2,x=this.padding,r=-(this.width/2),w=-(this.height/2),C,A,q=D/this.scaleX,i=D/this.scaleY,s=(x+y)/this.scaleY,t=(x+y)/this.scaleX,v=(x+y-D)/this.scaleX,u=(x+y-D)/this.scaleY,z=this.height;B.save();B.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1;B.fillStyle=this.cornerColor;C=r-t;A=w-s;B.fillRect(C,A,q,i);C=r+this.width-t;A=w-s;B.fillRect(C,A,q,i);C=r-t;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width+v;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width/2-t;A=w-s;B.fillRect(C,A,q,i);C=r+this.width/2-t;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width+v;A=w+z/2-s;B.fillRect(C,A,q,i);C=r-t;A=w+z/2-s;B.fillRect(C,A,q,i);if(this.hasRotatingPoint){C=r+this.width/2-t;A=this.flipY?(w+z+(this.rotatingPointOffset/this.scaleY)-i/2):(w-(this.rotatingPointOffset/this.scaleY)-i/2);B.fillRect(C,A,q,i)}B.restore();return this},clone:function(i){if(this.constructor.fromObject){return this.constructor.fromObject(this.toObject(),i)}return new d.Object(this.toObject())},cloneAsImage:function(s){if(d.Image){var q=new Image();q.onload=function(){if(s){s(new d.Image(q),r)}q=q.onload=null};var r={angle:this.get("angle"),flipX:this.get("flipX"),flipY:this.get("flipY")};this.set("angle",0).set("flipX",false).set("flipY",false);this.toDataURL(function(i){q.src=i})}return this},toDataURL:function(s){var q=d.document.createElement("canvas");if(!q.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(q)}this.setCoords();q.width=this.getBoundingRectWidth();q.height=this.getBoundingRectHeight();d.util.wrapElement(q,"div");var i=new d.Canvas(q);i.backgroundColor="transparent";i.renderAll();if(this.constructor.async){this.clone(r)}else{r(this.clone())}function r(u){u.left=q.width/2;u.top=q.height/2;u.setActive(false);i.add(u);var t=i.toDataURL("png");i.dispose();i=u=null;s&&s(t)}},hasStateChanged:function(){return this.stateProperties.some(function(i){return this[i]!==this.originalState[i]},this)},saveState:function(){this.stateProperties.forEach(function(i){this.originalState[i]=this.get(i)},this);return this},setupState:function(){this.originalState={};this.saveState()},intersectsWithRect:function(r,t){var w=this.oCoords,i=new d.Point(w.tl.x,w.tl.y),s=new d.Point(w.tr.x,w.tr.y),v=new d.Point(w.bl.x,w.bl.y),q=new d.Point(w.br.x,w.br.y);var u=d.Intersection.intersectPolygonRectangle([i,s,q,v],r,t);return(u.status==="Intersection")},intersectsWithObject:function(i){function q(u){return{tl:new d.Point(u.tl.x,u.tl.y),tr:new d.Point(u.tr.x,u.tr.y),bl:new d.Point(u.bl.x,u.bl.y),br:new d.Point(u.br.x,u.br.y)}}var r=q(this.oCoords),t=q(i.oCoords);var s=d.Intersection.intersectPolygonPolygon([r.tl,r.tr,r.br,r.bl],[t.tl,t.tr,t.br,t.bl]);return(s.status==="Intersection")},isContainedWithinObject:function(i){return this.isContainedWithinRect(i.oCoords.tl,i.oCoords.br)},isContainedWithinRect:function(r,t){var v=this.oCoords,i=new d.Point(v.tl.x,v.tl.y),s=new d.Point(v.tr.x,v.tr.y),u=new d.Point(v.bl.x,v.bl.y),q=new d.Point(v.br.x,v.br.y);return i.x>r.x&&s.xr.y&&u.y=v)&&(s.d.y>=v)){continue}if((s.o.x==s.d.x)&&(s.o.x>=w)){x=s.o.x;u=v}else{z=0;y=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=v-z*w;q=s.o.y-y*s.o.x;x=-(r-q)/(z-y);u=r+z*x}if(x>=w){t+=1}if(t==2){break}}return t},_getImageLines:function(r,q){return{topline:{o:r.tl,d:r.tr},rightline:{o:r.tr,d:r.br},bottomline:{o:r.br,d:r.bl},leftline:{o:r.bl,d:r.tl}}},_setCornerCoords:function(){var u=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q),v=Math.sin(this.theta),t=Math.cos(this.theta);u.tl.corner={tl:{x:u.tl.x-r,y:u.tl.y-i},tr:{x:u.tl.x+i,y:u.tl.y-r},bl:{x:u.tl.x-i,y:u.tl.y+r},br:{x:u.tl.x+r,y:u.tl.y+i}};u.tr.corner={tl:{x:u.tr.x-r,y:u.tr.y-i},tr:{x:u.tr.x+i,y:u.tr.y-r},br:{x:u.tr.x+r,y:u.tr.y+i},bl:{x:u.tr.x-i,y:u.tr.y+r}};u.bl.corner={tl:{x:u.bl.x-r,y:u.bl.y-i},bl:{x:u.bl.x-i,y:u.bl.y+r},br:{x:u.bl.x+r,y:u.bl.y+i},tr:{x:u.bl.x+i,y:u.bl.y-r}};u.br.corner={tr:{x:u.br.x+i,y:u.br.y-r},bl:{x:u.br.x-i,y:u.br.y+r},br:{x:u.br.x+r,y:u.br.y+i},tl:{x:u.br.x-r,y:u.br.y-i}};u.ml.corner={tl:{x:u.ml.x-r,y:u.ml.y-i},tr:{x:u.ml.x+i,y:u.ml.y-r},bl:{x:u.ml.x-i,y:u.ml.y+r},br:{x:u.ml.x+r,y:u.ml.y+i}};u.mt.corner={tl:{x:u.mt.x-r,y:u.mt.y-i},tr:{x:u.mt.x+i,y:u.mt.y-r},bl:{x:u.mt.x-i,y:u.mt.y+r},br:{x:u.mt.x+r,y:u.mt.y+i}};u.mr.corner={tl:{x:u.mr.x-r,y:u.mr.y-i},tr:{x:u.mr.x+i,y:u.mr.y-r},bl:{x:u.mr.x-i,y:u.mr.y+r},br:{x:u.mr.x+r,y:u.mr.y+i}};u.mb.corner={tl:{x:u.mb.x-r,y:u.mb.y-i},tr:{x:u.mb.x+i,y:u.mb.y-r},bl:{x:u.mb.x-i,y:u.mb.y+r},br:{x:u.mb.x+r,y:u.mb.y+i}};u.mtr.corner={tl:{x:u.mtr.x-r+(v*this.rotatingPointOffset),y:u.mtr.y-i-(t*this.rotatingPointOffset)},tr:{x:u.mtr.x+i+(v*this.rotatingPointOffset),y:u.mtr.y-r-(t*this.rotatingPointOffset)},bl:{x:u.mtr.x-i+(v*this.rotatingPointOffset),y:u.mtr.y+r-(t*this.rotatingPointOffset)},br:{x:u.mtr.x+r+(v*this.rotatingPointOffset),y:u.mtr.y+i-(t*this.rotatingPointOffset)}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i){this.set("fill",d.Gradient.forObject(this,i))},animate:function(q,s,i){var r=this;i||(i={});if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test((s+"").charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,byValue:i.by,easing:i.easing,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})},centerH:function(){this.canvas.centerObjectH(this);return this},centerV:function(){this.canvas.centerObjectV(this);return this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){this.canvas.sendToBack(this);return this},bringToFront:function(){this.canvas.bringToFront(this);return this},sendBackwards:function(){this.canvas.sendBackwards(this);return this},bringForward:function(){this.canvas.bringForward(this);return this}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}l(d.Object.prototype,d.Observable)})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.Object.prototype.set,a={x1:1,x2:1,y1:1,y2:1};if(c.Line){c.warn("fabric.Line is already defined");return}c.Line=c.util.createClass(c.Object,{type:"line",initialize:function(g,f){if(!g){g=[0,0,0,0]}this.callSuper("initialize",f);this.set("x1",g[0]);this.set("y1",g[1]);this.set("x2",g[2]);this.set("y2",g[3]);this._setWidthHeight(f)},_setWidthHeight:function(f){f||(f={});this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left","left" in f?f.left:(this.x1+this.width/2));this.set("top","top" in f?f.top:(this.y1+this.height/2))},_set:function(f,g){this[f]=g;if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(this.width===1?0:(-this.width/2),this.height===1?0:(-this.height/2));f.lineTo(this.width===1?0:(this.width/2),this.height===1?0:(this.height/2));f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2;this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(f){this.radius=f;this.set("width",f*2).set("height",f*2)},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",initialize:function(e){e=e||{};this.callSuper("initialize",e);this.set("rx",e.rx||0);this.set("ry",e.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",rx:0,ry:0,initialize:function(d){this._initStateProperties();this.callSuper("initialize",d);this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){if(this.rx&&!this.ry){this.ry=this.rx}else{if(this.ry&&!this.rx){this.rx=this.ry}}},_render:function(f){var j=this.rx||0,i=this.ry||0,d=-this.width/2,k=-this.height/2,e=this.width,g=this.height;f.beginPath();f.globalAlpha*=this.opacity;if(this.group){f.translate(this.x||0,this.y||0)}f.moveTo(d+j,k);f.lineTo(d+e-j,k);f.quadraticCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.quadraticCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.quadraticCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.quadraticCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.strokeDashArray){this._renderDashedStroke(f)}else{if(this.stroke){f.stroke()}}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toObject:function(){return c.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();f.moveTo(this.points[0].x,this.points[0].y);for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();l.moveTo(this.points[0].x,this.points[0].y);for(var m=0,j=this.points.length;m1){E=Math.sqrt(E);O*=E;N*=E}var R=aa/O;var Q=W/O;var D=(-W)/N;var C=(aa)/N;var H=R*M+Q*L;var q=D*M+C*L;var F=R*T+Q*S;var ab=D*T+C*S;var Z=(F-H)*(F-H)+(ab-q)*(ab-q);var U=1/Z-0.25;if(U<0){U=0}var w=Math.sqrt(U);if(P==J){w=-w}var V=0.5*(H+F)-w*(ab-q);var K=0.5*(q+ab)+w*(F-H);var v=Math.atan2(q-K,H-V);var u=Math.atan2(ab-K,F-V);var Y=u-v;if(Y<0&&P==1){Y+=2*Math.PI}else{if(Y>0&&P==0){Y-=2*Math.PI}}var B=Math.ceil(Math.abs(Y/(Math.PI*0.5+0.001)));var I=[];for(var X=0;X"},toObject:function(){var q=g(this.callSuper("toObject"),{path:this.path});if(this.sourcePath){q.sourcePath=this.sourcePath}if(this.transformMatrix){q.transformMatrix=this.transformMatrix}return q},toDatalessObject:function(){var q=this.toObject();if(this.sourcePath){q.path=this.sourcePath}delete q.sourcePath;return q},toSVG:function(){var t=[];for(var r=0,q=this.path.length;r',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var C=[],z,v,y;for(var u=0,t,q,w=this.path.length;uB){for(var r=1,x=q.length;r"];for(var l=0,j=m.length;l");return k.join("")},toString:function(){return"#"},isSameColor:function(){var j=this.getObjects()[0].get("fill");return this.getObjects().every(function(k){return k.get("fill")===j})},complexity:function(){return this.paths.reduce(function(j,k){return j+((k&&k.complexity)?k.complexity():0)},0)},toGrayscale:function(){var j=this.paths.length;while(j--){this.paths[j].toGrayscale()}return this},getObjects:function(){return this.paths}});function c(m){for(var l=0,j=m.length;l"},getObjects:function(){return this.objects},addWithUpdate:function(h){this._restoreObjectsState();this.objects.push(h);this._calcBounds();this._updateObjectsCoords();return this},removeWithUpdate:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},add:function(h){this.objects.push(h);return this},remove:function(h){f(this.objects,h);return this},size:function(){return this.getObjects().length},_set:function(j,k){if(j==="fill"||j==="opacity"){var h=this.objects.length;this[j]=k;while(h--){this.objects[h].set(j,k)}}else{this[j]=k}},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j,o){j.save();this.transform(j);var n=Math.max(this.scaleX,this.scaleY);for(var l=0,h=this.objects.length,k;k=this.objects[l];l++){var m=k.borderScaleFactor;k.borderScaleFactor=n;k.render(j);k.borderScaleFactor=m}if(!o&&this.active){this.drawBorders(j);this.hideCorners||this.drawCorners(j)}j.restore();this.setCoords()},item:function(h){return this.getObjects()[h]},complexity:function(){return this.getObjects().reduce(function(i,h){i+=(typeof h.complexity=="function")?h.complexity():0;return i},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(j){var l=this.get("left"),m=this.get("top"),h=this.getAngle()*(Math.PI/180),k=j.get("originalLeft"),n=j.get("originalTop"),i=Math.cos(h)*j.get("top")+Math.sin(h)*j.get("left"),o=-Math.sin(h)*j.get("top")+Math.cos(h)*j.get("left");j.setAngle(j.getAngle()+this.getAngle());j.set("left",l+o*this.get("scaleX"));j.set("top",m+i*this.get("scaleY"));j.set("scaleX",j.get("scaleX")*this.get("scaleX"));j.set("scaleY",j.get("scaleY")*this.get("scaleY"));j.setCoords();j.hideCorners=false;j.setActive(false);j.setCoords();return this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){this._originalLeft=this.get("left");this._originalTop=this.get("top");return this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){this.forEachObject(function(h){h.setCoords()});return this},activateAllObjects:function(){this.forEachObject(function(h){h.setActive()});return this},forEachObject:e.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var j=this.getObjects(),i=j[0]?j[0].get("opacity"):1;var h=j.every(function(k){return k.get("opacity")===i});if(h){this.opacity=i}},_calcBounds:function(){var s=[],q=[],p,n,k,h,m,l,u,r=0,t=this.objects.length;for(;ri.x&&j-hi.y},toGrayscale:function(){var h=this.objects.length;while(h--){this.objects[h].toGrayscale()}},toSVG:function(){var k=[];for(var j=0,h=this.objects.length;j'+k.join("")+"")}});e.Group.fromObject=function(h,i){e.util.enlivenObjects(h.objects,function(j){delete h.objects;i&&i(new e.Group(j,h))})};e.Group.async=true})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:false,bordervisibility:false,cornervisibility:false,type:"image",initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);this.filters=[];if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;if(!e.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(e)}e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0,g.width,g.height);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h._element=f;i&&i();f.onload=e=g=null};f.width=g.width;f.height=g.height;if(c){var d=e.toDataURL("image/png").replace(/data:image\/png;base64,/,"");f.src=new Buffer(d,"base64");h._element=f;i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(c){c.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){c||(c={});this.setOptions(c);this._setBorder();this._setWidthHeight(c)},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return d&&fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(c){var d=2*this.currentBorder;this.width="width" in c?c.width:((this.getElement().width||0)+d);this.height="height" in c?c.height:((this.getElement().height||0)+d)},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc;fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var a=this.get("angle");if(a>-225&&a<=-135){return -180}else{if(a>-135&&a<=-45){return -90}else{if(a>-45&&a<=45){return 0}else{if(a>45&&a<=135){return 90}else{if(a>135&&a<=225){return 180}else{if(a>225&&a<=315){return 270}else{if(a>315){return 360}}}}}}}return 0},straighten:function(){var a=this._getAngleValueForStraighten();this.setAngle(a);return this},fxStraighten:function(b){b=b||{};var c=function(){},d=b.onComplete||c,a=b.onChange||c,e=this;fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(f){e.setAngle(f);a()},onComplete:function(){e.setCoords();d()},onStart:function(){e.setActive(false)}});return this}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(a){a.straighten();this.renderAll();return this},fxStraightenObject:function(a){a.fxStraighten({onChange:this.renderAll.bind(this)});return this}});fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)0){l[m]=o;l[m+1]=e;l[m+2]=k}}f.putImageData(c,0,0)},toJSON:function(){return{type:this.type,color:this.color}}});fabric.Image.filters.Tint.fromObject=function(a){return new fabric.Image.filters.Tint(a)};(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.util.object.clone,a=c.util.toFixed;if(c.Text){c.warn("fabric.Text is already defined");return}if(!c.Object){c.warn("fabric.Text requires fabric.Object");return}c.Text=c.util.createClass(c.Object,{fontSize:40,fontWeight:100,fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,strokeStyle:"",strokeWidth:1,backgroundColor:"",path:null,type:"text",useNative:true,initialize:function(g,f){this._initStateProperties();this.text=g;this.setOptions(f||{});this.theta=this.angle*Math.PI/180;this._initDimensions();this.setCoords()},_initDimensions:function(){var f=c.document.createElement("canvas");if(!f.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(f)}this._render(f.getContext("2d"))},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat();this.stateProperties.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","strokeStyle","strokeWidth","backgroundColor","useNative");c.util.removeFromArray(this.stateProperties,"width")},toString:function(){return"#'},_render:function(f){if(typeof Cufon==="undefined"||this.useNative===true){this._renderViaNative(f)}else{this._renderViaCufon(f)}},_renderViaCufon:function(f){var h=Cufon.textOptions||(Cufon.textOptions={});h.left=this.left;h.top=this.top;h.context=f;h.color=this.fill;var g=this._initDummyElementForCufon();this.transform(f);Cufon.replaceElement(g,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=h.width;this.height=h.height;this._totalLineHeight=h.totalLineHeight;this._fontAscent=h.fontAscent;this._boundaries=h.boundaries;this._shadowOffsets=h.shadowOffsets;this._shadows=h.shadows||[];g=null;this.setCoords()},_renderViaNative:function(f){this.transform(f);this._setTextStyles(f);var g=this.text.split(/\r?\n/);this.width=this._getTextWidth(f,g);this.height=this._getTextHeight(f,g);this._renderTextBackground(f,g);if(this.textAlign!=="left"){f.save();f.translate(this.textAlign==="center"?(this.width/2):this.width,0)}this._setTextShadow(f);this._renderTextFill(f,g);this.textShadow&&f.restore();this._renderTextStroke(f,g);if(this.textAlign!=="left"){f.restore()}this._renderTextDecoration(f,g);this._setBoundaries(f,g);this._totalLineHeight=0;this.setCoords()},_setBoundaries:function(h,k){this._boundaries=[];for(var j=0,g=k.length;jk){k=l}}return k},_setTextShadow:function(f){if(this.textShadow){var j=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/;var g=this.textShadow;var i=j.exec(this.textShadow);var h=g.replace(j,"");f.save();f.shadowColor=h;f.shadowOffsetX=parseInt(i[1],10);f.shadowOffsetY=parseInt(i[2],10);f.shadowBlur=parseInt(i[3],10);this._shadows=[{blur:f.shadowBlur,color:f.shadowColor,offX:f.shadowOffsetX,offY:f.shadowOffsetY}];this._shadowOffsets=[[parseInt(f.shadowOffsetX,10),parseInt(f.shadowOffsetY,10)]]}},_renderTextFill:function(g,j){this._boundaries=[];for(var h=0,f=j.length;h-1){f.call(this,this.fontSize)}if(this.textDecoration.indexOf("line-through")>-1){f.call(this,this.fontSize/2)}if(this.textDecoration.indexOf("overline")>-1){f.call(this,0)}},_getFontDeclaration:function(){return[this.fontStyle,this.fontWeight,this.fontSize+"px",(c.isLikelyNode?('"'+this.fontFamily+'"'):this.fontFamily)].join(" ")},_initDummyElementForCufon:function(){var g=c.document.createElement("pre"),f=c.document.createElement("div");f.appendChild(g);if(typeof G_vmlCanvasManager=="undefined"){g.innerHTML=this.text}else{g.innerText=this.text.replace(/\r?\n/gi,"\r")}g.style.fontSize=this.fontSize+"px";g.style.letterSpacing="normal";return g},render:function(f,g){f.save();this._render(f);if(!g&&this.active){this.drawBorders(f);this.hideCorners||this.drawCorners(f)}f.restore()},toObject:function(){return e(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,useNative:this.useNative})},toSVG:function(){var i=this.text.split(/\r?\n/),j=this.useNative?this.fontSize*this.lineHeight:(-this._fontAscent-((this._fontAscent/5)*this.lineHeight)),g=-(this.width/2),f=this.useNative?this.fontSize-1:(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=(this._fontAscent?((this._fontAscent/5)*this.lineHeight):0);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;if(!this._shadows||!this._boundaries){return o}for(k=0,p=this._shadows.length;k",c.util.string.escapeXml(n[l]),"");f=1}else{f++}}}return o},_getSVGTextAndBg:function(j,h,n){var g=[],k=[],l,m,o,f=1;for(l=0,o=n.length;l",c.util.string.escapeXml(n[l]),"");f=1}else{f++}if(!this.backgroundColor||!this._boundaries){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.ATTRIBUTE_NAMES=("x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration").split(" ");c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(g,f){if(!g){return null}var h=c.parseAttributes(g,c.Text.ATTRIBUTE_NAMES);var f=c.util.object.extend((f?c.util.object.clone(f):{}),h);var i=new c.Text(g.textContent,f);return i}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var DOMParser=new require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(oURL.port,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){fabric.loadSVGFromString(body,callback)})};fabric.loadSVGFromString=function(string,callback){var doc=new DOMParser().parseFromString(string);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)})};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object);callback(oImg)})};fabric.createCanvasForNode=function(width,height){var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var canvas=fabric.Canvas||fabric.StaticCanvas;var fabricCanvas=new canvas(canvasEl);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};if(fabric.Canvas){fabric.Canvas.prototype.createPNGStream}var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width){origSetWidth.call(this);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height){origSetHeight.call(this);this.nodeCanvas.height=height;return this};if(fabric.Canvas){fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight}})(); \ No newline at end of file +var Cufon=(function(){var k=function(){return k.replace.apply(null,arguments)};var u=k.DOM={ready:(function(){var z=false,B={loaded:1,complete:1};var y=[],A=function(){if(z){return}z=true;for(var C;C=y.shift();C()){}};if(fabric.document.addEventListener){fabric.document.addEventListener("DOMContentLoaded",A,false);fabric.window.addEventListener("pageshow",A,false)}if(!fabric.window.opera&&fabric.document.readyState){(function(){B[fabric.document.readyState]?A():setTimeout(arguments.callee,10)})()}if(fabric.document.readyState&&fabric.document.createStyleSheet){(function(){try{fabric.document.body.doScroll("left");A()}catch(C){setTimeout(arguments.callee,1)}})()}o(fabric.window,"load",A);return function(C){if(!arguments.length){A()}else{z?C():y.push(C)}}})()};var l=k.CSS={Size:function(z,y){this.value=parseFloat(z);this.unit=String(z).match(/[a-z%]*$/)[0]||"px";this.convert=function(A){return A/y*this.value};this.convertFrom=function(A){return A/this.value*y};this.toString=function(){return this.value+this.unit}},getStyle:function(y){return new a(y.style)},quotedList:i(function(B){var A=[],z=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,y;while(y=z.exec(B)){A.push(y[3]||y[1])}return A}),ready:(function(){var A=false;var z=[],B=function(){A=true;for(var D;D=z.shift();D()){}};var y=Object.prototype.propertyIsEnumerable?f("style"):{length:0};var C=f("link");u.ready(function(){var G=0,F;for(var E=0,D=C.length;F=C[E],E=y.length+G){B()}else{setTimeout(arguments.callee,10)}});return function(D){if(A){D()}else{z.push(D)}}})(),supports:function(A,z){var y=fabric.document.createElement("span").style;if(y[A]===undefined){return false}y[A]=z;return y[A]===z},textAlign:function(B,A,y,z){if(A.get("textAlign")=="right"){if(y>0){B=" "+B}}else{if(y400}if(F==500){F=400}for(var G in D){G=parseInt(G,10);if(!C||GA){A=G}H.push(G)}if(FA){F=A}H.sort(function(J,I){return(B?(J>F&&I>F)?JI:(JI:Jz){z=e}L.push(e);e=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}e+=D=Number(B.w||ab.w)+U}L.push(e);e=Math.max(z,e);var m=[];for(var aa=L.length;aa--;){m[aa]=e-L[aa]}if(D===null){return null}V+=(H.width-D);C+=H.minX;var v,p;if(n){v=J;p=J.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=E;p=fabric.document.createElement("canvas");v.appendChild(p);if(A.printable){var Y=fabric.document.createElement("span");Y.className="cufon-alt";Y.appendChild(fabric.document.createTextNode(E));v.appendChild(Y)}}var ah=v.style;var O=p.style||{};var k=o.convert(H.height-I+T);var af=Math.ceil(k);var S=af/k;p.width=Math.ceil(o.convert(e+V-C)*S);p.height=af;I+=H.minY;O.top=Math.round(o.convert(I-ab.ascent))+"px";O.left=Math.round(o.convert(C))+"px";var j=Math.ceil(o.convert(e*S));var t=j+"px";var s=o.convert(ab.height);var F=(A.lineHeight-1)*o.convert(-ab.ascent/5)*(M-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*M)+F;Cufon.textOptions.lines=M;Cufon.textOptions.totalLineHeight=F;if(a){ah.width=t;ah.height=s+"px"}else{ah.paddingLeft=t;ah.paddingBottom=(s-1)+"px"}var ad=Cufon.textOptions.context||p.getContext("2d"),K=af/H.height;Cufon.textOptions.fontAscent=ab.ascent*K;Cufon.textOptions.boundaries=null;for(var w=Cufon.textOptions.shadowOffsets,aa=R.length;aa--;){w[aa]=[R[aa][0]*K,R[aa][1]*K]}ad.save();ad.scale(K,K);ad.translate(-C-((1/K*p.width)/2)+(Cufon.fonts[ab.family].offsetLeft||0),-I-((Cufon.textOptions.height/K)/2)+(Cufon.fonts[ab.family].offsetTop||0));ad.lineWidth=ab.face["underline-thickness"];ad.save();function q(l,i){ad.strokeStyle=i;ad.beginPath();ad.moveTo(0,l);ad.lineTo(e,l);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var aj=0,an=0,y=[{left:0}];if(A.textAlign==="right"){ad.translate(m[an],0);y[0].left=m[an]*K}else{if(A.textAlign==="center"){ad.translate(m[an]/2,0);y[0].left=m[an]/2*K}}for(var al=0,ak=ag.length;al.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}');function c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;Sw?p:(o-n);s(t(currentTime,m,byValue,p));if(o>w||q()){x.onComplete&&x.onComplete();return}k(r)})()}var f=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(n,m){fabric.window.setTimeout(n,1000/60)};var k=function(){return f.apply(fabric.window,arguments)};function b(n,p,o){if(n){var m=new Image();m.onload=function(){p&&p.call(o,m);m=m.onload=null};m.src=n}else{p&&p.call(o,n)}}function i(o,s){function n(t){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(t))]}var q=[],p=0,m=o.filter(function(t){return n(t.type).async}).length;var r=this;o.forEach(function(v,u){if(!v.type){return}var t=n(v.type);if(t.async){t.fromObject(v,function(w){q[u]=w;if(++p===m){if(s){s(q)}}})}else{q[u]=t.fromObject(v)}});if(m===0&&s){s(q)}}function a(o,n,p){var m=o.length>1?new fabric.PathGroup(o,n):o[0];if(typeof p!=="undefined"){m.setSourcePath(p)}return m}fabric.util.removeFromArray=j;fabric.util.degreesToRadians=c;fabric.util.toFixed=e;fabric.util.getRandomInt=g;fabric.util.falseFunction=l;fabric.util.animate=d;fabric.util.requestAnimFrame=k;fabric.util.loadImage=b;fabric.util.enlivenObjects=i;fabric.util.groupSVGElements=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]/g,">")}fabric.util.string={camelize:b,capitalize:c,escapeXml:a}}());(function(){var c=Array.prototype.slice,a=Function.prototype.apply,b=function(){};if(!Function.prototype.bind){Function.prototype.bind=function(d){var g=this,e=c.call(arguments,1),f;if(e.length){f=function(){return a.call(g,this instanceof b?this:d,e.concat(c.call(arguments)))}}else{f=function(){return a.call(g,this instanceof b?this:d,arguments)}}b.prototype=this.prototype;f.prototype=new b;return f}}})();(function(){var f=Array.prototype.slice,e=function(){};var c=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();var b=function(g,j,h){for(var i in j){if(i in g.prototype&&typeof g.prototype[i]=="function"){g.prototype[i]=(function(k){return function(){var m=this.constructor.superclass;this.constructor.superclass=h;var l=j[k].apply(this,arguments);this.constructor.superclass=m;if(k!=="initialize"){return l}}})(i)}else{g.prototype[i]=j[i]}if(c){if(j.toString!==Object.prototype.toString){g.prototype.toString=j.toString}if(j.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=j.valueOf}}}};function a(){}function d(){var k=null,j=f.call(arguments,0);if(typeof j[0]==="function"){k=j.shift()}function g(){this.initialize.apply(this,arguments)}g.superclass=k;g.subclasses=[];if(k){a.prototype=k.prototype;g.prototype=new a;k.subclasses.push(g)}for(var h=0,l=j.length;h-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=d})();(function(){function d(e,f){return e+(/\?/.test(e)?"&":"?")+f}var c=(function(){var h=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest()}];for(var e=h.length;e--;){try{var g=h[e]();if(g){return h[e]}}catch(f){}}})();function a(){}function b(g,f){f||(f={});var j=f.method?f.method.toUpperCase():"GET",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=b})();(function(){function d(F,E,H,G){return H*(F/=G)*F+E}function l(F,E,H,G){return -H*(F/=G)*(F-2)+E}function r(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E}function B(F,E,H,G){return H*(F/=G)*F*F+E}function q(F,E,H,G){return H*((F=F/G-1)*F*F+1)+E}function u(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F+E}return H/2*((F-=2)*F*F+2)+E}function t(F,E,H,G){return H*(F/=G)*F*F*F+E}function g(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E}function k(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E}function y(F,E,H,G){return H*(F/=G)*F*F*F*F+E}function j(F,E,H,G){return H*((F=F/G-1)*F*F*F*F+1)+E}function n(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F*F+E}return H/2*((F-=2)*F*F*F*F+2)+E}function f(F,E,H,G){return -H*Math.cos(F/G*(Math.PI/2))+H+E}function o(F,E,H,G){return H*Math.sin(F/G*(Math.PI/2))+E}function v(F,E,H,G){return -H/2*(Math.cos(Math.PI*F/G)-1)+E}function D(F,E,H,G){return(F==0)?E:H*Math.pow(2,10*(F/G-1))+E}function c(F,E,H,G){return(F==G)?E+H:H*(-Math.pow(2,-10*F/G)+1)+E}function i(F,E,H,G){if(F==0){return E}if(F==G){return E+H}if((F/=G/2)<1){return H/2*Math.pow(2,10*(F-1))+E}return H/2*(-Math.pow(2,-10*--F)+2)+E}function h(F,E,H,G){return -H*(Math.sqrt(1-(F/=G)*F)-1)+E}function p(F,E,H,G){return H*Math.sqrt(1-(F=F/G-1)*F)+E}function x(F,E,H,G){if((F/=G/2)<1){return -H/2*(Math.sqrt(1-F*F)-1)+E}return H/2*(Math.sqrt(1-(F-=2)*F)+1)+E}function s(G,E,K,J){var H=1.70158;var I=0;var F=K;if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(F-1;w=w.split(/\s+/);var u=[];if(y){for(var v=0,t=w.length;v/i,""))}if(!x.documentElement){return}h.parseSVGDocument(x.documentElement,function(A,z){k.set(u,{objects:h.util.array.invoke(A,"toObject"),options:z});w(A,z)},t)}}function b(v){var u=v.objects,t=v.options;u=u.map(function(w){return h[f(w.type)].fromObject(w)});return({objects:u,options:t})}function n(u,x,t){u=u.trim();var v;if(typeof DOMParser!=="undefined"){var w=new DOMParser();if(w&&w.parseFromString){v=w.parseFromString(u,"text/xml")}}else{if(h.window.ActiveXObject){var v=new ActiveXObject("Microsoft.XMLDOM");v.async="false";v.loadXML(u.replace(//i,""))}}h.parseSVGDocument(v.documentElement,function(z,y){x(z,y)},t)}function m(w){var u="";for(var v=0,t=w.length;v",'",""].join("")}return u}p(h,{parseAttributes:e,parseElements:g,parseStyleAttribute:i,parsePointsAttribute:s,getCSSRules:d,loadSVGFromURL:c,loadSVGFromString:n,createSVGFontFacesMarkup:m})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);if(k[k.length-1]===""){k.pop()}for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient=fabric.util.createClass({initialize:function(d){d||(d={});this.x1=d.x1||0;this.y1=d.y1||0;this.x2=d.x2||0;this.y2=d.y2||0;this.colorStops=d.colorStops},toObject:function(){return{x1:this.x1,x2:this.x2,y1:this.y1,y2:this.y2,colorStops:this.colorStops}},toLiveGradient:function(e){var g=e.createLinearGradient(this.x1,this.y1,this.x2||e.canvas.width,this.y2);for(var d in this.colorStops){var f=this.colorStops[d];g.addColorStop(parseFloat(d),f)}return g}});fabric.util.object.extend(fabric.Gradient,{fromElement:function(h,e){var l=h.getElementsByTagName("stop"),h,k,f={},d,j={x1:h.getAttribute("x1")||0,y1:h.getAttribute("y1")||0,x2:h.getAttribute("x2")||"100%",y2:h.getAttribute("y2")||0};for(var g=l.length;g--;){h=l[g];k=h.getAttribute("offset");k=parseFloat(k)/(/%$/.test(k)?100:1);f[k]=c(h)||h.getAttribute("stop-color")}a(e,j);return new fabric.Gradient({x1:j.x1,y1:j.y1,x2:j.x2,y2:j.y2,colorStops:f})},forObject:function(e,d){d||(d={});a(e,d);return new fabric.Gradient(d)}});function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.id]=g}for(var e=d.length;e--;){g=d[e];h[g.id]=g}return h}fabric.getGradientDefs=b})();(function(b){var c=b.fabric||(b.fabric={});if(c.Point){c.warn("fabric.Point is already defined");return}c.Point=a;function a(d,e){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},add:function(d){return new a(this.x+d.x,this.y+d.y)},addEquals:function(d){this.x+=d.x;this.y+=d.y;return this},scalarAdd:function(d){return new a(this.x+d,this.y+d)},scalarAddEquals:function(d){this.x+=d;this.y+=d;return this},subtract:function(d){return new a(this.x-d.x,this.y-d.y)},subtractEquals:function(d){this.x-=d.x;this.y-=d.y;return this},scalarSubtract:function(d){return new a(this.x-d,this.y-d)},scalarSubtractEquals:function(d){this.x-=d;this.y-=d;return this},multiply:function(d){return new a(this.x*d,this.y*d)},multiplyEquals:function(d){this.x*=d;this.y*=d;return this},divide:function(d){return new a(this.x/d,this.y/d)},divideEquals:function(d){this.x/=d;this.y/=d;return this},eq:function(d){return(this.x==d.x&&this.y==d.y)},lt:function(d){return(this.xd.x&&this.y>d.y)},gte:function(d){return(this.x>=d.x&&this.y>=d.y)},lerp:function(e,d){return new a(this.x+(e.x-this.x)*d,this.y+(e.y-this.y)*d)},distanceFrom:function(f){var e=this.x-f.x,d=this.y-f.y;return Math.sqrt(e*e+d*d)},min:function(d){return new a(Math.min(this.x,d.x),Math.min(this.y,d.y))},max:function(d){return new a(Math.max(this.x,d.x),Math.max(this.y,d.y))},toString:function(){return this.x+","+this.y},setXY:function(d,e){this.x=d;this.y=e},setFromPoint:function(d){this.x=d.x;this.y=d.y},swap:function(e){var d=this.x,f=this.y;this.x=e.x;this.y=e.y;e.x=d;e.y=f}}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Intersection){b.warn("fabric.Intersection is already defined");return}function c(d){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},appendPoint:function(d){this.points.push(d)},appendPoints:function(d){this.points=this.points.concat(d)}};b.Intersection.intersectLineLine=function(h,f,l,k){var m,i=(k.x-l.x)*(h.y-l.y)-(k.y-l.y)*(h.x-l.x),j=(f.x-h.x)*(h.y-l.y)-(f.y-h.y)*(h.x-l.x),g=(k.y-l.y)*(f.x-h.x)-(k.x-l.x)*(f.y-h.y);if(g!=0){var e=i/g,d=j/g;if(0<=e&&e<=1&&0<=d&&d<=1){m=new c("Intersection");m.points.push(new b.Point(h.x+e*(f.x-h.x),h.y+e*(f.y-h.y)))}else{m=new c("No Intersection")}}else{if(i==0||j==0){m=new c("Coincident")}else{m=new c("Parallel")}}return m};b.Intersection.intersectLinePolygon=function(e,d,l){var m=new c("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),l=j.length;for(var k=0;k0){f.status="Intersection"}return f};b.Intersection.intersectPolygonRectangle=function(n,e,d){var g=e.min(d),m=e.max(d),f=new b.Point(m.x,g.y),l=new b.Point(g.x,m.y),k=c.intersectLinePolygon(g,f,n),j=c.intersectLinePolygon(f,m,n),i=c.intersectLinePolygon(m,l,n),h=c.intersectLinePolygon(l,g,n),o=new c("No Intersection");o.appendPoints(k.points);o.appendPoints(j.points);o.appendPoints(i.points);o.appendPoints(h.points);if(o.points.length>0){o.status="Intersection"}return o}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];if(this.backgroundImage){h.push('')}for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.fire("before:selection:cleared",{target:g});this.discardActiveObject();this.fire("selection:cleared")}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.containerClass});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});r.fire("selected",{e:s});return this},getActiveObject:function(){return this._activeObject},discardActiveObject:function(){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=null;return this},setActiveGroup:function(r){this._activeGroup=r;r&&r.setActive(true);return this},getActiveGroup:function(){return this._activeGroup},discardActiveGroup:function(){var r=this.getActiveGroup();if(r){r.destroy()}return this.setActiveGroup(null)},deactivateAll:function(){var s=this.getObjects(),t=0,r=s.length;for(;t1)?q.apply(this,o.call(arguments,1)):q.call(this)},initialize:function(i){if(i){this.setOptions(i);this._initGradient(i)}},_initGradient:function(i){if(i.fill&&typeof i.fill=="object"&&!(i.fill instanceof d.Gradient)){this.set("fill",new d.Gradient(i.fill))}},setOptions:function(q){var r=this.stateProperties.length,s;while(r--){s=this.stateProperties[r];if(s in q){this.set(s,q[s])}}},transform:function(i){i.globalAlpha=this.opacity;i.translate(this.left,this.top);i.rotate(this.theta);i.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var i={type:this.type,left:c(this.left,this.NUM_FRACTION_DIGITS),top:c(this.top,this.NUM_FRACTION_DIGITS),width:c(this.width,this.NUM_FRACTION_DIGITS),height:c(this.height,this.NUM_FRACTION_DIGITS),fill:(this.fill&&this.fill.toObject)?this.fill.toObject():this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,strokeDashArray:this.strokeDashArray,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","stroke-dasharray: ",(this.strokeDashArray?this.strokeDashArray.join(" "):"; "),"fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";"].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",c(this.left,2)," ",c(this.top,2),")",i!==0?(" rotate("+c(i,2)+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,2)+" "+c(this.scaleY,2)+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(i,q){if(typeof i==="object"){for(var r in i){this._set(r,i[r])}}else{if(typeof q==="function"){this._set(i,q(this.get(i)))}else{this._set(i,q)}}return this},_set:function(i,q){var r=(i==="scaleX"||i==="scaleY")&&qi){var C=x-i}if(E){z+=(D*E)-(C*E||0)}else{v+=(D*y)-(C*y||0)}B[1&s?"moveTo":"lineTo"](z,v);if(s>=u){s=0}}}q(1,0);q(0,1);q(-1,0);q(0,-1);B.stroke();B.closePath();B.restore()},drawCorners:function(B){if(!this.hasControls){return}var D=this.cornersize,y=D/2,x=this.padding,r=-(this.width/2),w=-(this.height/2),C,A,q=D/this.scaleX,i=D/this.scaleY,s=(x+y)/this.scaleY,t=(x+y)/this.scaleX,v=(x+y-D)/this.scaleX,u=(x+y-D)/this.scaleY,z=this.height;B.save();B.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1;B.fillStyle=this.cornerColor;C=r-t;A=w-s;B.fillRect(C,A,q,i);C=r+this.width-t;A=w-s;B.fillRect(C,A,q,i);C=r-t;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width+v;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width/2-t;A=w-s;B.fillRect(C,A,q,i);C=r+this.width/2-t;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width+v;A=w+z/2-s;B.fillRect(C,A,q,i);C=r-t;A=w+z/2-s;B.fillRect(C,A,q,i);if(this.hasRotatingPoint){C=r+this.width/2-t;A=this.flipY?(w+z+(this.rotatingPointOffset/this.scaleY)-i/2):(w-(this.rotatingPointOffset/this.scaleY)-i/2);B.fillRect(C,A,q,i)}B.restore();return this},clone:function(i){if(this.constructor.fromObject){return this.constructor.fromObject(this.toObject(),i)}return new d.Object(this.toObject())},cloneAsImage:function(s){if(d.Image){var q=new Image();q.onload=function(){if(s){s(new d.Image(q),r)}q=q.onload=null};var r={angle:this.get("angle"),flipX:this.get("flipX"),flipY:this.get("flipY")};this.set("angle",0).set("flipX",false).set("flipY",false);this.toDataURL(function(i){q.src=i})}return this},toDataURL:function(s){var q=d.document.createElement("canvas");if(!q.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(q)}this.setCoords();q.width=this.getBoundingRectWidth();q.height=this.getBoundingRectHeight();d.util.wrapElement(q,"div");var i=new d.Canvas(q);i.backgroundColor="transparent";i.renderAll();if(this.constructor.async){this.clone(r)}else{r(this.clone())}function r(u){u.left=q.width/2;u.top=q.height/2;u.setActive(false);i.add(u);var t=i.toDataURL("png");i.dispose();i=u=null;s&&s(t)}},hasStateChanged:function(){return this.stateProperties.some(function(i){return this[i]!==this.originalState[i]},this)},saveState:function(){this.stateProperties.forEach(function(i){this.originalState[i]=this.get(i)},this);return this},setupState:function(){this.originalState={};this.saveState()},intersectsWithRect:function(r,t){var w=this.oCoords,i=new d.Point(w.tl.x,w.tl.y),s=new d.Point(w.tr.x,w.tr.y),v=new d.Point(w.bl.x,w.bl.y),q=new d.Point(w.br.x,w.br.y);var u=d.Intersection.intersectPolygonRectangle([i,s,q,v],r,t);return(u.status==="Intersection")},intersectsWithObject:function(i){function q(u){return{tl:new d.Point(u.tl.x,u.tl.y),tr:new d.Point(u.tr.x,u.tr.y),bl:new d.Point(u.bl.x,u.bl.y),br:new d.Point(u.br.x,u.br.y)}}var r=q(this.oCoords),t=q(i.oCoords);var s=d.Intersection.intersectPolygonPolygon([r.tl,r.tr,r.br,r.bl],[t.tl,t.tr,t.br,t.bl]);return(s.status==="Intersection")},isContainedWithinObject:function(i){return this.isContainedWithinRect(i.oCoords.tl,i.oCoords.br)},isContainedWithinRect:function(r,t){var v=this.oCoords,i=new d.Point(v.tl.x,v.tl.y),s=new d.Point(v.tr.x,v.tr.y),u=new d.Point(v.bl.x,v.bl.y),q=new d.Point(v.br.x,v.br.y);return i.x>r.x&&s.xr.y&&u.y=v)&&(s.d.y>=v)){continue}if((s.o.x==s.d.x)&&(s.o.x>=w)){x=s.o.x;u=v}else{z=0;y=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=v-z*w;q=s.o.y-y*s.o.x;x=-(r-q)/(z-y);u=r+z*x}if(x>=w){t+=1}if(t==2){break}}return t},_getImageLines:function(r,q){return{topline:{o:r.tl,d:r.tr},rightline:{o:r.tr,d:r.br},bottomline:{o:r.br,d:r.bl},leftline:{o:r.bl,d:r.tl}}},_setCornerCoords:function(){var u=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q),v=Math.sin(this.theta),t=Math.cos(this.theta);u.tl.corner={tl:{x:u.tl.x-r,y:u.tl.y-i},tr:{x:u.tl.x+i,y:u.tl.y-r},bl:{x:u.tl.x-i,y:u.tl.y+r},br:{x:u.tl.x+r,y:u.tl.y+i}};u.tr.corner={tl:{x:u.tr.x-r,y:u.tr.y-i},tr:{x:u.tr.x+i,y:u.tr.y-r},br:{x:u.tr.x+r,y:u.tr.y+i},bl:{x:u.tr.x-i,y:u.tr.y+r}};u.bl.corner={tl:{x:u.bl.x-r,y:u.bl.y-i},bl:{x:u.bl.x-i,y:u.bl.y+r},br:{x:u.bl.x+r,y:u.bl.y+i},tr:{x:u.bl.x+i,y:u.bl.y-r}};u.br.corner={tr:{x:u.br.x+i,y:u.br.y-r},bl:{x:u.br.x-i,y:u.br.y+r},br:{x:u.br.x+r,y:u.br.y+i},tl:{x:u.br.x-r,y:u.br.y-i}};u.ml.corner={tl:{x:u.ml.x-r,y:u.ml.y-i},tr:{x:u.ml.x+i,y:u.ml.y-r},bl:{x:u.ml.x-i,y:u.ml.y+r},br:{x:u.ml.x+r,y:u.ml.y+i}};u.mt.corner={tl:{x:u.mt.x-r,y:u.mt.y-i},tr:{x:u.mt.x+i,y:u.mt.y-r},bl:{x:u.mt.x-i,y:u.mt.y+r},br:{x:u.mt.x+r,y:u.mt.y+i}};u.mr.corner={tl:{x:u.mr.x-r,y:u.mr.y-i},tr:{x:u.mr.x+i,y:u.mr.y-r},bl:{x:u.mr.x-i,y:u.mr.y+r},br:{x:u.mr.x+r,y:u.mr.y+i}};u.mb.corner={tl:{x:u.mb.x-r,y:u.mb.y-i},tr:{x:u.mb.x+i,y:u.mb.y-r},bl:{x:u.mb.x-i,y:u.mb.y+r},br:{x:u.mb.x+r,y:u.mb.y+i}};u.mtr.corner={tl:{x:u.mtr.x-r+(v*this.rotatingPointOffset),y:u.mtr.y-i-(t*this.rotatingPointOffset)},tr:{x:u.mtr.x+i+(v*this.rotatingPointOffset),y:u.mtr.y-r-(t*this.rotatingPointOffset)},bl:{x:u.mtr.x-i+(v*this.rotatingPointOffset),y:u.mtr.y+r-(t*this.rotatingPointOffset)},br:{x:u.mtr.x+r+(v*this.rotatingPointOffset),y:u.mtr.y+i-(t*this.rotatingPointOffset)}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i){this.set("fill",d.Gradient.forObject(this,i))},animate:function(q,s,i){var r=this;i||(i={});if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test((s+"").charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,byValue:i.by,easing:i.easing,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})},centerH:function(){this.canvas.centerObjectH(this);return this},centerV:function(){this.canvas.centerObjectV(this);return this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){this.canvas.sendToBack(this);return this},bringToFront:function(){this.canvas.bringToFront(this);return this},sendBackwards:function(){this.canvas.sendBackwards(this);return this},bringForward:function(){this.canvas.bringForward(this);return this}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}l(d.Object.prototype,d.Observable)})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.Object.prototype.set,a={x1:1,x2:1,y1:1,y2:1};if(c.Line){c.warn("fabric.Line is already defined");return}c.Line=c.util.createClass(c.Object,{type:"line",initialize:function(g,f){if(!g){g=[0,0,0,0]}this.callSuper("initialize",f);this.set("x1",g[0]);this.set("y1",g[1]);this.set("x2",g[2]);this.set("y2",g[3]);this._setWidthHeight(f)},_setWidthHeight:function(f){f||(f={});this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left","left" in f?f.left:(this.x1+this.width/2));this.set("top","top" in f?f.top:(this.y1+this.height/2))},_set:function(f,g){this[f]=g;if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(this.width===1?0:(-this.width/2),this.height===1?0:(-this.height/2));f.lineTo(this.width===1?0:(this.width/2),this.height===1?0:(this.height/2));f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2;this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(f){this.radius=f;this.set("width",f*2).set("height",f*2)},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",initialize:function(e){e=e||{};this.callSuper("initialize",e);this.set("rx",e.rx||0);this.set("ry",e.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",rx:0,ry:0,initialize:function(d){this._initStateProperties();this.callSuper("initialize",d);this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){if(this.rx&&!this.ry){this.ry=this.rx}else{if(this.ry&&!this.rx){this.rx=this.ry}}},_render:function(f){var j=this.rx||0,i=this.ry||0,d=-this.width/2,k=-this.height/2,e=this.width,g=this.height;f.beginPath();f.globalAlpha*=this.opacity;if(this.group){f.translate(this.x||0,this.y||0)}f.moveTo(d+j,k);f.lineTo(d+e-j,k);f.quadraticCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.quadraticCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.quadraticCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.quadraticCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.strokeDashArray){this._renderDashedStroke(f)}else{if(this.stroke){f.stroke()}}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toObject:function(){return c.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();f.moveTo(this.points[0].x,this.points[0].y);for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();l.moveTo(this.points[0].x,this.points[0].y);for(var m=0,j=this.points.length;m1){E=Math.sqrt(E);O*=E;N*=E}var R=aa/O;var Q=W/O;var D=(-W)/N;var C=(aa)/N;var H=R*M+Q*L;var q=D*M+C*L;var F=R*T+Q*S;var ab=D*T+C*S;var Z=(F-H)*(F-H)+(ab-q)*(ab-q);var U=1/Z-0.25;if(U<0){U=0}var w=Math.sqrt(U);if(P==J){w=-w}var V=0.5*(H+F)-w*(ab-q);var K=0.5*(q+ab)+w*(F-H);var v=Math.atan2(q-K,H-V);var u=Math.atan2(ab-K,F-V);var Y=u-v;if(Y<0&&P==1){Y+=2*Math.PI}else{if(Y>0&&P==0){Y-=2*Math.PI}}var B=Math.ceil(Math.abs(Y/(Math.PI*0.5+0.001)));var I=[];for(var X=0;X"},toObject:function(){var q=g(this.callSuper("toObject"),{path:this.path});if(this.sourcePath){q.sourcePath=this.sourcePath}if(this.transformMatrix){q.transformMatrix=this.transformMatrix}return q},toDatalessObject:function(){var q=this.toObject();if(this.sourcePath){q.path=this.sourcePath}delete q.sourcePath;return q},toSVG:function(){var t=[];for(var r=0,q=this.path.length;r',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var C=[],z,v,y;for(var u=0,t,q,w=this.path.length;uB){for(var r=1,x=q.length;r"];for(var l=0,j=m.length;l");return k.join("")},toString:function(){return"#"},isSameColor:function(){var j=this.getObjects()[0].get("fill");return this.getObjects().every(function(k){return k.get("fill")===j})},complexity:function(){return this.paths.reduce(function(j,k){return j+((k&&k.complexity)?k.complexity():0)},0)},toGrayscale:function(){var j=this.paths.length;while(j--){this.paths[j].toGrayscale()}return this},getObjects:function(){return this.paths}});function c(m){for(var l=0,j=m.length;l"},getObjects:function(){return this.objects},addWithUpdate:function(h){this._restoreObjectsState();this.objects.push(h);this._calcBounds();this._updateObjectsCoords();return this},removeWithUpdate:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},add:function(h){this.objects.push(h);return this},remove:function(h){f(this.objects,h);return this},size:function(){return this.getObjects().length},_set:function(j,k){if(j==="fill"||j==="opacity"){var h=this.objects.length;this[j]=k;while(h--){this.objects[h].set(j,k)}}else{this[j]=k}},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j,o){j.save();this.transform(j);var n=Math.max(this.scaleX,this.scaleY);for(var l=0,h=this.objects.length,k;k=this.objects[l];l++){var m=k.borderScaleFactor;k.borderScaleFactor=n;k.render(j);k.borderScaleFactor=m}if(!o&&this.active){this.drawBorders(j);this.hideCorners||this.drawCorners(j)}j.restore();this.setCoords()},item:function(h){return this.getObjects()[h]},complexity:function(){return this.getObjects().reduce(function(i,h){i+=(typeof h.complexity=="function")?h.complexity():0;return i},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(j){var l=this.get("left"),m=this.get("top"),h=this.getAngle()*(Math.PI/180),k=j.get("originalLeft"),n=j.get("originalTop"),i=Math.cos(h)*j.get("top")+Math.sin(h)*j.get("left"),o=-Math.sin(h)*j.get("top")+Math.cos(h)*j.get("left");j.setAngle(j.getAngle()+this.getAngle());j.set("left",l+o*this.get("scaleX"));j.set("top",m+i*this.get("scaleY"));j.set("scaleX",j.get("scaleX")*this.get("scaleX"));j.set("scaleY",j.get("scaleY")*this.get("scaleY"));j.setCoords();j.hideCorners=false;j.setActive(false);j.setCoords();return this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){this._originalLeft=this.get("left");this._originalTop=this.get("top");return this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){this.forEachObject(function(h){h.setCoords()});return this},activateAllObjects:function(){this.forEachObject(function(h){h.setActive()});return this},forEachObject:e.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var j=this.getObjects(),i=j[0]?j[0].get("opacity"):1;var h=j.every(function(k){return k.get("opacity")===i});if(h){this.opacity=i}},_calcBounds:function(){var s=[],q=[],p,n,k,h,m,l,u,r=0,t=this.objects.length;for(;ri.x&&j-hi.y},toGrayscale:function(){var h=this.objects.length;while(h--){this.objects[h].toGrayscale()}},toSVG:function(){var k=[];for(var j=0,h=this.objects.length;j'+k.join("")+"")}});e.Group.fromObject=function(h,i){e.util.enlivenObjects(h.objects,function(j){delete h.objects;i&&i(new e.Group(j,h))})};e.Group.async=true})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:false,bordervisibility:false,cornervisibility:false,type:"image",initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);this.filters=[];if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;if(!e.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(e)}e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0,g.width,g.height);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h._element=f;i&&i();f.onload=e=g=null};f.width=g.width;f.height=g.height;if(c){var d=e.toDataURL("image/png").replace(/data:image\/png;base64,/,"");f.src=new Buffer(d,"base64");h._element=f;i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(c){c.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){c||(c={});this.setOptions(c);this._setBorder();this._setWidthHeight(c)},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return d&&fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(c){var d=2*this.currentBorder;this.width="width" in c?c.width:((this.getElement().width||0)+d);this.height="height" in c?c.height:((this.getElement().height||0)+d)},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc;fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var a=this.get("angle");if(a>-225&&a<=-135){return -180}else{if(a>-135&&a<=-45){return -90}else{if(a>-45&&a<=45){return 0}else{if(a>45&&a<=135){return 90}else{if(a>135&&a<=225){return 180}else{if(a>225&&a<=315){return 270}else{if(a>315){return 360}}}}}}}return 0},straighten:function(){var a=this._getAngleValueForStraighten();this.setAngle(a);return this},fxStraighten:function(b){b=b||{};var c=function(){},d=b.onComplete||c,a=b.onChange||c,e=this;fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(f){e.setAngle(f);a()},onComplete:function(){e.setCoords();d()},onStart:function(){e.setActive(false)}});return this}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(a){a.straighten();this.renderAll();return this},fxStraightenObject:function(a){a.fxStraighten({onChange:this.renderAll.bind(this)});return this}});fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)0){l[m]=o;l[m+1]=e;l[m+2]=k}}f.putImageData(c,0,0)},toJSON:function(){return{type:this.type,color:this.color}}});fabric.Image.filters.Tint.fromObject=function(a){return new fabric.Image.filters.Tint(a)};(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.util.object.clone,a=c.util.toFixed;if(c.Text){c.warn("fabric.Text is already defined");return}if(!c.Object){c.warn("fabric.Text requires fabric.Object");return}c.Text=c.util.createClass(c.Object,{fontSize:40,fontWeight:100,fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,strokeStyle:"",strokeWidth:1,backgroundColor:"",path:null,type:"text",useNative:true,initialize:function(g,f){this._initStateProperties();this.text=g;this.setOptions(f||{});this.theta=this.angle*Math.PI/180;this._initDimensions();this.setCoords()},_initDimensions:function(){var f=c.document.createElement("canvas");if(!f.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(f)}this._render(f.getContext("2d"))},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat();this.stateProperties.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","strokeStyle","strokeWidth","backgroundColor","useNative");c.util.removeFromArray(this.stateProperties,"width")},toString:function(){return"#'},_render:function(f){if(typeof Cufon==="undefined"||this.useNative===true){this._renderViaNative(f)}else{this._renderViaCufon(f)}},_renderViaCufon:function(f){var h=Cufon.textOptions||(Cufon.textOptions={});h.left=this.left;h.top=this.top;h.context=f;h.color=this.fill;var g=this._initDummyElementForCufon();this.transform(f);Cufon.replaceElement(g,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=h.width;this.height=h.height;this._totalLineHeight=h.totalLineHeight;this._fontAscent=h.fontAscent;this._boundaries=h.boundaries;this._shadowOffsets=h.shadowOffsets;this._shadows=h.shadows||[];g=null;this.setCoords()},_renderViaNative:function(f){this.transform(f);this._setTextStyles(f);var g=this.text.split(/\r?\n/);this.width=this._getTextWidth(f,g);this.height=this._getTextHeight(f,g);this._renderTextBackground(f,g);if(this.textAlign!=="left"){f.save();f.translate(this.textAlign==="center"?(this.width/2):this.width,0)}this._setTextShadow(f);this._renderTextFill(f,g);this.textShadow&&f.restore();this._renderTextStroke(f,g);if(this.textAlign!=="left"){f.restore()}this._renderTextDecoration(f,g);this._setBoundaries(f,g);this._totalLineHeight=0;this.setCoords()},_setBoundaries:function(h,k){this._boundaries=[];for(var j=0,g=k.length;jk){k=l}}return k},_setTextShadow:function(f){if(this.textShadow){var j=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/;var g=this.textShadow;var i=j.exec(this.textShadow);var h=g.replace(j,"");f.save();f.shadowColor=h;f.shadowOffsetX=parseInt(i[1],10);f.shadowOffsetY=parseInt(i[2],10);f.shadowBlur=parseInt(i[3],10);this._shadows=[{blur:f.shadowBlur,color:f.shadowColor,offX:f.shadowOffsetX,offY:f.shadowOffsetY}];this._shadowOffsets=[[parseInt(f.shadowOffsetX,10),parseInt(f.shadowOffsetY,10)]]}},_renderTextFill:function(g,j){this._boundaries=[];for(var h=0,f=j.length;h-1){f.call(this,this.fontSize)}if(this.textDecoration.indexOf("line-through")>-1){f.call(this,this.fontSize/2)}if(this.textDecoration.indexOf("overline")>-1){f.call(this,0)}},_getFontDeclaration:function(){return[this.fontStyle,this.fontWeight,this.fontSize+"px",(c.isLikelyNode?('"'+this.fontFamily+'"'):this.fontFamily)].join(" ")},_initDummyElementForCufon:function(){var g=c.document.createElement("pre"),f=c.document.createElement("div");f.appendChild(g);if(typeof G_vmlCanvasManager=="undefined"){g.innerHTML=this.text}else{g.innerText=this.text.replace(/\r?\n/gi,"\r")}g.style.fontSize=this.fontSize+"px";g.style.letterSpacing="normal";return g},render:function(f,g){f.save();this._render(f);if(!g&&this.active){this.drawBorders(f);this.hideCorners||this.drawCorners(f)}f.restore()},toObject:function(){return e(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,useNative:this.useNative})},toSVG:function(){var i=this.text.split(/\r?\n/),j=this.useNative?this.fontSize*this.lineHeight:(-this._fontAscent-((this._fontAscent/5)*this.lineHeight)),g=-(this.width/2),f=this.useNative?this.fontSize-1:(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=(this._fontAscent?((this._fontAscent/5)*this.lineHeight):0);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;if(!this._shadows||!this._boundaries){return o}for(k=0,p=this._shadows.length;k",c.util.string.escapeXml(n[l]),"");f=1}else{f++}}}return o},_getSVGTextAndBg:function(j,h,n){var g=[],k=[],l,m,o,f=1;for(l=0,o=n.length;l",c.util.string.escapeXml(n[l]),"");f=1}else{f++}if(!this.backgroundColor||!this._boundaries){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.ATTRIBUTE_NAMES=("x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration").split(" ");c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(g,f){if(!g){return null}var h=c.parseAttributes(g,c.Text.ATTRIBUTE_NAMES);var f=c.util.object.extend((f?c.util.object.clone(f):{}),h);var i=new c.Text(g.textContent,f);return i}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var DOMParser=new require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(oURL.port,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){fabric.loadSVGFromString(body,callback)})};fabric.loadSVGFromString=function(string,callback){var doc=new DOMParser().parseFromString(string);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)})};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object);callback(oImg)})};fabric.createCanvasForNode=function(width,height){var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var canvas=fabric.Canvas||fabric.StaticCanvas;var fabricCanvas=new canvas(canvasEl);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};if(fabric.Canvas){fabric.Canvas.prototype.createPNGStream}var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width){origSetWidth.call(this);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height){origSetHeight.call(this);this.nodeCanvas.height=height;return this};if(fabric.Canvas){fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight}})(); \ No newline at end of file diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index d359d1a1260316381ddc418516982b444fb7b021..2952e3b580694a309cd0e89e802cb1eeda3aa07c 100644 GIT binary patch delta 18976 zcmV(!K;^%($O5;>0tX+92nf3@HjxLW0W-0#6ph*aLU<+D zykxhi>__bopzg?ltnBwIH`Q=iyNM2uBJ1VJbu~4OqD6S?K&2i?Terq|j%;%v!kgMEs%FeZOCd%Yw&a+a z0-dQ+O{R89t$-|$jF;u=SE*%Pma9A4j$o=4l4Z;?PvDa$1@iCSUic)vzqbXuYrKCj zc!a3TVY~f)S{6kb?N)f1HM1aRXRC9Qt7I{3wLn$qRPWjxNlnaSC(4AnCh1po!$m;oZyIO^9bL-~Aj!*}Sjz5YN+j}lSGkzmpM)&u(`L_}}*Ia+USbh#} zRq8bujH$|l=`YzAbo|++wx_} zYb9T}ezh&QS= zD#fOi72Hp5wbMPzd@?79IcK0^8p?g^xkqLX4NNhjUmQ?|a+1fe#-$lYhBzH3(|(aZ zH7WKLd(SHZHMFqkAkX{FE3h!lO@!{PW0H-jFE|2iqp_nw)hm)QgFq=LQ9RH*_#d z{sOdYTRnG&$_}EyqTZDF{lh%&dhrZoAdBhFce>ePx>^nbr9*Xwp7Ix4im=(p7FkK@ zoU*Omf25BZdBzSI-Wz{@;4#j^0NdPR5BSz|kdoskSmfL0*|Vrj5t&cRU(M%XU>b7z z&YdE%y1A3QfvY~vNPTJ_1_U89JiluXxDU+tm7c=+dPuwEpF1<8x$vC~7y2?x-8Lu} zCw6ZyKexrRQ05#lSFJY(xpEKd;#1(fkt^JU?kiO9peOqmXw84N8}b`6Iz{uwaS1FH zaCdgRr}pwWFs7)5DmEA?)#&efB<((tEHedrE*5k!Ty>V<$!jhWAz%au-l>Q1`_+u1Xy!_O~0`0?_LC$*TMO}ep;%G|E zAIrv9Ae!6nG#IgX4A-Z{K6JXG z2O>b+yT8BN%2+&h7X^k@!t(;(j4lWF_kGdf6tXDBZ;o8!Iv1WNGrY9ABlC0ej?(HP zUP?V-Bwz@ftT5K`*(3U^w8M{^Fxwi8P%S&Js=Kxh5~F_)IAp(rEV>zky_vd>P8F5; zK81HD?w9|&iR1X{<@1JO<(Ewxsb2r=S$pTXqxj#RF6raLp0dWy`FW33wT02(U_vjc4*U1BW*oj&l z(j9a$OgMjtsa@Hx%v`237b#!%(}(BzDDGM*QW_e}r!d!Z*LhSH>gu7#z_J%Z*@%Xr z8Pr?MQJ7GK`?~TQjNi&6z(HdeQMKBKL3h|?GcJY+%q9B35Oko|k|Dr|ujqFL00A5= zk<$$zf^?@~Ed1vxre+e)>v$299n09kxf- zujM{Kety(c4Q1qS8Kf?iW*MhYo)h6(-);eg-TFX`akl>)P8*w-byknsXA?D++(; zlY=X3#_?d6E2Z4mK!V-d@jbDBJc3z1@qFr<^J%EgC+JOYZ?8waME{97KfN8%)jo6<^MMn_tP5CX{JwS~uaYwFx-hV^ zO6i?xzg|)WO$jwZ#jN9)C#u7k%jbVVGUVt6+DG|fP8M`PRLD(=JrE`gYKPd<3H`wb zzddYKwQJSVvTNZkJl3~L$BqGGRDY0e2Yay;e{IGE>p+oD_hFBArQ2?4OhdoR9qe_B z_D&HfxwLb*RU5qtak_Mfe~EL*vQ4zpIV9~Q)iCa*T!`X+S%_jWjr&E;P-cH#GOe-b zsZ<$gR9vWp9J?VdRhHvPMW*!!qjWF;asFMWpLFJ#Si}@j&pIV3_#!S>zpi)`NnBNe zs!U!XP)waWEZb5J@OK1>d;9YbpWeJXIYk-d)2r{k`R>E}){*$(ySJa-pPqdG`qTH{ z{qWs~R-@kJaB@GTcrq^&C{BN3TLmTF3L&fXvRGj|4F2=6G6Zz{jsE>uAyb12omCYn zt5kaY>*8^nC6Mfyjwwi>?W9A6~5`@R-k zz@n@xMj0JM)xNBMu7&5|2pp~Lpk zNFl|HvDG{hmz{neO-CD|oAZCtY#fQ^S5F0cKWWte`c)Lj!sS2+gR`I5%2e9G{cRz=w&p$AnVfq(Bv< ze=K>Srjl}1ktv0a*~XtH0tRqr62#_8`*l@aWO@RN<`z*|LiDHS z_pg9DGr^LO{2YIx43LSL1ht}&6aq_%C!wXQx^i$LIdaI1dFrS3P!=8M)555w6CG;A zD`pZDWs*pOza0W)rL#XnpI%u2I#E&cp1rI)1}SO24gPTlIMe%{@o!7gS+r{w=`1m5 zB@YyXN%}OAwaU+3eYU9USlh$kw@YYgl}&;}bY-6W&eMNi1>mG^AM{x+O&wU@=wu>= zlY&q3c)#xksrZukdPKL}1+lNr0*OwQK!g@%99zFz?ASRHK^vfCfg0~2uNYz6v7gWi z8h+_MU>CxDQ!1h2Y#8&<#k+PjE0s8$M#1nXi|aT+;aNN zb6D_zO%Z=B53yB#c$vzb)h-qKi8#ZCOEs<%g6gp0XDEr}JUZL#GGJ^}4;B>t(F z6SVmO*A<*`FoFcln(m~+71KaqQG4JD9dNVazW{&tpYSH*%WUg1-8l~}kod`y#1FZ{ znzwxA#%F6#y$JR31T*&{pr))w#FZUMHi_+kTiPBB4{{x^1yAx+(8#Tq=v@8^%d5%* zy96|(Nh%C2iah5B)RS#KHl^29=1;=JdLw>+pV)7%_x7%yQ>~u(BX67~`{-rjy)4y2 z)IWc)3aTRnbFJ2#TY!5zmnnZQL76%b0MAi7*xq3<3S9QeRGnI0V|*edjKD?As~ zdO!2|n6&M~(c9US`eEU9GjZGGQ#3g=osM)#zqh-Js`!R1BQmFv@3nJRofMdI%^mXS zF?}eX9W?*eI3%aLKYhn1pj$*WMZkY?atPoD5?nrhL-^cOsms{>(@B2PV{QN3%C>F5 zZ*w8J?e&x*{&;h_SPtf^Y+yVOhsy78m}?g{0B|sc`QJ+Pr`KCtIS){~E-nJkwV=Gk zQK{ZS#fqe=s%Ac;1Hb>`T8sBrbqDJR3Y^wAMR~Uomw$=nH}!R`V6FfND%kiH$jr5@A(K5QuOZh3 zuZGo*8V-+k)&be7mZW?p2&!~0s0ps)YR7D-o|Mdo)svH$4d{3DBzveQ%Re|8K4E!d z$9KzV>r^b$)&{+hzeL~T8M=QMU!iC51RaWBp&#)R_)J?%b149NA&zzC287X_V`E z{$S#!a$Vo#y1vPE-A{p1=Y<_ikX}oq%XK};cRj6Lp+T)VyiJEUR(O9lqrh-(uq9QN zT6he+d2rO;C=PU!S0gGXX3SxgX~3IUhtCAs0T;3Db=*9(<^XTUvY^7aj3ybTMjq%Cn-LX8HTbjs0TofBq+|h1bBI)s|7UQU6L% zLgpr1SCa_;X7JZAZN7h&Nyz{fpQe)Bx3p5+W7e0HvRSK^MTbWc)502d2>NL|u-GV< z6%Aw@H_8J8d{yn5=x5ROL#-?)!rE-F3u=CVi`*EF(!2d`T8R~U(cUz6aR|l`7T6lW!`u<*-9bHrMhLSgw{PL{1mmLR; zSwSmcqzcZ%Tj_tLF?$iO@Is`q-EObKrf7g11vuBlKQ;YXYvRZi*1%62onG2fi6yc4 z_@YUp()&8J@s+wDQ}>l(6TgBbUHfZU3vC?0N9eWC!GcJfiW6}Kr7gk*OJaY21iBHf ztDDG4TjtV!102J&+ABA8Rgn5o+}d2XjWb_N*kAhMw{?Fd+dhrc+OmBT-_$Y*NEDAo zkFpKqTSDwZpqyX5t*#zXS@rrefDey8qnir&Gdlvs9voRIOc}wC?h5;6QR5K%8J1CA z8#$s{0;t&vZ)%?bUew#|%QBkn86PD^5oTXI+ZLzZv$p~mr9M};9m1&n_?EU9OqnE| zWMn1dyexktdlG5!!{;H^#Ku0T#aYbJ=*hF-#E1kTx5$uJ5ge1-t60NRpd-oT-SKsp zBJ!cqBiffOU$d){`siHLSjoFN%@%IU%yHjH_uagj|1lR$@6JgkU_2u{^(z#)$csw^#ho zRw-q9*`-k#s;6^ynS2X`{?X>k058=oYp|j{(8)IQo@42k$|F>||KvnKV|~J>;R?eC zkpJi_MGo5JATqwvXAiqH^1R;uy58gH@9hhIYxn)Qq*-lOk zwz@2C)Tt}JQ(M!xgGX~0-+e=Yk0;3-O4(2-^y26LH!K{}pA8BZUS`UfDP~@KnO!c~ zrIJ^ECYMCnRQZSjN~Zb?9W=ftep*a7qXmEYmmr!Go+Tm!(tmv}a1hEqXhqAg%20c5 zR}|zX!oSH*tS2Jq2~-EBpSJ8yuXrw2axRvspPOuC$swXttHKE0kQcHg| z)5YFG5=)OE5=&uG)ItgRUhhKRYhJSJLiD}n6}y%zw(>H&T(Ss#uX(+$CHg9BiTe5l zB%^2D_46hENa`C%*`V)>4Ww*vROoNCbeiPtPa>Vw*dCB@H{(-_+N&HQNQG@UejpGG7u``sIHtnSD73NNk7km!zBbSVX7QE9ET5@u6&2i-BvH zi6@sr%3q-8Re1$lU0%eZM`g4@c!IZ<4E>2Kh%>bm+17WT>{aME#S&7YycHX4M!-&_ zC*PT#j1zfvp2f-830cL#?pVO0UPpU-@Uu@pUGF&z@gg=L_`3jR9mklxW;lQNei35; zk#$TT?NxluNAYdkXm4V!sz#MZhxE0kuQj?=y{_FJ+_bN#=%%(g;40Q25~8N=Fubh+ zzOI0YzdcxQNt%YX?v~ZKxn*CvN70>pRHg6|CeK+tdkdJqt>6Q%etPEM(lpMc#`d?o`x^l_ERoo4qeN|J(th_Eq zN?@*ejt;zw93yfcMG=VHNt_+%OAzF<)ptgk-rS7~-?9J-xtBN6nvu>AiLiLY+^t)D zveeL>HlHpvw7g19Ry8qMICXX@lU2nmyOgQ0nrydiI-7DWr>5o9YdL>4EvK?&JIj=U z>P@Fo)2Wm?g)MjUWA2(UcjcJ7c2=UZ?16R7z`8sz-QTX6sV>hHwQP-90h)nzQ+GHW-G=b4#~nKvCXGaWOt&a-8{<)vwP z>9xExEib*6m!{>V*YbbTw7fJe=P_(%CTHeh*vu@%%v*?=S%{gp5Hqt7v(&WQ&9~e& zEqA?^yQbx?*K*gi-1S=SnwGoPY!?ig_f<8#J}A{g%ekXDsfEjOKzpfZ#vWU3`arc^ zr?-!-w)$YTPH!JO3DpNCfvmL(f`sQRw%BSua_j-g&cT@WD4TzJ5|;t0Zq-cg6W)!w zDDJxYBpoZgK;&#-@7#Brw#_Yl_`cs z26|2I@56+`9Mfyq0JT{Gb2MnIkDs==8*&1NXVu#IVSPEsmcXP`gCMH+#+~$J88)Iw zKNw*6D!o8`GhKglmgrilU+#^8+cG{FGSS_robE;pIvHwtlREz}4jPiW`dQ#}VM*TM z$p#Pof@&`j$bPHen>XnN`R9P%&&qVi*U|pP)Jr^EepMFCqey zv-x>+hyQ=ZMJh2Qj&D@*zKt(LU-#hz+7F`rXd8uNHs_q24XMK6BPtB8anA?BsW>wg ziwXhg`nS_CKZ^pBvO#)H{v-iVDt8BKbi|Z78r@@=*y7bS9hC2pdvVu1MeW*8QPB}i z!Bf;eBo{5b=)`yHW~(XINAS-Ee{J9wJ;&(PQG9>GH_U)&FbUGO8xt!@R_RPZ?CNhS zS_`e5(KCqZhyAcr^+CuNrYJH6g>T$OV#q3kQFJ$o&*){MXq-!*0P2xm7?`pFl(3Zj z>t-NEXN_|^Z9{2ICvAO%X-6&`r9D+?D8Z3NTxz_B(&4q0W;zbt9>SUo>GU#HlDb*F zOjv&(v3$42FiTAvjJ41TZX@9~IXHF|#ec|Q*zu5*Bl1zzy6N0`MRrkgmqh=ng7_p% zHrVtmVk6%eekf$zN8C3f3hRv3bS#s5d#XHs%haolKyj^%)S z7p3jNEeO+js7=~n?4sCxUp0@J^dHNn$=g@dcFG1*fCyMHM+jr5z`h_~1?86to4ys>d2JxvNk4*+`!wp`YBf^L4v~<_ERPFOhF{7e)8eNyYGKq z{`}$fr?)3RynY`;KP#JNWqnlH9Jvq3`6-uq79LoSz*TL?Dr#SN4k2T9zsH_WPL|6w z>8^lNh0NlPu&#U@pCz!B@9!HTfvw4Z*GKXj|Ej0PbXsv$;aCj91R9ODcE99fe|zIG z&YlgS2{DBF;h*&p{yHkE7RRyu!b5+nqr8oj`A_J_(!ToO2oA7r!2!m;T27O+HzhX{ z&WXgy1!q#-97?LNs@*=8y56zWBgo=|2`N@QBsXw|rlPpB%HRa5^DngAX+LmO@$?&v zmUTo2NBLu86uHO4sN{9v)XKNKV{3=|&v{ZRy>%Qkf=X{ge^S_Yd}M!cCBO?+ z)PAfM>_^Pkd&q+^k8ud>@Wp;qbYkEE!3=GdN7k|LsM_DkBpG+vO_GX1YSr=ai|Ro82bA2o4hM&= zVaLNf!VM3OJe0$f2Tvz**usDNEKgf|YrvXH%APv#pPF*xq5eLe;_6n)X|CbIn3i@6 zsBc+kS?|yTRvu?6UEEY&rzyxlEC*D8{{1WcSEZw>Ldug4u2xAp=vO-Peg)*T%6ze` zbO%5}N9^RA(8X|U=y#8wBY^m!84(~H1g6+Cg2HDC2&9=2gt92K8byDI#GeSiz8vo1 zTFWi0@r3w3yt`54>O}(zIa6A2Tog6iEh-hW6Fc24F~e3h|N4l(5)L-dytwwUZ& z-amKI^GAZv@vyJPvs#bdVfRJQfIl!A`K?$vp_h99 z`6ZhTR4(bV6i=4HpL-TDZBqzUxJi26CQ-oXgn1rRh+z`2^N7WA;qBc;b*n=I+-oSc4+$4>W?9-v_DEYSn zFysk`4o^7D^Mrp0-4iANu0sO{h6cJ+bD*f^z&5IX4BsU8SSjPQuB4kkiFr~@6>?AH z(Gm7&IMCeFsDOJKiqbCAbQx9$Rd|Zk8I-a*1jVe*UgB`TQflA!C-!drZWF4|JYGEy*_ReO_JY~zb(Y~7QFtU}=c;;at0<&Mx>iPW~I>|ahDIwfBNm*O_mU%Ra8Pfyko&5wk;;q4PPbF4F2# zs;)_?;N7Y=5{znkys^M;&2ynA>d#`A5UFz<6B7S&rfL5HPWU%N=|m6lkj}8`pd4pT{F;4MKXGAyC3&GRXKkP=tjhQi1mQ{-m3&KDMOEG#DKU-h2%)S zBCvxQxuqN@t2-%MzA6Ro)ls157{+Jk+IV6RHCqbD`44(Jf0}RYHV?tejCEMu((IX1|??3JTxoGZT-CSiXQ zStckYvp9lT9N{bu?A)`_x#21XQ1bxat9*$*f9LUNP7I0Pk?ac~y)mHr_ z>hOWKrLYOFE8~q73Fh|(nh=L0vP0LOdW4aflw4_+4cDyVkXCW5Xw&v_JSsBc z8K`9K`$TlTq|O=+hEeWd7%4J_LU!(4K*i~9sjp2&&&k+qb$hBW_Bk>t zI7a}q_!ya>X=oBB<`|JgZL;(HNWSR&u;f2(1q8qWbRj?u+>C#s#%&sRRqB5Q|Af@G z;SJ+yO}bT+9O6Z7#^11J+T|Mj{us}89zWxqTr~HwWfMawQx_{6ad=bvNV;kMhqvAJ1_nLHuH!&nX1@L#X>wa9;3&%_n{w}kXg z>#x==@g4Qe<`P~8M^Z@7R_9Us4eaIHWROZ- zkpy@nPUQ>bE?||o#D9PCky4OWh>00<5`GZx#gF2x_=osOd?S7k-$!?o*bmvj7u9Ez zbG>T#A>TuPa}dhgIrJgP`24HwtB_JU9miqekFoYu_G8q3Yrft_(kou41NGKELs1`qevJ;_N?(g%r=vc;jo%&oQ2oz???bi_)a0J5S@((UPfnKJ0$_N#+@${R^x6S4HhH+xjeES9@0=nA1MYoG6%d z=AC~BQjEgBUma&H5JWJ_BYJ_LAK~HI>~=c7?qyfY&iUDYTOS99BX+j+L|37&`pJ2b zeb>lC#n5+*DCnUFec@Y<X!9#>j$R%71^i?BL24`BM3#@UHP2$;F5haupb1Ryk*RZ*tD^G_}8mf-hq|QpGb}!vRpOUZX2Cop*M9-j<cV$N=BOuiyu;zgLt3jPkdX@(k;67}yZ= zo99#?wo!c}uHXYW7jX-JZ?KWq@h$Y=#%}DCyY>}#jT(~86gDE8@ERx@MW#maRE^>p zR(^Ewx^@M%A051^eVeP^ROpXIkAZ(DqNyeVCbM8v@3C>&^k+5fjxRTHSFvoG8nzm| zDju!h)o=25)Q?%D|MZ7bP|uh4e5rcgR6Rc;7ceNcX&V2ZS09$=hj>091;PL&uW?YC zEj^J(AqI8esm|n7r#YA_4WpL>$X*s-wbS_9&zhn9{95Dsz;o8*IXfysfiHhri%!tG z2)|J%FV3(DnstE-Byf2I?k9n}srs6hew@d(x^CcN&1^Q< z4Ht~w5p5QtR^_fj)+nutv}{0|lzmZQa~GXTMlV5Si;|uItqR1)l-Aj|CVz=!-A5|WwlYg-YJ&z?}bVSnNk+c>^6j9J$vBkI=E3=>@i5OBw#^ zoWkk=lYcEXwx$!^*%{a8W}Q~gZ&>qrYjNT9Y{G0fA2@N z!;uL7qxqM={H3PD79ake-HUrjIz-0n?AADCF!+MLPH^n->GDx}x zB#i;!lq)~OI?vTj*Oi=sRHW6H7~YLf5(#UCb~{z;QGWGzi>q>t|D1sQ^)lv2!LP)r z5g+rOQa94M;Rb(t^+YNjPU4V^;-h1XD$$x-J8NBQ^1-R#QPpsx;b#axD}x7^O>RP? zI}rNP)nNN7etCRSr4~0@k8ym`!j$$YWZqO~cILOi@l6X;q-L0A=Q}t$Ux{YJUfI{s z#w}0i>u75Mo)!RJYe3~6mN8)v-l8MA0sC`opua*DD+Yh9?$g?m!`NoEmGrdN8UrjO zlSe-IxQ%M7t@c}dRj2gY6&)qURq<7wOG5_KYse&dMfr)Au;A9^%DHu6z>uji#s^eI zbN6KZ9oBY~m|}eK$KRP*UCdpWr7931I#Km6xKdHv#i*Sh7jOV#gi(>BKYEo^u5KI` zD-wsU$}xYLUt?_E!XTOGoutrTjXFa`S5=k~%K~h|Y=CMaqs7!2m&uYeNJd-v4ck{2 zC><$hr{2=4p;-Ng*|zepM%LVcfc5STkl+0gSl^p8LDx=1WQufyQ!zo6`ouDQfU2^1 zdVlZS;hQXdeNWDKOgi4nQx6DMTLUXS@Eef5o|JIO#*LircbhlWSpd9kIj;&V<}P;iPqk$M z9@H~YnB`0qF8I`)p-BRb6nz28MCN1lL2!RzF|?1B_Lw9VihKcye0YRc0weGRqC%&+ zO0&g13#m&M+g=akcWfVtp2ekxs}ErRY|IIDp;7k2E)P3xvVAlwkACL*tDfbBAK#oP zut_xxFZT8>tO<#ZFP!OV;j`{Ww9^sfXYFIh?W4PE&1~!(5^_S8;oi(}-et%|P8fd? zwJOOxTXyC>WEb?kowTHiyWvRUAI5x++W0%}p>+~Nfc z4HXYB;JEx!cE+;$)a*>(W@kq6p!i;N;9shCyrj+=_>@5b(=$}5?8*@Dw&;Qm>D!<# z*%Qfd$Zu7`W;O=iU8CeQiWrJSsB?duN0FgfC9o2lR2ZG1*u2siLt(28_N^?lZo^C-4IDanBzm}TsCncRDB@I6|__0V3nN4kJTx1$+bx_PGV&q z-6l*kNN0uip7I+NTTy!=y|c<0`<~u$UF6a~;G3+ePUh!c7x>O?Vm;cL*2aG_LC@C2 zW-wT`Qz1PbL$C=|T4mH4De%LTLL$gkbovy{;Afg{13flR=ZMdd)yY5}ZMzOWgvOtZ zGY)OzJ@N%TQHp3z1>9?o^8sG|NY7w`@}2RAUN9D?P`;P0Yf)z#=UyF{Gf-=u9G-I` zdCrN&a?)=VM_D=Ubo#E8KgfS`PLSv1Gij{PBnfynX6|xgxJzAz>{2NxM&^vS0M&pj z_6O@9kx;y-?S5{!TPrNBkm{Lj;#_L3BL!crhLLgn6|D;P6bt z$U`P^CXW?O^GKC_ddd#8*k!`A;@3LFNt363o>;@euYLav%r99m(#*Kd*rP(COKc#UUV9rja z(*n-tF*VDT%+>4^YYpnSG)a$R-C0UY2TbHx-$w|-uxn8-c0AD%u|B?AP5Fdx@}Lx~ z%TUxN#hEju<19#)kEECx^1GJd1<4iub1CNHLX5>sOvOs1q|`5BA@Epir_Yz|YBi1S zX6^x)p0{VtworeE=mahIW+s@Et5f;@LrD~IIIphc+Yim|&~p_hOoC7B z*<2CB^^C1lX|))Uf05kDFe%%l7q#j01S5D|RHrZK$E1HYhLjEbsE%LYo4j2rh+@`n z2gB#8AxgAs7xo?Wq>LwOPoBenmJ-WpYhvlMv@g=pBONHb*smIGS5@l4Q2!z2=|Yvm z7+)MpL3=Qt!ls|AJvi3fq*mrrSO$3+5JJsa8l+g z_WSlkUCDn$ch=<$a)#jW%&Rqy)?e+|ZZ8(}s@R)RR~h&yI?<<$!F#@9)fbdxFZoRrM*Z*s}3L`krQK+f|2@Yc$;^u!MpAYg|9b+; zR_T#G;CwojbFeDmC7xzV%j8M4mRCq;61e;w(aM(eq$y-n_MWz|#tyPX z^NY2fxt;%uuuY0HeN_!sYve8vE8y=4g07TKY7y23!y!9n9);0 zC_R6T$eGsll!Z^RTr%TylUhh$29@O4*ZNW-K@a|3#JWG460wl+v$vz** z8J{3WNPKPCXuSJDvvLIV==0z?ZS2Z=n#?a+<8(0eee|R~_Pp~M4ty;8qN-BXch5Etd9~&Wcav!xf%{Jj<$W= z>VVrf$-KX~iJeU4(ami`=tJqD@ZMq=_l}V(2<0JYvg9e;dZ4CcHqyEPA`pXrN3ehJ z0s5|F{2cM$wsN}x3DTdP-EtTlLA69lII{bQd~c4FBRpBgJ-zaVRA}q~+$x_`=&c1s ztzkhh`LQ{3hH8a1+#nvwK=MOx5X0Oc@bpx6ECV~JH&Ka03hiwS>iUq|qMY9`tKIEn zgRh^7LlFcN$0O~LFDk|>U=soc2vC3Hoa->_Nx4*6(+|W>K{mvi^xRGtuD3$ZSE0$X zudh)lR(=>dZS&;uR$rwUx1FJQlQ7f86K|2YI6OMY7l~|Xs|?0ymc8~G{J^R#AWu1O zp(u#&sk_KmaL<|`YqR9Zo<)&tW)&KKx%sXSV1O%DdZ*uK4mQ7hHWjX)zJGuJ>Gb67 zFDLI+517Sr(ZS_PEejvbiE2hEv{G!AsHf`B(PO#hY6I`>^*p*<#(>smolEDcRk@4X z+jGV!!O!}1gX~-z_woGaYYpyxk#|s^(SHQH~q}UF{!}R$g}oQp@Trf^>DYf0 z(tEoc@$l^-;5E7p?8UkrK9PD%?zj0l0n+bG2zu;#{FJnd#)F}`@M3?lppWPWtE6*% zuX7LkocuyhF%}Q*I-c~WCT9kV)8i03w%m{feY@Dc*fpMl_V5%QoCQ|*&Y{6Bx}&7f z8aDhFs&PtnHm)AS3LSX&NnMpt^wBqq6xjC;&i`QUA9Wo|N5~N^NJ#9ws2v@BwYS%K z9@m;rztV)D*8E#TzrKG0Ajo5&XBN!g9gt@XVFB3LGS_ayDXtoT-WY1+^g;FWY12R) z{nduBbDn+;q?-OucSd9n&CZVbv^WF4oa*=*|8>#iccZ&*+$CFGxpPg!TZ+wKVzb`g z_e6(NDB3H2vkJ&%4hkaD=GN8(r+s)}CO|F0zWMFbtDoPUeE5Iv$F~JxYRLz`o`hl4 z?vw|m9XJ~NJ_EkTUgw~k8?mi-o3eex<|w{k5qD@Q%5NXaJ3^dr|?T!zFvr~7>OY%{6}%4J$gQ1hn$!&goNSq zDSLUmh{Msrv*=)24Ttcz-HpTX*~NJk{;4+k&(V2w__U3waktIs^2ZVU*un{Zxw87( zp~w#90j+s{SoZ+Gwq;9Trn-<-aUO~6E+6`5g@Sm;mP~)+WclE7TA;UZi}HtmkYou zLKk`KrTe2CxT-DyVjX?;Rc$IRwYMwL5i_xHE|2E%g}E`Bw)N^J2WWH^YAx_|Ik7sm-G2eg3tOzh?9ca1x3=J&%Dc9=NF0`#jVVdXz1H z&~mgbXYA#uXsv!BGIk!uMym<{FG0xf=GTLC`4BEL)MwI_;p6BEA{ikH+RjQtsV=R3 z7sy8Ud8gf_#U7k>&k0lTM;rb@svy5{@$t`*NjZNy_sPWY&mt2%8(&BxxNs?fct5yI zIu9)e0e$9bj2^ohqx@<}y6&zA5cT@g16+)1qyE+34|o~ice8oG3(%$|8&;c*hFY&- z^{a+jsbLk?%3q|>pS4IdM_;%`RCf0g9X)D|jtUlOV3dvpM{z&DNKzjw2Kl3SsJ$qQ ziRgd9Av~pp0)h!taww@}FCHV6yud%WQKs|*mIssLuy+9K`1hyP3;6rjum4`1!r$iK z{vI7R>rcOGwz-f5d-it%`}%KRGuYREL$IU9(>7PhU`KyFBCxNXK4Y+_&FJu`-h8(0 z|Cd zzej=K53LTBe)jt4>q>r3+4l%hy`DkD+_x%MJ*0z0D(}u3VWv$glse zVT55%hXxNGL=RkaV3xahd>@3vS}!{M!|PwhH}90ya`XPBXi-#GIhK4#<_|K=2=iDh z=;2#PzySJ7W`w!5AFGHW<05%%m|uVUu`-s?Yd=-;*d(4Ro?#~XVlJ*kMoOzo`H1L+0gK{LqW&Tp6!?J{ApAmodM@Qyy zA0qbSf*?mFF@ioonOuAzOnlH+tFiJcD*ceJRtDQ0S!f7|O}1gr8Ula+%C}uW59#ww zXO>JixVdJ~&Rdw+cZ*qP9thkGuLiw^RBr~H@_yXuFK*P=$ut>37QZl{hR~n~bJ5q9 zyy63vS6IHgFxT?X)oO}vr+0rbB9~nJf*AnF4;A_Gl%b@du|TY{!CMOb-NFlkLP|h^ z%8k`rNpwc6E*|CXbcd*G*2lxiAI<1tBNsADu~kNY znpw)wGkweJrT!hkDb+N2x%{r)U}PWygRS!8J=uUt-@g(k0vAtZ0;7Ma{2(kAUj zCfg)xE3=}QQh4#t$aT7cBCffXw0+a#hg^D1?1X&$CFyXkj`!&0QpFVKUU-Q)Rp~gU zbQ+u7qd>fKX>{t3`7wV1HAe1>#`KUt8pmC>@i7%)HgMQu$sQ=jvr5rs6!Y`rD!C65VxzL*K1TO2~hadzMYzL`8+!20=1j zjuD4q!XzzTE|#6?_quyAuD+8Z;c#pxSr4zj$93}|bGz7qPKqRKTsI%eu7{@a$Keo2 zJOVi14vfjo$Q=M1&=s8z-llQ3Kpxw)eGyUzX*@fOZ0yBF)o$t1BS{^=2 zd?vx&QR;=|;qO^BtR4T}uSVf<>vA0(7bZBL2ZuiW;yT;xaAX4V*r1ndP`=I_X=CDv zG8$H7hUqVzCh=H*Gy48!qM^@47viH0apXe0oUT%TJNqeTy9dD8T^GPwb{Q!H zJ6#it;qbSX*E>x7=p}yKo);cNXJ@)6el5@`QIh!)GtbWr52gsFhkUyT%NPht5yFjV zyJ|f1jHYvMH$u4|^fvK!M-;ieWcuv&)Abfj1i?6AD(@(R|EXPd`f5%{k6>#9TbJ#j zhtZ6{W1j|pdZ7P)`p!L|pv(RvoN2+_OdgmUF%%9!v>jU~DAPc<6QxAQXBQN`wYY}b zFgiTi78XkRIj}>cWf{xft?)Frv2N_RMDqA0%sxCaPQixgxzYAza$!QXPM=>Ghb0q_ zQjgKQm$hQE(iNLvc)-#Xn~88<4W|#`Z!HlM(Tui#&dizdYmYJ{6{Zxb8hy*)k!`#m zddvJ!Rai?6!||*}+84)+U%@BPS^_#(?SxKbGv$e+IQXtYClbeRsMu}B$2Ke?v!vU7O}h<-Xw zru|TVa=c~QrP$RjjbO^>gY?@EKYVY_ZWj4v7AYr5TJ}+g32s!4h`-d$fn1kK%x%%m>OAaFl-oO6=IsaYUr`U94LhJ>=0x@w&U8dJd!Q z@R3hF2Rom7;#?UCU1e$g?l}7bVO66(g zGD6pJypyQ5Bq_F34>kGJ#7a8+D#}x1IM@APRl}Wa*P1OalvOQE9H~Q-Nb&YN?8fxdDs#8h0OeRSM30rWm;wc8V4cG2W_u|-Y{ zBXvvtuqtF?bzgFe{F>@9%&b@7_JyKLVO(+3?{6y#zpCb;jB889==@p@9g3nJ$u8nv;XUcucVKTVfi-uE%>*;*@xAC;R-z} z5`t(mja;6-thwfS)C$K{Ztl1g2sU*@=z!Q`6e+-X@iS^@HOmJp1q856=&x@OR=Oey>lm=nw-L1=UeC_>ZT7@gPov+2YkUPD$>$YDn)@ zzx0W!#eY={YgDngor-3&DjpZ3<1NvvR@uEGJE5UtC&YjuEBi%%A9ACuT{`y~mP|-! z@0fbhe?TckSoAwtoST>z6@Kv_XU!_wxy1xDJ;U|+e zUM|s{D(fBMoLd)v!LGeZ+`Slm8v=kR9zqjhFz+q;aB2yZxAC-)JS6r7{^RvT$Vl|2 zXt5Y$m$Wq%g+5#mAWWm6U*ko#oOfn}NXUj_E?HOY2H(8?5HKw6MuZi2SgPfe$8E+1 zJN^FmNd`-c+JFH@r4EcoJou)?g1>e6Z@vIxaG5T8Xr=vs`t--QZ{NLs^Yi=Huk@4q z>0%THc227ThwFTxCT9pdLcg+HRD!B(AA3{uDm zn=j~bkPfoT#T@Oo^(a)5^s~3Rsm25eV}<|O=BfD1UpmlJbt0}A z6tgif=qB?{y0O})KC+%+#!e5|lR(slZ{P6^0_!>$0$onUP<3068dAw0qF${|A2{DP zz9$5?lkkPLn8V_~f1l%x9Nwi_>bm3l!GCZXhs0}tJA=y&E8hia>`DXCtrz!}K~0C5 zXMsDr~*PSW<)Jwa!ryI9hD|i3FCyLc%A>vA~I{Asy9>M^Nm^ywpD{#hv z*=@{!a(ohUMRtbril}n*01(6;ge0;=#osJa)SH`e*scks5ibG0o<7<^*c>X9X9*65 ze}>XC%-4;EP!3+;H+GY&XI(Qs9@i->37G2Sm5k1p?7syd&67;GRi`=s{=VSxJ#!3{ zZuOdrhpH`w(y|?C)^^HXa`6l{eemr$-IDfyu=Gp)0?KiOX2Ax^K zJ2B!*t&Vvm@SPYkx%LEUw0)>KVnNV@+sdL1nr&2Opz5yD2MhSKA*W zqYUGT&0BxQNVCrykv$XAl<2{N(mL*uaF$PBxh(yij-BJxM1xj z;c{qYtUaoW7QG8pcHtG?Z}<0^J%Y4WcFr@m5qaf5>hk=kW_R(A#M~JX%n`Soy7it#tlu!$o%Q|E(;d&lBt*?ujWlDm6JmpoqAI1XYphX&Wa4Fx zB9u6=$jdx@ng?#*n5!VAr+IRV7Xx+=@9%GT-Xy;X6p4QwtPZcS4!ip<@J9{&k$^QD za7!U`0*seR#ebeB@74X(=d|utxOqf{5A}a=i>JM@A@)}8dAN>0TtypvWW z9w}JZD|}5WW-snFKP3Y!T7b$&?i^ z4ye+2fd9*zhCR$<7MY)wl+t~zc1(Y7m)u!OlHJX?x6Ft6m&#_|*D@wA0KY;$rtsbb zS_3YpFk=JkQdTX>q7^%dPYW|~6>r6j!)%bZ{2^H!3gA=3Nrc>14r0m>Q-;vI(JF2j zD(BvXte#)Dt5w)Gw{AY{2z9XNaHB}Ez1I;m<2T}Ebbo)Fe;T24&25Y2*5H3uevpsO zyIWtXYrkUF?N&Opcx4_hHA~)yzXHBctj+nNio9s@O1{bqrLT(R&sW&IEl!p^PV!~x zSKES%#H}#2%Q8z5^7ZLT+~i~wd4sykumMiZOkSKiT281K6%DI+si@6LzeP)nksvL; z5KGU?>i597IWJLhpvX zv%DfuLko)z^1Pe80)x`rMCjf+7TB0t?lVvX{p1?>vs(>IsS8Kg{E<7tcTjvY76Cr<*ONtK}e2DpP0ZDSxqH2wRD4k(HFbDBIfG zNBXFdXY7CBz2OHQ;~Reru+1&@fGa%*DLGt%MZRsGJ&Vfpj`_6wO?(~(rXi=^+$kcf zi#o|0xZ2W;w59f8KoBy+bF=nE)ZRcC<_WxidqW3*V=3q3gobZG&=gV)yp) zb6Y$MWxfz|)p~P~EBCPKJq6Aixx!88K05UddNOx`)@(B&zaf94LNrerm%vg1cV~xp zYA>GyV~R?rV*8L%1^%u#(e8`LGRv<=PEDBsmYgyR{U3hIjV@cHfa6$L95dZKL)MEyG~s!&@Q_fY-xnQDAp>Ik=0G*BFX4GI!#k=wvNk7YD6KByrPLEf z0*1iJ3S%7?J)*x#JN%Xjv#r4h)w1)5x@+qoG1!1Z_B(&bqMI?;o2l#QR8e>DQ+Rjc ze)+$fI1Z;?K5r;ie%Z8<>h;f_wRfKPiT~~Ck}f^$DQoPUpZ8crZj>&G-#Lw{#m}0` zp}a2+yM+_E{R1Qbg8(4iDfSiB5ggm(Nykxqc4PI7wPS^OkB+f$ogA)*ov76z-9Z}EPFAOjc6E&K|Q@3 zg$V_;uPZmf_^m7e95jXzRjYj%bca1O<6@XNT%r#QK?iy*83GLOif&c_5Wvy!INbmu zNbd>8pntAHXeRNzju$c6FS^KBb{AHitXdr*gq%fpI05l&I|>I*FC*-ha=0N?KwKT7Do;XL5RREML>$Y)Ru(bP zC5C@+)bWGp25`1(11`i|mN>!ana~-EqKPl&7Bqzg-9)*H?P=%rRW^9rVe@1CIPL@F z=SNNTFapK1Hv2;;Ezp)v${mS9N(_0fioJ9=kIw1~kmEXNmlB-uh$}y0$~od+;j5KV zc!Av%z-q|O%9O1$eJD%z(&Tap>oHM=EfRkK*9yH+!AQ_ErL|yJLNA$98EI92`9^Y2 z8Nkiaoh3zmTi8+GtSepOlp_~Q3KrGuKDnm82Ze%F-){A?<9!uUjcD8B7+#SXIxUzp{ z9EWweQp#Ihu7vVdmn$JN+CAq;#;DGr-l6i#=VH7m@(xd4kQ`6qO>4)DvyX8Bb0@?Q z&!?_ApN8sug5LD@_IlJybeEWO%i9rM?J{REA2?CVx`1WI&1)y}Dk*cO3j-^wl%AFL z>m^mtlu#p7%sP&FqB@MZd>$l24rYI#U6L>6WH1Lrg}kEJ17X6Tc8EQl&>wu?+rw5> zyH+hNyB6-kV_m6q?2s=;^#|#8Y!^%M*JfO>4ix!PANFWhdg+$7GxWRMpI*0U?-YTO z2Rnybwb7dpr%Q+Um-vD#+eABkLDEiA4dY(QMI`Q*MI;u}xL@S^WacH)8jF9PN|kX% z#f3`9u^Zx2WjT&hWLkePN(TcF=ihbuNoSskMN9$otW%O=E#h+Z>xxH_#8oAz%H$OS zh0wXfvMuHBen(8Ww?F^z>CL;7Q@Y59f=>ld;97A>B;x6KYjn*58r)g zHR?@{9`{p6VX`ZOeyA{;OUV-Tm;hPTLa#ohg{^ExYEXulK zl+i&%UeaL0RX{qkA3#b?cta_{8_I~esjQcqf=1LLd5nI4l)u>uxgmcRI!Ygn6jIC> zTg@YJ+3EMuQnVquId><`#*t`#^;DpaVI19?(3HfUlYF=6ahxn}F zyavLWU5?ks^J)K9j#0dsW)SYN+@!yb2XlVT1^DqyMG@zy}LqZfivaNMD5-E=X{ zbb@p;t-l=`2|3}ZohE-H>pg2=oW1G$)unx?NY`gq+IkQMx1y`?3<2pT$!s|kex&8U zAI;`PGdjMqg5ih-Gp`y>V4%_~PGtT|n7Ecshb*_{_?%EZ-KMv*5BPPucCkK?gWfjjEj=uqA#l7&D1BA3|- z8`;QAwueH|oSe{e57@MfKWP6S*P5+nBuwr{EB7PkmUz2nS)2(pw}{FTqCY*qe+AT; z36_N9*AHcYOw4~Is1kwa$8Q$MvsvgkOU7Dg?d=ujhGF_WMu zlSC5y?GPv{o!uAu^vVLziHe%{>}B0CNJ;Z;@Q*vdncnw|J6n>@qFu8{XNf^8d7v0f z(x-{6RetX3vqfFU+8zeKT|!H%Y!V!zEA!-cp8hHTCv|`Opo?;8>cIL&Cle{06nv7$ zyLmTA#h1j_Bf8}-2z7N9NOYSiuPE_ zfdg$pGSE5>0$@Rz&7|`7md2VYZsJE(y*=V0T+AJ6Nvt?+i!ER931~+j@lU;+pv~{K zuHcM=5hQ5VbSD+Am<9ri+5=bUZ<`hW1-So&HyM9lW?Pr(&Ut8o#7~|ieuN#?yyYu5 zE?R@?MW~M_n7J1LHDxs-uI#|ENo>d0()M6@kn8X)c#@}rMs7Vk=kixrUR560C7>Zq zQekLOD7~&Se-b9vlkofd#C~GEw|DiNYW2h)dE+eEM=ulaWvLdT{()sU zNSlA;%IYmDm9LP4S&T-urO%bWzaXXU&1`qEm<~E~tN!pxJV`wFzmDoSj}Mv7i<6uI zg##}6UwdH3-tKS7A*ldZ)_6o}Y)Dv<0oz^L21o@4`4yLf?3D_}X3c^pInX{+-ZMz= z3hRNhV7$U4Xq%awHSwP#{O2kD^9=v_>YRU_G$^wHT{$j~aZ-geSoYE*$k>=~X>168 z`>MdGm=gRrXUN%LU7nS+mFqr<92Ub%mg;*lykG|XxGV#PXjm>2xQ*seQdM;`kn-MT zl6GZr%{5bm*Yog5*lE0`heuKS%9`5;7K8@+Kr2;)LM2UBEu?}DDF0tF1Q}wYR&{?d zHN-dE>aAw*g)?LskvWZgubsQ2LO7fE)Yy0O`wrvA`n~T70 zucs98$D7N=axhiAoJ7z=mq+~vDP2NO4y z>-r|w^-ZqpehQR2FYI7~^jacauIov@>uK!@4QkEdZ92TMqOlnThI4;|Evd59!egAx zgQNCFaiE*L8d3QyV-BlK1Kz|sd?wJ2uZV50Z$3=-Ps}#QGb?W)}MfH5d z(Hf?=$$Y^FLuNyax8Hwv4Kc`d5MyGB@G6 znnd_FgTIDp^R-M$2C#qlG?nDOrIq3yv%aL1&04iAIy{n?7S^ys&`;Z6#YTCkXdvUb zQ4Sa2t7_LoKZ~v(YGpYQ)@D0dQ1b&^E6-t9kgu_%QM`tMmurBVGQp?Y(#NL-N$ zcdeIjGx5=zb%&8tk`@X;(ywC!PU@P&lwZql#ez$JrRvF<+Gl@h4rxwuNTd8>6_2L< zQf<^NY|3R(dp zRd62ON~et3i+F#97b1=Ac6${zMFZq0z_}*=sp-#J6GyJF27cP;^wO3}EQ!U(7fl+K z-q)dxuha#Zx~~+Q_!TVa+F#3BXyX7rLa&7m7DVDyoQNwZZ4oY568rlj(2a0i-9%2> zGMDxn;25UWUb(5Og4B=V*5k~c=R~RjT+(ln0 za?mD!knxp1d)TFs=j=|oJ7N*Q3e*(_muS`w5HcJfb~j$}t3}`~(W~BeE4;7;W!fqK z4k&+H%m!hJ>g+5zSN`pk6GCc&bn2LldNk!&J*Sd-@U}_m!2G(+EkhE?c5-U4)n##` zPF?Yx+M34uJDR)r?i&hxJW1wI%7#Lr7eD{MVd0qmY*4uHGE>e>G4tBX>~hI2mAvvZ zxg^S_%0~=PGSy$`pz%HN(_*?AEy%wF(VTzqED;%y{_AsrgHZNCD_VwChT3zxq98XB z{!MmbJrP02pE?fxv}JdC#dEQebFobQ+>~=^GP-`*E|=xm==x>5T$ZLo`I?kBZI*Z0 zt1!`@Qp@$gq{%Jn3zn7YJNJ)zmI2`vtcTB?~Y_7;DV zSb7YRSPF}x7D~|fdKda$^O9W`qVF}Y*tJ}-m6zG&l11oy&Fgh7(N|eZ)YmT{86D}a zpD*!8Qr|$z27O;_AZ3H2LieJj(ZM3f0gpj#mcR{Q8 zroOJN*)AZ3j}3f~`I5NOFK5Z@%RzrYVmpk#B;CBnB08;JDQ7v3%VfJ+j8nr*Jh>E7 z?g2d~$}8CF@*)-;D5DL+6TG!#=ucchoT;VAw!XJyuR_NumXH$Vt=M2Q0(K%j`OfrY zoXD&5EKbf&$SMwY#{w4hI@;TVpMCo2de32q7qJ1s-vu!1IL7QX!@>897~_A1tYi9U zui|Syif`jadlPe2HL5&1q^~u7tb?x@xrhP?4H?_?HSFr|>5H)p&;cX4@bp=fP z?ZJ9W(loSnx2(p^ExXP=itgm2DutIYdCuzDd+^H8%Ecwh(yhBii%3l$|D;=yA|GJo zq?FTzobF<|T+B>XS7uGOWPpEXWysp5zC*_3NJH7%!J%c*HOl`VhUS*8?JZ#tEl zPNmc-Y`L2sbJvWyE63cmvl5+U53Fkj*5!fe{&vkwb$OMRUz3--8 z%Vx}7Ip(EZ%4F4ewrBY<&&-%--a5}r?`PgR&&+hpyy=*k>6n>yo-Ok&FHOr!ujQp_ zdFi#hG%YW^mY1gGrD=aTk6|-2IWrH#W@aH~-a^dGLd?8{n3;u`rKaU>zU8iIx$Cvu zH7$3&mb<3quGezcwA{63yI|0~ud3noL8%^E&K=E3EnJoZ+Dk<<_SkCE2deEly?t!8 z)d#C}di&T(s6H?WWUW;Y6Fg_J#a8o?V-HAn4#u=c+0>J`3{Zb{t7dYa@NU#aao5!+ z>Cor}B4-18=f2x4w~&SID4QU%xGuKKVB>#d_>Xd>rCtKI1*(!>4{VFCOffVvu4{6C zA0`ylm|nvMsLcwPqd{YR{It#8kP|pOtJcmB>&rp51SX{#1W~;=?xZKnun|T2!2rWo z=>_VW>7uhl*HVA|a&HXWmhr)miS9<_bT?wq$xzFi)cJ>T(2&&C&jOzdOL7KJHhAb4 zRC|d)_FMffce#+d&;Bj16SBPgq6eXX0_0%h+q_Wf+u30?T%A+^Oe#!z;oKOTQCJ(*Y~=VSx`1%Q|Wxih6(9MT6E4i#O?_z|own!G0ZG0j6x(_GNeh}?P+bA5fIp^eTNEHqrQDJb6dp;0O#hIyCR0u%V zznzBpSrnL*4bp4!CkcR3xjR^+Bc{yJ=pM_&7O$@9pnQ+qi@WA2YS(^>ijHUso}%_4 zxoF``&N@ogUSASE{T4)u- zk3m#F?1!bQ4??~$MUg2eeB(9}Lsl7#qPtOiMlTaZ<6Qa#P>=M&z?2Q3gr)3XHv=&` zYnGns#3y00!KP;s z8~MiYLm|UF;=UPC6lbiaW0~CBQ|0j^pL}C)oGtf0UfEEX{^Ns<<3=lVEC=MfC~XgJ zL72`%ZPErKU)zI~71vc_!_CBTXdCggoiBgL)AztShsJ9IjUHgxn#GR-Wv+a0XzdOK z97FefRR`53hee zy*>Hi_4^q5S=lrz>!Zr%$bCT0Pr1yq@W6Tmu4+S8QTxJk2pO~cJ@$NZvRtM~cLkg( zWEOXXb>-vuEP<_jf8P)ZY)$^VK9b+~S3NbR(~7GK$6^pB&}g)^`z0Uy+Z&H@_G}1E zh#}Mu|E!Pj*HKZmIF9WX9$FpcZKQw9e?mW&_SFYRaDa6S4lwrBa+;*QDY=<&P9#n) zIFst;P*R0e?e?+M^^T<;K^7lONU`D}xq&k@6~&!Z1}9LRf1%}0`+=j1r{7?-tRp%& z${!n}$UPoLC9i`YMF_Z|R=(vOTRYr;&XZEd5(RC*iwlfu5^BZDgeUZ{Vf_G7hR zKVrV#LmrHIj6-0DFZQFN69W$*|IDzga}M0++rxS%?S;}xN4jZ{U+lWU>O625eRcOg zbPS~27d1@EL;vv)W@xiKvW|U6)&5o{$+*jIl2pi1tB#LfR0rBWpybYVI5=z#J09i{ zZg_Cyp&X_>csh~87T#xh+S-3x1J+bh_SAv@)RY?!_4n}OCO+f}?IiLdc?_cS^Djii7Ql4~hwMx=KztWlaD|{<({; z_X>Fa9*+MP%<>yara#0xNwCN4 zqXB~!ZzJfyARaupjRy8MO4pE3PuGU2;^Yk_Z@gr=>8!(XjXZx#`?id#K%Tpz5T7#2}Is(#=QwSh9l9_(QD2G;xGCTWahpAKb5$-fnVAx}7T zc*0?xCq(F;F!6tG9U3?=G|;7*14T6lwo(0K_$Il>N*SkhCEff<%#&)Wkb5GJj<83= zf##k@1>Dn6ly;e>%dk4A!c(lypp?}iC}wpAJ6IjrWY`DxZGgOvI~t!R4?LQziVwb+ zBtN8qWzFe3vd%_})didu4#~x=2lS^1@)-Roy}1`adm4X8ZW@Iox35D9L*{!|FCXrf zQv0?)v3Kitn^1-3@#=ZVzO>k}7tBttvkcFO!Xqg=SJh)%MIlAfwX)($H%f+)t{~I3 z>--?yXwbC+l`m1!4F_b*>mvCAL;{nZMU}vhzV~?P!hgIpu-FxV7naVmUmetB%GIjVPsz>tDwVJUaUtm6YNGzSWg%r$OUg@E zM?$t>|8nZkDft?>6t|)N+GSOLib@KqS?KY8wxn)(=3xBJKb1q##=)l|86S{n4#bsq z%lAOvJ}fSa_C#O4n4ox?)@?Z}@i|>HpVIUmy-|NymlO(&m>sGNozGcykyf8lbxleI z?^d;uU{urNjRkgVo(nxue-^uhNS))DkocD~P5aN0{8f-ys)n`Zfuqq!u6^U==pzNQ zh{dY9U7+-hm%ib2zB*7@{B8-7<&A+#=g&W1?%)HVKwDkexZYF$JRU)75IXGlnO;q3 z9Bh9R3dIVM6dv{E(N)Y>43txF>rBQMKg?j{mE!|ZJnpDHiaX(mIg??`I%=}cE=0qy zf85J^;e}DPP<|TG&CZT(j14Kv+-=($pU-LZ9Zo~`sQ+(cGbp}@?M9gS4m6*i7Twya zj0ZRm1@;*3<5I$whpeFuym@gg6|L9lHM1BaFnPB@(tW!<*Vi(gke8Nf9xPSs^Ui-Kr+0WT>0SEoIhRcJg~!qiq<1=&X6~_c0o3q9A4^C< z3Xi2(>9Mp>MXY0KCQ1iuR&q)!Ialj9h4q`_`pwU#d@5ZyrxGP^D7oxZ(v605F%B0n zVmN`^dGQY**96s6kZ6+hM{kp+@!hO-B&P5m#%j2R|9Y*jMb>&IuHb*aC8T#+f3Ex_=F5ktUoE`DcSMc*G|9lNUpPftBfG1~Pol7TBCud(P ze_jc_XvFu?uf%Jy#FosGtl~y{^*mKevclzHUphlOl0tg6I*;0KU@zY$gH-B@B)}VS zDqkpf0jtC%{*#ZCg0z1^Ow5>*@Pl|SeiU!TKg3Vs8}WnqKDwL4e#i#Cs6LyV>s7-K z`5yY4gHYbip$|#M=U;7Kg_P3iI1UScjJ2<_AEWkL^Yu28Uhz5|sJHeZI%w3ts{VQq zeqVb}zbX5cvQ<*;R|6{7BRn}ci4Mab4}OfQ;qAdK{C<1zmd1ba`b9Ikdu=^5d=1?> zh+ntg!ap>ocToG`k5tot#=pv6ui~)wYjpTl`dSP-9rf{T{O;g~>VF=5FOlUHe4Wa# zH<0%M^4{|#bRqKtWb)^K#o?RUx6uLpTMawi+7*1zAIkqZZXW(utx-Sv3j6)@^G0;{ zbKKZk9w@2*KhuA(ev0FNM0YoF?S=q;iD5Dh!f&f@qS}pJ=|4H+s@mzIrzdJ#qN{d= zc@$pN{wcn#{i1vTSUFJBKgAoB^)X)6uCe)#&l`JtKcUz0yN}iQNVyW#>cx*QI3LFF zv1a9O*{>wy#vqx78WTPqD!d{TXw(~xW)yL=-`VH;Z?J!RetZ71{hQi0%lNwb+rh`f zm+~?Gbv690+KedWyR+ZUbGeYwCJIkNO5cX{bJN8s;=mGMp z(*1F1?~hBhKmG|TzM+2nBd)Cu))Ko{GVvC&*Ai1`T~2GSBk5~1{M+Hv$h>HMgVT`v zJ~ZEIYHok3dZ)dPYA;QR*J`1&s+CrKd0@d4#5Z;wr^@l5RZ6CP8-G)^>OWQ96|ZVm zou}G!0ZvMM_RoXws{c5+7ANrc7XJS8;9K}k;rm?2 z7(yAAw#-sskaL^}VutTAQH+WsS@q)50F11TMvi|3^@Of$0f{>W3q1WzWU8Xl(yS^| zfyor}n-fjQ5jr`@Z=i$x;M+iB+!Y*A+ByE&l{`yoN9U&W%q#uNgQX#nM_m*^tM5xV z7%H_;yvfkpc^apVmQ2O-VfWKdGS3L@Us&D0Dr%3})@K2`+Peb5oc3YnM8Tvp?>vxV z6!w4p>NsnGAc9dI(F+9q2oKL@x6|=;FS}ZH&d>ha`Zzcov9qlwx(a>OPtJ?%yG9-= zhQ4D&K@UCX3*T}iZ*DNGn57PY3SHz^X1(cG4wj_p2i_&80z?dH=0V@qkhz1*QtCUS zCs+6PIL{+yCoC9Sb|g?WMi%r^{<~!dSGIr1m&zZ7ca7gjE=HV?t03_jIL}w`-xd7# zE&53mNLy2}$~nt>lXI4*sr@w+d>QMJDxT>Y4uER)8eO63ytC``whYC4ijQPC5brc- zy{^Wm$kDyRzrfCYqa>BrRiN;2WXiC*1pht2OYlcPk4^16;l9nFXVIkB!TwKdWJPe7T9cie=N(u+`vI@o4?7 zev`kWe#|2Mr$3y6dcL&hOV#tH>iH45fI+cM)A;|q`mj7d#Pb0u5C$lDjf2u`>4`iF zF{lGibtb1e&B0u07`+@o_Oke@oyOmO)(qw6*BaLcp0g&;*-;S+e9>BTg4TaU_>Dq& zafVIMtP5Nqfy*OsKMCAT)z`Ene?6}PEC`)MHNKWqfRIWc(H7JBvQ-pd{&|f|9^urM9KwW1>3|XC4M@xM1{- zXtNNtDt8sKMrl=~Wdquz?28JUyXaIhdI>69j0{y4=ZS_xWu>+4rVI4^OIr_+5^I^` z4AbX8piwojWG%m857ToKMNWC|UYaBoyKVpZsPZ_S{EK}NJjbf>5FVm~6w8|d)i$h}5*gpS=zFR=Yu%J5g`6jleA z{A;nXHJ#|r&bU4|>$G})!T%K?;maig3)fQT|Z%ZMK_!t{%mR@Aq+Dc13oLDDrKX$%0T zT=^N+d9H4{uH+1)BCWo}@NRsPNLVYh+o@WQ@~gjFT$OA5=LF=hmoY~QekD$g_?Y*U zx{=NeH_)pmQt^Lq5{G0IA01;tq{S~TMF=%z4)|P)9#x|?1q^G^s7+@ipJo3TE zZB$!rwcp~aI;GdH=qNF+im&Qi8Zw|>Lng^9%1^X}1-C9&&aDdrhD?nyKA`K zu(qSb6yu9O{?5$mV(!8$Re=c6iK>6Wm5SmnM(zB#fCCUCjEWrn(W|6#b>p~LkvMc! zj>-HQWAlF&2FXP4B!&KJ)EO$es-*uJ_z=}0*{ z^_Er*#p*xIwv~T1vgQs1taopK{O*sy`rf1ox^^NWQ=}W5iV3RJCzk00RF%ck`+MgO z-(>0QdveBO((zuNdO)z+8d&KWC+2mOaV#|qCl7yV>L#A1&KEr9(cRn@J0_)K#{?mb z1TjIeV}fGG1jUXCiX9UaJ0>J{c=E>FsK6FLSc)cO@%*A)tuCB7S)5BROHaFPkeNVkSMIVa;wY+Hp+HO7mAl0856J1kNLmfa)s;Bb)Y7^_?m8L@y2ZGlfW zNYe5d+vs7&dGaX6c_R0Q-+=7(q=ZX0Zsc^o+q|jH0^n`Sc~xLBcd@H~sx1rfpq`1s zEN7x{!KdyFO%iCN=nGILG9RlCf(whGeXM`9$0V^(o>Sf1dYOq|#6hDZ{^93MjGvWXL+>H|@(pq&y2tK>9(tWJ?ju1$(@5-aoQHes4U zIxDpIl;5b>irN$DomI}*_w(SPDx=m&fgh$65<#}2)2C<#Khty@=&^Y^M|_T~P6qO5+ja0EH2!RyacCRw zkuT_pQbcnq;9h&25AgCwdIl4e?~Fh6g0VP-^1XCji#ppl_v*l$fm-wA@SGFLb51Ol zlYXl>%F1!4(|4u(L7sDhJSTsjNn?E`Nx-u)bC(mtUFtGqmr6k~GH1L6s0L)QKUn{W zgyKbQ_jAMDT47mVtLx6GVn??H{tPB!fh?pHRXp)xq6|^VZU@7PGCkrra_09(*O0Vu zHpNBz!bykYkk44=MlT9NXcnZ!b4ZoK3v{mtVn&w)i-#@=CXbS6;9!59STW0dVG&rm z8iUk63r5FSQjOI~Kek95BDjPLqT{j0i|N28%##(7jC|B0xqwRX zS3qp2U{Nrn0DEaR9#{$PRG%K zeYP1xHj^QHwTNp4nO1)(w>mDxCmVNqV)ei3jmJABr`1J)Lp1l`oK=$ohi4i_77`P; zj$PHtI-DXO3*D;iKC$Ukkt27`8MlywD*XX!2TM0Z@#)4PzDmN*f3k5Qhh%LR2Jpg1 zI=6r04hFm|k6q@prXrJB?MbR)H|Ri7lcXyt<>_`YZsaJFch8eU_J!hAB`KV5>z2=w?O?%#ehdtxs{Q+-~pX^wy zegEj?ktrNjV0O{d#eA5ILRB3|a2VSVHy8PQkl%mm7?Zg=oeR-hs5hLV{L{*|N{{pb z=hLa2gH_R26;#~I_t-ls@ibFfCQqWZyh1vYz~%3VR<@)kO(CPQ_q2sIc912SU##`a z^%Qt0&po~Da;HC8Wp>Vog%Xgm@j?nqMRJdh?UwCo*hjVa$&+4Q2<@T6jGhug>1jmH zw61@rRA*B7>zUgS#`(QHUCI{odXEzGp!S|?3sx$EcXx{5S=wtAAUOt2_W3~0_yjpZ z;%m!Bp9jxrV^`MGWPZ^ar-PyIqbKdL=bg`R;A7brRXzJ6@>lBH7gf=| z=rbJ(9lpS`YoE3d^l^vSthbIe*-kP}^)7!s;=a}+a^UaET?Lo3V$X$|r7d>J3tDcF z{!!7$dl(VQqD>CVWLaAhGBCry9wyahR3j@utB6lxeUwNd!^iE*)o_S$wC&?o2i(3% z=KaM@>|`pBZf+YwA4(5}_ZGvrcZ^&?C=WrCB~Rhj12rYHk=6weff)Qdf`t#zcO`%0 z=ZOEdmD>$SkpArKmc!r(swGOok=;k+dvl~5;mI=Y>6JI6LSqNuR{5ktZ!IWl4GV(F zkIk7gR4c6E2JuJ+k{^1580H3nr>C-G8Q4L+iAo$&Xm4Xs*N5B|<@}CW?QSO7EQ(|^tI+Vv&3AnO16;AvJN-U$u=(Y)sc`-D{rgX+CvSg$IeD*o zz$})F4lY+}S@>v9R5MDUm146*Jym~>9?LaX8+dQ8=h5Xd2DCowTsl{+%3a*vo-;-X ze%7ZOWarwrkLN#MYjF3Ayo36T{-dySH(He;l_ncSsA?+`tVfBxV~Jm_Fu&T$M|>ly z_MPqEyko>FB=cKThjJ!Ql{|mO>2L{(#qwaP;eq1<8HJW+nBpA(Y0oWQ=y6F!$muzF4h?qE9VLa<#arGEh=)k*A>Z*jIkG@%?z`l2I{s(jasOwldLXK!bLSpAd?da&My}i!!xYm67 zl_mtW=HD9n^%Vd?9s_?pvta)2fIMRe3&75nxpo^)an%6y#!w@t52~L}n+D?OuQr68 z^Ym*V)%1V5Ga`Fvc6Q9C#ToGBRL9r&uZt$X8{Ku|F4^kJoogE2QfvkjoAv&_Cpw%$ z(O&VJRX{FtP!N$ex3(rY?ZX2z0cr{M&2OJx{rv9a!*@TvEeL;8OFsDZBn+c=r#vX_ zz|r9M8Sp*!ItS(4h;6;wl*X<%nbDjKHw`~;KI6WfbdRF zom*?Yn@BIn{+*G3@+yw$&OaICv7=S(rTR~4`=tQ`A*CqC3pL|qKPS48FIh;WR#6fO zQGSzWsn7>0NS=S4I!Zx+s~wp+gBQoN{3&Zm-;l#?u zizz*%YmYEyBkyscHKSjElThsGc?@jvz(uXz=b@I+qip$umZNPs zV=qTVYxN6}vGXuCT2%me2||81zaFH^hj5XhK9jBtA4gXZ$p}%d1yHZ z=rdPi^w`xH!?o6Q4WfHp1Ju-a@i)Oro8Up3T9 z4XdzL{vwV3tVN&y3z8wRlewEy1(>*DxeJ%;+=F%QNy;9g_fX=-($2iUn1xYv&~1;-dbH~BSFV3Q z{^IrbcJ}x)*Pr^B%0Ch=793^UOeb8#gyQd(Ua*AAv%k#_YN zHos%zbVjdf7HtY@okwoIYnqev-aOF)h^$VC~*GXg;@oB4$u^GT83OLPJ1ovJHFI5cvC7zU=~fNS|*yvt+u# z%{7B|-onJbTg*E1K;Uk8HRvs*dNbgZ_v21~aihLYrpXAh_=N#Aga$pBi@vtx6(6v? z!t&jPxt52nR#S94y^9gK04ee_3sEysiw)x<#+W4BLfi_Y?UAH$p%#V{*^cpxOgfP7)|8|VX1$r0#Oit8~lV1 z3p@4KuWY~&c*qGU8Vl)~u;{&USTsVR%+nwD&7cqf>v(j|r$Ta$kQmriTR5IPS8IkEsZ=fx{k4_COg|Oy%XXwXIjP*+%Y@H;a_} zoO{POjN058Y0;!M)=1m|F937aQoC4W12~!Sv05<4H(6hhsa*dU*XkuA2{;+rQ~hVg(!+btp!z zd5i-iZI}#@>@k1lz0_;Q`P%iPLM$`|bQ_*T49+9!@_UkbF(VjUnwNf}`XZXn5D8dw{ zv?ayhOY|J}dar~=_C?Q#p9U$}XEx|$t8{?f4)Nwk8cu(;t;bb}4A?z<0s09A_K3*n zZsyxG%18L!*dtwdXbZN|8nQpSskS^bXzU>Vu*gkqdsyZHmJ(!4!V)*ILt4U@ooqm% zIO(OAOk~`1ml?9K>t^(C;0qRY+L5b@3*zh$tN&u;nvknWI8b8$fk#VCT}&}8W>$O8 z7&+^N4;IxrsdXNI$4xPeCu*I?&*7X?>pabsAM5gfP#iO2ez(f2naCnx9=4Sg=U5Fc%bBNyW3bd}oKPdVFvJpj(`x&YR)%Saj6>6%y! zhrhMF-eKZLFY)8{yzm%0JJUV!Yk^LQlFW~od46tqFhwvuP1A?btd&nFhL@C?z^RyP)W;#WmE1(c#gy zuu#g+fgKtx%UJeqg{QfVbz{dRlE*J$_TiCn3N}Q~jkYh73lpk!`uxH;ESY$edW_z^ ztQDJ;uGj>_1D3AXOoa1lIDH6zYl)bMX0&x?&WvAwdz2xmFr`q{=vxMlY~%gVTjqzV z!dhw=j%PI*KU5nG<-z*M>tk`x8Vb?8^E@wzpLvo{P7O(O7)&>B z7yZF;xL+uI??=AG7g?^smCC3<{`8ecqaDhl%XA=(Mam%h$u*sqoy$u=^wV)N?T3=% zEz>T4#jbW~1XDgAq~Ct{;d^s-v&b*ANI7Z568-Ln1(Q)Cg5P2DZjlae&^}B~XPlqh zwt|@smayaBqdoL|6bBq-K2WxRqx>6CV#kJ#BODo-ny5xS1! zokX=INwKARsL7`$R?^{DQJxyZx$Xz68t!bn)@*s9tZHH6NFACi*9t{XVW|jUQg8#G z%=<4#z+R6;5-A57GMkq;qlnV&A-a$9Ms@tSfwmf77XM((Qr+ks`M%J>kAvr!jByBm zJoG;%-Dqt{AMx+OevqTj!T#?+hFe%o=uFu0K9xnkaj{L;iA14SS-%V-t}5g_eb%`} z#dr(LayRbVWs~ohbhqR2K7QBwIw7`|#0JjP@(1ESpjnCx`+(Mf9P9zs#&`*l%LFug z?kv(FroIRYf_1;- zFkzK7E=ng1XVszf@a4*XXBX$_*&C*v{a-hHC4F=Z%eUEY!N2{@KCBK`=uwe>5Ja14 zJl zO=;E{e{hD-4KrYXeEnOknnx=OjYyh|+5QPNGK~nC@SiDKNE1G(g5nXi-k08aT(~{) zf+m@-2FA;Fiau_F-F@^$XtA$0&A7T_!g2H)xw-PQBmuOm^5V5)jWmNA-{r-y@<|5) zzj%I#BYUy09;DxC0@)e~>r881D0#&hcYQQ94G=S-cx{31DA( zb8)`EGQX#z=@Fjo{+$3!iv z9~?*F*?<3jczzItzY`bndwr5chZx8xsE(?^e>@G02XPwA7O%E(N^;LtLwc|JrB75X z{;OhGql(4tR5Y7a@wgZrZ;4*D%I+1}2@M@PAqEUt*)RH#8*S}>(z(~LWI{rF$JB%G zd0Ca1e-Aqn#Z$#P>S3XEQ5X)73(Sjf<5H-XNNT^W0gPw>WS%i!T6-q>QV;Dmekv`& zlO4WWJmV6}1I()*fA|R}C8hpqUo7j{w7;0avgv$*ud;RiDxJd7_3eibKbf@ga*6I# zS?>_%+`0&M?N#D`?#1Za5CBB+5SkE!d2i8&Q%j({ji-g=A+ay;AFn4uMxr-Gi^Ukb zq^+qa^x=X4VHySf8ZWZtyfYg_LN*k0$+~Jc_~!M8fMIbrBCNQ>QZ1)EZZj^}>G!`+ zGFV#F1`IGNbznT=!8a`y{H?=(^92xt%XHC0EA7{(KfZl``|kCdpWnZJrJvkS7o#w+ zb6OQRT;~HdIYZzP`jzFP5>#dT*rO_N6Y3kss$8m=I9WpS?vN4i!42)B+(+F$nqmkf|nntFy5MXw#}3<1O>*hFCMd54E7t zO49=GjaPGjR>PYnm!0J*J6-e#aeUNhM0Z$EH6}3 zT+sw+!V*TjjjhJGptdokY-r<^q;w(Fp_QZZ3~+FDHC<+6!4^gqcKJEhD3n{8_q{Z^ zTs{gha&tGh?o9coUfR7q-MHOax%&@3QLH8l5m$oM$xod25C&Mp)bYDnfin)wZey0? zlaMQavNM!dM3tilfFSlDB#|X5{$`P)-rS7Cc1p!GnAfT zzHT&xa_|Dbv71~y>zeWLxK3e7z*Hx%WOTk{|1AJ%o@BbMI?eg__XUsdnPZ@ItJhpS zRBb7gmhDKhwo~?!i)XOugKy92mb52F|5R*$g$=2ftHcvC&;Czuzk#hc=*$Yd)@$TL#4@3_PD$}(&_!!;UO<94v+Wr_BWf)Iv z-ug2}ntk4g?3s|JL=P5})^U%7vwZr>ZRs?(YdVzO9=G@96Y_ZjL*_VY|NpkYay?lC GF9HBa{=%pL diff --git a/package.json b/package.json index 770dd613..481c5a80 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "fabric", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", - "version": "0.9.1", + "version": "0.9.2", "author": "Juriy Zaytsev ", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js", @@ -21,6 +21,6 @@ "devDependencies": { "qunit": "0.5.x" }, - "engines": { "node": ">= 0.4.0 && <=0.8.6" }, + "engines": { "node": ">=0.4.0 && <=0.8.7" }, "main": "./dist/all.js" } \ No newline at end of file diff --git a/src/canvas.class.js b/src/canvas.class.js index 7695b6db..f26cbdf4 100644 --- a/src/canvas.class.js +++ b/src/canvas.class.js @@ -699,6 +699,7 @@ if (path === "M 0 0 L 0 0 ") { // do not create 0 width/height paths, as they are rendered inconsistently across browsers // Firefox 4, for example, renders a dot, whereas Chrome 10 renders nothing + this.renderAll(); return; }