From 974ed943b8dae605addcdf1b3692bf0548e5c96d Mon Sep 17 00:00:00 2001 From: kangax Date: Mon, 22 Jul 2013 14:39:07 +0200 Subject: [PATCH] Fix polyline, polygon tests and JSHint warnings --- dist/all.js | 4 +--- dist/all.min.js | 4 ++-- dist/all.min.js.gz | Bin 49640 -> 49625 bytes src/shapes/path_group.class.js | 4 +--- test/unit/polygon.js | 14 +++++--------- test/unit/polyline.js | 17 +++-------------- 6 files changed, 12 insertions(+), 31 deletions(-) diff --git a/dist/all.js b/dist/all.js index f5b7e635..055a9bc7 100644 --- a/dist/all.js +++ b/dist/all.js @@ -14521,9 +14521,7 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot var fabric = global.fabric || (global.fabric = { }), extend = fabric.util.object.extend, invoke = fabric.util.array.invoke, - parentToObject = fabric.Object.prototype.toObject, - camelize = fabric.util.string.camelize, - capitalize = fabric.util.string.capitalize; + parentToObject = fabric.Object.prototype.toObject; if (fabric.PathGroup) { fabric.warn('fabric.PathGroup is already defined'); diff --git a/dist/all.min.js b/dist/all.min.js index 2e8972ad..c8826b19 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -2,5 +2,5 @@ e)+u}}var t=function(){var e=0;return function(t){return t.__uniqueID||(t.__uniqueID="uniqueID__"+e++)}}(),n,r;(function(){var e={};n=function(t){return e[t]},r=function(t,n){e[t]=n}})();var u=e(fabric.document.documentElement,"addEventListener","removeEventListener")&&e(fabric.window,"addEventListener","removeEventListener"),a=e(fabric.document.documentElement,"attachEvent","detachEvent")&&e(fabric.window,"attachEvent","detachEvent"),f={},l={},c,h;u?(c=function(e,t,n){e.addEventListener(t,n,!1)},h=function(e,t,n){e.removeEventListener(t,n,!1)}):a?(c=function(e,n,s){var o=t(e);r(o,e),f[o]||(f[o]={}),f[o][n]||(f[o][n]=[]);var u=i(o,s);f[o][n].push(u),e.attachEvent("on"+n,u.wrappedHandler)},h=function(e,n,r){var i=t(e),s;if(f[i]&&f[i][n])for(var o=0,u=f[i][n].length;o-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){var t,n,r={left:0,top:0},i=e&&e.ownerDocument,s={left:0,top:0},o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!i)return{left:0,top:0};for(var u in o)s[o[u]]+=parseInt(f(e,u),10)||0;return t=i.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),i!=null&&i===i.window?n=i:n=i.nodeType===9&&(i.defaultView||i.parentWindow),{left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)+s.left,top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0)+s.top}}function f(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementStyle=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[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 t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){w.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),w.has(e,function(r){r?w.get(e,function(e){var t=S(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function S(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function x(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)}function T(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function N(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}function C(e){var t=e.getElementsByTagName("linearGradient"),n=e.getElementsByTagName("radialGradient"),r,i,s={};i=t.length;for(;i--;)r=t[i],s[r.getAttribute("id")]=r;i=n.length;for(;i--;)r=n[i],s[r.getAttribute("id")]=r;return s}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices;t.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"];var u={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,h=f.length;ce.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){this.status=e,this.points=[]}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},t.Intersection.intersectLineLine=function(e,r,i,s){var o,u=(s.x-i.x)*(e.y-i.y)-(s.y-i.y)*(e.x-i.x),a=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),f=(s.y-i.y)*(r.x-e.x)-(s.x-i.x)*(r.y-e.y);if(f!==0){var l=u/f,c=a/f;0<=l&&l<=1&&0<=c&&c<=1?(o=new n("Intersection"),o.points.push(new t.Point(e.x+l*(r.x-e.x),e.y+l*(r.y-e.y)))):o=new n}else u===0||a===0?o=new n("Coincident"):o=new n("Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var i=new n,s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n,i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n;return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n']:this.type==="radial"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0,r=this.colorStops.length;n'+''+""},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;return e.createPattern(t,this.repeat)}}),fabric.Shadow=fabric.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,initialize:function(e){for(var t in e)this[t]=e[t]},toSVG:function(){},toObject:function(){return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY}}}),function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=fabric.util.removeListener,i=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas.prototype,{backgroundColor:"",backgroundImage:"",backgroundImageOpacity:1,backgroundImageStretch:!0,overlayImage:"",overlayImageLeft:0,overlayImageTop:0,includeDefaultValues:!0,stateful:!0,renderOnAddition:!0,clipTo:null,controlsAboveOverlay:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset :function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.overlayImage=e,n&&"overlayImageLeft"in n&&(this.overlayImageLeft=n.overlayImageLeft),n&&"overlayImageTop"in n&&(this.overlayImageTop=n.overlayImageTop),t&&t()},this),this},setBackgroundImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.backgroundImage=e,n&&"backgroundImageOpacity"in n&&(this.backgroundImageOpacity=n.backgroundImageOpacity),n&&"backgroundImageStretch"in n&&(this.backgroundImageStretch=n.backgroundImageStretch),t&&t()},this),this},setBackgroundColor:function(e,t){if(e.source){var n=this;fabric.util.loadImage(e.source,function(r){n.backgroundColor=new fabric.Pattern({source:r,repeat:e.repeat}),t&&t()})}else this.backgroundColor=e,t&&t();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw i;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw i},_initOptions:function(e){for(var t in e)this[t]=e[t];this.width=parseInt(this.lowerCanvasEl.width,10)||0,this.height=parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.fire("object:removed",{target:e}),e.fire("removed")},getObjects:function(){return this._objects},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"];this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this.backgroundColor&&(t.fillStyle=this.backgroundColor.toLive?this.backgroundColor.toLive(t):this.backgroundColor,t.fillRect(this.backgroundColor.offsetX||0,this.backgroundColor.offsetY||0,this.width,this.height)),typeof this.backgroundImage=="object"&&this._drawBackroundImage(t);var n=this.getActiveGroup();for(var r=0,i=this._objects.length;r','\n'),t.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&t.push('"),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"),t.join("")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i;if(t){i=r;for(var s=r-1;s>=0;--s){var o=e.intersectsWithObject(this._objects[s])||e.isContainedWithinObject(this._objects[s])||this._objects[s].isContainedWithinObject(e);if(o){i=s;break}}}else i=r-1;n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i;if(t){i=r;for(var s=r+1;s"},e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3,f=u.data.length;ao.padding?l.x<0?l.x+=o.padding:l.x-=o.padding:l.x=0,s(l.y)>o.padding?l.y<0?l.y+=o.padding:l.y-=o.padding:l.y=0;var c=o.scaleX,h=o.scaleY;if(n==="equally"&&!u&&!a){var p=l.y+l.x,d=(o.height+o.strokeWidth)*r.original.scaleY+(o.width+o.strokeWidth)*r.original.scaleX;c=r.original.scaleX*p/d,h=r.original.scaleY*p/d,o.set("scaleX",c),o.set("scaleY",h)}else n?n==="x"&&!o.get("lockUniScaling")?(c=l.x/(o.width+o.strokeWidth),u||o.set("scaleX",c)):n==="y"&&!o.get("lockUniScaling")&&(h=l.y/(o.height+o.strokeWidth),a||o.set("scaleY",h)):(c=l.x/(o.width+o.strokeWidth),h=l.y/(o.height+o.strokeWidth),u||o.set("scaleX",c),a||o.set("scaleY",h));c<0&&(r.originX==="left"?r.originX="right":r.originX==="right"&&(r.originX="left")),h<0&&(r.originY==="top"?r.originY="bottom":r.originY==="bottom"&&(r.originY="top")),o.setPositionByOrigin(f,r.originX,r.originY)},_rotateObject:function(e,t){var n=this._currentTransform,s=this._offset;if(n.target.get("lockRotation"))return;var o=i(n.ey-n.top-s.top,n.ex-n.left-s.left),u=i(t-n.top-s.top,e-n.left-s.left),a=r(u-o+n.theta);a<0&&(a=360+a),n.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,i=s(n),o=s(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),i,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var u=t.ex+a-(n>0?0:i),f=t.ey+a-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,u,f,u+i,f,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f+o-1,u+i,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f,u,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,u+i-1,f,u+i-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+a-(n>0?0:i),t.ey+a-(r>0?0:o),i,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,a,f=new fabric.Point(o(n,i),o(r,s)),l=new fabric.Point(u(n,i),u(r,s)),c=n===i&&r===s;for(var h=this._objects.length;h--;){a=this._objects[h];if(!a)continue;if(a.intersectsWithRect(f,l)||a.isContainedWithinRect(f,l)||a.containsPoint(f)||a.containsPoint(l))if(this.selection&&a.selectable){a.set("active",!0),t.push(a);if(c)break}}t.length===1?this.setActiveObject(t[0],e):t.length>1&&(t=new fabric.Group(t.reverse()),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},findTarget:function(e,t){var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,t){var n=e==="scaleX"||e==="scaleY";n&&(t=this._constrainScale(t));if(e==="scaleX"&&t<0)this.flipX=!this.flipX,t*=-1;else if(e==="scaleY"&&t<0)this.flipY=!this.flipY,t*=-1;else if(e==="width"||e==="height")this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2);return this[e]=t,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(e),this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke),this.overlayFill?e.fillStyle=this.overlayFill:this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);e.format==="jpeg"&&(r.backgroundColor="#fff");var i={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set({active:!1,left:n.width/2,top:n.height/2}),r.add(this);var s=r.toDataURL(e);return this.set(i).setCoords(),r.dispose(),r=null,s},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;re.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)+.5,~~(-(u/2)-t-r/2*this.scaleY)+.5,~~(o+n+r*this.scaleX),~~(u+n+r*this.scaleY));if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=this.strokeWidth>1?this.strokeWidth/2:0,i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=this.transparentCorners,w=typeof G_vmlCanvasManager!="undefined";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r={x1:1,x2:1,y1:1,y2:1},i=t.StaticCanvas.supports("setLineDash");if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",Math.abs(this.x2-this.x1)||1),this.set("height",Math.abs(this.y2-this.y1)||1),this.set("left","left"in e?e.left:Math.min(this.x1,this.x2)+this.width/2),this.set("top","top"in e?e.top:Math.min(this.y1,this.y2)+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath();var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top);if(!this.strokeDashArray||this.strokeDashArray&&i){var n=this.x1<=this.x2?-1:1,r=this.y1<=this.y2?-1:1;e.moveTo(this.width===1?0:n*this.width/2,this.height===1?0:r*this.height/2),e.lineTo(this.width===1?0:n*-1*this.width/2,this.height===1?0:r*-1*this.height/2)}e.lineWidth=this.strokeWidth;var s=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this._renderStroke(e),e.strokeStyle=s},_renderDashedStroke:function(e){var n=this.x1<=this.x2?-1:1,r=this.y1<=this.y2?-1:1,i=this.width===1?0:n*this.width/2,s=this.height===1?0:r*this.height/2;e.beginPath(),t.util.drawDashedLine(e,i,s,-i,-s,this.strokeDashArray),e.closePath()},toObject:function(e){return n(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){var e=[];return this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius" -)*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(){var e=[],t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!0)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,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(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed,r=t.util.array.min;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=[];for(var r=0,i=this.points.length;r'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path,pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=[];for(var n=0,r=this.path.length;n',"",""),t.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textShadow:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=this._originalImage,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height;if(fabric.isLikelyNode){var s=n.toDataURL("image/png").substring(22);r.src=new Buffer(s,"base64"),i._element=r,e&&e()}else r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.Brightness=fabric.util.createClass({type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&Co&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,s=t.StaticCanvas.supports("setLineDash");if(t.Text){t.warn("fabric.Text is already defined");return}var o=t.Object.prototype.stateProperties.concat();o.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative"),t.Text=t.util.createClass(t.Object,{_dimensionAffectingProps:{fontSize:!0,fontWeight:!0,fontFamily:!0,textDecoration:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0},type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,initialize:function(e,t){t=t||{},this.text=e,this.__skipDimension=!0,this.setOptions(t),this.__skipDimension=!1,this._initDimensions(),this.setCoords()},_initDimensions:function(){if(this.__skipDimension)return;var e=t.util.createCanvasElement();this._render(e.getContext("2d"))},toString:function(){return"#'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setTextShadow(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.textShadow&&e.restore(),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(!this.textShadow)return;var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{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,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},getText:function(){return this.text},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Text.prototype,{_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{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,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_initDummyElementForCufon:function(){var e=fabric.document.createElement("pre"),t=fabric.document.createElement("div");return t.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +)*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(){var e=[],t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!0)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,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(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed,r=t.util.array.min;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=[];for(var r=0,i=this.points.length;r'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path,pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=[];for(var n=0,r=this.path.length;n',"",""),t.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textShadow:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=this._originalImage,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height;if(fabric.isLikelyNode){var s=n.toDataURL("image/png").substring(22);r.src=new Buffer(s,"base64"),i._element=r,e&&e()}else r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.Brightness=fabric.util.createClass({type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&Co&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,s=t.StaticCanvas.supports("setLineDash");if(t.Text){t.warn("fabric.Text is already defined");return}var o=t.Object.prototype.stateProperties.concat();o.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative"),t.Text=t.util.createClass(t.Object,{_dimensionAffectingProps:{fontSize:!0,fontWeight:!0,fontFamily:!0,textDecoration:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0},type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,initialize:function(e,t){t=t||{},this.text=e,this.__skipDimension=!0,this.setOptions(t),this.__skipDimension=!1,this._initDimensions(),this.setCoords()},_initDimensions:function(){if(this.__skipDimension)return;var e=t.util.createCanvasElement();this._render(e.getContext("2d"))},toString:function(){return"#'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setTextShadow(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.textShadow&&e.restore(),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(!this.textShadow)return;var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{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,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},getText:function(){return this.text},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Text.prototype,{_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{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,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_initDummyElementForCufon:function(){var e=fabric.document.createElement("pre"),t=fabric.document.createElement("div");return t.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},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 da8c8288b99e0a72cb6d6d69f913e13625567a5b..c7bf57f88d773466bbf488275a4230247193fa1c 100644 GIT binary patch delta 35663 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 z zMPyd!>{qH_5%Ah5TLj&RAoO@WI*}RZ>qniMzF*3uCCq#_`duaF@9&M|9P+}}SkHDs z`bY8jYO*@Z&dryWg{93fCcy>zxq#av{bqL>a4|#$FP7g;vP2|$wOYVuL4Ifhlwy=K zd?%d2e-$M!=u+56w+O+gAihNuhL)=&Y@n=KpFc(u0(?Ya4=e|7>fS-b85_&4^oFjs zh$iHOLwRM`3XK~EYgNXn`jw}^_ps!?c!Xu{)<)feMkHkmlL8IQ3@5VD$iPEWy3>#H z$B*;+$MnarjwZ#ZwzzS})+H4NountE)I(GFe>}HdZEa`OjNH@=$oYCG5KjrWm|nl= zHLwoJIWT_!Y2rd-V6LIduP!ejFcu)kB2K^hTKs+`nrPu#;d9YuY`<3>{OwY?-m~7W z@SOw&fe}5nifK}_Q(KASN_d?@y+9Xa(0oeE`Q65xWCY4bVLOB6A?z2l6ESpPWO95T ze~VF2B=Q4)5teZgUeMDSw~1s{y2K2nEYq-Hd^`su%^VYU=#wRE3KL3PJB>DoQ2NjN zLrP+9i?KFgi*vTgy=4Q%%v2-RI>b^3syderj-ceRuvWXhG1nvNU_|lS4jP^lQX=UR zbXNqYx3@^F*C`T$dR(X+3Q^u4kI*PKe=eMhoPJ&x`Vk>}A-iK2m(c{D`9)9-|DZ#! zWo-ptl#3btlT~*MbkYNVhlhuENATZM`0q3L?-~5}IsEr0`0vl~-(L<7xeP?1Ufv+s zw5s{+&FszKycc1DUN}JI3>(H)Y&nAafj>_XdZ$2?9auw%va^CepP!E_(tOu`e>*E) zkRk|;B$z4~qnAUa`N$4H)jKnjIe#eiQ?Xx@L(*ggtTTmapSMYw81CJMqtZsdlW$OD zRN?F*RtX6rxgfQUOyfY=OC1@5^pDwuOD;{cENi3X844DhYy>N~!d;6>L%e}(b2#43 zRg5zr5}=r!GysYwn9N8eVuUaKe@VU(R_h8r0Lg4&J`Et~QwMRyX4GAk*XLVmRgZI~ z_`tNFRr}1u9z&un{Qu!$EpXdc)#6PkgyBFArP7Zu7JL?0%B~-MU|u332T;#1vw2O* zi&SW>3I*c!jYvX>f%2)Pm6M^fEq(e+Vk?k}YS|QuoO<~O78>c%BDsP1a*k$Jx0XwbUa5=xPZ}{p9_2^n1ygLX!yY?BGZbi z$B(bf4wJ+d!x?ljvLeHU-_FytWYC5mB4fR&ra3s@|MqSi8T>ws7) zWf3opQsz*~Qk23%;~Cmue=N#N_`z6~6lcnKH1M7O$xUwK0(W`KKH9akklM_&1GAe( zJP(X?&yM&ul82s(cn?ca4kRe1$Q$}}pxtrt<0s0ow3GCRQ zSLjIGb1S83p4x3Ve=EK@6Sq|Y!!T8+@1p85A z*yaz|G#^q1P5F~>pc0qt`FsQ?XUwGl!2q(88209WdsE=rroAKf)q7NVG{I_7yfGnd zp3vti?lr3T0SiBn*!u8`YeowJzR#GCW7r9P!W|K^W~?7yfN6_^^YiCWlJr+?6lke>{%DPhI#@5#>F<~1GnRw|s4nLO4Qc{#mW_hO0}}_U zISCGff4w#Ro6nNK$@McQ3-+GGPuQPl@Feakn>~KUPl7$+O?6vZ;msBji>CZi}0F%2j?v+zfUxpnku^#LSThB3j4DGi(PRM|&o|F(7^wM4+KF#0JL>F@<>O(g<_m^VkTyjq3^59{)XPo<**0m>V zSKD{{9q5YQQAI&-)(h@}-je>kf1-b<^zWShU647{wMhG}7l@|AuV_D@$jbz;#Lz&D zx$XrMYW2UuzDM$Lz6o-AGdE!Ri;LY3jJGgmgH`x?ow+rBaEu=?4A&6U$SOO8Mg*@>ne{x^7q(AG0 zaAd7kKrpJqG@eF`G{@eid3^?>tQA8`E*KT<2;3yWsPaaf2BW+c!K)}3rO9+N=a-38 zjVnrA^e78e;6*Y=GQ)Nha}BCDm$*wX5cjbPC=|p;6gjyIdarHYXS}plP$g~va@lx0 z)bCsontC?!u}r;?c~BBrf3^1DZy{bU?xuM)U1WF5a6RIJ_If7o7lc;z=3(g8#gazZ$cl z|4fKqs|X)(-)oD!e;E>z;b9biWriJb*rgfvl*2B}u+JzA6TX`mZ(Q%9(Iq6jHp8x? z(FOJSb#hA`fh64Q(Z$Aj0!hdSN?~~iBw067?HX%WeK*LN&e|MX>b^Vn(x^rn{$ZbXC8As;LV<#MmnW#dgRF>=B0wQ#|Sr)yfh*rirgXJlmCpZgQVHYWpheuC;IUw%_XQ>z(UYwMTB=9a^C4e;2h&4&lCf_hr_7tXJl`uf}~< z`thP=8OopRI z!)G;9rd8yHmqPtMU3N~Iny|4qH}(!;MBuB~e{4SaIVakT_JgZhc5+FlJ8-AF9C+U$ zpia#$uv_Pz8F|m~XC{SH&<-$A{?WuU#AVZ{6O&^ zc~db~O2ry1B>ait7LD66$30D(B!|`54{PyjpSBam!mTo_c;i|rD{-h9Dd&liU*_o> zfAz>bbSHU4ml3{YtPbXI6;BW5*be4%o5awgk>>yy8^4e);>Q7Atck}A*LT}q}Js=Aj@))dYYd`lRqP~eBt#Ufki z`&+qvE`H{VY71_cl~EWj+JOGFo%q$Je-pn7Vd>DlU0C*p(I0Enu<%SgRe=8H(7UR! z!r(5*1E${Nayf#AtB+i6H+Q)6?rw@M`g$t$yttovTfK=r8RlB4q)ak&UbBKfVU7LF zvD5xR4bib4I5LyG4JA8SRtx-%j zQCHEi;F8tC3x)6BAv*w8bzeag@bR+hhN}J}{ldEcsOsFIKM$!if8AQE+vV(Lr`j`8 zkrg+WaQJyNZpSwmBP1EhrBhISfoB{8O% z-XA=rwYxuf_7_^afBS+ltwnC@ihf?Y;-e#5Zv7jkNyPtg*&+-Iu^gOXmU70>g=|)hzmiAxvgl2 zw@BCMR?=!}W;t*n_#Y)$!Bu z3i#EAuO22vJzJgcheI?4M)bb@JhE3s)wL=%>iDg)SKoY*CI^2*iZvk&(D2Rdb{Ie1 zy!j*PeaAZm;RBb7py#duzi#1k{p1ZkiRmi8ef>RFi8RBmvR$}8Z~Q;}US;AFqvxyX zRh?soufOJyOW1nw`R7CYAAV+8K^gu``4{$ED%g3@#OMfz?n%E#;_`bQPT zVf1oUEf<+cj|r-5CMw71I$yx*g@Bib_`e`-vUDM8f5+7CX#-+`;%6O{E5F7MN6;u%kRiC;2S<`28_Sw1l zK!@Mae`t8VY0VMdUByo;3XbjvO`l+XebeU_)t)}w-~681SXQh_X!QXm=a0Z7_K;D; z9|!QC9AcRU2ES{TfM{AtpSnr)WT1c|o@0y1O?tFS(qx{Lnsr_z6%G27izs!S5%j%aXKhV_Fh)pfEBm%w1DhTc(iv#UQ=-z~3_8s?Ta=6NxSu zP~{25#!G{BDGi4W$^>(jpdC_|4VScaVN)(?+mSK`Lb>eI;T%k=WIob?Qje4@F6Plj zN#TGiYuj}h#Nhm+(bir1Gn(tZ@>f@^bf5|&Er!Nm4Xf~>6JOS86r*v{W_Ar zs-u9Ba6KO7L!sEeUmd_|fvw60z_PftDsH{K5Y{MBrEI+Ip#u8bnsIQnLle46f8aJy z5u27?t!Lyr8rb{j26mNTH1NYG3?mNYtnp~WjXe0Ec@t%c$>_CYZ6gKC(lv=x;HVMj(7=I0xi2uj4O zwp5^Elbg)`hHkLYg~Uil9Wz-9P?Xm|kjS~I`Vi+YE4aLr!Pej^SWWV?D0RkLgp5GE z$4*@WnnKXEM$olFQ9McC3gf1$jc?_ppC_*^2)V_f9jQT%d89_hsKwUse~j8A80)r< zoVIW1-TT*XoR@5-iXO)&WaknZmBX>n8jl(d>Ci4v=^XMX^&9bHqvgl;q$e#)s|h|K z4pHYwl8p+MDSj&=011wq1V?6q$TK+P-lVmj9zUj6q{v>~V*5<;V*BZZ`KRF+DY(Z+K zZHV>p&79ttO_{EZrofV+kBUC#H)en4YokBV=E!+-bk~rya7Q=kyupHFWHqn@ymV9( zbuP4j=ScQA^2Y$HW>*3RYcuj@q%UuYyniRb*yMFadqNq+n|KtAf3fa^=TDT#Np!=z zpn~HAdpSK1Mi6Gt-E%UARc4&9alc1_NBb3sZkDndWxegI7rA6Ud%m}-H+MKrp!vDB zKW~ogSh>kOCxWW%mDR5YR94+nx1IRNa5c=9xgD!a+3E5%+@01!E{@t4C1xCL{XCJh z8l~&y+VvlhdzfVee>l*vSsEUTT&x)9m&qxYi1eXBUmPzxUZ+)Z^y6Ct6GSg2152|@ zs~vX(VLcSeU_h@eW%)Ugi)|#A0^$@omk5i>(9Oeh#II0hoFd;-n`<~FUdAmEn7~Ld zHEz^eL;-ix%5_AQ1MvXTv2Mq&DgJOXs_muiZ^QfsQ@f#4e+mtrQ5Bv{Yj38t&QuLY z-o{%6d!o%E+R>GYHSk8}8f#>Zm(-O|mkRT<`MDuY534wZo3&obYHu_9QcJcab(odX zIq7v*fN%d!z1_(6k<#F3GC!kx-8 zz=HUpX>69)9=-3-rpIvvf$IAlE{k<+8Pqeh1c)%IkXgnA?EqEav4QdYmB?V!A`^2Y zQ;5$*Md&oAcA8U_<}~ti-t_vX7PsNSLrs=UjIfpBe|gkM5RKZI$iIf=^CfX&qxhCT zM!KW(>PkMm{PzbtNuMZw!!>=FhEJ3kCaUm9~-Z%()k>=z-u=2el+Z&bonddW zJWfvWv8RMVO29qeiD&+V#Tc1yxU~+O$4Tn0S%B?b2+i?bvj~dw6+IfDE9m?3-8xVz zf1?04jS8Ye%@ZWh4@N^b0=84uOs__d4yB%iD#HB!p8XD*LFl3o8II{n*E(DqhTH(wzsaa27FcyZv_Swvg8~ff3A^?REYyi4?1c&{lrLBq+&5J`>M4Ee=k_}PBf?hFUCR}qMeTC=%GOG{wOpck>0-*{0L7B} z>t8xG{Dja$+?E%5oWEK~Z5(F|t$8z8=nihpX48nm8ik>2u*Z)Bcj2Pvw?eU3e@-M^ z^W31QRSK;2&O#v0DFgjUlEe^)jh_Kk-<{e1=$BO+h9f_Q8z zS0rhdDCjbwH!$?Qtzexn+0-Vodp zGm&U)$hv@qB=owcV*!Cs>htM*5YZ=8gUI^x3^5o1pmA(lejSm zXSqr~X(y@;53S>_c+o=L*j})d&p*E8qH#t;DT7)m#(~vVnYIdanL6QMfBNpuJpb%@ zGY>#J#z(|`ju1TwO~g@N3(#HciH1|$B{+TL&+Ehyel0~3sEMgyv)^d&zdiD7{3}L1%^aSHr4Gqw&xWn z6Ed@kxp%ub1vN203ED)+e@x;x>}?M)Lj5+K>zHDVrM_Y`eA{R;BOT$D&r(LuxEHj>}%FLlY5czaZb_HEDXm=Sz`(Y)0Bqf8@x}IBJMI%a2j$1qSyb9^Cc{szzrALRNdgHj81iI#6 z6u2D-&d2^9F!U1C^Y}4yBX5ztT(Zw;b=%wC&rF>Db}Fm?e;0Jm9&z^+wWTY%@?Fo2 zAB33|#j>2%H546gKxWY zK{E|&NHAeWe=H(T>BdPRt(kz`?+OjkGqD7PO98P3&1G)Xg*aRql>qLB#BoR(SqE_~ zxk^!YVW|?SrG;lg4eL0Qd)*Pb3^2PGPB*%p0q^eZP`%fE2Vr}wN`eG6%OlL$E$JK* z+nYrk$MzDipWp^{`i@Vq%SCySF6iyt-5KVU+g-Zmf3(xH^tF zv+Q5Df0WIryl&Br8j9^DcV2<4u0f;~@GJ3-{7kpV>iXYa|MX*LNjjPKOW=9zaj#%9 z#Si31A=F+UV!Q5#mt*JT@|iN)#49)2?^}Jl~l@Ix19s6Oj4-2<$&-~J7}pTE^j3fZEVTN{e-Y;$-(`k(PSW( z<#L6vxM+?0b5+81yvZ|WUg9cd(Yw%6uvfgLLPG)8ijI&8>E>Mo(c%+6h#wsS*TT3h ze~w~tTZJ7MBgnm4F5xt+f3C9h`U0h`!jkvN@#N-uu?Jm7IZ6@?2ZyN4nHIAYwUE)H zT(CDG2Mp5t$6o#Ja_{F~zWDyTmwQ3~;NY)MUmhHMdGh5Rv}A8M7#fF2(FrD zIXXCa|Ni~p{nJ5NT^@W>rOT^)S|32#e*;Vl`3|7G;czf(X2J6}#S;SR6uPKTQ4l|Y z1{QVVDedU+@DOuTZIo(6jvIVwhkyCYUk)giQX3r}x}GEirs_ofVjg5_>kLgmP zok^gT8k`Gf^Kbh{-kr_j`^gibUaO;plI@<*)^PHnip3LtoYXCQB7UIag>L0de=pbz zjPJGcE#$ven2_=6N^tN;HL8&(0j{&GdY7?xlUY_zpT8ur?QHKoY?{5Vc@z9+4O1&N zgqRF;d_w61$~do|s}x<>q+#o5h+0`%n5Fzk$hBc5U01*@GlGnn*guHA-07CYTZGWF zLghyK)n5mK>FiEflzpK$=RX2We{UzwLe;Bux7OTzvex)_0A78Q0G;Uk!S84$f~KNc z5RR;8cGTrcOu%->FxxI6dYs&IlTVZThp=6o*=M&r!`+S8BrobEO775W#C@f+2j@`$ zYZln@wv(F9Gh1utOTBr2VtHJfDp?)ZT6g51bX+xrMw$1@5gVFi?F5};e{Ut~a@gZ% z46KfA6>e;0PCb$jlK{oF*5|E`Yx3bMMl44kzI0-TTCew?$uOvs6;DmtT860u3x7Lr z1djMWM6cPIY`Z0fQ}(o|4erVn^P@gz;ljF*_;ALA%cq z-4->)N`*#>uT};73&`B7f1p?u#?^2WU!bb#N%?hE7JiK4`)U(Xs2!@pZege1r>N!a zGbXc3mX`4RvR!EmO6hhwPb$MgsOk^L_4DL#-0w@|Omb%}VCZUOdBsfGqPY4zy1Rpv zwG@`jFlkj2A}QrvZ_DC`a#d$vmhTI==yhkp;c)W& z06|Lr|J6HSd>xZ0fAP+TdQTMn_%Zzv#ME2YWmZGCjhepUfG8SubmZ9%R)?TZm&YBf?i8na~%BPSROd6upBCDM084e1I$tw z^@0ek6ocD6DXo$=i^w?b{>HcT?b#K1^8KN*Fo^KES=?(c0BI`VjF*I4l94>ww z!4LFwwlW%8e~?@s9SbZOqNLs5`;@!{BGBF4qsADS$WTm>d|_+g#-^7VPAbqWGvPDI z9MxcCTecL|m|Oc%_(94Dl@|TsweuR0o~+95!_C-elaOuMkhcH(DqWB#JoK2ZfMc{p zNkDw_!GA8Z%K#r&9vup|~1OoP7bk_@V;# zX-5ljKlm!V-CwTAyh#7(g;O&ggQ8DsGanf zTz9=dagX&w6lq3cdBz(wn{i|Vw9EXfqogN-p*_Or$!wyC#Adm%7{;Kc)W?T6QVpXh zS$)Scf0DIHjaUj$FKyf>Ysk&SBFIT{+D>vRFEJn06K*W50jq0n``pGHIwmr0`xS+! z>)5U+3|^`I`*T)I^Tqa+?QVg%3(>^rtVHO1s~rl&#-Z#%vt3phx-SDB_{%DNPu`~` zM>S2Cc>asBXx9N;wztszTtDyttXTt{FOpxCkmB}|Djz0yi zuH8WkSX?SR*@uFZU3ZR)@o$A5r-f5d4k;m;7=9n@-eQkb2&c0QdR&xxB9u!yxi zB_(=4pdGM6R~O><0)OW+e64;j@Hf_+a?NRv>RuR*5-?e9WTzRu#jzM=z~7)7oi+T* zBlLrFGioRd`afc@wAeqyj%kdBdf<_0Z63s)yXm8@GyGWhD+Cnuq#DXpLryi8f5ml%i{kXO2p+J(BC!vor~`|e@Fg)tz?T= zqF<}t@K`qB@#E0jO-Q4%^+Z=qFCNsU@7rynmv&{|dmq{214siU($fUJXfEbW&FdKr8Zma6y>Tr$#53NqZ`^0Hy?%h^qFrQ0FamDruLz1 ztGJAHLVtMp*ZbI4+xL{s13h@;JnT^yk83P)#rtHD33Y1Y!7_lx{}OB zGeGE-RqZY@NM>xcm`e@2e;DBQrghDm$J-(kxaBL09T?OiX^-`|Ifg>yp;DPC&YE*! zUvDj%@Rqwas$?H&TU6L{+!)Y%>=gWm54AE0b6VSU5sI*5aroT)aP+Ud_<-tXYqa;Abg}>W1p)uW6MdW&;FO z)B%ZL&<*_Ip>#F2@a5I2_&k6TMhcwb!Z==go2(VSGsDe+IQ`kCc~W8OhLg zR~D2fho<|w{J0+Hf7+FsvB=53LoAr;EI$|AqR>_#Z&~9xQ-x%zu=alFT5sFRP#LJr3QpWE{>?`%0o6xFw!J&EvRLPeSmz8F5BZe~eqFPK@Ryh64+h#cTmMxn~d* zL}Rp(JfO$1#T-$Y9t=E2dn>CP0yfLg(^7p>5)N-syO?7fdQyJL>42)z@=TkwI0E*9 zKQ8LHOr%flc$G*}7N^PJnS3t#Aha0BWb7`OZ_$YgWFljd%KV@^2F z@R-HEf48e5C+Msbpr17yGuOyGvptm+WGLPcbeGZ`G(TRdm*6x+j{$r15Bgu*I~+WX z0-X|H*$F0Ygpyhr%IE-QDU?_LZzFbu`=4JI3{MQZldXlD~8=`M@^;aBGK}Zf1tR16&%E{=YGy_vc(B0XMUX*GaSxF zeVvpG7+Ac;9LDZiX}>v5R~7JBjhY%ENM)IyX%T5gV5xtVxE3~`3opW7w1$uc^+Fm; zD##cl>qIk7uE&o}@}a|pHGm{V24WaLuDx`+)kVfy{U0|29!gflB^90D0z_u3@=Fw~ ze-1bZwQySrPumGk-GstCQYRCJkyawMbJS_b!Z919i{^i2Yk6O=_Y@iji6WesNhnMD z?NO2h9LtUDL2T><2z~V?w3wHT zt6961tGl9V37rXh3cMGCcIC0vWdq~4-F*u+|Bc@=tNNzT zicUTkbPg@-grz=WqB4NgYPp5Fv5YYYgBDlNbU+Ant92X3Nf8D6K3mJE+;xIY!0cajXaRD!xm8OQNfBGps5E>OW z>et00h*pw1w(o~yvC}RFjn3k zDTcviK%~`46{oz$@|cHpREe{fzfa}&sgjSCgPVTEBu>i3N_>PyS{I80W3&>#PDg2+ z-C&+LTVp!;d_np71q1Une^*(Pj*1X2r^O}W@(MA5^kpU+rO!!V9`!*t8g4pzs*bDV z)?f3z-EQ|t*5ze_Sow(e@waI)Tkz)mzPxNf+4^>}H25))&BacY21V|sCjc4R*pUk@ z1P!^`-URWk>@64tRLnxEy$YEg9V$)X29@~XU<}2v7)9;p<`#(}e`FeqEKNdbtc2>e zzbt2n2c|A!G{`(EdW?%GZX7c%dhJ6ccQU^kZZT5>W~V?w?E`A-vcFRDT(O;sI3q)@ zqGe;ot_>t`+uPK}$x;?EX1K)(Sax(dP*7=8hy#5$TMJOugVOo9fP8P7*&?Z8;M z9CNJjYW05GVxS&0e^?uLCJ&oDz*d0^{k7!vnU;(4bNb=w8BV;2r`K zRO-f|gaB@R&_y^A+To|HReNz5JM30&8e^LX&Z~zJix{P!FeTzo7PWL5JZ7@yNb{#+B#pv>4p%<2}cU(|06_u8jNC{!t8J$A^TGVP3n; zuShq*x?C*=Ypb$Tx3aaW>{L~@HY+=|DmxXG)ufd7yc{fn4#8YZsEPP*FHwOb`0U%C z_`XJZdsfype`Q_US=V;fHSnZ3y;BGkC*76&d8&L@W`AF$iv@aXeFW>`QOXN(nPBNq zeLPEG5eSTf($x8i_AB>J-h-t4%zaPF-^SCV6}G=Tm_Z9$rBZll%MGTH6>=KHR|2}Z zn6M*G?2xeoeqr$$`Ma5fQ|R8!K}T!j)!kjIx@g3ne>k@k3oGCXhwY$iz~a;{m|6`- z)ArWfQ>L%6{))y^u}Y0yLB5)wtl=!n~A4r#M>pKkm8 znz%{`f4J$hAfR6h>C*}lHdd<4O@f}wSN*aFiI5?V;GTI%{=Lu;aUdIKtqg9j)WAXEpf5Lf>^@nJ3W}~;=iy^1e{ga*>JtDxK*GPD2vZYQ{Ecu^aT&GE zgxbRC*kfbl6L~8z-nNun2n(JMrFU&?TQ8NZBlq;!JPhInmXWRAZviafKx5h23>yh+ zdKJ&(RWFBsI~s6*{$AN1avAjNgUjKvJ~V$Xhq~wT@3wL*-C5H{fXKc4Rtv!zY zDX=QYpb1HxQxPm|0rr^pCN_s_p;8Q#D?CPAZdufDwI4@Qiex{C@ zJq`FgUH})Iwr%6BSX-Vu_k=B?sI{knNi{@N(0|I-ok1daq{P)uh1hM=NQE!B6He@F zj5PO0%M0|GrnW0N3vFGR&^?Os~+@cQqSDk>Z0xb!N0zuFmCQiy$nx9;3@*=i8G0jmBmm_xxc$_r z5UGvw+o_`4B5{++b&PjMF%d~2a4_mK*{}0fzKyoQIRqxCZrR{?S36%*C{|r-n!baz}O0(wRO}%gW=z!0I7>!8Ut(Dxc*Lg^{Ll6g>f<8rMh=%8S zX&B(&V)pVXU(7rOC?R#ZyvJXNZ@i@(%j<2#msInjiHA#W`x$Age0X$&3`Z4P$A7e) zoK6w#2UmC%;Q{1J-Mx9FHxWu`dJM4M4--#0p5C_A4qDw+6Km=1U}(30nK+o`@8HY} zXuSp_)jX|-;kb=PO=~@qs!pkAF6n_lPiE&NCd8b9xXh7Dafw7fyRh+*ad4`r#Et4MfBt>3_r2Z6C&Q)5qQs$l_bw`1GPK7clP-q$JLS^y0(k^3fP-=wtL*M zSX-Dh`TXu!S}t&0IeaUu{m9TxlVoulQ?A9)narSYI8uvChXDc?XT%O>7Jt`BDKf<; z?&5Ez-AY1ia)IS`%K5?LqMo{qDRDgCxY*jMPK3iss@~bRxRjuzzU%(vHVWv6LQ;iD)(qFaB0R9zaCdA;Z(6_7*VNE@+;Z_~N)4_j-lFuq(c~ zI7hT5CrId@>g&4O6S0B2yW$ksf{MdRcJJszuYHMI*JiUBcPPag2!CZe0hwuZv6kBH zLhJiX(cPNQZ}Sv2z*H6#S6ii>P0xMpfMDeW*#*6Gi!j=(1-pnhKsuc!4x8p&#Mziw z1(ETwyJydWqA!8rf+Ewuji0so+xYoj|2BRW>Ni}elG|(IIVx1ms76QeMKyXFUtf$q zi!T+^o;2U8nwXhq}CeK&PHsD5oyS4*2ZpqWt7j{y&4S#3Kj7G}(sFRYY8I*QK zqVCl)a2H$WEP6|!*~k#BtyRp!ThlqK4{lLsN!^Y55NOQ@7Phr%dbWRAZkg*}mfL5# z`Xn>$DdmG^x~nxGGNPYsraxdWZd-vLG1D!R?+i|%3<;C)go9TIJ49J?m}N-knoNg% z=4qyVM#nlMwtrW>66Cco4Edp)DYw0OEi@VzYY{7#XFEozlDkGG1HF>1i!V*U2-oQ? z>3&Ik8YSa)-{rTz+K#f;idgwngaCT)a_BwlFMs?d%k0usgG1{-SGCf62)%`L zl%4RE(_g-!e}12HwtwMJ&-17hzE@qhW76bM+6A>5?22!#ayCrKfns+ZD1%U}fG=_+i{5mUFhR*=FdUck!iJu*It#G+6gia{AtTPhnU103j z78f9l%YPGuHJ)A}Z<9^30e#?;<_P$|RnwIC&O2lr-p7x-$fD~$*xLU}+t;?z>E8N2 zU$OGS?-6`;Pzd5{8qW|io3$&MF!XV%w$gGG=i@EC^BG-`k;5ePExX(7X4J4kJAn_O zj8zC+Hy&|?DM!IA0Oy?Xl&w^@ZIKCDe~Yf0TME zp{+Pzx!yG+TJr1KnlOt25Ps&jo$Qq4wtsU%gw+?!N1WoI$8%%_7u}5ILNk_{c|456 z#eglQkN~hn+1*_$>^EQFDQN{u17lJjZ(9swzP9miba(eiXIywy-xnSobwyD-ZIy5w zfP*m`D-7o3*JpC!9|OLJE~q1L5I&mYz}cBpd*q_+96Nt?UkN38f32}nvX6WtDXuNu1E~{q zjpJ`>>RMIb1plBqPrK_}f1)}?`HmS-*NVIr7mTjrReYvjncO>wMxyYr5u2{_;~uu( zJY`JvZAHxtm}rfR+)30;Gu*wrn}31=g&iB`L(62V^znQ^Js#CSdbC0roO#H>dDz3k zW)G=hWn{O=K>JXqS&6SLjnt4P7#H#l5t2DK>zPM?eERv}!Dr8+@rv}}SH0xV2$q~Q zsB^aZWAf)%RfJ&58)(*VmmRLaN#`PgGy8TUJhGV2LZm>CdKT!1r^)W_3IZ~K z5E5tLH!lJCCTl&!6!|ss@3$ndCl}45Owd{~@ra=(94uFn<$64xttuKEjyC!f%LeF< zG|Cm9K!^Vb&pK8=z zxjqj6_Y9YSe=~>daO?QI#v)q1v^dMn)?t)2K4>T<0wV#L7z4Ta2oj)N3T<^-ouO+> z7`?l@V2KA9>WKWET@)dv1-fIo2J)3J7kO4eh#Y^sbqfvnw{I;6M}I%4l8FTGiXeuqraq-eWg3VPU}kw3=PknoXF^xS>DEt0t5c2$szY|S zYAG6j*!o(a5BuF#m$|I<(A+Ym7-g}h2*8&LYB4H^0lj}(oqyLWyk&lys$>jGB)?*g zH|*me{z8AnR%*OZThR&Q$D!XnbZCc;rnWiqy|1b*C2s_ZS@*;{-M-3anbBt&1tZ9* zt<|=Bda^z5EW`6>uNAS0KI*_(l<5p-8Q04qt7~$v*sUxplVdXR_+bXMkwqS5rd%El z16JI~@X|>7SbxC;GY*z1T2*DyC>!g25}Hp;7TtcE6${vHg?x-E2GXgisq{&=xi2n% zGF)BPcu9#A&*MqZX)%o8z65M!zPmntoIieC!*vMuH}C*xx@r3jR|aQa*x_L-rP=hN z!~J;D$|e1hw{i&2=$Xbzp}Oc9Z-&!16WL9*4s=~K{e09KK7!7&UA|k1U?K2Yh@C~+ zxv<8WHc&j2+0Az>KdQS2&fTH|&K5D|hscc}MWNlQVgNV%tZH76M3p_GtI;>=s$$Vg zIzP6tgn!dTS!B8vIH{V@WX(_m$|~fZbIw<21q~0YK^IGljiE{?n@0(lND$Mbe7@B?OU1&%N5gzc2X!^=-hW?eSlR?jk~m+X_fk1uCJ_f`im22C zHim%@R&}-3~3L!8Bdw4M9-i zRk#ED7>2*=(qp)`6&|33?zTKt<+m){^6!d=?MO&N1BGIyFybVbnFa+lp0R~x(V;Xd zI)9WXX+sH*2Gj-?%x?&ai$6~Bhqy>X9HCP{t|^HIU!%U#@F;F$N+Jxggs3@;FIqUl z!^5L^`0QznD8h$>KRt^AQDk=_O49~HCT9`C*)4OH1Q@Y`W(JIn-AA$xwZEh=ZUo!?&PG=JnA`~!Y`pFP7z)#s4N~3vHbsfl@lEK3p*>2E|A!P7;0>2?ofnjfD;OLOWBtg7!!PWH@u$Ifl}!#!Krz}LF8e)N^n1MI_jtkcpVK{B?DX&H9xd)YvDo+Y65qoWwP&oK zJ+bM;-_t#w?>%D`?Kx{`Pp-64{!eX$tq1Th}U!9Xx=ZeVmG_O&3Eoz+m~IR@W^vPcar`npswgw`50RMhm+u><8u znPGC6Xwf$w@S~XI!=_Ui$}D!h93mkP87!*w?qJJVan)HVwsXQs5(RA!7$71KomJzJFen?ZWAAkAb?bokf zyhMrm+b_TS=DU;Ez|1fQ!6GFT7f2R@2SVsCNjAa=JQWbH!U!Cng-{ZQfUBVpP%SY; zAiRcJ3W%Z71ypFr12J5CdtyqUehy?0C+#3P5#$=rJlVOqIzXQCJb#*k7#JT;B~GBM zhJ!6Gp$d(dzsgR!oP&`@1v;FBkwiL9b+`&A1-VUaaTr#6bT~Ci0O6VoPKBRZ;in`Q zCMK`aptSr{OOr*sps%jF7*7~X0%D@E1CIogZnQgn@CMGpb8<<+9E8TF#ZTE2^Ew@=)FQE(VY#aw5{Pke#G1u(F3qacv)MHU^Hw1d>W!%dDv z!A);nNlG(^rVkTu=qUIsz&9#p1k8f z#%DpjhR{+((uzWd;^JF&5`M2B2zq+1d^pR+?ZH}X8P!WtszPkk-F*AmT_dWzKpuRwlTnD^1uRl2dE?H`=2X%yqg`m5!5fYHFxlC^gIsDxJ;EVfRt9ZS0V? z!7iCcRX*1gPhedk+tO5I9)V$n@hRZXpnonpdX}9NU+n>S*Uv6O926niI7j1w1lO0eSmWZbXeY5J&WZ_GO%xRPyQCo*A0C6(TxT zXMaQd=Lr9KivN6u|2#Vfsw$e&n5w)M=O4E5VGRbJBjK3!9L6FN&s5*p3(?o=`1BvO zUffxWGie9m+o=&MdSl#gCM^Kn)@_KdRbeZk$z-_!s$LSLpv8=$a?eZ}YP-%QU-H3HFbbvO_8wCxw=#cR*;h$u|&ZNz$?tfH&>+Csv+uKMYmXACLj1}z;m>a{eLlO^K zaUaJ0PM1H@2|G5owL#sNV^`yfnSYTLfj7^q^4h%6`{Se_Ond?Hfkv_1xFdmV#*3Ps zH+}po=a5h9h6_ESf%sa@54VMW2rcAWHB~L5BdsE{i%M$YJU`lqm*c{Dv;G2~Xo2;8 zMHo>0eqFfl*JdK68QHXPCJTm@l*|HmLp*U81RGBpaLAke=Q6uw4+9sra(_q?{9!(y zD>Lw0;lxw%Qc{yRV!5UaM~QF9a!naTW_lZ?TN%ot@Er=X7V6}~T!kVv8*<7lP--G! zrcqgH5|;1=%g!TPnH%k}mnDKz$HFkaCU1i%!|jy3pkLV}q5H@;uq%lL?!J|ZSCkf- z8*5Q(ej@_$L?{nh0~sF3@nq+fl5_vSWgADUE`j(XV^`4P0m^L&LH z7P!8!P>Z%oZuJw^=W#b94X$qTllIHOga(8P#(9l@OL?4*1GJIz7hiK)=%APBKUnT2|9&izk=XVePJ0 z{|lTb#KT3j^7H8_OHh;=3J}%==Hfw!`s$LDX=-30VWILh$P6^D!xA6u9JP#S0_X+G zOdVyyd%VVptCBFzcq?rln%FG%tT{KnfzK@> z)7DjFGEQNg+PzV?h9N^`{x~=7g5z>rkXKS6AcloJsT}ndRa7 zhcQuwcv}-^?SWA_tV^{Rov+IZ<36-SW*Iv*$jsoh2Y;8(N%^5I;oLj5fs@*`ZxnrE z{`kdon$>k#)moh|_K2QYAny}OOYcjFH`t1$qUx-AM<5RIwr7ImNJqbYyUJ&9_g1pv z8`43vpK(Osh*w{WO|)G6IBJgf19Y}Ja%(stG+sXpDjb{k(SsXOvRo@!y>@6uu{|Z6 zmVoiDTz_w$1K9EW!4bQ7Q{K*~kp4ppL1tV!L8IpBW+-g>Ek&GSJ1W~l8Wq!ja51)- z2(PXV=Ztxb#3jxwbrhi{({c*=q4V+Jq4dqigD15$9}gc$?|eLbT0ee1>{r3AQ^>!I z+LcgZ4Gz>Oi!=+VNITjy{d;z;0Wl=@+a>a#a(_(#gRJNa<3g#=NocH?I>|qB#c&Z1 zCjyksSTrSkf9#^+LOy^JP`+psif4Ux!JX*&+IdCc?rc!^ERXy4vKrK@3s^GKhCoc} zc2<}^dGm98GHx?@?O27JP--=Fc%7}btV1np5g-CETiWVVn8@Rx!7b6k(z2L&@$zU6 zM1S0})jc?ZcG9cev_#?3egy=MzTxJ;-(|}%V`b$iv0EZGk*=g?RMNYz5>M`xkvnbYwz?>aGJCi(dYI}7 zw?RE+c@12ST@_7N%GEg2UwEd!(v#Ul`+tR84mg?g?cbIP3#~o4T~iy?{iJg8op$9j z9jHbnOulwNRmba5xsk{u|7d=#?Gdos|7yvz5Lay%hQ**+kZNqRAPVJ8QE>`%>}C5m zmnkl|j0-BG^rql4E~t!^9F6Z}C!p2Z$KlWAVtrYXA46In;Tf8PmT`R^o2m^f(tiwD z)i@(&LBS@r2gjokCx7oX`g(HPEJkhD**rd(7@wx{CaE|Hb?(Aj$_1CgBXr>{<$_D0 zA=+%D*E4ehiB6&^sQk=#8c6XcJi}S0iKLmJ2|JI^Dh#bKw8GE|L)9SXTL#&6JlUc8 zjHX`BBLgX0dCp1Zh=hyst^~bCDt~YgL6g>aw$R@16%*MdPs6wGo>toxLq*Mbo(*mu zKjz;(@#b*ca2T`?qSxYQPrgAw^cn^6hS$I@^%5kdY{d)Bt)0~%ftnE=>Sa~dTvTl- z03p|R2o3n-5$caIZPo>PZt1tsQWU(8Zp#ra`*?Lhk3t-EPn;MNM0p*uh=hva8hmPfV!6qNv@efbB=^>RWY9_T}4{Y zdYxi1ck%K9Z56^?@$RMYLT(k)0!kNaRh*#)(=Zl~0A?ztwRTA5hFr8mAQw7Bu`rM5 zO&#^Wh`sPcr8k5o#9T#sQKPePoVQks)~yz;TP<=!AlEt0ySGK?RDZamMY&>Pu|;*i zR1PlrHI$w*YiZ0O%{NvXnux6n;k|p`qAc5|or^c`MdY5&)CKg3`BeL}=$P_ax_OiA z_;Av1hmSl#*(R>LYLT8<9Nk3JCLq*0iuLFs%AdBbVTQVfrhU(ELg7v--)4TcS2XaX zbOyhrBUL`; zyQCT&BB4>YsJd50`?;hqc#jex#x=P@P%D+AiX>!jORh9c;Kl=Vw_n1o2dG_twTZ7V zY&y8f3&@49my9Bs)9 zk&yekv!@u})qhtk7^rS{Z$-`i{&LN0%styu^Q^n(3(R{Br{@~}UE3B);^a#35;VnY z&K2HLmUx?)p)0X>@pUu0Mn_|p=woaRpVjDMV<5Q-qyQ{MX_(o;p?ag)3A?j>=XHFA zbRAo+!9ZPJXJN;4)LC{e@$vbBpDw5h((lJ$q<|8wzkge0;yx1viN@~MVd{{J`eI=i zZI$Q=`nXEO*@ZyS0@MNIc zWTWJoSAUjAqTycr?Yp~_@phps{#B`87wXp{h;)&wdoPt|>G^;`79uHCYh5paisV2; zVEwG!@;rG*#!)Q9X<@bLj$mu)|ou)T+7CHCIl}m9DuGHJed7SFbi2Rp~}m)Tj;1t=yU~ zbe}IopD)a)T1A;1yU-oG;Et*GUg(j!;E~#}I84%qBpR@k+kh-+seuJuG*I}>rOC*r!&HD9!AzR)#aI5l7BnlGH1 zFLccpPR$p(<_lxAJ)P!#)m!mZ!UMe{Mt_b*q@Q*sGpC70YquiHtwml~t=z51-aSQH zt=z5Sy{#SJus>*t65ute(5M0CsWCQgm-5yKN5KA(ZOPqz0X5Mb%8z& zeTHEMWR|!M4iCIS2;<6%x4e5(o#MHoZQw-u7ATPdDM1~DvEeSpdIN3U@?}p*bOQI^ zvo()@1b<7ke`F}y3-+doZ1$zOhe%cT5Gk%~)T;dfWT%Y`+a@_8LKB>!yk&d@(HfdW zi>C_7*7PO`4uievn*KbApHzy*aOZZQJsS4gNu%Meyde&|3ir~{t zVg;BVP(WHuLxFT6TnC6Rb|+x=^)N1Qq#T))d4Jj?h(PE-Gbs*$w8LIeQNL}`3e@Xn zUk3?DIJ1n?4=Up{VErR5W7K-+=6r@~mf9}a{*kj`Fl4u*gvrE%4wLB(EW5qRJxD}J z9Y;wEC8O>*RQwHMzBmu-C~B^%@;%Y`ud1qqz5Whu?)QMa|3~#7d#Nl9>0_1seU(?) zY=18;W_!~VPKL7CyT~B(Wy-iKV|CZ5(cVs&fG98(qHOXO!zsuvMB}Sq3L%^p*csIR zu)-59Qc7p#05+_FEI>-)s^>VSFo<|WLc;adglm~_V~@G#sI-nl(XLN*9Bw_~`1m@h za(=IN4=@>Vj|@O2+vN;vMB3d>vCd=4vwydEDZoAX@X+04Vi9nh|Eg&mdy>sBOg6t; zV&5n8HA7_IH$O$>2U5ES+;3#7tF5i>x`^~qryZJJbzDTc@=+Gd`><@7qu-sab?xam z_~Y#}24iv7ZwP+2h=W7;vj>%m00|Bo2hqp#4~L(Cf3Pk+OE!){24YF-EqL%({|-P_ zVV5IF?(?0p?ic)r?E?4IDaE%&f4 z^G(HeaNfCaz$ukwk%ihSUH7#y8rMk`*0va%5k$g#;sfx_qY?08wJF}-LK2{8mR75t z+{aMA5|G>f6akOpX+zK))3=K0me&H2 zw4t-9hddxIh_)bNg0^#-v+5l9H#jPQMUPuCYl_+1QKZ{^G$n5Cr^JmZ(v`X_T7Rai zY1bzvip|z{U~$jrdebn6_3&IWaWyUo3f;_HoEvW=0)cS+soBQ3 zvOA{X^r5k}ud(@YJG6_-i7=aAAzs~{7R zXe1wAk~}@+0JHLS%ZAz~REM;PEq`wHW2gJ}DH|TeUB_EjFHlt+B|pS^t@tM}7~?W2 zj}Is1=nw+&*J^aAO_~vciR4l=mFe+(oWfM*Xf%9d2%~x=G@{_ODT3;)Alz0-lFfta zeZm-eGR7C1jXSWNdQh2ILLK!KaYp6+GY?W%jodv>NrT)*0;2gePhoxJ!hgx&J#q0B z>;3~5Qtf))LekxjTR~{Ef5XVdjNOK ztp0~F8us{o9M>^+L__!UAXdXQ^MO}@58yp8+e0qLIe8*)DWUDodX!sO4^JPM-Kd#N zr~DJi^eR~~zX5^xD>XQeIn44RQFA*#UX153xAobaIFDS>W8^Sm3V&W>u%gDPm-9eW zR8+GrQNU_&8FC2kyOql_B+v1YyoGw@O3ha;a-Ng~-$Kr_;rS>#lRl98N9P-rW$wxH zYdg#ETs(^1UXPCA1^jn48piM7zv<}nxE_5L{~i8oAUqxYX)|tdJ4GkAQvsvbVrz;v zTT}RWqB3bY-jH6CV1Km~dONP>LUNbr= zYWRtLSBLD6=uy_z$@~v2@jsN8D^nRWkgolN-;*rD**oJQ+9RrR9tbvqnm@@9gCT9E zS16;TAK}5-^?xm{-c9SjH|hD=-;9s_gUj5oqQW91M}yZ6U4JeUXx{xqyv!#;9tH|0 zA1c~4u@*aPkH(>yK)&wjB0Suk(4LWo1N8NXed`s<*RwCSO0+l~mYkA?;|0f3Jph)_ zP(Bzxf*E{NOa%K98=W^eQyc>MqR1?ys2tdP87>$}sr(p4qcE4_iVxBjUkDpT#?kAw z$xX`f#>rr_*nh8xn~!@}5V(xS1iw3`^xs2z zk$i{LSGx4A>AqE^ZcX+s80EVZ_ba5^A=$O3?`MyIAQUh@1RWMUek_0g5KIE*J%w9F z_;Kzn_J`IGeS$)#!3Y?IUUT;B90d^Y<8y@9#gM1xWHR5Nn`-0`|0~Zb{fdhXq4KaP zy=7d(M}G-_Q}{dY5z2UqDC%ZqFS!TLxCc~`sK#4~sKTkh*Na;A;;HP#XIOYWIohxK z^#}nOO8A}k%TeB{Mi=b%N%e&XWGDv&J$Sc!_Zk}^njjiL)k7w#y0c=tpY8zCAPsqt zj?T>r|L*U#+f>gJ_%4(6?{0TI<$P$%8`<)qY=1el6Bn;KasU1AC(Zc*p4LeC;3!E5 zRU;Y|f&)W896Z1aF~CzD`FD0`WDP$euGaB1DIYQ*?cp@Lal%712 zL;-)3+n#CxgOf&|X#pIwu%8A4e{+y{$cOfSgXdQJDPP9i_n0r!`JeNNb1-DteYQD> z@rWJ;yGph(XN`s?7L%c)6o=98k0Tw7jKw9l4Z;+fi58M8xw-ZX@j!vHM+mvom96k! z*$Vs0hF5gB>JRZBy7WKAe?G&1o}IhQWVpj!qv^bBc(wG*u|*}lUavBTf44dx$lD0= zN8<-xGd{@`!-Gc$6A)%d?s1U?K+N&CaZe?5Uop9P{W`tQ2#7R{Ec<$^^UOcM@^V%e z)=rgfOzz0IU|<4iTe)48BDa((`7%U)$&R*+DEA@*uH@xd5mZ_!p zCL7RA77zBlK;L77c#l{B8D`#Mjdi)hpdyDv8icgs?HM%F4KmmTYt6tJ;EiT}*e}^; z=X*d6+i|v&sWtR#!AH4ELE*^AlPjUHUml%d`%6EH!4w# z3t*^_m*P}eu>eY1$jSCqX;%^#q0k?YUB!YU*3B~d|38kuxldQo2IS)e}}Oda4G{NB)t3<0L{NS-zvSvaE6f0SX8}L*RdJEK3}jyTgfX4 zHfcBZ=q-z7Y7_ zC~zdt)clQ7N!WpG-ysL&(J)=zfwZ7ttn8XXMEE7n+YwCuMI1^CpTl{dei5 z$_F(WBdc{8e{Y*E(qE;aWQH<8hSbV#x*U7RQl+fSx_)HuK26iPDVo`TU{Btb;)HlH zo0-1rs1;_FD&Z@t&`zoj63P*~?H|JW!z7o`jG1AAdP~r9DdGW?S7qJ=L_}q zSC(;zFLWrOej|5ClormMZ&fn9$9$Ph%Susd4B?B0fBbr}$S*1CBAxzzNitC8t{xqB zT_Q5&I?dA;>#pFESPUd6Z1>`zC@!#|>gqreJC)_*RIWw&Bk|NB>$C3+8!w7XasSn| zed84GkN5hLuAWjHDn7~MTT8S-8dELWbRSh$LSGMcqXG=l&97(#${6f>KRS5A5e?>1>0iudHvupG;!p?GPXF2tDQe;sl zNoMgJS(`_R)%nnlYM&KO>CV~0D{GeFGgjw4)PL-<&(tSgEp#h@_F4q|D&l^J2wrSWw54p6$G62OclU;j z5~purl5TVJ)v5SVrfNdHd`JTe|Qi`36V9T?s1`pK+NMUzhn#Z1^J#WjTSyi4buOn zrg+KwV9=_EL5uBxDMrQ_4|&h?sbJc7uPtwT)}HVv6G}$OQXj0TED2l3UxRc$C-&XY zmGVE{?XGCpx|zt^&74fLTAd z0GWLk)Hzq>cMGJ@J;JNHnvOij=>Wpr`w>UHg_u~JjY@$WKX$_z7-w7cIsF=(PmYP7 z*t>xh`TOXq%I5A9b~Ozje`=<0=ymq?ter;S^?UYa>j}-y2STttKR%$QKYy~L-MlHU zLCNh{{bCEdj|ZLm#2|7EX`mX}XphI%>%NH}hh@OB>xSh~42-c1tzcY)+n!sVsOJ`1 zw5SPy3w_VLG~tqgyVBm~`IAjdP;M@dN*jk9cdt;aXxu8Kg{SPnrqgi12XfQiC4=};JJS2_} z1c-G(FLILG365q#L==t7X&4t=9*OEaw8p>-hk^_Yjp9j($S}}YrzMr!64L19{^a%d z`S00c{bM;3Cn!GLf3Y?WDg^MQ;7j_fWgbx zuiw6W@#C*AUdtBn?dl#Uvr=!-)blevt7ft^-?q>6fEGF_}FxhH(f*EWfrfL2}POvAl^bB;k3v_75tR=ye z=vY6$z6|U{e_GL2F$2k#1jxQvBiW_F&G%c8c2-Uayg?95*|`9l6OrZ{Z0NBVK-9{2 zF$3iIP@Ib!0Q9s?N;>*rE;j)h5vxZ*Bw=Pg^7+Ur)uy^y01%=U!*v+SZg(zjr~MBA)Gt^no$E-JTmlU5D2%s|X$UvEHR zikT6$wIlItB@{O(?bpA({qmPrFHXMu>Bm^Mf5>KFjn`A4c6jO3eHmHokEKe*314HY zTd8c_75OZ-* z0#ov?T)<&--$GFdcUvdrGX481Lpnx3e*}CcTT^G^$KBo8Va)#btnTvn z3hw)2Jrj^G10@1##~t3N(Z4j(`M@i=|_ z_$B>(dA#DpzbE03`>Wndto8e(e>uC^&wD552S-(T_XBmDiE ze?Nuao6XhP`aHRa;SVHC-qVkx^W-b~@$@`--COR5N6()1;gVR`lw|iODT2%6)wtw?sKiy2_h1R_hjqV<4(g9RfmB0AcDuTlj&IOE zbQSr^`h*LLO@?+@MVv7BM^C-DwC~FcIuILTI)qAbeVj*S5)!{5m<{GMqJyW%bDSro zU_!)?Bm99p%C4*6Upkh-f7aRN!SPPzA@3C%9D5v^|&!*gd|&K_s}Bvbcenb-GjMM|_A1uv+) zjQ{=-|1n9ZI-3)cBV!6Z{J=e-j@~%Bf`|-N^1W zLBsr^G@CMiDkA-Jev{!F>3s`BrrYs)iB@|xB*ELI{C#)#**|=RNWxBF#KM20R$-0# zh+hGrSOK9}^%A?a#LK1-n;zHWv=w_>Cae9=_Um2>=f*t2l?3cLFC^g6c^x5239$)U z&lR}%S+eTcrHz-zf3xw@V#w3@I!WDRj8xNub7@I+zk|B5=439GaIz39IGM(RLAly| z?6p`{KeAiXy`ts%_|Qcy^M9&!%?4I~y~^)j+D6ik;$5GL$CFuJH)%1&wJ(3(-5vdJ z;A^ecAS5Ilb~(^WqKWB6&D+8OW~yvpCLpA6Aw?x_T<}v|f9VVQ0V_Ryjv8|K&jSBh zg=v2t9oPJ8A%4xpuMjiA+8jpzD2_RnT^(5+?_RUU#DD0rHH!FDEBAG_%+veUEG7CU zGFZSOw^*z)89d!5UU~5BFZ+UD9t?;3%uor2xd)7aVw!u;4i(>wm#BXj(?#R+fjk%G z{d7}#w9{N3fBjP@6OTmSgc7s7N(7IbCgx0r<^JI5U!L|>`-4Ay{uej{2g5)AB{~=m zo<1AO38plk{RPu}{^!pr&F6o{G)IR|<-}u}qdy&CnrBZxqcl&4(ZSJRxbrRQ!ua@*&90qmPpn5B+HwLT#IXHpBTgYb^ zxE1tFf0!M&vDG>p%tzx==pSlZ_aF|msk``iO?D>2D1sM#Wbu)Ax&HNp^ecPg6 zTl=>S_qSO23uS-xi}Ze+dD5!wt-a02#Z^>b)OfMZYSqQy5F9 zT|r<13WzTT6cDz#y4etGG#gHw7T|!$|3y2P@P|o%MNI{F*IHJiaz|JgtVP-IysdxF zmkRtdd35OU8Pkz;XqW++K1qBg=5`wEon2bw*~OcnJgy5~-}9R?U}+r^J7S*D_TGv& ze~s%$tLNfp?@18vnY&j<>p-Qy+v%BPM?<7Wn&UW@Op~3=lL+Ld+cv2wm(fU~-?f0K z@2SCCZWIe`otG;ZjKtK{5$e)vH75xyyoouFzvd}NDPs#ALFJjg*;L}T{-9wp1+>f3 zzSYW-IQ2qXJhM&4AVTO;9lWU~Z;AuUe_f-}VZj23?2vMorGIFpkqVhA(fz;|mO<5t zMIVfE6yd?;LZnB|q#5y_tGdbO>wv)XmFs&vg6?7DGekR4 zMA5Yf!x)C7S4}r!q`jEct=Ga5ZL8JTL;LRop_HxA1l}`I?TpZ0vO-U*oFQXne*_%< z>Ee4u^OHj#U9@uhbo<|4sAvzAx(j6}bokVw`(D~rVTotOd8DvYL?prv2nS8Mq@=n= zW>0QSrCE7?vdxA*(gYH59ust7y@@v5JH5BsoAdv=gm7F!WCP{^>Wm!E2kByYm0o1P zwFV-Ncc#6xAqr?Ge~M*{3(cZHTNF_A{ED^ZPP8tI87-eaG7MLi)~hNz zAxef=>P#>U47wpP>5iv&VG-fxuT=i}c|maEwL(@cjCID0m}AxQ$RQ;rXVD}FZ|WXn z&PU;7w7iKX-T>=!{~$KzfJ>#_NFefVbtKZSvgIP3qS;9hM5g5|8{#k~Hk(1)oOmSqV_+qiD%;={aEvObH0g`fi0m(*Y9&sPEniiMy`EMhq zbr^W+1fFirtr|EK>N!&_aZABQbwr+G%gv(M9)gwhn4+ZZZ zPm}qti_5p=#{l5>o7MJ$`#uY-IJa zWx8$kQ=C0sL^sFq6DaTSu`fay40$7wiC~Ml&==ofOH2kyhHS>0H*$O-eaNhEk^h`| z8Q*ViZ}a$Gme5F8-kA4+Hh(jVU97DuL*rCsmf$}+9YIBFskHbvCxb}vO4+3DG_qR| z3;cuTbhT@}dt@y4_sEm!zNLmV4%QM9$lzo7^7{s`SAWprjPrPFe6+F0y4AK$s2J}h z((ta@&mu|2t)!$>ZeBP0nLJ3;kZseRHp`NSzfs!AVJyXIX)Pl|zJF&|B)|4@n37vt z;lHsJ{(F*Fs64Y>pOas4-&C)xsjk}doW^;t-mmnGRmODni+B~InToa6b$?98SMaaK z8Hz}9lS6HnW63L;NI`jwJtYrv7`>aH<{`;=Dr`~^J?{@6Kh8s&0LEK$W5zzZre0lM z`3oSi(zYVVpMzQdp?_Gp&ZVf${+!t?$wbxrSNHmhbRq6a&Ej4sv%SxH!SW_>3wYv{ z96lL2VTMbz55z=j0seeKw|*ZEP)ovkHM3ewZw*}Rn+`F;hTz^Ave+{%Jcouv-X)EW zsNb{ZOxeGC8PpE}&Q;xUCFs5Zc#lutt3cPOWV{ei67{(S@P9;=<%l{ZB)TeNVoip7 zT8x;{ev9!hY9#utfP-hPBdBn^ZYzw}j#~S}k;TvVGfPgPl5y3J49+}dVJMKqy(ng1 zT!wg!Bq&BRn&+~HNbUTj5*l?zrzZFJa&#D1b;135!wP>siEu_rJqu!| zFCmjTH3t}~JSUzTSTgo{aO$jWaJ792JBe zf(d77&AiuBbVjWjMWn2CBklDGAhN`NgoZFI9^WC-p1jA8O9!TDYcJhPVEjZ*s14@A zL$)@f6tWA)DQu_QAp9au13ZaHp$bj0&yNqVr3h0cRG?9zQ!eGz@qD}@51?l&UdWR$ z-G5~fug)i;GCP!COphWU-nC~Xr@S;)-qjkcfz-~{LFY^j zFECgX(P#mSYuhE*M_~-$`v)u)-wj(Ym!h|2tc|tP8l#To;}o=YH92Yhi)$mbq$H6a z)v<9JkIId>P*`1Wz3LYUVq^-u3e&eHVSn?oXSpnb(@J6v7cc{4q|06f!|3jgK40J? zP>5LALpVeczYI>ljP3?cBp^0~m}&7Klqtz^42Po&-161s1toYwn6Hi}G3OdzE8k!8 zC7OWIkR){>Rp3Z@9cQrTJ*_GscH%PCKttN+H2IZPa`bSpKZ(M#zr8s)-;csK#D6us z8T@A*9mK)E4uRL{1^@aqkiML~UiM-Q-b7=+R$f?4JX(2SLHI6} zbmh%Efg~~fxJjxH1!C*SV~{~O*ncB#J`mCnSiba|MJgznKo5EpbW$$Es82tI>;j@; zGV+Z%9NV=QttQ2|NeMjLP(XSyoo01iR<%?W{G`A%)JzkW##Vgss1H#%HCO0t-Q9() zFoNA~7$%;tC*<{tK;n7lmdhAj@D)-&Oep87W5*O6@g`YaU$4d5`ns%GFMmhEA(&Xj z+!(Q+rQ%i*-@?g_?|A|?D*%GDMDa|9>Uc#K+;^w%kOcgLuI?WqMG(4)Oh6bd)>Kk7 z!dXY*lgk4(rW{=%6dLEMhD-F`m=jze_8r>2?jj7i`iR|g7Gm{>_i4DXo_y^zI<`g^ zc8J}DYLG5LmI{WR_1G47+wya3c^}b}Y{GEY;h|gQFOJ82)3x0-Sa`4UDch?J6 zSNtI@(#xz$Y|1dmiz2JOJ^A5#Erl70P*${6vKjrVOwyUlJPzJe0YgBq7n!=XCmvCw zOtZ+ECaYc}(@M5=O-j0}?C-0rZY1Ct9}mC0`koI6@_z|CK-vcMhJOG% zPLvBMhZf0RHO;afkvEUS$!DKE9sT)G9swd(l0fj}+mn-@UytzLxK8qcto-(>teXOT zk5mKsGsbKq&doBliUn%dS#wp+M!`2#6UGWp zlEGImfBNyqS6_Yo%j>Vcl<;T_XlF!>_JB4QnVgw9TqkCGO}Q8J^tklk+R@`-iAF|2 z`0i2H2-CVj`30Uf(Z-$TxAWRm;=$0o!e{GR0Lbtbc$KAy27jKVMA~y4(#khN_=MO) zhp}4;o+o^uy1%D651J_f+F=t{1cN8dWe< ziWtHCRDxBtfbQX{(_y$`Mc`{Y6o-O0v^oKm~c3s?dsn z$ZXu#Dh@94B7d#cjQfhQS}U zNnrh0#SQ;_0S0OP4i;bgG? zuN(%v>NUOG-rFv7fwr3=%zo&dJQ^9T4<3@y*FjF;#eeUlC9BqF#N^d1RN*U93>5gK z*ehY7PAG9S#Ws`A+QvqUBvS3`X_YSxCK&cXjB||K2J*w)aSS!Peo@ZWFf;Gc1^-l8 z9zT}9!Zx^NCwyrKgyw+o+ht1aamfTT$>}5+h3itV*b?v4y|M<=x$R-~F5Yu6nN%94s_$HbNgDCtR*J_mf_=RE+e*WYIRZ>j0*DIlj$Gau-HOs7x2_`mFY4IBk z7Qnj_%FAlBBmx9**q7@0#L`1yNta=QBmL6+A!3Y=j3Fi4EyhmXUH L18Hko*2n??Qoj11 delta 35678 zcmV(*K;FOEg9GS;0|p<92nb*!u?F!hf2aLzBT2q6`u=1J{_)IIdGKhdWD`E6~T^+u9jHZE7%n4RoqIfBqI%ZpT(zDf4Qye zYAWPx^!iORfT;UAoGgBbc6c0r-QC^RJFl#q~9gl)q$n&^Q&E z0|nhf46iwl(x^zxpcs|coT3#Vixky~D%h({5eEt`k~A;oD3oQpM)VltE3byYhZZYQ zKY~dpx&^0i(kdKdf$XS(ySvM+e=p1_;|X#pH$R}vuH_e>Zde&h45t zPIqdEcAN_Z%`*Mvt-CulVnA#;8}<7=0P^Db{iM# zLRdtL3Tx9X?Hw;50}K-WktQFH7NX&|;s;9bgm&v0*L*&%@m$IE_|-6eGBPR2wrgW0 zxNqdfbYA7>s$A)kMSPC!VXRvNh<&E9s--S*NnRZtImv7$7g;iOf8MWf8LG%D>hjFT zC8|?vy2xQRezT7(5r`+xyB%_$`f{Hl#=27AIw@DvtJmx?gV2V&tzx~#N5pjdgwG$ckJc|z4xXLp3hfZCw-u(V?~3xpY;8=( zz<<;Loq7i7)Hgt87@*Vc0Xp3>Kpl;7_5|<~KQr8y^Ek^Kv2;aj#K=_I zVyIK*kl7{xjP+s~D(z*4nXc*4$wBNBUM_k`Fhtq!1uwWj>1PRX?VN`d!H~%Es4TcG@LQZz|02c>f3@&~yF2=TmXTI|Fp(;| z+++$&Ol{7IPCE*8nqX9o3%wJ4%+YqW%vt^}pf@&YT+E{-5oFYG;v0gUM2Piu ziaa?;7t5;@O+iEWN0b4-67m`Nk2jI<8CZMw7cf+l+B)Eky=OP8iL=cJ&owu_y-u_c z*MNQGCm0h4fAT7=zfafYszK?_;J?fAIvKKS4!pmKjz$youlYO~{0;t({N7M!L)j!) zRQtojLo{)XWu8R-P!iLe9Ja||G#T$MC3D58!nxzA5ZO>rBJ9=7q>1@83HBIh$~2x));yg6IfN}(6N8WJpLyHMI$f4GWXNZs zFJXXXv?HV!$m2+#DRCojqihfI9+-?T#dN@aa#EGa?L}G5vI?(Ngl{`ym)0={!_`WJ zLWUqVf8dH`IuV3-U`n$gqMHk#Cu+8(5oPAZi-4;U%3q=!nEM(#F>=Z$fgd^GINvqIF0vZYPr>$>A=W8-8n(zmbqu zAb9?oXYcW*%G39E$`r-i--?j(dSStw1>+$je;~WQ!bbhD5yzy&D(=+`G>c0BTvwW+cd;mPSUA|cC~%64ts-Xs?OVPFqe5OqezJfHw}BZII$mTvo=`p7 ze~s1#AG2+^GCopKTF(~UQcH(z-z-~H)VaZDQ1)skm;A<0xV;R1S+J`}GE-{-lG)Lg zt&*jD2ef6P=Ri0(9;r%Jq7*XQHYuAEg?BU8vhpLF%n~`fbsy3)YL_2N*�iVY5jP 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 diff --git a/src/shapes/path_group.class.js b/src/shapes/path_group.class.js index fe10ef1a..0a4b95e0 100644 --- a/src/shapes/path_group.class.js +++ b/src/shapes/path_group.class.js @@ -5,9 +5,7 @@ var fabric = global.fabric || (global.fabric = { }), extend = fabric.util.object.extend, invoke = fabric.util.array.invoke, - parentToObject = fabric.Object.prototype.toObject, - camelize = fabric.util.string.camelize, - capitalize = fabric.util.string.capitalize; + parentToObject = fabric.Object.prototype.toObject; if (fabric.PathGroup) { fabric.warn('fabric.PathGroup is already defined'); diff --git a/test/unit/polygon.js b/test/unit/polygon.js index ef392589..d382e571 100644 --- a/test/unit/polygon.js +++ b/test/unit/polygon.js @@ -91,9 +91,7 @@ var expected = fabric.util.object.extend( fabric.util.object.clone(REFERENCE_OBJECT), { - points: [ { x: -5, y: -5 }, { x: 5, y: 5 } ], - left: 15, - top: 17 + points: [ { x: 10, y: 12 }, { x: 20, y: 22 } ] }); deepEqual(polygon.toObject(), expected); @@ -112,10 +110,10 @@ var polygonWithAttrs = fabric.Polygon.fromElement(elPolygonWithAttrs); var expectedPoints = [ - { x: -10, y: -10 }, - { x: 0, y: 0 }, { x: 10, y: 10 }, - { x: -10, y: -10 } + { x: 20, y: 20 }, + { x: 30, y: 30 }, + { x: 10, y: 10 } ]; deepEqual(polygonWithAttrs.toObject(), fabric.util.object.extend(REFERENCE_OBJECT, { @@ -129,9 +127,7 @@ 'strokeLineJoin': 'bevil', 'strokeMiterLimit': 5, 'opacity': 0.34, - 'points': expectedPoints, - 'left': 20, - 'top': 20 + 'points': expectedPoints })); deepEqual(polygonWithAttrs.get('transformMatrix'), [ 2, 0, 0, 2, -10, -20 ]); diff --git a/test/unit/polyline.js b/test/unit/polyline.js index b24e8a91..9f8fbdf1 100644 --- a/test/unit/polyline.js +++ b/test/unit/polyline.js @@ -87,11 +87,7 @@ var polyline = fabric.Polyline.fromElement(elPolyline); ok(polyline instanceof fabric.Polyline); - deepEqual(polyline.toObject(), fabric.util.object.extend(REFERENCE_OBJECT, { - points: [ { x: -5, y: -5 }, { x: 5, y: 5 } ], - left: 15, - top: 17 - })); + deepEqual(polyline.toObject(), REFERENCE_OBJECT); var elPolylineWithAttrs = fabric.document.createElement('polyline'); elPolylineWithAttrs.setAttribute('points', '10,10 20,20 30,30 10,10'); @@ -107,12 +103,7 @@ var polylineWithAttrs = fabric.Polyline.fromElement(elPolylineWithAttrs); - var expectedPoints = [ - { x: -10, y: -10 }, - { x: 0, y: 0 }, - { x: 10, y: 10 }, - { x: -10, y: -10 } - ]; + var expectedPoints = [{x: 10, y: 10}, {x: 20, y: 20}, {x: 30, y: 30}, {x: 10, y: 10}]; deepEqual(polylineWithAttrs.toObject(), fabric.util.object.extend(REFERENCE_OBJECT, { 'width': 20, @@ -125,9 +116,7 @@ 'strokeLineJoin': 'bevil', 'strokeMiterLimit': 5, 'opacity': 0.34, - 'points': expectedPoints, - 'left': 20, - 'top': 20 + 'points': expectedPoints })); deepEqual(polylineWithAttrs.get('transformMatrix'), [ 2, 0, 0, 2, -10, -20 ]);