var Kinetic={};!function(n){var t=Math.PI/180;Kinetic={version:"5.1.0",stages:[],idCounter:0,ids:{},names:{},shapes:{},listenClickTap:!1,inDblClickWindow:!1,enableTrace:!1,traceArrMax:100,dblClickWindow:400,pixelRatio:void 0,dragDistance:0,angleDeg:!0,UA:function(){var i=n.navigator&&n.navigator.userAgent||"",t=i.toLowerCase(),r=/(chrome)[ \/]([\w.]+)/.exec(t)||/(webkit)[ \/]([\w.]+)/.exec(t)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(t)||/(msie) ([\w.]+)/.exec(t)||t.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(t)||[],u=!!i.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i);return{browser:r[1]||"",version:r[2]||"0",mobile:u}}(),Filters:{},Node:function(n){this._init(n)},Shape:function(n){this.__init(n)},Container:function(n){this.__init(n)},Stage:function(n){this.___init(n)},BaseLayer:function(n){this.___init(n)},Layer:function(n){this.____init(n)},FastLayer:function(n){this.____init(n)},Group:function(n){this.___init(n)},isDragging:function(){var n=Kinetic.DD;return n?n.isDragging:!1},isDragReady:function(){var n=Kinetic.DD;return n?!!n.node:!1},_addId:function(n,t){void 0!==t&&(this.ids[t]=n)},_removeId:function(n){void 0!==n&&delete this.ids[n]},_addName:function(n,t){void 0!==t&&(void 0===this.names[t]&&(this.names[t]=[]),this.names[t].push(n))},_removeName:function(n,t){var i,r,u;if(void 0!==n&&(i=this.names[n],void 0!==i)){for(r=0;r<i.length;r++)u=i[r],u._id===t&&i.splice(r,1);0===i.length&&delete this.names[n]}},getAngle:function(n){return this.angleDeg?n*t:n}}}(this),function(n,t){if("object"==typeof exports){var i=require("canvas"),r=require("jsdom").jsdom,u=r("<!DOCTYPE html><html><head><\/head><body><\/body><\/html>"),f=t();return Kinetic.document=u,Kinetic.window=Kinetic.document.createWindow(),Kinetic.window.Image=i.Image,Kinetic.root=n,Kinetic._nodeCanvas=i,void(module.exports=f)}"function"==typeof define&&define.amd&&define(t);Kinetic.document=document;Kinetic.window=window;Kinetic.root=n}(eval("this"),function(){return Kinetic}),function(){Kinetic.Collection=function(){var t=[].slice.call(arguments),i=t.length,n=0;for(this.length=i;i>n;n++)this[n]=t[n];return this};Kinetic.Collection.prototype=[];Kinetic.Collection.prototype.each=function(n){for(var t=0;t<this.length;t++)n(this[t],t)};Kinetic.Collection.prototype.toArray=function(){for(var t=[],i=this.length,n=0;i>n;n++)t.push(this[n]);return t};Kinetic.Collection.toCollection=function(n){for(var i=new Kinetic.Collection,r=n.length,t=0;r>t;t++)i.push(n[t]);return i};Kinetic.Collection._mapMethod=function(n){Kinetic.Collection.prototype[n]=function(){for(var i=this.length,r=[].slice.call(arguments),t=0;i>t;t++)this[t][n].apply(this[t],r);return this}};Kinetic.Collection.mapMethods=function(n){var i=n.prototype,t;for(t in i)Kinetic.Collection._mapMethod(t)};Kinetic.Transform=function(n){this.m=n&&n.slice()||[1,0,0,1,0,0]};Kinetic.Transform.prototype={copy:function(){return new Kinetic.Transform(this.m)},point:function(n){var t=this.m;return{x:t[0]*n.x+t[2]*n.y+t[4],y:t[1]*n.x+t[3]*n.y+t[5]}},translate:function(n,t){return this.m[4]+=this.m[0]*n+this.m[2]*t,this.m[5]+=this.m[1]*n+this.m[3]*t,this},scale:function(n,t){return this.m[0]*=n,this.m[1]*=n,this.m[2]*=t,this.m[3]*=t,this},rotate:function(n){var t=Math.cos(n),i=Math.sin(n),r=this.m[0]*t+this.m[2]*i,u=this.m[1]*t+this.m[3]*i,f=this.m[0]*-i+this.m[2]*t,e=this.m[1]*-i+this.m[3]*t;return this.m[0]=r,this.m[1]=u,this.m[2]=f,this.m[3]=e,this},getTranslation:function(){return{x:this.m[4],y:this.m[5]}},skew:function(n,t){var i=this.m[0]+this.m[2]*t,r=this.m[1]+this.m[3]*t,u=this.m[2]+this.m[0]*n,f=this.m[3]+this.m[1]*n;return this.m[0]=i,this.m[1]=r,this.m[2]=u,this.m[3]=f,this},multiply:function(n){var t=this.m[0]*n.m[0]+this.m[2]*n.m[1],i=this.m[1]*n.m[0]+this.m[3]*n.m[1],r=this.m[0]*n.m[2]+this.m[2]*n.m[3],u=this.m[1]*n.m[2]+this.m[3]*n.m[3],f=this.m[0]*n.m[4]+this.m[2]*n.m[5]+this.m[4],e=this.m[1]*n.m[4]+this.m[3]*n.m[5]+this.m[5];return this.m[0]=t,this.m[1]=i,this.m[2]=r,this.m[3]=u,this.m[4]=f,this.m[5]=e,this},invert:function(){var n=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),t=this.m[3]*n,i=-this.m[1]*n,r=-this.m[2]*n,u=this.m[0]*n,f=n*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),e=n*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=t,this.m[1]=i,this.m[2]=r,this.m[3]=u,this.m[4]=f,this.m[5]=e,this},getMatrix:function(){return this.m},setAbsolutePosition:function(n,t){var i=this.m[0],r=this.m[1],u=this.m[2],o=this.m[3],f=this.m[4],s=this.m[5],e=(i*(t-s)-r*(n-f))/(i*o-r*u),h=(n-f-u*e)/i;return this.translate(h,e)}};var r="2d",u="[object Array]",f="[object Number]",e="[object String]",o=Math.PI/180,s=180/Math.PI,n="#",t="",h="0",c="Kinetic warning: ",l="Kinetic error: ",a="rgb(",i={aqua:[0,255,255],lime:[0,255,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,255],navy:[0,0,128],white:[255,255,255],fuchsia:[255,0,255],olive:[128,128,0],yellow:[255,255,0],orange:[255,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[255,0,0],pink:[255,192,203],cyan:[0,255,255],transparent:[255,255,255,0]},v=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/;Kinetic.Util={_isElement:function(n){return!(!n||1!=n.nodeType)},_isFunction:function(n){return!!(n&&n.constructor&&n.call&&n.apply)},_isObject:function(n){return!!n&&n.constructor==Object},_isArray:function(n){return Object.prototype.toString.call(n)==u},_isNumber:function(n){return Object.prototype.toString.call(n)==f},_isString:function(n){return Object.prototype.toString.call(n)==e},_throttle:function(n,t,i){var r,u,o,f=null,e=0,s;return i||(i={}),s=function(){e=i.leading===!1?0:(new Date).getTime();f=null;o=n.apply(r,u);r=u=null},function(){var h=(new Date).getTime(),c;return e||i.leading!==!1||(e=h),c=t-(h-e),r=this,u=arguments,0>=c?(clearTimeout(f),f=null,e=h,o=n.apply(r,u),r=u=null):f||i.trailing===!1||(f=setTimeout(s,c)),o}},_hasMethods:function(n){var t,i=[];for(t in n)this._isFunction(n[t])&&i.push(t);return i.length>0},createCanvasElement:function(){var n=Kinetic.document.createElement("canvas");return n.style=n.style||{},n},isBrowser:function(){return"object"!=typeof exports},_isInDocument:function(n){for(;n=n.parentNode;)if(n==Kinetic.document)return!0;return!1},_simplifyArray:function(n){for(var t,r=[],f=n.length,u=Kinetic.Util,i=0;f>i;i++)t=n[i],u._isNumber(t)?t=Math.round(1e3*t)/1e3:u._isString(t)||(t=t.toString()),r.push(t);return r},_getImage:function(n,t){var u,i,f;n?this._isElement(n)?t(n):this._isString(n)?(u=new Kinetic.window.Image,u.onload=function(){t(u)},u.src=n):n.data?(i=Kinetic.Util.createCanvasElement(),i.width=n.width,i.height=n.height,f=i.getContext(r),f.putImageData(n,0,0),this._getImage(i.toDataURL(),t)):t(null):t(null)},_getRGBAString:function(n){var i=n.red||0,r=n.green||0,u=n.blue||0,f=n.alpha||1;return["rgba(",i,",",r,",",u,",",f,")"].join(t)},_rgbToHex:function(n,t,i){return(16777216+(n<<16)+(t<<8)+i).toString(16).slice(1)},_hexToRgb:function(i){i=i.replace(n,t);var r=parseInt(i,16);return{r:r>>16&255,g:r>>8&255,b:255&r}},getRandomColor:function(){for(var t=(16777215*Math.random()<<0).toString(16);t.length<6;)t=h+t;return n+t},get:function(n,t){return void 0===n?t:n},getRGB:function(t){var r;return t in i?(r=i[t],{r:r[0],g:r[1],b:r[2]}):t[0]===n?this._hexToRgb(t.substring(1)):t.substr(0,4)===a?(r=v.exec(t.replace(/ /g,"")),{r:parseInt(r[1],10),g:parseInt(r[2],10),b:parseInt(r[3],10)}):{r:0,g:0,b:0}},_merge:function(n,t){var r=this._clone(t),i;for(i in n)r[i]=this._isObject(n[i])?this._merge(n[i],r[i]):n[i];return r},cloneObject:function(n){var i={},t;for(t in n)i[t]=this._isObject(n[t])?this.cloneObject(n[t]):this._isArray(n[t])?this.cloneArray(n[t]):n[t];return i},cloneArray:function(n){return n.slice(0)},_degToRad:function(n){return n*o},_radToDeg:function(n){return n*s},_capitalize:function(n){return n.charAt(0).toUpperCase()+n.slice(1)},error:function(n){throw new Error(l+n);},warn:function(n){Kinetic.root.console&&console.warn&&console.warn(c+n)},extend:function(n,t){for(var i in t.prototype)i in n.prototype||(n.prototype[i]=t.prototype[i])},addMethods:function(n,t){var i;for(i in t)n.prototype[i]=t[i]},_getControlPoints:function(n,t,i,r,u,f,e){var o=Math.sqrt(Math.pow(i-n,2)+Math.pow(r-t,2)),s=Math.sqrt(Math.pow(u-i,2)+Math.pow(f-r,2)),h=e*o/(o+s),c=e*s/(o+s),l=i-h*(u-n),a=r-h*(f-t),v=i+c*(u-n),y=r+c*(f-t);return[l,a,v,y]},_expandPoints:function(n,t){for(var u,f=n.length,r=[],i=2;f-2>i;i+=2)u=Kinetic.Util._getControlPoints(n[i-2],n[i-1],n[i],n[i+1],n[i+2],n[i+3],t),r.push(u[0]),r.push(u[1]),r.push(n[i]),r.push(n[i+1]),r.push(u[2]),r.push(u[3]);return r},_removeLastLetter:function(n){return n.substring(0,n.length-1)}}}(),function(){var t=Kinetic.Util.createCanvasElement(),n=t.getContext("2d"),i=Kinetic.UA.mobile?function(){var t=window.devicePixelRatio||1,i=n.webkitBackingStorePixelRatio||n.mozBackingStorePixelRatio||n.msBackingStorePixelRatio||n.oBackingStorePixelRatio||n.backingStorePixelRatio||1;return t/i}():1;Kinetic.Canvas=function(n){this.init(n)};Kinetic.Canvas.prototype={init:function(n){n=n||{};var t=n.pixelRatio||Kinetic.pixelRatio||i;this.pixelRatio=t;this._canvas=Kinetic.Util.createCanvasElement();this._canvas.style.padding=0;this._canvas.style.margin=0;this._canvas.style.border=0;this._canvas.style.background="transparent";this._canvas.style.position="absolute";this._canvas.style.top=0;this._canvas.style.left=0},getContext:function(){return this.context},getPixelRatio:function(){return this.pixelRatio},setPixelRatio:function(n){this.pixelRatio=n;this.setSize(this.getWidth(),this.getHeight())},setWidth:function(n){this.width=this._canvas.width=n*this.pixelRatio;this._canvas.style.width=n+"px"},setHeight:function(n){this.height=this._canvas.height=n*this.pixelRatio;this._canvas.style.height=n+"px"},getWidth:function(){return this.width},getHeight:function(){return this.height},setSize:function(n,t){this.setWidth(n);this.setHeight(t)},toDataURL:function(n,t){try{return this._canvas.toDataURL(n,t)}catch(r){try{return this._canvas.toDataURL()}catch(i){return Kinetic.Util.warn("Unable to get data URL. "+i.message),""}}}};Kinetic.SceneCanvas=function(n){n=n||{};var t=n.width||0,i=n.height||0;Kinetic.Canvas.call(this,n);this.context=new Kinetic.SceneContext(this);this.setSize(t,i)};Kinetic.SceneCanvas.prototype={setWidth:function(n){var t=this.pixelRatio,i=this.getContext()._context;Kinetic.Canvas.prototype.setWidth.call(this,n);i.scale(t,t)},setHeight:function(n){var t=this.pixelRatio,i=this.getContext()._context;Kinetic.Canvas.prototype.setHeight.call(this,n);i.scale(t,t)}};Kinetic.Util.extend(Kinetic.SceneCanvas,Kinetic.Canvas);Kinetic.HitCanvas=function(n){n=n||{};var t=n.width||0,i=n.height||0;Kinetic.Canvas.call(this,n);this.context=new Kinetic.HitContext(this);this.setSize(t,i)};Kinetic.Util.extend(Kinetic.HitCanvas,Kinetic.Canvas)}(),function(){var n=",",i="(",r=")",u="([",f="])",e=";",o="()",s="=",t=["arc","arcTo","beginPath","bezierCurveTo","clearRect","clip","closePath","createLinearGradient","createPattern","createRadialGradient","drawImage","fill","fillText","getImageData","createImageData","lineTo","moveTo","putImageData","quadraticCurveTo","rect","restore","rotate","save","scale","setLineDash","setTransform","stroke","strokeText","transform","translate"];Kinetic.Context=function(n){this.init(n)};Kinetic.Context.prototype={init:function(n){this.canvas=n;this._context=n._canvas.getContext("2d");Kinetic.enableTrace&&(this.traceArr=[],this._enableTrace())},fillShape:function(n){n.getFillEnabled()&&this._fill(n)},strokeShape:function(n){n.getStrokeEnabled()&&this._stroke(n)},fillStrokeShape:function(n){var t=n.getFillEnabled();t&&this._fill(n);n.getStrokeEnabled()&&this._stroke(n)},getTrace:function(t){for(var c,v,a,y=this.traceArr,p=y.length,h="",l=0;p>l;l++)c=y[l],v=c.method,v?(a=c.args,h+=v,h+=t?o:Kinetic.Util._isArray(a[0])?u+a.join(n)+f:i+a.join(n)+r):(h+=c.property,t||(h+=s+c.val)),h+=e;return h},clearTrace:function(){this.traceArr=[]},_trace:function(n){var i,t=this.traceArr;t.push(n);i=t.length;i>=Kinetic.traceArrMax&&t.shift()},reset:function(){var n=this.getCanvas().getPixelRatio();this.setTransform(1*n,0,0,1*n,0,0)},getCanvas:function(){return this.canvas},clear:function(n){var t=this.getCanvas();n?this.clearRect(n.x||0,n.y||0,n.width||0,n.height||0):this.clearRect(0,0,t.getWidth(),t.getHeight())},_applyLineCap:function(n){var t=n.getLineCap();t&&this.setAttr("lineCap",t)},_applyOpacity:function(n){var t=n.getAbsoluteOpacity();1!==t&&this.setAttr("globalAlpha",t)},_applyLineJoin:function(n){var t=n.getLineJoin();t&&this.setAttr("lineJoin",t)},setAttr:function(n,t){this._context[n]=t},arc:function(){var n=arguments;this._context.arc(n[0],n[1],n[2],n[3],n[4],n[5])},beginPath:function(){this._context.beginPath()},bezierCurveTo:function(){var n=arguments;this._context.bezierCurveTo(n[0],n[1],n[2],n[3],n[4],n[5])},clearRect:function(){var n=arguments;this._context.clearRect(n[0],n[1],n[2],n[3])},clip:function(){this._context.clip()},closePath:function(){this._context.closePath()},createImageData:function(){var n=arguments;return 2===n.length?this._context.createImageData(n[0],n[1]):1===n.length?this._context.createImageData(n[0]):void 0},createLinearGradient:function(){var n=arguments;return this._context.createLinearGradient(n[0],n[1],n[2],n[3])},createPattern:function(){var n=arguments;return this._context.createPattern(n[0],n[1])},createRadialGradient:function(){var n=arguments;return this._context.createRadialGradient(n[0],n[1],n[2],n[3],n[4],n[5])},drawImage:function(){var n=arguments,t=this._context;3===n.length?t.drawImage(n[0],n[1],n[2]):5===n.length?t.drawImage(n[0],n[1],n[2],n[3],n[4]):9===n.length&&t.drawImage(n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7],n[8])},fill:function(){this._context.fill()},fillText:function(){var n=arguments;this._context.fillText(n[0],n[1],n[2])},getImageData:function(){var n=arguments;return this._context.getImageData(n[0],n[1],n[2],n[3])},lineTo:function(){var n=arguments;this._context.lineTo(n[0],n[1])},moveTo:function(){var n=arguments;this._context.moveTo(n[0],n[1])},rect:function(){var n=arguments;this._context.rect(n[0],n[1],n[2],n[3])},putImageData:function(){var n=arguments;this._context.putImageData(n[0],n[1],n[2])},quadraticCurveTo:function(){var n=arguments;this._context.quadraticCurveTo(n[0],n[1],n[2],n[3])},restore:function(){this._context.restore()},rotate:function(){var n=arguments;this._context.rotate(n[0])},save:function(){this._context.save()},scale:function(){var n=arguments;this._context.scale(n[0],n[1])},setLineDash:function(){var t=arguments,n=this._context;this._context.setLineDash?n.setLineDash(t[0]):"mozDash"in n?n.mozDash=t[0]:"webkitLineDash"in n&&(n.webkitLineDash=t[0])},setTransform:function(){var n=arguments;this._context.setTransform(n[0],n[1],n[2],n[3],n[4],n[5])},stroke:function(){this._context.stroke()},strokeText:function(){var n=arguments;this._context.strokeText(n[0],n[1],n[2])},transform:function(){var n=arguments;this._context.transform(n[0],n[1],n[2],n[3],n[4],n[5])},translate:function(){var n=arguments;this._context.translate(n[0],n[1])},_enableTrace:function(){for(var r,n=this,u=t.length,f=Kinetic.Util._simplifyArray,e=this.setAttr,o=function(t){var i,u=n[t];n[t]=function(){return r=f(Array.prototype.slice.call(arguments,0)),i=u.apply(n,arguments),n._trace({method:t,args:r}),i}},i=0;u>i;i++)o(t[i]);n.setAttr=function(){e.apply(n,arguments);n._trace({property:arguments[0],val:arguments[1]})}}};Kinetic.SceneContext=function(n){Kinetic.Context.call(this,n)};Kinetic.SceneContext.prototype={_fillColor:function(n){var t=n.fill()||Kinetic.Util._getRGBAString({red:n.fillRed(),green:n.fillGreen(),blue:n.fillBlue(),alpha:n.fillAlpha()});this.setAttr("fillStyle",t);n._fillFunc(this)},_fillPattern:function(n){var e=n.getFillPatternImage(),r=n.getFillPatternX(),u=n.getFillPatternY(),t=n.getFillPatternScale(),f=Kinetic.getAngle(n.getFillPatternRotation()),i=n.getFillPatternOffset(),o=n.getFillPatternRepeat();(r||u)&&this.translate(r||0,u||0);f&&this.rotate(f);t&&this.scale(t.x,t.y);i&&this.translate(-1*i.x,-1*i.y);this.setAttr("fillStyle",this.createPattern(e,o||"repeat"));this.fill()},_fillLinearGradient:function(n){var r=n.getFillLinearGradientStartPoint(),u=n.getFillLinearGradientEndPoint(),i=n.getFillLinearGradientColorStops(),f=this.createLinearGradient(r.x,r.y,u.x,u.y),t;if(i){for(t=0;t<i.length;t+=2)f.addColorStop(i[t],i[t+1]);this.setAttr("fillStyle",f);this.fill()}},_fillRadialGradient:function(n){for(var r=n.getFillRadialGradientStartPoint(),u=n.getFillRadialGradientEndPoint(),e=n.getFillRadialGradientStartRadius(),o=n.getFillRadialGradientEndRadius(),i=n.getFillRadialGradientColorStops(),f=this.createRadialGradient(r.x,r.y,e,u.x,u.y,o),t=0;t<i.length;t+=2)f.addColorStop(i[t],i[t+1]);this.setAttr("fillStyle",f);this.fill()},_fill:function(n){var i=n.fill()||n.fillRed()||n.fillGreen()||n.fillBlue(),r=n.getFillPatternImage(),u=n.getFillLinearGradientColorStops(),f=n.getFillRadialGradientColorStops(),t=n.getFillPriority();i&&"color"===t?this._fillColor(n):r&&"pattern"===t?this._fillPattern(n):u&&"linear-gradient"===t?this._fillLinearGradient(n):f&&"radial-gradient"===t?this._fillRadialGradient(n):i?this._fillColor(n):r?this._fillPattern(n):u?this._fillLinearGradient(n):f&&this._fillRadialGradient(n)},_stroke:function(n){var t=n.dash(),i=n.getStrokeScaleEnabled();n.hasStroke()&&(i||(this.save(),this.setTransform(1,0,0,1,0,0)),this._applyLineCap(n),t&&n.dashEnabled()&&this.setLineDash(t),this.setAttr("lineWidth",n.strokeWidth()),this.setAttr("strokeStyle",n.stroke()||Kinetic.Util._getRGBAString({red:n.strokeRed(),green:n.strokeGreen(),blue:n.strokeBlue(),alpha:n.strokeAlpha()})),n._strokeFunc(this),i||this.restore())},_applyShadow:function(n){var t=Kinetic.Util,u=n.getAbsoluteOpacity(),f=t.get(n.getShadowColor(),"black"),e=t.get(n.getShadowBlur(),5),i=t.get(n.getShadowOpacity(),1),r=t.get(n.getShadowOffset(),{x:0,y:0});i&&this.setAttr("globalAlpha",i*u);this.setAttr("shadowColor",f);this.setAttr("shadowBlur",e);this.setAttr("shadowOffsetX",r.x);this.setAttr("shadowOffsetY",r.y)}};Kinetic.Util.extend(Kinetic.SceneContext,Kinetic.Context);Kinetic.HitContext=function(n){Kinetic.Context.call(this,n)};Kinetic.HitContext.prototype={_fill:function(n){this.save();this.setAttr("fillStyle",n.colorKey);n._fillFuncHit(this);this.restore()},_stroke:function(n){n.hasStroke()&&(this._applyLineCap(n),this.setAttr("lineWidth",n.strokeWidth()),this.setAttr("strokeStyle",n.colorKey),n._strokeFuncHit(this))}};Kinetic.Util.extend(Kinetic.HitContext,Kinetic.Context)}(),function(){var n="get",t="set";Kinetic.Factory={addGetterSetter:function(n,t,i,r,u){this.addGetter(n,t,i);this.addSetter(n,t,r,u);this.addOverloadedGetterSetter(n,t)},addGetter:function(t,i,r){var u=n+Kinetic.Util._capitalize(i);t.prototype[u]=function(){var n=this.attrs[i];return void 0===n?r:n}},addSetter:function(n,i,r,u){var f=t+Kinetic.Util._capitalize(i);n.prototype[f]=function(n){return r&&(n=r.call(this,n)),this._setAttr(i,n),u&&u.call(this),this}},addComponentsGetterSetter:function(i,r,u,f,e){var o,h,c=u.length,s=Kinetic.Util._capitalize,l=n+s(r),a=t+s(r);i.prototype[l]=function(){var n={};for(o=0;c>o;o++)h=u[o],n[h]=this.getAttr(r+s(h));return n};i.prototype[a]=function(n){var t,i=this.attrs[r];f&&(n=f.call(this,n));for(t in n)this._setAttr(r+s(t),n[t]);return this._fireChangeEvent(r,i,n),e&&e.call(this),this};this.addOverloadedGetterSetter(i,r)},addOverloadedGetterSetter:function(i,r){var u=Kinetic.Util._capitalize(r),f=t+u,e=n+u;i.prototype[r]=function(){return arguments.length?(this[f](arguments[0]),this):this[e]()}},backCompat:function(n,t){var i;for(i in t)n.prototype[i]=n.prototype[t[i]]},afterSetFilter:function(){this._filterUpToDate=!1}};Kinetic.Validators={RGBComponent:function(n){return n>255?255:0>n?0:Math.round(n)},alphaComponent:function(n){return n>1?1:.0001>n?.0001:n}}}(),function(){var i="absoluteOpacity",n="absoluteTransform",l="Change",a="children",e=".",v="",y="get",p="id",w="kinetic",r="listening",b="mouseenter",k="mouseleave",d="name",o="set",s="Shape",u=" ",h="stage",t="transform",g="Stage",f="visible",c=["id"],nt=["xChange.kinetic","yChange.kinetic","scaleXChange.kinetic","scaleYChange.kinetic","skewXChange.kinetic","skewYChange.kinetic","rotationChange.kinetic","offsetXChange.kinetic","offsetYChange.kinetic","transformsEnabledChange.kinetic"].join(u);Kinetic.Util.addMethods(Kinetic.Node,{_init:function(u){var e=this;this._id=Kinetic.idCounter++;this.eventListeners={};this.attrs={};this._cache={};this._filterUpToDate=!1;this.setAttrs(u);this.on(nt,function(){this._clearCache(t);e._clearSelfAndDescendantCache(n)});this.on("visibleChange.kinetic",function(){e._clearSelfAndDescendantCache(f)});this.on("listeningChange.kinetic",function(){e._clearSelfAndDescendantCache(r)});this.on("opacityChange.kinetic",function(){e._clearSelfAndDescendantCache(i)})},_clearCache:function(n){n?delete this._cache[n]:this._cache={}},_getCache:function(n,t){var i=this._cache[n];return void 0===i&&(this._cache[n]=t.call(this)),this._cache[n]},_clearSelfAndDescendantCache:function(n){this._clearCache(n);this.children&&this.getChildren().each(function(t){t._clearSelfAndDescendantCache(n)})},clearCache:function(){return delete this._cache.canvas,this._filterUpToDate=!1,this},cache:function(n){var i=n||{},s=i.x||0,h=i.y||0,r=i.width||this.width(),u=i.height||this.height(),c=i.drawBorder||!1;if(this.getLayer(),0===r||0===u)return void Kinetic.Util.warn("Width or height of caching configuration equals 0. Cache is ignored.");var e=new Kinetic.SceneCanvas({pixelRatio:1,width:r,height:u}),l=new Kinetic.SceneCanvas({pixelRatio:1,width:r,height:u}),o=new Kinetic.HitCanvas({width:r,height:u}),t=(this.transformsEnabled(),this.x(),this.y(),e.getContext()),f=o.getContext();return this.clearCache(),t.save(),f.save(),c&&(t.save(),t.beginPath(),t.rect(0,0,r,u),t.closePath(),t.setAttr("strokeStyle","red"),t.setAttr("lineWidth",5),t.stroke(),t.restore()),t.translate(-1*s,-1*h),f.translate(-1*s,-1*h),"Shape"===this.nodeType&&(t.translate(-1*this.x(),-1*this.y()),f.translate(-1*this.x(),-1*this.y())),this.drawScene(e,this),this.drawHit(o,this),t.restore(),f.restore(),this._cache.canvas={scene:e,filter:l,hit:o},this},_drawCachedSceneCanvas:function(n){n.save();this.getLayer()._applyTransform(this,n);n.drawImage(this._getCachedSceneCanvas()._canvas,0,0);n.restore()},_getCachedSceneCanvas:function(){var f,r,n,e,u=this.filters(),o=this._cache.canvas,s=o.scene,t=o.filter,i=t.getContext();if(u){if(!this._filterUpToDate){try{for(f=u.length,i.clear(),i.drawImage(s._canvas,0,0),r=i.getImageData(0,0,t.getWidth(),t.getHeight()),n=0;f>n;n++)e=u[n],e.call(this,r),i.putImageData(r,0,0)}catch(h){Kinetic.Util.warn("Unable to apply filter. "+h.message)}this._filterUpToDate=!0}return t}return s},_drawCachedHitCanvas:function(n){var t=this._cache.canvas,i=t.hit;n.save();this.getLayer()._applyTransform(this,n);n.drawImage(i._canvas,0,0);n.restore()},on:function(n,t){for(var o,f,r,s,h=n.split(u),c=h.length,i=0;c>i;i++)o=h[i],f=o.split(e),r=f[0],s=f[1]||v,this.eventListeners[r]||(this.eventListeners[r]=[]),this.eventListeners[r].push({name:s,handler:t});return this},off:function(n){for(var o,s,r,i,f,h=n.split(u),c=h.length,t=0;c>t;t++)if(s=h[t],r=s.split(e),i=r[0],f=r[1],i)this.eventListeners[i]&&this._off(i,f);else for(o in this.eventListeners)this._off(o,f);return this},dispatchEvent:function(n){var t={target:this,type:n.type,evt:n};this.fire(n.type,t)},addEventListener:function(n,t){this.on(n,function(n){t.call(this,n.evt)})},remove:function(){var t=this.getParent();return t&&t.children&&(t.children.splice(this.index,1),t._setChildrenIndices(),delete this.parent),this._clearSelfAndDescendantCache(h),this._clearSelfAndDescendantCache(n),this._clearSelfAndDescendantCache(f),this._clearSelfAndDescendantCache(r),this._clearSelfAndDescendantCache(i),this},destroy:function(){Kinetic._removeId(this.getId());Kinetic._removeName(this.getName(),this._id);this.remove()},getAttr:function(n){var t=y+Kinetic.Util._capitalize(n);return Kinetic.Util._isFunction(this[t])?this[t]():this.attrs[n]},getAncestors:function(){for(var n=this.getParent(),t=new Kinetic.Collection;n;)t.push(n),n=n.getParent();return t},getAttrs:function(){return this.attrs||{}},setAttrs:function(n){var t,i;if(n)for(t in n)t===a||(i=o+Kinetic.Util._capitalize(t),Kinetic.Util._isFunction(this[i])?this[i](n[t]):this._setAttr(t,n[t]));return this},isListening:function(){return this._getCache(r,this._isListening)},_isListening:function(){var n=this.getListening(),t=this.getParent();return"inherit"===n?t?t.isListening():!0:n},isVisible:function(){return this._getCache(f,this._isVisible)},_isVisible:function(){var n=this.getVisible(),t=this.getParent();return"inherit"===n?t?t.isVisible():!0:n},shouldDrawHit:function(){var n=this.getLayer();return n&&n.hitGraphEnabled()&&this.isListening()&&this.isVisible()&&!Kinetic.isDragging()},show:function(){return this.setVisible(!0),this},hide:function(){return this.setVisible(!1),this},getZIndex:function(){return this.index||0},getAbsoluteZIndex:function(){function f(h){for(n=[],r=h.length,t=0;r>t;t++)i=h[t],e++,i.nodeType!==s&&(n=n.concat(i.getChildren().toArray())),i._id===u._id&&(t=r);n.length>0&&n[0].getDepth()<=o&&f(n)}var n,r,t,i,o=this.getDepth(),u=this,e=0;return u.nodeType!==g&&f(u.getStage().getChildren()),e},getDepth:function(){for(var t=0,n=this.parent;n;)t++,n=n.parent;return t},setPosition:function(n){return this.setX(n.x),this.setY(n.y),this},getPosition:function(){return{x:this.getX(),y:this.getY()}},getAbsolutePosition:function(){var i=this.getAbsoluteTransform().getMatrix(),n=new Kinetic.Transform,t=this.offset();return n.m=i.slice(),n.translate(t.x,t.y),n.getTranslation()},setAbsolutePosition:function(n){var t,i=this._clearTransform();return this.attrs.x=i.x,this.attrs.y=i.y,delete i.x,delete i.y,t=this.getAbsoluteTransform(),t.invert(),t.translate(n.x,n.y),n={x:this.attrs.x+t.getTranslation().x,y:this.attrs.y+t.getTranslation().y},this.setPosition({x:n.x,y:n.y}),this._setTransform(i),this},_setTransform:function(i){var r;for(r in i)this.attrs[r]=i[r];this._clearCache(t);this._clearSelfAndDescendantCache(n)},_clearTransform:function(){var i={x:this.getX(),y:this.getY(),rotation:this.getRotation(),scaleX:this.getScaleX(),scaleY:this.getScaleY(),offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),skewX:this.getSkewX(),skewY:this.getSkewY()};return this.attrs.x=0,this.attrs.y=0,this.attrs.rotation=0,this.attrs.scaleX=1,this.attrs.scaleY=1,this.attrs.offsetX=0,this.attrs.offsetY=0,this.attrs.skewX=0,this.attrs.skewY=0,this._clearCache(t),this._clearSelfAndDescendantCache(n),i},move:function(n){var t=n.x,i=n.y,r=this.getX(),u=this.getY();return void 0!==t&&(r+=t),void 0!==i&&(u+=i),this.setPosition({x:r,y:u}),this},_eachAncestorReverse:function(n,t){var f,r,u=[],i=this.getParent();if(t&&t._id===this._id)return n(this),!0;for(u.unshift(this);i&&(!t||i._id!==t._id);)u.unshift(i),i=i.parent;for(f=u.length,r=0;f>r;r++)n(u[r])},rotate:function(n){return this.setRotation(this.getRotation()+n),this},moveToTop:function(){if(!this.parent)return void Kinetic.Util.warn("Node has no parent. moveToTop function is ignored.");var n=this.index;return this.parent.children.splice(n,1),this.parent.children.push(this),this.parent._setChildrenIndices(),!0},moveUp:function(){if(!this.parent)return void Kinetic.Util.warn("Node has no parent. moveUp function is ignored.");var n=this.index,t=this.parent.getChildren().length;return t-1>n?(this.parent.children.splice(n,1),this.parent.children.splice(n+1,0,this),this.parent._setChildrenIndices(),!0):!1},moveDown:function(){if(!this.parent)return void Kinetic.Util.warn("Node has no parent. moveDown function is ignored.");var n=this.index;return n>0?(this.parent.children.splice(n,1),this.parent.children.splice(n-1,0,this),this.parent._setChildrenIndices(),!0):!1},moveToBottom:function(){if(!this.parent)return void Kinetic.Util.warn("Node has no parent. moveToBottom function is ignored.");var n=this.index;return n>0?(this.parent.children.splice(n,1),this.parent.children.unshift(this),this.parent._setChildrenIndices(),!0):!1},setZIndex:function(n){if(!this.parent)return void Kinetic.Util.warn("Node has no parent. zIndex parameter is ignored.");var t=this.index;return this.parent.children.splice(t,1),this.parent.children.splice(n,0,this),this.parent._setChildrenIndices(),this},getAbsoluteOpacity:function(){return this._getCache(i,this._getAbsoluteOpacity)},_getAbsoluteOpacity:function(){var n=this.getOpacity();return this.getParent()&&(n*=this.getParent().getAbsoluteOpacity()),n},moveTo:function(n){return Kinetic.Node.prototype.remove.call(this),n.add(this),this},toObject:function(){var t,n,f,e,i=Kinetic.Util,r={},u=this.getAttrs();r.attrs={};for(t in u)n=u[t],i._isFunction(n)||i._isElement(n)||i._isObject(n)&&i._hasMethods(n)||(f=this[t],delete u[t],e=f?f.call(this):null,u[t]=n,e!==n&&(r.attrs[t]=n));return r.className=this.getClassName(),r},toJSON:function(){return JSON.stringify(this.toObject())},getParent:function(){return this.parent},getLayer:function(){var n=this.getParent();return n?n.getLayer():null},getStage:function(){return this._getCache(h,this._getStage)},_getStage:function(){var n=this.getParent();if(n)return n.getStage()},fire:function(n,t,i){return i?this._fireAndBubble(n,t||{}):this._fire(n,t||{}),this},getAbsoluteTransform:function(t){return t?this._getAbsoluteTransform(t):this._getCache(n,this._getAbsoluteTransform)},_getAbsoluteTransform:function(n){var t,r,i=new Kinetic.Transform;return this._eachAncestorReverse(function(n){t=n.transformsEnabled();r=n.getTransform();"all"===t?i.multiply(r):"position"===t&&i.translate(n.x(),n.y())},n),i},getTransform:function(){return this._getCache(t,this._getTransform)},_getTransform:function(){var n=new Kinetic.Transform,t=this.getX(),i=this.getY(),r=Kinetic.getAngle(this.getRotation()),u=this.getScaleX(),f=this.getScaleY(),e=this.getSkewX(),o=this.getSkewY(),s=this.getOffsetX(),h=this.getOffsetY();return(0!==t||0!==i)&&n.translate(t,i),0!==r&&n.rotate(r),(0!==e||0!==o)&&n.skew(e,o),(1!==u||1!==f)&&n.scale(u,f),(0!==s||0!==h)&&n.translate(-1*s,-1*h),n},clone:function(n){var t,u,o,r,f,l=this.getClassName(),e=Kinetic.Util.cloneObject(this.attrs),s,h,i;for(s in c)h=c[s],delete e[h];for(t in n)e[t]=n[t];i=new Kinetic[l](e);for(t in this.eventListeners)for(u=this.eventListeners[t],o=u.length,r=0;o>r;r++)f=u[r],f.name.indexOf(w)<0&&(i.eventListeners[t]||(i.eventListeners[t]=[]),i.eventListeners[t].push(f));return i},toDataURL:function(n){n=n||{};var e=n.mimeType||null,o=n.quality||null,t=this.getStage(),u=n.x||0,f=n.y||0,i=new Kinetic.SceneCanvas({width:n.width||this.getWidth()||(t?t.getWidth():0),height:n.height||this.getHeight()||(t?t.getHeight():0),pixelRatio:1}),r=i.getContext();return r.save(),(u||f)&&r.translate(-1*u,-1*f),this.drawScene(i),r.restore(),i.toDataURL(e,o)},toImage:function(n){Kinetic.Util._getImage(this.toDataURL(n),function(t){n.callback(t)})},setSize:function(n){return this.setWidth(n.width),this.setHeight(n.height),this},getSize:function(){return{width:this.getWidth(),height:this.getHeight()}},getWidth:function(){return this.attrs.width||0},getHeight:function(){return this.attrs.height||0},getClassName:function(){return this.className||this.nodeType},getType:function(){return this.nodeType},getDragDistance:function(){return void 0!==this.attrs.dragDistance?this.attrs.dragDistance:this.parent?this.parent.getDragDistance():Kinetic.dragDistance},_get:function(n){return this.nodeType===n?[this]:[]},_off:function(n,t){for(var u,r=this.eventListeners[n],i=0;i<r.length;i++)if(u=r[i].name,!("kinetic"===u&&"kinetic"!==t||t&&u!==t)){if(r.splice(i,1),0===r.length){delete this.eventListeners[n];break}i--}},_fireChangeEvent:function(n,t,i){this._fire(n+l,{oldVal:t,newVal:i})},setId:function(n){var t=this.getId();return Kinetic._removeId(t),Kinetic._addId(this,n),this._setAttr(p,n),this},setName:function(n){var t=this.getName();return Kinetic._removeName(t,this._id),Kinetic._addName(this,n),this._setAttr(d,n),this},setAttr:function(){var n=Array.prototype.slice.call(arguments),t=n[0],i=n[1],u=o+Kinetic.Util._capitalize(t),r=this[u];return Kinetic.Util._isFunction(r)?r.call(this,i):this._setAttr(t,i),this},_setAttr:function(n,t){var i;void 0!==t&&(i=this.attrs[n],this.attrs[n]=t,this._fireChangeEvent(n,i,t))},_setComponentAttr:function(n,t,i){var r;void 0!==i&&(r=this.attrs[n],r||(this.attrs[n]=this.getAttr(n)),this.attrs[n][t]=i,this._fireChangeEvent(n,r,i))},_fireAndBubble:function(n,t,i){var r=!0;t&&this.nodeType===s&&(t.target=this);n===b&&i&&this._id===i._id?r=!1:n===k&&i&&this._id===i._id&&(r=!1);r&&(this._fire(n,t),t&&!t.cancelBubble&&this.parent&&(i&&i.parent?this._fireAndBubble.call(this.parent,n,t,i.parent):this._fireAndBubble.call(this.parent,n,t)))},_fire:function(n,t){var i,r=this.eventListeners[n];if(t.type=n,r)for(i=0;i<r.length;i++)r[i].handler.call(this,t)},draw:function(){return this.drawScene(),this.drawHit(),this}});Kinetic.Node.create=function(n,t){return this._createNode(JSON.parse(n),t)};Kinetic.Node._createNode=function(n,t){var r,f,i,e=Kinetic.Node.prototype.getClassName.call(n),u=n.children;if(t&&(n.attrs.container=t),r=new Kinetic[e](n.attrs),u)for(f=u.length,i=0;f>i;i++)r.add(this._createNode(u[i]));return r};Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"position");Kinetic.Factory.addGetterSetter(Kinetic.Node,"x",0);Kinetic.Factory.addGetterSetter(Kinetic.Node,"y",0);Kinetic.Factory.addGetterSetter(Kinetic.Node,"opacity",1);Kinetic.Factory.addGetter(Kinetic.Node,"name");Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"name");Kinetic.Factory.addGetter(Kinetic.Node,"id");Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"id");Kinetic.Factory.addGetterSetter(Kinetic.Node,"rotation",0);Kinetic.Factory.addComponentsGetterSetter(Kinetic.Node,"scale",["x","y"]);Kinetic.Factory.addGetterSetter(Kinetic.Node,"scaleX",1);Kinetic.Factory.addGetterSetter(Kinetic.Node,"scaleY",1);Kinetic.Factory.addComponentsGetterSetter(Kinetic.Node,"skew",["x","y"]);Kinetic.Factory.addGetterSetter(Kinetic.Node,"skewX",0);Kinetic.Factory.addGetterSetter(Kinetic.Node,"skewY",0);Kinetic.Factory.addComponentsGetterSetter(Kinetic.Node,"offset",["x","y"]);Kinetic.Factory.addGetterSetter(Kinetic.Node,"offsetX",0);Kinetic.Factory.addGetterSetter(Kinetic.Node,"offsetY",0);Kinetic.Factory.addSetter(Kinetic.Node,"dragDistance");Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"dragDistance");Kinetic.Factory.addSetter(Kinetic.Node,"width",0);Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"width");Kinetic.Factory.addSetter(Kinetic.Node,"height",0);Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"height");Kinetic.Factory.addGetterSetter(Kinetic.Node,"listening","inherit");Kinetic.Factory.addGetterSetter(Kinetic.Node,"filters",void 0,function(n){return this._filterUpToDate=!1,n});Kinetic.Factory.addGetterSetter(Kinetic.Node,"visible","inherit");Kinetic.Factory.addGetterSetter(Kinetic.Node,"transformsEnabled","all");Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"size");Kinetic.Factory.backCompat(Kinetic.Node,{rotateDeg:"rotate",setRotationDeg:"setRotation",getRotationDeg:"getRotation"});Kinetic.Collection.mapMethods(Kinetic.Node)}(),function(){Kinetic.Filters.Grayscale=function(n){for(var r,i=n.data,u=i.length,t=0;u>t;t+=4)r=.34*i[t]+.5*i[t+1]+.16*i[t+2],i[t]=r,i[t+1]=r,i[t+2]=r}}(),function(){Kinetic.Filters.Brighten=function(n){for(var r=255*this.brightness(),i=n.data,u=i.length,t=0;u>t;t+=4)i[t]+=r,i[t+1]+=r,i[t+2]+=r};Kinetic.Factory.addGetterSetter(Kinetic.Node,"brightness",0,null,Kinetic.Factory.afterSetFilter)}(),function(){Kinetic.Filters.Invert=function(n){for(var i=n.data,r=i.length,t=0;r>t;t+=4)i[t]=255-i[t],i[t+1]=255-i[t+1],i[t+2]=255-i[t+2]}}(),function(){function n(){this.r=0;this.g=0;this.b=0;this.a=0;this.next=null}function t(t,u){for(var nt,yt,s,bt,h,kt,b,k,d,g,ft,et,ot,st,tt,it,rt,ut,v,y,p,o,ht,f=t.data,ct=t.width,dt=t.height,ti=u+u+1,wt=ct-1,gt=dt-1,a=u+1,lt=a*(a+1)/2,pt=new n,ni=null,e=pt,c=null,w=null,at=i[u],vt=r[u],l=1;ti>l;l++)e=e.next=new n,l==a&&(ni=e);for(e.next=pt,kt=h=0,yt=0;dt>yt;yt++){for(tt=it=rt=ut=b=k=d=g=0,ft=a*(v=f[h]),et=a*(y=f[h+1]),ot=a*(p=f[h+2]),st=a*(o=f[h+3]),b+=lt*v,k+=lt*y,d+=lt*p,g+=lt*o,e=pt,l=0;a>l;l++)e.r=v,e.g=y,e.b=p,e.a=o,e=e.next;for(l=1;a>l;l++)s=h+((l>wt?wt:l)<<2),b+=(e.r=v=f[s])*(ht=a-l),k+=(e.g=y=f[s+1])*ht,d+=(e.b=p=f[s+2])*ht,g+=(e.a=o=f[s+3])*ht,tt+=v,it+=y,rt+=p,ut+=o,e=e.next;for(c=pt,w=ni,nt=0;ct>nt;nt++)f[h+3]=o=g*at>>vt,0!==o?(o=255/o,f[h]=(b*at>>vt)*o,f[h+1]=(k*at>>vt)*o,f[h+2]=(d*at>>vt)*o):f[h]=f[h+1]=f[h+2]=0,b-=ft,k-=et,d-=ot,g-=st,ft-=c.r,et-=c.g,ot-=c.b,st-=c.a,s=kt+((s=nt+u+1)<wt?s:wt)<<2,tt+=c.r=f[s],it+=c.g=f[s+1],rt+=c.b=f[s+2],ut+=c.a=f[s+3],b+=tt,k+=it,d+=rt,g+=ut,c=c.next,ft+=v=w.r,et+=y=w.g,ot+=p=w.b,st+=o=w.a,tt-=v,it-=y,rt-=p,ut-=o,w=w.next,h+=4;kt+=ct}for(nt=0;ct>nt;nt++){for(it=rt=ut=tt=k=d=g=b=0,h=nt<<2,ft=a*(v=f[h]),et=a*(y=f[h+1]),ot=a*(p=f[h+2]),st=a*(o=f[h+3]),b+=lt*v,k+=lt*y,d+=lt*p,g+=lt*o,e=pt,l=0;a>l;l++)e.r=v,e.g=y,e.b=p,e.a=o,e=e.next;for(bt=ct,l=1;u>=l;l++)h=bt+nt<<2,b+=(e.r=v=f[h])*(ht=a-l),k+=(e.g=y=f[h+1])*ht,d+=(e.b=p=f[h+2])*ht,g+=(e.a=o=f[h+3])*ht,tt+=v,it+=y,rt+=p,ut+=o,e=e.next,gt>l&&(bt+=ct);for(h=nt,c=pt,w=ni,yt=0;dt>yt;yt++)s=h<<2,f[s+3]=o=g*at>>vt,o>0?(o=255/o,f[s]=(b*at>>vt)*o,f[s+1]=(k*at>>vt)*o,f[s+2]=(d*at>>vt)*o):f[s]=f[s+1]=f[s+2]=0,b-=ft,k-=et,d-=ot,g-=st,ft-=c.r,et-=c.g,ot-=c.b,st-=c.a,s=nt+((s=yt+a)<gt?s:gt)*ct<<2,b+=tt+=c.r=f[s],k+=it+=c.g=f[s+1],d+=rt+=c.b=f[s+2],g+=ut+=c.a=f[s+3],c=c.next,ft+=v=w.r,et+=y=w.g,ot+=p=w.b,st+=o=w.a,tt-=v,it-=y,rt-=p,ut-=o,w=w.next,h+=ct}}var i=[512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,289,287,285,282,280,278,275,273,271,269,267,265,263,261,259],r=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];Kinetic.Filters.Blur=function(n){var i=Math.round(this.blurRadius());i>0&&t(n,i)};Kinetic.Factory.addGetterSetter(Kinetic.Node,"blurRadius",0,null,Kinetic.Factory.afterSetFilter)}(),function(){function t(n,t,i){var r=4*(i*n.width+t),u=[];return u.push(n.data[r++],n.data[r++],n.data[r++],n.data[r++]),u}function n(n,t){return Math.sqrt(Math.pow(n[0]-t[0],2)+Math.pow(n[1]-t[1],2)+Math.pow(n[2]-t[2],2))}function i(n){for(var t=[0,0,0],i=0;i<n.length;i++)t[0]+=n[i][0],t[1]+=n[i][1],t[2]+=n[i][2];return t[0]/=n.length,t[1]/=n.length,t[2]/=n.length,t}function r(r,u){var o=t(r,0,0),s=t(r,r.width-1,0),h=t(r,0,r.height-1),c=t(r,r.width-1,r.height-1),e=u||10,a;if(n(o,s)<e&&n(s,c)<e&&n(c,h)<e&&n(h,o)<e){for(var v=i([s,o,c,h]),l=[],f=0;f<r.width*r.height;f++)a=n(v,[r.data[4*f],r.data[4*f+1],r.data[4*f+2]]),l[f]=e>a?0:255;return l}}function u(n,t){for(var i=0;i<n.width*n.height;i++)n.data[4*i+3]=t[i]}function f(n,t,i){for(var r,u,s,h,y,p,c=[1,1,1,1,0,1,1,1,1],f=Math.round(Math.sqrt(c.length)),l=Math.floor(f/2),a=[],e=0;i>e;e++)for(r=0;t>r;r++){for(var w=e*t+r,v=0,o=0;f>o;o++)for(u=0;f>u;u++)s=e+o-l,h=r+u-l,s>=0&&i>s&&h>=0&&t>h&&(y=s*t+h,p=c[o*f+u],v+=n[y]*p);a[w]=2040===v?255:0}return a}function e(n,t,i){for(var r,u,s,h,y,p,c=[1,1,1,1,1,1,1,1,1],f=Math.round(Math.sqrt(c.length)),l=Math.floor(f/2),a=[],e=0;i>e;e++)for(r=0;t>r;r++){for(var w=e*t+r,v=0,o=0;f>o;o++)for(u=0;f>u;u++)s=e+o-l,h=r+u-l,s>=0&&i>s&&h>=0&&t>h&&(y=s*t+h,p=c[o*f+u],v+=n[y]*p);a[w]=v>=1020?255:0}return a}function o(n,t,i){for(var r,u,s,h,y,p,c=[1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9],f=Math.round(Math.sqrt(c.length)),l=Math.floor(f/2),a=[],e=0;i>e;e++)for(r=0;t>r;r++){for(var w=e*t+r,v=0,o=0;f>o;o++)for(u=0;f>u;u++)s=e+o-l,h=r+u-l,s>=0&&i>s&&h>=0&&t>h&&(y=s*t+h,p=c[o*f+u],v+=n[y]*p);a[w]=v}return a}Kinetic.Filters.Mask=function(n){var i=this.threshold(),t=r(n,i);return t&&(t=f(t,n.width,n.height),t=e(t,n.width,n.height),t=o(t,n.width,n.height),u(n,t)),n};Kinetic.Factory.addGetterSetter(Kinetic.Node,"threshold",0,null,Kinetic.Factory.afterSetFilter)}(),function(){Kinetic.Filters.RGB=function(n){for(var r,i=n.data,u=i.length,f=this.red(),e=this.green(),o=this.blue(),t=0;u>t;t+=4)r=(.34*i[t]+.5*i[t+1]+.16*i[t+2])/255,i[t]=r*f,i[t+1]=r*e,i[t+2]=r*o,i[t+3]=i[t+3]};Kinetic.Factory.addGetterSetter(Kinetic.Node,"red",0,function(n){return this._filterUpToDate=!1,n>255?255:0>n?0:Math.round(n)});Kinetic.Factory.addGetterSetter(Kinetic.Node,"green",0,function(n){return this._filterUpToDate=!1,n>255?255:0>n?0:Math.round(n)});Kinetic.Factory.addGetterSetter(Kinetic.Node,"blue",0,Kinetic.Validators.RGBComponent,Kinetic.Factory.afterSetFilter)}(),function(){Kinetic.Filters.HSV=function(n){for(var e,o,s,h,r=n.data,a=r.length,i=Math.pow(2,this.value()),c=Math.pow(2,this.saturation()),l=Math.abs(this.hue()+360)%360,u=i*c*Math.cos(l*Math.PI/180),f=i*c*Math.sin(l*Math.PI/180),v=.299*i+.701*u+.167*f,y=.587*i-.587*u+.33*f,p=.114*i-.114*u-.497*f,w=.299*i-.299*u-.328*f,b=.587*i+.413*u+.035*f,k=.114*i-.114*u+.293*f,d=.299*i-.3*u+1.25*f,g=.587*i-.586*u-1.05*f,nt=.114*i+.886*u-.2*f,t=0;a>t;t+=4)e=r[t+0],o=r[t+1],s=r[t+2],h=r[t+3],r[t+0]=v*e+y*o+p*s,r[t+1]=w*e+b*o+k*s,r[t+2]=d*e+g*o+nt*s,r[t+3]=h};Kinetic.Factory.addGetterSetter(Kinetic.Node,"hue",0,null,Kinetic.Factory.afterSetFilter);Kinetic.Factory.addGetterSetter(Kinetic.Node,"saturation",0,null,Kinetic.Factory.afterSetFilter);Kinetic.Factory.addGetterSetter(Kinetic.Node,"value",0,null,Kinetic.Factory.afterSetFilter)}(),function(){Kinetic.Factory.addGetterSetter(Kinetic.Node,"hue",0,null,Kinetic.Factory.afterSetFilter);Kinetic.Factory.addGetterSetter(Kinetic.Node,"saturation",0,null,Kinetic.Factory.afterSetFilter);Kinetic.Factory.addGetterSetter(Kinetic.Node,"luminance",0,null,Kinetic.Factory.afterSetFilter);Kinetic.Filters.HSL=function(n){for(var e,o,s,c,r=n.data,v=r.length,i=1,l=Math.pow(2,this.saturation()),a=Math.abs(this.hue()+360)%360,h=127*this.luminance(),u=i*l*Math.cos(a*Math.PI/180),f=i*l*Math.sin(a*Math.PI/180),y=.299*i+.701*u+.167*f,p=.587*i-.587*u+.33*f,w=.114*i-.114*u-.497*f,b=.299*i-.299*u-.328*f,k=.587*i+.413*u+.035*f,d=.114*i-.114*u+.293*f,g=.299*i-.3*u+1.25*f,nt=.587*i-.586*u-1.05*f,tt=.114*i+.886*u-.2*f,t=0;v>t;t+=4)e=r[t+0],o=r[t+1],s=r[t+2],c=r[t+3],r[t+0]=y*e+p*o+w*s+h,r[t+1]=b*e+k*o+d*s+h,r[t+2]=g*e+nt*o+tt*s+h,r[t+3]=c}}(),function(){Kinetic.Filters.Emboss=function(n){var tt=10*this.embossStrength(),it=255*this.embossWhiteLevel(),rt=this.embossDirection(),ut=this.embossBlend(),u=0,f=0,t=n.data,l=n.width,k=n.height,ft=4*l,c=k,d,e,g,o,i,s,h;switch(rt){case"top-left":u=-1;f=-1;break;case"top":u=-1;f=0;break;case"top-right":u=-1;f=1;break;case"right":u=0;f=1;break;case"bottom-right":u=1;f=1;break;case"bottom":u=1;f=0;break;case"bottom-left":u=1;f=-1;break;case"left":u=0;f=-1}do{d=(c-1)*ft;e=u;1>c+e&&(e=0);c+e>k&&(e=0);g=(c-1+e)*l*4;o=l;do{i=d+4*(o-1);s=f;1>o+s&&(s=0);o+s>l&&(s=0);var y=g+4*(o-1+s),et=t[i]-t[y],a=t[i+1]-t[y+1],v=t[i+2]-t[y+2],r=et,nt=r>0?r:-r,ot=a>0?a:-a,st=v>0?v:-v;if(ot>nt&&(r=a),st>nt&&(r=v),r*=tt,ut){var p=t[i]+r,w=t[i+1]+r,b=t[i+2]+r;t[i]=p>255?255:0>p?0:p;t[i+1]=w>255?255:0>w?0:w;t[i+2]=b>255?255:0>b?0:b}else h=it-r,0>h?h=0:h>255&&(h=255),t[i]=t[i+1]=t[i+2]=h}while(--o)}while(--c)};Kinetic.Factory.addGetterSetter(Kinetic.Node,"embossStrength",.5,null,Kinetic.Factory.afterSetFilter);Kinetic.Factory.addGetterSetter(Kinetic.Node,"embossWhiteLevel",.5,null,Kinetic.Factory.afterSetFilter);Kinetic.Factory.addGetterSetter(Kinetic.Node,"embossDirection","top-left",null,Kinetic.Factory.afterSetFilter);Kinetic.Factory.addGetterSetter(Kinetic.Node,"embossBlend",!1,null,Kinetic.Factory.afterSetFilter)}(),function(){function n(n,t,i,r,u){var f,o=i-t,e=u-r;return 0===o?r+e/2:0===e?r:(f=(n-t)/o,f=e*f+r)}Kinetic.Filters.Enhance=function(t){var v,y,p,r,u=t.data,ft=u.length,f=u[0],s=f,e=u[1],h=e,o=u[2],c=o,l=u[3],a=l,i=this.enhance(),w,b,k,d,g,nt,tt,it,et,rt,ot,ut;if(0!==i){for(r=0;ft>r;r+=4)v=u[r+0],f>v?f=v:v>s&&(s=v),y=u[r+1],e>y?e=y:y>h&&(h=y),p=u[r+2],o>p?o=p:p>c&&(c=p);for(s===f&&(s=255,f=0),h===e&&(h=255,e=0),c===o&&(c=255,o=0),a===l&&(a=255,l=0),i>0?(b=s+i*(255-s),k=f-i*(+f),g=h+i*(255-h),nt=e-i*(+e),it=c+i*(255-c),ut=o-i*(+o),ot=a+i*(255-a),et=l-i*(+l)):(w=.5*(s+f),b=s+i*(s-w),k=f+i*(f-w),d=.5*(h+e),g=h+i*(h-d),nt=e+i*(e-d),tt=.5*(c+o),it=c+i*(c-tt),ut=o+i*(o-tt),rt=.5*(a+l),ot=a+i*(a-rt),et=l+i*(l-rt)),r=0;ft>r;r+=4)u[r+0]=n(u[r+0],f,s,k,b),u[r+1]=n(u[r+1],e,h,nt,g),u[r+2]=n(u[r+2],o,c,ut,it)}};Kinetic.Factory.addGetterSetter(Kinetic.Node,"enhance",0,null,Kinetic.Factory.afterSetFilter)}(),function(){Kinetic.Filters.Posterize=function(n){for(var u=Math.round(254*this.levels())+1,i=n.data,f=i.length,r=255/u,t=0;f>t;t+=1)i[t]=Math.floor(i[t]/r)*r};Kinetic.Factory.addGetterSetter(Kinetic.Node,"levels",.5,null,Kinetic.Factory.afterSetFilter)}(),function(){Kinetic.Filters.Noise=function(n){for(var u=255*this.noise(),r=n.data,f=r.length,i=u/2,t=0;f>t;t+=4)r[t+0]+=i-2*i*Math.random(),r[t+1]+=i-2*i*Math.random(),r[t+2]+=i-2*i*Math.random()};Kinetic.Factory.addGetterSetter(Kinetic.Node,"noise",.2,null,Kinetic.Factory.afterSetFilter)}(),function(){Kinetic.Filters.Pixelate=function(n){var t,i,r,o,s,h,y,c,p,l,w,a,v,f,u=Math.ceil(this.pixelSize()),e=n.width,b=n.height,k=Math.ceil(e/u),d=Math.ceil(b/u);for(n=n.data,a=0;k>a;a+=1)for(v=0;d>v;v+=1){for(o=0,s=0,h=0,y=0,c=a*u,p=c+u,l=v*u,w=l+u,f=0,t=c;p>t;t+=1)if(!(t>=e))for(i=l;w>i;i+=1)i>=b||(r=4*(e*i+t),o+=n[r+0],s+=n[r+1],h+=n[r+2],y+=n[r+3],f+=1);for(o/=f,s/=f,h/=f,t=c;p>t;t+=1)if(!(t>=e))for(i=l;w>i;i+=1)i>=b||(r=4*(e*i+t),n[r+0]=o,n[r+1]=s,n[r+2]=h,n[r+3]=y)}};Kinetic.Factory.addGetterSetter(Kinetic.Node,"pixelSize",8,null,Kinetic.Factory.afterSetFilter)}(),function(){Kinetic.Filters.Threshold=function(n){for(var r=255*this.threshold(),i=n.data,u=i.length,t=0;u>t;t+=1)i[t]=i[t]<r?0:255};Kinetic.Factory.addGetterSetter(Kinetic.Node,"threshold",.5,null,Kinetic.Factory.afterSetFilter)}(),function(){Kinetic.Filters.Sepia=function(n){var c,e,t,r,u,f,o,s,h,i=n.data,l=n.width,a=n.height,v=4*l;do{c=(a-1)*v;e=l;do t=c+4*(e-1),r=i[t],u=i[t+1],f=i[t+2],o=.393*r+.769*u+.189*f,s=.349*r+.686*u+.168*f,h=.272*r+.534*u+.131*f,i[t]=o>255?255:o,i[t+1]=s>255?255:s,i[t+2]=h>255?255:h,i[t+3]=i[t+3];while(--e)}while(--a)}}(),function(){Kinetic.Filters.Solarize=function(n){var t=n.data,o=n.width,c=n.height,l=4*o,s=c,h,e;do{h=(s-1)*l;e=o;do{var i=h+4*(e-1),r=t[i],u=t[i+1],f=t[i+2];r>127&&(r=255-r);u>127&&(u=255-u);f>127&&(f=255-f);t[i]=r;t[i+1]=u;t[i+2]=f}while(--e)}while(--s)}}(),function(){var t=function(n,t,i){var r,e,o,y,c=n.data,l=t.data,s=n.width,p=n.height,a=i.polarCenterX||s/2,v=i.polarCenterY||p/2,b=0,k=0,d=0,g=0,h=Math.sqrt(a*a+v*v);e=s-a;o=p-v;y=Math.sqrt(e*e+o*o);h=y>h?y:h;for(var u,nt,tt,w=p,it=s,rt=360/it*Math.PI/180,f=0;it>f;f+=1)for(nt=Math.sin(f*rt),tt=Math.cos(f*rt),u=0;w>u;u+=1)e=Math.floor(a+h*u/w*tt),o=Math.floor(v+h*u/w*nt),r=4*(o*s+e),b=c[r+0],k=c[r+1],d=c[r+2],g=c[r+3],r=4*(f+u*s),l[r+0]=b,l[r+1]=k,l[r+2]=d,l[r+3]=g},i=function(n,t,i){var r,u,f,o,s,w,h=n.data,c=t.data,e=n.width,l=n.height,a=i.polarCenterX||e/2,v=i.polarCenterY||l/2,b=0,k=0,d=0,g=0,y=Math.sqrt(a*a+v*v);u=e-a;f=l-v;w=Math.sqrt(u*u+f*f);y=w>y?w:y;var nt,p,tt,it,rt=l,ut=e,ft=i.polarRotation||0;for(u=0;e>u;u+=1)for(f=0;l>f;f+=1)o=u-a,s=f-v,nt=Math.sqrt(o*o+s*s)*rt/y,p=(180*Math.atan2(s,o)/Math.PI+360+ft)%360,p=p*ut/360,tt=Math.floor(p),it=Math.floor(nt),r=4*(it*e+tt),b=h[r+0],k=h[r+1],d=h[r+2],g=h[r+3],r=4*(f*e+u),c[r+0]=b,c[r+1]=k,c[r+2]=d,c[r+3]=g},n=Kinetic.Util.createCanvasElement();Kinetic.Filters.Kaleidoscope=function(r){var e,o,d,k,v,y,p,w,s,h,f=r.width,a=r.height,b=Math.round(this.kaleidoscopePower()),rt=Math.round(this.kaleidoscopeAngle()),g=Math.floor(f*(rt%360)/360),u,c;if(!(1>b)){for(n.width=f,n.height=a,u=n.getContext("2d").getImageData(0,0,f,a),t(r,u,{polarCenterX:f/2,polarCenterY:a/2}),c=f/Math.pow(2,b);8>=c;)c=2*c,b-=1;c=Math.ceil(c);var l=c,nt=0,tt=l,it=1;for(g+c>f&&(nt=l,tt=0,it=-1),o=0;a>o;o+=1)for(e=nt;e!==tt;e+=it)d=Math.round(e+g)%f,s=4*(f*o+d),v=u.data[s+0],y=u.data[s+1],p=u.data[s+2],w=u.data[s+3],h=4*(f*o+e),u.data[h+0]=v,u.data[h+1]=y,u.data[h+2]=p,u.data[h+3]=w;for(o=0;a>o;o+=1)for(l=Math.floor(c),k=0;b>k;k+=1){for(e=0;l+1>e;e+=1)s=4*(f*o+e),v=u.data[s+0],y=u.data[s+1],p=u.data[s+2],w=u.data[s+3],h=4*(f*o+2*l-e-1),u.data[h+0]=v,u.data[h+1]=y,u.data[h+2]=p,u.data[h+3]=w;l*=2}i(u,r,{polarRotation:0})}};Kinetic.Factory.addGetterSetter(Kinetic.Node,"kaleidoscopePower",2,null,Kinetic.Factory.afterSetFilter);Kinetic.Factory.addGetterSetter(Kinetic.Node,"kaleidoscopeAngle",0,null,Kinetic.Factory.afterSetFilter)}(),function(){function i(n){Kinetic.root.setTimeout(n,1e3/60)}function r(){return f.apply(Kinetic.root,arguments)}var u=500,n=function(){return Kinetic.root.performance&&Kinetic.root.performance.now?function(){return Kinetic.root.performance.now()}:function(){return(new Date).getTime()}}(),f=function(){return Kinetic.root.requestAnimationFrame||Kinetic.root.webkitRequestAnimationFrame||Kinetic.root.mozRequestAnimationFrame||Kinetic.root.oRequestAnimationFrame||Kinetic.root.msRequestAnimationFrame||i}(),t;Kinetic.Animation=function(t,i){var r=Kinetic.Animation;this.func=t;this.setLayers(i);this.id=r.animIdCounter++;this.frame={time:0,timeDiff:0,lastTime:n()}};Kinetic.Animation.prototype={setLayers:function(n){var t=[];t=n?n.length>0?n:[n]:[];this.layers=t},getLayers:function(){return this.layers},addLayer:function(n){var r,t,i=this.layers;if(i){for(r=i.length,t=0;r>t;t++)if(i[t]._id===n._id)return!1}else this.layers=[];return this.layers.push(n),!0},isRunning:function(){for(var i=Kinetic.Animation,t=i.animations,r=t.length,n=0;r>n;n++)if(t[n].id===this.id)return!0;return!1},start:function(){var t=Kinetic.Animation;this.stop();this.frame.timeDiff=0;this.frame.lastTime=n();t._addAnimation(this)},stop:function(){Kinetic.Animation._removeAnimation(this)},_updateFrameObject:function(n){this.frame.timeDiff=n-this.frame.lastTime;this.frame.lastTime=n;this.frame.time+=this.frame.timeDiff;this.frame.frameRate=1e3/this.frame.timeDiff}};Kinetic.Animation.animations=[];Kinetic.Animation.animIdCounter=0;Kinetic.Animation.animRunning=!1;Kinetic.Animation._addAnimation=function(n){this.animations.push(n);this._handleAnimation()};Kinetic.Animation._removeAnimation=function(n){for(var r=n.id,i=this.animations,u=i.length,t=0;u>t;t++)if(i[t].id===r){this.animations.splice(t,1);break}};Kinetic.Animation._runFrames=function(){for(var t,f,e,r,s,u,h,o={},c=this.animations,i=0;i<c.length;i++){for(t=c[i],f=t.layers,e=t.func,t._updateFrameObject(n()),s=f.length,r=0;s>r;r++)u=f[r],void 0!==u._id&&(o[u._id]=u);e&&e.call(t,t.frame)}for(h in o)o[h].draw()};Kinetic.Animation._animationLoop=function(){var n=Kinetic.Animation;n.animations.length?(r(n._animationLoop),n._runFrames()):n.animRunning=!1};Kinetic.Animation._handleAnimation=function(){var n=this;this.animRunning||(this.animRunning=!0,n._animationLoop())};t=Kinetic.Node.prototype.moveTo;Kinetic.Node.prototype.moveTo=function(n){t.call(this,n)};Kinetic.Layer.prototype.batchDraw=function(){var t=this,i=Kinetic.Animation;this.batchAnim||(this.batchAnim=new i(function(){t.lastBatchDrawTime&&n()-t.lastBatchDrawTime>u&&t.batchAnim.stop()},this));this.lastBatchDrawTime=n();this.batchAnim.isRunning()||(this.draw(),this.batchAnim.start())};Kinetic.Stage.prototype.batchDraw=function(){this.getChildren().each(function(n){n.batchDraw()})}}(eval("this")),function(){var r={node:1,duration:1,easing:1,onFinish:1,yoyo:1},u=1,t=2,i=3,f=0,n;Kinetic.Tween=function(t){var u,o=this,e=t.node,i=e._id,s=t.duration||1,h=t.easing||Kinetic.Easings.Linear,c=!!t.yoyo;this.node=e;this._id=f++;this.anim=new Kinetic.Animation(function(){o.tween.onEnterFrame()},e.getLayer());this.tween=new n(u,function(n){o._tweenFunc(n)},h,0,1,1e3*s,c);this._addListeners();Kinetic.Tween.attrs[i]||(Kinetic.Tween.attrs[i]={});Kinetic.Tween.attrs[i][this._id]||(Kinetic.Tween.attrs[i][this._id]={});Kinetic.Tween.tweens[i]||(Kinetic.Tween.tweens[i]={});for(u in t)void 0===r[u]&&this._addAttr(u,t[u]);this.reset();this.onFinish=t.onFinish;this.onReset=t.onReset};Kinetic.Tween.attrs={};Kinetic.Tween.tweens={};Kinetic.Tween.prototype={_addAttr:function(n,t){var r,u,e,i,o,s=this.node,f=s._id;if(e=Kinetic.Tween.tweens[f][n],e&&delete Kinetic.Tween.attrs[f][e][n],r=s.getAttr(n),Kinetic.Util._isArray(t))for(u=[],o=t.length,i=0;o>i;i++)u.push(t[i]-r[i]);else u=t-r;Kinetic.Tween.attrs[f][this._id][n]={start:r,diff:u};Kinetic.Tween.tweens[f][n]=this._id},_tweenFunc:function(n){var u,f,t,e,r,i,o,s=this.node,h=Kinetic.Tween.attrs[s._id][this._id];for(u in h){if(f=h[u],t=f.start,e=f.diff,Kinetic.Util._isArray(t))for(r=[],o=t.length,i=0;o>i;i++)r.push(t[i]+e[i]*n);else r=t+e*n;s.setAttr(u,r)}},_addListeners:function(){var n=this;this.tween.onPlay=function(){n.anim.start()};this.tween.onReverse=function(){n.anim.start()};this.tween.onPause=function(){n.anim.stop()};this.tween.onFinish=function(){n.onFinish&&n.onFinish()};this.tween.onReset=function(){n.onReset&&n.onReset()}},play:function(){return this.tween.play(),this},reverse:function(){return this.tween.reverse(),this},reset:function(){return this.node,this.tween.reset(),this},seek:function(n){return this.node,this.tween.seek(1e3*n),this},pause:function(){return this.tween.pause(),this},finish:function(){return this.node,this.tween.finish(),this},destroy:function(){var t,n=this.node._id,i=this._id,r=Kinetic.Tween.tweens[n];this.pause();for(t in r)delete Kinetic.Tween.tweens[n][t];delete Kinetic.Tween.attrs[n][i]}};n=function(n,t,i,r,u,f,e){this.prop=n;this.propFunc=t;this.begin=r;this._pos=r;this.duration=f;this._change=0;this.prevPos=0;this.yoyo=e;this._time=0;this._position=0;this._startTime=0;this._finish=0;this.func=i;this._change=u-this.begin;this.pause()};n.prototype={fire:function(n){var t=this[n];t&&t()},setTime:function(n){n>this.duration?this.yoyo?(this._time=this.duration,this.reverse()):this.finish():0>n?this.yoyo?(this._time=0,this.play()):this.reset():(this._time=n,this.update())},getTime:function(){return this._time},setPosition:function(n){this.prevPos=this._pos;this.propFunc(n);this._pos=n},getPosition:function(n){return void 0===n&&(n=this._time),this.func(n,this.begin,this._change,this.duration)},play:function(){this.state=t;this._startTime=this.getTimer()-this._time;this.onEnterFrame();this.fire("onPlay")},reverse:function(){this.state=i;this._time=this.duration-this._time;this._startTime=this.getTimer()-this._time;this.onEnterFrame();this.fire("onReverse")},seek:function(n){this.pause();this._time=n;this.update();this.fire("onSeek")},reset:function(){this.pause();this._time=0;this.update();this.fire("onReset")},finish:function(){this.pause();this._time=this.duration;this.update();this.fire("onFinish")},update:function(){this.setPosition(this.getPosition(this._time))},onEnterFrame:function(){var n=this.getTimer()-this._startTime;this.state===t?this.setTime(n):this.state===i&&this.setTime(this.duration-n)},pause:function(){this.state=u;this.fire("onPause")},getTimer:function(){return(new Date).getTime()}};Kinetic.Easings={BackEaseIn:function(n,t,i,r){var u=1.70158;return i*(n/=r)*n*((u+1)*n-u)+t},BackEaseOut:function(n,t,i,r){var u=1.70158;return i*((n=n/r-1)*n*((u+1)*n+u)+1)+t},BackEaseInOut:function(n,t,i,r){var u=1.70158;return(n/=r/2)<1?i/2*n*n*(((u*=1.525)+1)*n-u)+t:i/2*((n-=2)*n*(((u*=1.525)+1)*n+u)+2)+t},ElasticEaseIn:function(n,t,i,r,u,f){var e=0;return 0===n?t:1==(n/=r)?t+i:(f||(f=.3*r),!u||u<Math.abs(i)?(u=i,e=f/4):e=f/(2*Math.PI)*Math.asin(i/u),-(u*Math.pow(2,10*(n-=1))*Math.sin(2*(n*r-e)*Math.PI/f))+t)},ElasticEaseOut:function(n,t,i,r,u,f){var e=0;return 0===n?t:1==(n/=r)?t+i:(f||(f=.3*r),!u||u<Math.abs(i)?(u=i,e=f/4):e=f/(2*Math.PI)*Math.asin(i/u),u*Math.pow(2,-10*n)*Math.sin(2*(n*r-e)*Math.PI/f)+i+t)},ElasticEaseInOut:function(n,t,i,r,u,f){var e=0;return 0===n?t:2==(n/=r/2)?t+i:(f||(f=.3*r*1.5),!u||u<Math.abs(i)?(u=i,e=f/4):e=f/(2*Math.PI)*Math.asin(i/u),1>n?-.5*u*Math.pow(2,10*(n-=1))*Math.sin(2*(n*r-e)*Math.PI/f)+t:u*Math.pow(2,-10*(n-=1))*Math.sin(2*(n*r-e)*Math.PI/f)*.5+i+t)},BounceEaseOut:function(n,t,i,r){return(n/=r)<1/2.75?7.5625*i*n*n+t:2/2.75>n?i*(7.5625*(n-=1.5/2.75)*n+.75)+t:2.5/2.75>n?i*(7.5625*(n-=2.25/2.75)*n+.9375)+t:i*(7.5625*(n-=2.625/2.75)*n+.984375)+t},BounceEaseIn:function(n,t,i,r){return i-Kinetic.Easings.BounceEaseOut(r-n,0,i,r)+t},BounceEaseInOut:function(n,t,i,r){return r/2>n?.5*Kinetic.Easings.BounceEaseIn(2*n,0,i,r)+t:.5*Kinetic.Easings.BounceEaseOut(2*n-r,0,i,r)+.5*i+t},EaseIn:function(n,t,i,r){return i*(n/=r)*n+t},EaseOut:function(n,t,i,r){return-i*(n/=r)*(n-2)+t},EaseInOut:function(n,t,i,r){return(n/=r/2)<1?i/2*n*n+t:-i/2*(--n*(n-2)-1)+t},StrongEaseIn:function(n,t,i,r){return i*(n/=r)*n*n*n*n+t},StrongEaseOut:function(n,t,i,r){return i*((n=n/r-1)*n*n*n*n+1)+t},StrongEaseInOut:function(n,t,i,r){return(n/=r/2)<1?i/2*n*n*n*n*n+t:i/2*((n-=2)*n*n*n*n+2)+t},Linear:function(n,t,i,r){return i*n/r+t}}}(),function(){var t,n;Kinetic.DD={anim:new Kinetic.Animation,isDragging:!1,offset:{x:0,y:0},node:null,_drag:function(n){var i=Kinetic.DD,t=i.node;if(t){if(!i.isDragging){var r=t.getStage().getPointerPosition(),u=t.dragDistance(),f=Math.max(Math.abs(r.x-i.startPointerPos.x),Math.abs(r.y-i.startPointerPos.y));if(u>f)return}t._setDragPosition(n);i.isDragging||(i.isDragging=!0,t.fire("dragstart",{type:"dragstart",target:t,evt:n},!0));t.fire("dragmove",{type:"dragmove",target:t,evt:n},!0)}},_endDragBefore:function(n){var u,r,t=Kinetic.DD,i=t.node;i&&(u=i.nodeType,r=i.getLayer(),t.anim.stop(),t.isDragging&&(t.isDragging=!1,Kinetic.listenClickTap=!1,n&&(n.dragEndNode=i)),delete t.node,(r||i).draw())},_endDragAfter:function(n){n=n||{};var t=n.dragEndNode;n&&t&&t.fire("dragend",{type:"dragend",target:t,evt:n},!0)}};Kinetic.Node.prototype.startDrag=function(){var n=Kinetic.DD,r=this.getStage(),u=this.getLayer(),t=r.getPointerPosition(),i=this.getAbsolutePosition();t&&(n.node&&n.node.stopDrag(),n.node=this,n.startPointerPos=t,n.offset.x=t.x-i.x,n.offset.y=t.y-i.y,n.anim.setLayers(u||this.getLayers()),n.anim.start(),this._setDragPosition())};Kinetic.Node.prototype._setDragPosition=function(n){var r=Kinetic.DD,i=this.getStage().getPointerPosition(),u=this.getDragBoundFunc(),t;i&&(t={x:i.x-r.offset.x,y:i.y-r.offset.y},void 0!==u&&(t=u.call(this,t,n)),this.setAbsolutePosition(t))};Kinetic.Node.prototype.stopDrag=function(){var n=Kinetic.DD,t={};n._endDragBefore(t);n._endDragAfter(t)};Kinetic.Node.prototype.setDraggable=function(n){this._setAttr("draggable",n);this._dragChange()};t=Kinetic.Node.prototype.destroy;Kinetic.Node.prototype.destroy=function(){var n=Kinetic.DD;n.node&&n.node._id===this._id&&this.stopDrag();t.call(this)};Kinetic.Node.prototype.isDragging=function(){var n=Kinetic.DD;return n.node&&n.node._id===this._id&&n.isDragging};Kinetic.Node.prototype._listenDrag=function(){var n=this;this._dragCleanup();"Stage"===this.getClassName()?this.on("contentMousedown.kinetic contentTouchstart.kinetic",function(t){Kinetic.DD.node||n.startDrag(t)}):this.on("mousedown.kinetic touchstart.kinetic",function(t){Kinetic.DD.node||n.startDrag(t)})};Kinetic.Node.prototype._dragChange=function(){if(this.attrs.draggable)this._listenDrag();else{this._dragCleanup();var t=this.getStage(),n=Kinetic.DD;t&&n.node&&n.node._id===this._id&&n.node.stopDrag()}};Kinetic.Node.prototype._dragCleanup=function(){"Stage"===this.getClassName()?(this.off("contentMousedown.kinetic"),this.off("contentTouchstart.kinetic")):(this.off("mousedown.kinetic"),this.off("touchstart.kinetic"))};Kinetic.Factory.addGetterSetter(Kinetic.Node,"dragBoundFunc");Kinetic.Factory.addGetter(Kinetic.Node,"draggable",!1);Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"draggable");n=Kinetic.document.documentElement;n.addEventListener("mouseup",Kinetic.DD._endDragBefore,!0);n.addEventListener("touchend",Kinetic.DD._endDragBefore,!0);n.addEventListener("mouseup",Kinetic.DD._endDragAfter,!1);n.addEventListener("touchend",Kinetic.DD._endDragAfter,!1)}(),function(){Kinetic.Util.addMethods(Kinetic.Container,{__init:function(n){this.children=new Kinetic.Collection;Kinetic.Node.call(this,n)},getChildren:function(n){if(n){var t=new Kinetic.Collection;return this.children.each(function(i){n(i)&&t.push(i)}),t}return this.children},hasChildren:function(){return this.getChildren().length>0},removeChildren:function(){for(var n,t=Kinetic.Collection.toCollection(this.children),i=0;i<t.length;i++)n=t[i],delete n.parent,n.index=0,n.hasChildren()&&n.removeChildren(),n.remove();return t=null,this.children=new Kinetic.Collection,this},destroyChildren:function(){for(var n,t=Kinetic.Collection.toCollection(this.children),i=0;i<t.length;i++)n=t[i],delete n.parent,n.index=0,n.destroy();return t=null,this.children=new Kinetic.Collection,this},add:function(n){var i,t;if(!(arguments.length>1))return n.getParent()?void n.moveTo(this):(i=this.children,this._validateAdd(n),n.index=i.length,n.parent=this,i.push(n),this._fire("add",{child:n}),this);for(t=0;t<arguments.length;t++)this.add(arguments[t])},destroy:function(){this.hasChildren()&&this.destroyChildren();Kinetic.Node.prototype.destroy.call(this)},find:function(n){for(var u,t,o,f,e,s,i=[],h=n.replace(/ /g,"").split(","),c=h.length,r=0;c>r;r++)if(t=h[r],"#"===t.charAt(0))f=this._getNodeById(t.slice(1)),f&&i.push(f);else if("."===t.charAt(0))o=this._getNodesByName(t.slice(1)),i=i.concat(o);else for(e=this.getChildren(),s=e.length,u=0;s>u;u++)i=i.concat(e[u]._get(t));return Kinetic.Collection.toCollection(i)},_getNodeById:function(n){var t=Kinetic.ids[n];return void 0!==t&&this.isAncestorOf(t)?t:null},_getNodesByName:function(n){var t=Kinetic.names[n]||[];return this._getDescendants(t)},_get:function(n){for(var t=Kinetic.Node.prototype._get.call(this,n),r=this.getChildren(),u=r.length,i=0;u>i;i++)t=t.concat(r[i]._get(n));return t},toObject:function(){var n=Kinetic.Node.prototype.toObject.call(this),r;n.children=[];for(var i=this.getChildren(),u=i.length,t=0;u>t;t++)r=i[t],n.children.push(r.toObject());return n},_getDescendants:function(n){for(var i,r=[],u=n.length,t=0;u>t;t++)i=n[t],this.isAncestorOf(i)&&r.push(i);return r},isAncestorOf:function(n){for(var t=n.getParent();t;){if(t._id===this._id)return!0;t=t.getParent()}return!1},clone:function(n){var t=Kinetic.Node.prototype.clone.call(this,n);return this.getChildren().each(function(n){t.add(n.clone())}),t},getAllIntersections:function(n){var t=[];return this.find("Shape").each(function(i){i.isVisible()&&i.intersects(n)&&t.push(i)}),t},_setChildrenIndices:function(){this.children.each(function(n,t){n.index=t})},drawScene:function(n,t){var r=this.getLayer(),i=n||r&&r.getCanvas(),f=i&&i.getContext(),u=this._cache.canvas,e=u&&u.scene;return this.isVisible()&&(e?this._drawCachedSceneCanvas(f):this._drawChildren(i,"drawScene",t)),this},drawHit:function(n,t){var r=this.getLayer(),i=n||r&&r.hitCanvas,f=i&&i.getContext(),u=this._cache.canvas,e=u&&u.hit;return this.shouldDrawHit()&&(e?this._drawCachedHitCanvas(f):this._drawChildren(i,"drawHit",t)),this},_drawChildren:function(n,t,i){var u,f,e=this.getLayer(),r=n&&n.getContext(),o=this.getClipWidth(),s=this.getClipHeight(),h=o&&s;h&&e&&(u=this.getClipX(),f=this.getClipY(),r.save(),e._applyTransform(this,r),r.beginPath(),r.rect(u,f,o,s),r.clip(),r.reset());this.children.each(function(r){r[t](n,i)});h&&r.restore()}});Kinetic.Util.extend(Kinetic.Container,Kinetic.Node);Kinetic.Container.prototype.get=Kinetic.Container.prototype.find;Kinetic.Factory.addComponentsGetterSetter(Kinetic.Container,"clip",["x","y","width","height"]);Kinetic.Factory.addGetterSetter(Kinetic.Container,"clipX");Kinetic.Factory.addGetterSetter(Kinetic.Container,"clipY");Kinetic.Factory.addGetterSetter(Kinetic.Container,"clipWidth");Kinetic.Factory.addGetterSetter(Kinetic.Container,"clipHeight");Kinetic.Collection.mapMethods(Kinetic.Container)}(),function(){function t(n){n.fill()}function i(n){n.stroke()}function r(n){n.fill()}function u(n){n.stroke()}function f(){this._clearCache(n)}var n="hasShadow";Kinetic.Util.addMethods(Kinetic.Shape,{__init:function(n){this.nodeType="Shape";this._fillFunc=t;this._strokeFunc=i;this._fillFuncHit=r;this._strokeFuncHit=u;for(var e,o=Kinetic.shapes;;)if(e=Kinetic.Util.getRandomColor(),e&&!(e in o))break;this.colorKey=e;o[e]=this;Kinetic.Node.call(this,n);this.on("shadowColorChange.kinetic shadowBlurChange.kinetic shadowOffsetChange.kinetic shadowOpacityChange.kinetic shadowEnabledChange.kinetic",f)},hasChildren:function(){return!1},getChildren:function(){return[]},getContext:function(){return this.getLayer().getContext()},getCanvas:function(){return this.getLayer().getCanvas()},hasShadow:function(){return this._getCache(n,this._hasShadow)},_hasShadow:function(){return this.getShadowEnabled()&&0!==this.getShadowOpacity()&&!!(this.getShadowColor()||this.getShadowBlur()||this.getShadowOffsetX()||this.getShadowOffsetY())},hasFill:function(){return!!(this.getFill()||this.getFillPatternImage()||this.getFillLinearGradientColorStops()||this.getFillRadialGradientColorStops())},hasStroke:function(){return!!(this.stroke()||this.strokeRed()||this.strokeGreen()||this.strokeBlue())},_get:function(n){return this.className===n||this.nodeType===n?[this]:[]},intersects:function(n){var i,r=this.getStage(),t=r.bufferHitCanvas;return t.getContext().clear(),this.drawScene(t),i=t.context.getImageData(Math.round(n.x),Math.round(n.y),1,1).data,i[3]>0},destroy:function(){Kinetic.Node.prototype.destroy.call(this);delete Kinetic.shapes[this.colorKey]},_useBufferCanvas:function(){return(this.hasShadow()||1!==this.getAbsoluteOpacity())&&this.hasFill()&&this.hasStroke()&&this.getStage()},drawScene:function(n,t){var o,u,r,e=this.getLayer(),h=n||e.getCanvas(),i=h.getContext(),c=this._cache.canvas,f=this.sceneFunc(),s=this.hasShadow();return this.isVisible()&&(c?this._drawCachedSceneCanvas(i):f&&(i.save(),this._useBufferCanvas()?(o=this.getStage(),u=o.bufferCanvas,r=u.getContext(),r.clear(),r.save(),r._applyLineJoin(this),e._applyTransform(this,r,t),f.call(this,r),r.restore(),s&&(i.save(),i._applyShadow(this),i.drawImage(u._canvas,0,0),i.restore()),i._applyOpacity(this),i.drawImage(u._canvas,0,0)):(i._applyLineJoin(this),e._applyTransform(this,i,t),s&&(i.save(),i._applyShadow(this),f.call(this,i),i.restore()),i._applyOpacity(this),f.call(this,i)),i.restore())),this},drawHit:function(n,t){var r=this.getLayer(),e=n||r.hitCanvas,i=e.getContext(),u=this.hitFunc()||this.sceneFunc(),f=this._cache.canvas,o=f&&f.hit;return this.shouldDrawHit()&&(o?this._drawCachedHitCanvas(i):u&&(i.save(),i._applyLineJoin(this),r._applyTransform(this,i,t),u.call(this,i),i.restore())),this},drawHitFromCache:function(n){var s,u,f,i,h,r,t,c,v=n||0,y=this._cache.canvas,e=this._getCachedSceneCanvas(),p=e.getContext(),w=y.hit,o=w.getContext(),l=e.getWidth(),a=e.getHeight();o.clear();try{for(s=p.getImageData(0,0,l,a),u=s.data,f=o.getImageData(0,0,l,a),i=f.data,h=u.length,r=Kinetic.Util._hexToRgb(this.colorKey),t=0;h>t;t+=4)c=u[t+3],c>v&&(i[t]=r.r,i[t+1]=r.g,i[t+2]=r.b,i[t+3]=255);o.putImageData(f,0,0)}catch(b){Kinetic.Util.warn("Unable to draw hit graph from cached scene canvas. "+b.message)}return this}});Kinetic.Util.extend(Kinetic.Shape,Kinetic.Node);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"stroke");Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeRed",0,Kinetic.Validators.RGBComponent);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeGreen",0,Kinetic.Validators.RGBComponent);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeBlue",0,Kinetic.Validators.RGBComponent);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeAlpha",1,Kinetic.Validators.alphaComponent);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeWidth",2);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"lineJoin");Kinetic.Factory.addGetterSetter(Kinetic.Shape,"lineCap");Kinetic.Factory.addGetterSetter(Kinetic.Shape,"sceneFunc");Kinetic.Factory.addGetterSetter(Kinetic.Shape,"hitFunc");Kinetic.Factory.addGetterSetter(Kinetic.Shape,"dash");Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowColor");Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowRed",0,Kinetic.Validators.RGBComponent);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowGreen",0,Kinetic.Validators.RGBComponent);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowBlue",0,Kinetic.Validators.RGBComponent);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowAlpha",1,Kinetic.Validators.alphaComponent);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowBlur");Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowOpacity");Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"shadowOffset",["x","y"]);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowOffsetX",0);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowOffsetY",0);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternImage");Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fill");Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRed",0,Kinetic.Validators.RGBComponent);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillGreen",0,Kinetic.Validators.RGBComponent);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillBlue",0,Kinetic.Validators.RGBComponent);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillAlpha",1,Kinetic.Validators.alphaComponent);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternX",0);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternY",0);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientColorStops");Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientStartRadius",0);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientEndRadius",0);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientColorStops");Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternRepeat","repeat");Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillEnabled",!0);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeEnabled",!0);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowEnabled",!0);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"dashEnabled",!0);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeScaleEnabled",!0);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPriority","color");Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillPatternOffset",["x","y"]);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternOffsetX",0);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternOffsetY",0);Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillPatternScale",["x","y"]);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternScaleX",1);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternScaleY",1);Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillLinearGradientStartPoint",["x","y"]);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientStartPointX",0);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientStartPointY",0);Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillLinearGradientEndPoint",["x","y"]);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientEndPointX",0);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientEndPointY",0);Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillRadialGradientStartPoint",["x","y"]);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientStartPointX",0);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientStartPointY",0);Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillRadialGradientEndPoint",["x","y"]);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientEndPointX",0);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientEndPointY",0);Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternRotation",0);Kinetic.Factory.backCompat(Kinetic.Shape,{dashArray:"dash",getDashArray:"getDash",setDashArray:"getDash",drawFunc:"sceneFunc",getDrawFunc:"getSceneFunc",setDrawFunc:"setSceneFunc",drawHitFunc:"hitFunc",getDrawHitFunc:"getHitFunc",setDrawHitFunc:"setHitFunc"});Kinetic.Collection.mapMethods(Kinetic.Shape)}(),function(){function a(n,t){n.content.addEventListener(t,function(i){n[yt+t](i)},!1)}var v="Stage",y="string",r="px",n="mouseout",t="mouseleave",u="mouseover",p="mouseenter",f="mousemove",e="mousedown",o="mouseup",w="click",b="dblclick",s="touchstart",h="touchend",k="tap",d="dbltap",c="touchmove",g="contentMouseout",nt="contentMouseover",tt="contentMousemove",it="contentMousedown",rt="contentMouseup",ut="contentClick",ft="contentDblclick",et="contentTouchstart",ot="contentTouchend",st="contentDbltap",ht="contentTouchmove",i="div",ct="relative",lt="inline-block",at="kineticjs-content",vt=" ",yt="_",pt="container",wt="",l=[e,f,o,n,s,c,h,u],bt=l.length;Kinetic.Util.addMethods(Kinetic.Stage,{___init:function(n){this.nodeType=v;Kinetic.Container.call(this,n);this._id=Kinetic.idCounter++;this._buildDOM();this._bindContentEvents();this._enableNestedTransforms=!1;Kinetic.stages.push(this)},_validateAdd:function(n){"Layer"!==n.getType()&&Kinetic.Util.error("You may only add layers to the stage.")},setContainer:function(n){if(typeof n===y){var t=n;if(n=Kinetic.document.getElementById(n),!n)throw"Can not find container in document with id "+t;}return this._setAttr(pt,n),this},shouldDrawHit:function(){return!0},draw:function(){return Kinetic.Node.prototype.draw.call(this),this},setHeight:function(n){return Kinetic.Node.prototype.setHeight.call(this,n),this._resizeDOM(),this},setWidth:function(n){return Kinetic.Node.prototype.setWidth.call(this,n),this._resizeDOM(),this},clear:function(){for(var t=this.children,i=t.length,n=0;i>n;n++)t[n].clear();return this},clone:function(n){return n||(n={}),n.container=Kinetic.document.createElement(i),Kinetic.Container.prototype.clone.call(this,n)},destroy:function(){var n=this.content,t;Kinetic.Container.prototype.destroy.call(this);n&&Kinetic.Util._isInDocument(n)&&this.getContainer().removeChild(n);t=Kinetic.stages.indexOf(this);t>-1&&Kinetic.stages.splice(t,1)},getPointerPosition:function(){return this.pointerPos},getStage:function(){return this},getContent:function(){return this.content},toDataURL:function(n){function t(i){var h=e[i],c=h.toDataURL(),r=new Kinetic.window.Image;r.onload=function(){f.drawImage(r,0,0);i<e.length-1?t(i+1):n.callback(u.toDataURL(o,s))};r.src=c}n=n||{};var o=n.mimeType||null,s=n.quality||null,i=n.x||0,r=n.y||0,u=new Kinetic.SceneCanvas({width:n.width||this.getWidth(),height:n.height||this.getHeight(),pixelRatio:1}),f=u.getContext()._context,e=this.children;(i||r)&&f.translate(-1*i,-1*r);t(0)},toImage:function(n){var t=n.callback;n.callback=function(n){Kinetic.Util._getImage(n,function(n){t(n)})};this.toDataURL(n)},getIntersection:function(n){for(var i,r=this.getChildren(),u=r.length,f=u-1,t=f;t>=0;t--)if(i=r[t].getIntersection(n))return i;return null},_resizeDOM:function(){if(this.content){var i,u,n=this.getWidth(),t=this.getHeight(),f=this.getChildren(),e=f.length;for(this.content.style.width=n+r,this.content.style.height=t+r,this.bufferCanvas.setSize(n,t),this.bufferHitCanvas.setSize(n,t),i=0;e>i;i++)u=f[i],u.getCanvas().setSize(n,t),u.hitCanvas.setSize(n,t),u.draw()}},add:function(n){if(!(arguments.length>1))return Kinetic.Container.prototype.add.call(this,n),n._setCanvasSize(this.width(),this.height()),n.draw(),this.content.appendChild(n.canvas._canvas),this;for(var t=0;t<arguments.length;t++)this.add(arguments[t])},getParent:function(){return null},getLayer:function(){return null},getLayers:function(){return this.getChildren()},_bindContentEvents:function(){for(var n=0;bt>n;n++)a(this,l[n])},_mouseover:function(n){Kinetic.UA.mobile||(this._setPointerPosition(n),this._fire(nt,{evt:n}))},_mouseout:function(i){if(!Kinetic.UA.mobile){this._setPointerPosition(i);var r=this.targetShape;r&&!Kinetic.isDragging()&&(r._fireAndBubble(n,{evt:i}),r._fireAndBubble(t,{evt:i}),this.targetShape=null);this.pointerPos=void 0;this._fire(g,{evt:i})}},_mousemove:function(i){if(!Kinetic.UA.mobile){this._setPointerPosition(i);var e=Kinetic.DD,r=this.getIntersection(this.getPointerPosition());r&&r.isListening()?Kinetic.isDragging()||this.targetShape&&this.targetShape._id===r._id?r._fireAndBubble(f,{evt:i}):(this.targetShape&&(this.targetShape._fireAndBubble(n,{evt:i},r),this.targetShape._fireAndBubble(t,{evt:i},r)),r._fireAndBubble(u,{evt:i},this.targetShape),r._fireAndBubble(p,{evt:i},this.targetShape),this.targetShape=r):this.targetShape&&!Kinetic.isDragging()&&(this.targetShape._fireAndBubble(n,{evt:i}),this.targetShape._fireAndBubble(t,{evt:i}),this.targetShape=null);this._fire(tt,{evt:i});e&&e._drag(i)}i.preventDefault&&i.preventDefault()},_mousedown:function(n){if(!Kinetic.UA.mobile){this._setPointerPosition(n);var t=this.getIntersection(this.getPointerPosition());Kinetic.listenClickTap=!0;t&&t.isListening()&&(this.clickStartShape=t,t._fireAndBubble(e,{evt:n}));this._fire(it,{evt:n})}n.preventDefault&&n.preventDefault()},_mouseup:function(n){if(!Kinetic.UA.mobile){this._setPointerPosition(n);var t=this.getIntersection(this.getPointerPosition()),r=this.clickStartShape,i=!1;Kinetic.inDblClickWindow?(i=!0,Kinetic.inDblClickWindow=!1):Kinetic.inDblClickWindow=!0;setTimeout(function(){Kinetic.inDblClickWindow=!1},Kinetic.dblClickWindow);t&&t.isListening()&&(t._fireAndBubble(o,{evt:n}),Kinetic.listenClickTap&&r&&r._id===t._id&&(t._fireAndBubble(w,{evt:n}),i&&t._fireAndBubble(b,{evt:n})));this._fire(rt,{evt:n});Kinetic.listenClickTap&&(this._fire(ut,{evt:n}),i&&this._fire(ft,{evt:n}));Kinetic.listenClickTap=!1}n.preventDefault&&n.preventDefault()},_touchstart:function(n){this._setPointerPosition(n);var t=this.getIntersection(this.getPointerPosition());Kinetic.listenClickTap=!0;t&&t.isListening()&&(this.tapStartShape=t,t._fireAndBubble(s,{evt:n}),t.isListening()&&n.preventDefault&&n.preventDefault());this._fire(et,{evt:n})},_touchend:function(n){this._setPointerPosition(n);var t=this.getIntersection(this.getPointerPosition()),i=!1;Kinetic.inDblClickWindow?(i=!0,Kinetic.inDblClickWindow=!1):Kinetic.inDblClickWindow=!0;setTimeout(function(){Kinetic.inDblClickWindow=!1},Kinetic.dblClickWindow);t&&t.isListening()&&(t._fireAndBubble(h,{evt:n}),Kinetic.listenClickTap&&t._id===this.tapStartShape._id&&(t._fireAndBubble(k,{evt:n}),i&&t._fireAndBubble(d,{evt:n})),t.isListening()&&n.preventDefault&&n.preventDefault());Kinetic.listenClickTap&&(this._fire(ot,{evt:n}),i&&this._fire(st,{evt:n}));Kinetic.listenClickTap=!1},_touchmove:function(n){this._setPointerPosition(n);var i=Kinetic.DD,t=this.getIntersection(this.getPointerPosition());t&&t.isListening()&&(t._fireAndBubble(c,{evt:n}),t.isListening()&&n.preventDefault&&n.preventDefault());this._fire(ht,{evt:n});i&&i._drag(n)},_setPointerPosition:function(n){var u,r=this._getContentPosition(),f=n.offsetX,e=n.clientX,t=null,i=null;n=n?n:window.event;void 0!==n.touches?n.touches.length>0&&(u=n.touches[0],t=u.clientX-r.left,i=u.clientY-r.top):void 0!==f?(t=f,i=n.offsetY):"mozilla"===Kinetic.UA.browser?(t=n.layerX,i=n.layerY):void 0!==e&&r&&(t=e-r.left,i=n.clientY-r.top);null!==t&&null!==i&&(this.pointerPos={x:t,y:i})},_getContentPosition:function(){var n=this.content.getBoundingClientRect?this.content.getBoundingClientRect():{top:0,left:0};return{top:n.top,left:n.left}},_buildDOM:function(){var n=this.getContainer();if(!n){if(Kinetic.Util.isBrowser())throw"Stage has not container. But container is required";n=Kinetic.document.createElement(i)}n.innerHTML=wt;this.content=Kinetic.document.createElement(i);this.content.style.position=ct;this.content.style.display=lt;this.content.className=at;this.content.setAttribute("role","presentation");n.appendChild(this.content);this.bufferCanvas=new Kinetic.SceneCanvas({pixelRatio:1});this.bufferHitCanvas=new Kinetic.HitCanvas;this._resizeDOM()},_onContent:function(n,t){for(var r,u=n.split(vt),f=u.length,i=0;f>i;i++)r=u[i],this.content.addEventListener(r,t,!1)},cache:function(){Kinetic.Util.warn("Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.")},clearCache:function(){}});Kinetic.Util.extend(Kinetic.Stage,Kinetic.Container);Kinetic.Factory.addGetter(Kinetic.Stage,"container");Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Stage,"container")}(),function(){Kinetic.Util.addMethods(Kinetic.BaseLayer,{___init:function(n){this.nodeType="Layer";Kinetic.Container.call(this,n)},createPNGStream:function(){return this.canvas._canvas.createPNGStream()},getCanvas:function(){return this.canvas},getHitCanvas:function(){return this.hitCanvas},getContext:function(){return this.getCanvas().getContext()},clear:function(n){return this.getContext().clear(n),this.getHitCanvas().getContext().clear(n),this},setZIndex:function(n){Kinetic.Node.prototype.setZIndex.call(this,n);var t=this.getStage();return t&&(t.content.removeChild(this.getCanvas()._canvas),n<t.getChildren().length-1?t.content.insertBefore(this.getCanvas()._canvas,t.getChildren()[n+1].getCanvas()._canvas):t.content.appendChild(this.getCanvas()._canvas)),this},moveToTop:function(){Kinetic.Node.prototype.moveToTop.call(this);var n=this.getStage();n&&(n.content.removeChild(this.getCanvas()._canvas),n.content.appendChild(this.getCanvas()._canvas))},moveUp:function(){if(Kinetic.Node.prototype.moveUp.call(this)){var n=this.getStage();n&&(n.content.removeChild(this.getCanvas()._canvas),this.index<n.getChildren().length-1?n.content.insertBefore(this.getCanvas()._canvas,n.getChildren()[this.index+1].getCanvas()._canvas):n.content.appendChild(this.getCanvas()._canvas))}},moveDown:function(){var n,t;Kinetic.Node.prototype.moveDown.call(this)&&(n=this.getStage(),n&&(t=n.getChildren(),n.content.removeChild(this.getCanvas()._canvas),n.content.insertBefore(this.getCanvas()._canvas,t[this.index+1].getCanvas()._canvas)))},moveToBottom:function(){var n,t;Kinetic.Node.prototype.moveToBottom.call(this)&&(n=this.getStage(),n&&(t=n.getChildren(),n.content.removeChild(this.getCanvas()._canvas),n.content.insertBefore(this.getCanvas()._canvas,t[1].getCanvas()._canvas)))},getLayer:function(){return this},remove:function(){var n=this.getCanvas()._canvas;return Kinetic.Node.prototype.remove.call(this),n&&n.parentNode&&Kinetic.Util._isInDocument(n)&&n.parentNode.removeChild(n),this},getStage:function(){return this.parent}});Kinetic.Util.extend(Kinetic.BaseLayer,Kinetic.Container);Kinetic.Factory.addGetterSetter(Kinetic.BaseLayer,"clearBeforeDraw",!0);Kinetic.Collection.mapMethods(Kinetic.BaseLayer)}(),function(){var t="#",i="beforeDraw",r="draw",n=[{x:0,y:0},{x:-1,y:0},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:1,y:0},{x:1,y:1},{x:0,y:1},{x:-1,y:1}],u=n.length;Kinetic.Util.addMethods(Kinetic.Layer,{____init:function(n){this.nodeType="Layer";this.canvas=new Kinetic.SceneCanvas;this.hitCanvas=new Kinetic.HitCanvas;Kinetic.BaseLayer.call(this,n)},_setCanvasSize:function(n,t){this.canvas.setSize(n,t);this.hitCanvas.setSize(n,t)},_validateAdd:function(n){var t=n.getType();"Group"!==t&&"Shape"!==t&&Kinetic.Util.error("You may only add groups and shapes to a layer.")},getIntersection:function(t){var r,i,f,e;if(!this.hitGraphEnabled()||!this.isVisible())return null;for(i=0;u>i;i++){if(f=n[i],r=this._getIntersection({x:t.x+f.x,y:t.y+f.y}),e=r.shape)return e;if(!r.antialiased)return null}},_getIntersection:function(n){var r,u,i=this.hitCanvas.context._context.getImageData(n.x,n.y,1,1).data,f=i[3];return 255===f?(r=Kinetic.Util._rgbToHex(i[0],i[1],i[2]),u=Kinetic.shapes[t+r],{shape:u}):f>0?{antialiased:!0}:{}},drawScene:function(n,t){var u=this.getLayer(),f=n||u&&u.getCanvas();return this._fire(i,{node:this}),this.getClearBeforeDraw()&&f.getContext().clear(),Kinetic.Container.prototype.drawScene.call(this,f,t),this._fire(r,{node:this}),this},_applyTransform:function(n,t,i){var r=n.getAbsoluteTransform(i).getMatrix();t.transform(r[0],r[1],r[2],r[3],r[4],r[5])},drawHit:function(n,t){var i=this.getLayer(),r=n||i&&i.hitCanvas;return i&&i.getClearBeforeDraw()&&i.getHitCanvas().getContext().clear(),Kinetic.Container.prototype.drawHit.call(this,r,t),this},clear:function(n){return this.getContext().clear(n),this.getHitCanvas().getContext().clear(n),this},setVisible:function(n){return Kinetic.Node.prototype.setVisible.call(this,n),n?(this.getCanvas()._canvas.style.display="block",this.hitCanvas._canvas.style.display="block"):(this.getCanvas()._canvas.style.display="none",this.hitCanvas._canvas.style.display="none"),this},enableHitGraph:function(){return this.setHitGraphEnabled(!0),this},disableHitGraph:function(){return this.setHitGraphEnabled(!1),this}});Kinetic.Util.extend(Kinetic.Layer,Kinetic.BaseLayer);Kinetic.Factory.addGetterSetter(Kinetic.Layer,"hitGraphEnabled",!0);Kinetic.Collection.mapMethods(Kinetic.Layer)}(),function(){Kinetic.Util.addMethods(Kinetic.FastLayer,{____init:function(n){this.nodeType="Layer";this.canvas=new Kinetic.SceneCanvas;Kinetic.BaseLayer.call(this,n)},_validateAdd:function(n){var t=n.getType();"Shape"!==t&&Kinetic.Util.error("You may only add shapes to a fast layer.")},_setCanvasSize:function(n,t){this.canvas.setSize(n,t)},hitGraphEnabled:function(){return!1},getIntersection:function(){return null},drawScene:function(n){var t=this.getLayer(),i=n||t&&t.getCanvas();return this.getClearBeforeDraw()&&i.getContext().clear(),Kinetic.Container.prototype.drawScene.call(this,i),this},_applyTransform:function(n,t,i){if(!i||i._id!==this._id){var r=n.getTransform().getMatrix();t.transform(r[0],r[1],r[2],r[3],r[4],r[5])}},draw:function(){return this.drawScene(),this},clear:function(n){return this.getContext().clear(n),this},setVisible:function(n){return Kinetic.Node.prototype.setVisible.call(this,n),this.getCanvas()._canvas.style.display=n?"block":"none",this}});Kinetic.Util.extend(Kinetic.FastLayer,Kinetic.BaseLayer);Kinetic.Collection.mapMethods(Kinetic.FastLayer)}(),function(){Kinetic.Util.addMethods(Kinetic.Group,{___init:function(n){this.nodeType="Group";Kinetic.Container.call(this,n)},_validateAdd:function(n){var t=n.getType();"Group"!==t&&"Shape"!==t&&Kinetic.Util.error("You may only add groups and shapes to groups.")}});Kinetic.Util.extend(Kinetic.Group,Kinetic.Container);Kinetic.Collection.mapMethods(Kinetic.Group)}(),function(){Kinetic.Rect=function(n){this.___init(n)};Kinetic.Rect.prototype={___init:function(n){Kinetic.Shape.call(this,n);this.className="Rect";this.sceneFunc(this._sceneFunc)},_sceneFunc:function(n){var t=this.getCornerRadius(),i=this.getWidth(),r=this.getHeight();n.beginPath();t?(n.moveTo(t,0),n.lineTo(i-t,0),n.arc(i-t,t,t,3*Math.PI/2,0,!1),n.lineTo(i,r-t),n.arc(i-t,r-t,t,0,Math.PI/2,!1),n.lineTo(t,r),n.arc(t,r-t,t,Math.PI/2,Math.PI,!1),n.lineTo(0,t),n.arc(t,t,t,Math.PI,3*Math.PI/2,!1)):n.rect(0,0,i,r);n.closePath();n.fillStrokeShape(this)}};Kinetic.Util.extend(Kinetic.Rect,Kinetic.Shape);Kinetic.Factory.addGetterSetter(Kinetic.Rect,"cornerRadius",0);Kinetic.Collection.mapMethods(Kinetic.Rect)}(),function(){var n=2*Math.PI-.0001,t="Circle";Kinetic.Circle=function(n){this.___init(n)};Kinetic.Circle.prototype={___init:function(n){Kinetic.Shape.call(this,n);this.className=t;this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){t.beginPath();t.arc(0,0,this.getRadius(),0,n,!1);t.closePath();t.fillStrokeShape(this)},getWidth:function(){return 2*this.getRadius()},getHeight:function(){return 2*this.getRadius()},setWidth:function(n){Kinetic.Node.prototype.setWidth.call(this,n);this.setRadius(n/2)},setHeight:function(n){Kinetic.Node.prototype.setHeight.call(this,n);this.setRadius(n/2)}};Kinetic.Util.extend(Kinetic.Circle,Kinetic.Shape);Kinetic.Factory.addGetterSetter(Kinetic.Circle,"radius",0);Kinetic.Collection.mapMethods(Kinetic.Circle)}(),function(){var n=2*Math.PI-.0001,t="Ellipse";Kinetic.Ellipse=function(n){this.___init(n)};Kinetic.Ellipse.prototype={___init:function(n){Kinetic.Shape.call(this,n);this.className=t;this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var r=this.getRadius(),i=r.x,u=r.y;t.beginPath();t.save();i!==u&&t.scale(1,u/i);t.arc(0,0,i,0,n,!1);t.restore();t.closePath();t.fillStrokeShape(this)},getWidth:function(){return 2*this.getRadius().x},getHeight:function(){return 2*this.getRadius().y},setWidth:function(n){Kinetic.Node.prototype.setWidth.call(this,n);this.setRadius({x:n/2})},setHeight:function(n){Kinetic.Node.prototype.setHeight.call(this,n);this.setRadius({y:n/2})}};Kinetic.Util.extend(Kinetic.Ellipse,Kinetic.Shape);Kinetic.Factory.addComponentsGetterSetter(Kinetic.Ellipse,"radius",["x","y"]);Kinetic.Factory.addGetterSetter(Kinetic.Ellipse,"radiusX",0);Kinetic.Factory.addGetterSetter(Kinetic.Ellipse,"radiusY",0);Kinetic.Collection.mapMethods(Kinetic.Ellipse)}(),function(){var n=2*Math.PI-.0001;Kinetic.Ring=function(n){this.___init(n)};Kinetic.Ring.prototype={___init:function(n){Kinetic.Shape.call(this,n);this.className="Ring";this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){t.beginPath();t.arc(0,0,this.getInnerRadius(),0,n,!1);t.moveTo(this.getOuterRadius(),0);t.arc(0,0,this.getOuterRadius(),n,0,!0);t.closePath();t.fillStrokeShape(this)},getWidth:function(){return 2*this.getOuterRadius()},getHeight:function(){return 2*this.getOuterRadius()},setWidth:function(n){Kinetic.Node.prototype.setWidth.call(this,n);this.setOuterRadius(n/2)},setHeight:function(n){Kinetic.Node.prototype.setHeight.call(this,n);this.setOuterRadius(n/2)}};Kinetic.Util.extend(Kinetic.Ring,Kinetic.Shape);Kinetic.Factory.addGetterSetter(Kinetic.Ring,"innerRadius",0);Kinetic.Factory.addGetterSetter(Kinetic.Ring,"outerRadius",0);Kinetic.Collection.mapMethods(Kinetic.Ring)}(),function(){Kinetic.Wedge=function(n){this.___init(n)};Kinetic.Wedge.prototype={___init:function(n){Kinetic.Shape.call(this,n);this.className="Wedge";this.sceneFunc(this._sceneFunc)},_sceneFunc:function(n){n.beginPath();n.arc(0,0,this.getRadius(),0,Kinetic.getAngle(this.getAngle()),this.getClockwise());n.lineTo(0,0);n.closePath();n.fillStrokeShape(this)}};Kinetic.Util.extend(Kinetic.Wedge,Kinetic.Shape);Kinetic.Factory.addGetterSetter(Kinetic.Wedge,"radius",0);Kinetic.Factory.addGetterSetter(Kinetic.Wedge,"angle",0);Kinetic.Factory.addGetterSetter(Kinetic.Wedge,"clockwise",!1);Kinetic.Factory.backCompat(Kinetic.Wedge,{angleDeg:"angle",getAngleDeg:"getAngle",setAngleDeg:"setAngle"});Kinetic.Collection.mapMethods(Kinetic.Wedge)}(),function(){Math.PI/180;Kinetic.Arc=function(n){this.___init(n)};Kinetic.Arc.prototype={___init:function(n){Kinetic.Shape.call(this,n);this.className="Arc";this.sceneFunc(this._sceneFunc)},_sceneFunc:function(n){var t=Kinetic.getAngle(this.angle()),i=this.clockwise();n.beginPath();n.arc(0,0,this.getOuterRadius(),0,t,i);n.arc(0,0,this.getInnerRadius(),t,0,!i);n.closePath();n.fillStrokeShape(this)}};Kinetic.Util.extend(Kinetic.Arc,Kinetic.Shape);Kinetic.Factory.addGetterSetter(Kinetic.Arc,"innerRadius",0);Kinetic.Factory.addGetterSetter(Kinetic.Arc,"outerRadius",0);Kinetic.Factory.addGetterSetter(Kinetic.Arc,"angle",0);Kinetic.Factory.addGetterSetter(Kinetic.Arc,"clockwise",!1);Kinetic.Collection.mapMethods(Kinetic.Arc)}(),function(){var n="Image";Kinetic.Image=function(n){this.___init(n)};Kinetic.Image.prototype={___init:function(t){Kinetic.Shape.call(this,t);this.className=n;this.sceneFunc(this._sceneFunc);this.hitFunc(this._hitFunc)},_useBufferCanvas:function(){return(this.hasShadow()||1!==this.getAbsoluteOpacity())&&this.hasStroke()},_sceneFunc:function(n){var t,r,u,o,f=this.getWidth(),e=this.getHeight(),i=this.getImage();i&&(t=this.getCrop(),r=t.width,u=t.height,o=r&&u?[i,t.x,t.y,r,u,0,0,f,e]:[i,0,0,f,e]);n.beginPath();n.rect(0,0,f,e);n.closePath();n.fillStrokeShape(this);i&&n.drawImage.apply(n,o)},_hitFunc:function(n){var t=this.getWidth(),i=this.getHeight();n.beginPath();n.rect(0,0,t,i);n.closePath();n.fillStrokeShape(this)},getWidth:function(){var n=this.getImage();return this.attrs.width||(n?n.width:0)},getHeight:function(){var n=this.getImage();return this.attrs.height||(n?n.height:0)}};Kinetic.Util.extend(Kinetic.Image,Kinetic.Shape);Kinetic.Factory.addGetterSetter(Kinetic.Image,"image");Kinetic.Factory.addComponentsGetterSetter(Kinetic.Image,"crop",["x","y","width","height"]);Kinetic.Factory.addGetterSetter(Kinetic.Image,"cropX",0);Kinetic.Factory.addGetterSetter(Kinetic.Image,"cropY",0);Kinetic.Factory.addGetterSetter(Kinetic.Image,"cropWidth",0);Kinetic.Factory.addGetterSetter(Kinetic.Image,"cropHeight",0);Kinetic.Collection.mapMethods(Kinetic.Image)}(),function(){function e(n){n.fillText(this.partialText,0,0)}function o(n){n.strokeText(this.partialText,0,0)}var n="auto",s="center",h="Change.kinetic",c="-",r="left",l="text",a="Text",v="middle",u="normal",y="px ",i=" ",p="right",w="char",b="none",f=["fontFamily","fontSize","fontStyle","fontVariant","padding","align","lineHeight","text","width","height","wrap"],k=f.length,t=Kinetic.Util.createCanvasElement().getContext("2d");Kinetic.Text=function(n){this.___init(n)};Kinetic.Text.prototype={___init:function(t){var r=this,i;for(void 0===t.width&&(t.width=n),void 0===t.height&&(t.height=n),Kinetic.Shape.call(this,t),this._fillFunc=e,this._strokeFunc=o,this.className=a,i=0;k>i;i++)this.on(f[i]+h,r._setTextData);this._setTextData();this.sceneFunc(this._sceneFunc);this.hitFunc(this._hitFunc)},_sceneFunc:function(n){var t,i=this.getPadding(),u=this.getTextHeight(),c=this.getLineHeight()*u,f=this.textArr,l=f.length,e=this.getWidth();for(n.setAttr("font",this._getContextFont()),n.setAttr("textBaseline",v),n.setAttr("textAlign",r),n.save(),n.translate(i,0),n.translate(0,i+u/2),t=0;l>t;t++){var o=f[t],a=o.text,h=o.width;n.save();this.getAlign()===p?n.translate(e-h-2*i,0):this.getAlign()===s&&n.translate((e-h-2*i)/2,0);this.partialText=a;n.fillStrokeShape(this);n.restore();n.translate(0,c)}n.restore()},_hitFunc:function(n){var t=this.getWidth(),i=this.getHeight();n.beginPath();n.rect(0,0,t,i);n.closePath();n.fillStrokeShape(this)},setText:function(n){var t=Kinetic.Util._isString(n)?n:n.toString();return this._setAttr(l,t),this},getWidth:function(){return this.attrs.width===n?this.getTextWidth()+2*this.getPadding():this.attrs.width},getHeight:function(){return this.attrs.height===n?this.getTextHeight()*this.textArr.length*this.getLineHeight()+2*this.getPadding():this.attrs.height},getTextWidth:function(){return this.textWidth},getTextHeight:function(){return this.textHeight},_getTextSize:function(n){var r,i=t,u=this.getFontSize();return i.save(),i.font=this._getContextFont(),r=i.measureText(n),i.restore(),{width:r.width,height:parseInt(u,10)}},_getContextFont:function(){return this.getFontStyle()+i+this.getFontVariant()+i+this.getFontSize()+y+this.getFontFamily()},_addTextLine:function(n,t){return this.textArr.push({text:n,width:t})},_getTextWidth:function(n){return t.measureText(n).width},_setTextData:function(){var d=this.getText().split("\n"),g=+this.getFontSize(),e=0,s=this.getLineHeight()*g,nt=this.attrs.width,tt=this.attrs.height,ct=nt!==n,it=tt!==n,rt=this.getPadding(),v=nt-2*rt,ut=tt-2*rt,h=0,ft=this.getWrap(),et=ft!==b,lt=ft!==w&&et,l,ot,r,u,k;for(this.textArr=[],t.save(),t.font=this._getContextFont(),l=0,ot=d.length;ot>l;++l){if(r=d[l],u=this._getTextWidth(r),ct&&u>v)for(;r.length>0;){for(var o=0,y=r.length,f="",a=0;y>o;){var p=o+y>>>1,st=r.slice(0,p+1),ht=this._getTextWidth(st);v>=ht?(o=p+1,f=st,a=ht):y=p}if(!f)break;if(lt&&(k=Math.max(f.lastIndexOf(i),f.lastIndexOf(c))+1,k>0&&(o=k,f=f.slice(0,o),a=this._getTextWidth(f))),this._addTextLine(f,a),e=Math.max(e,a),h+=s,!et||it&&h+s>ut)break;if(r=r.slice(o),r.length>0&&(u=this._getTextWidth(r),v>=u)){this._addTextLine(r,u);h+=s;e=Math.max(e,u);break}}else this._addTextLine(r,u),h+=s,e=Math.max(e,u);if(it&&h+s>ut)break}t.restore();this.textHeight=g;this.textWidth=e}};Kinetic.Util.extend(Kinetic.Text,Kinetic.Shape);Kinetic.Factory.addGetterSetter(Kinetic.Text,"fontFamily","Arial");Kinetic.Factory.addGetterSetter(Kinetic.Text,"fontSize",12);Kinetic.Factory.addGetterSetter(Kinetic.Text,"fontStyle",u);Kinetic.Factory.addGetterSetter(Kinetic.Text,"fontVariant",u);Kinetic.Factory.addGetterSetter(Kinetic.Text,"padding",0);Kinetic.Factory.addGetterSetter(Kinetic.Text,"align",r);Kinetic.Factory.addGetterSetter(Kinetic.Text,"lineHeight",1);Kinetic.Factory.addGetterSetter(Kinetic.Text,"wrap","word");Kinetic.Factory.addGetter(Kinetic.Text,"text","");Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Text,"text");Kinetic.Collection.mapMethods(Kinetic.Text)}(),function(){Kinetic.Line=function(n){this.___init(n)};Kinetic.Line.prototype={___init:function(n){Kinetic.Shape.call(this,n);this.className="Line";this.on("pointsChange.kinetic tensionChange.kinetic closedChange.kinetic",function(){this._clearCache("tensionPoints")});this.sceneFunc(this._sceneFunc)},_sceneFunc:function(n){var t,u,i,r=this.getPoints(),f=r.length,o=this.getTension(),e=this.getClosed();if(n.beginPath(),n.moveTo(r[0],r[1]),0!==o&&f>4){for(t=this.getTensionPoints(),u=t.length,i=e?0:4,e||n.quadraticCurveTo(t[0],t[1],t[2],t[3]);u-2>i;)n.bezierCurveTo(t[i++],t[i++],t[i++],t[i++],t[i++],t[i++]);e||n.quadraticCurveTo(t[u-2],t[u-1],r[f-2],r[f-1])}else for(i=2;f>i;i+=2)n.lineTo(r[i],r[i+1]);e?(n.closePath(),n.fillStrokeShape(this)):n.strokeShape(this)},getTensionPoints:function(){return this._getCache("tensionPoints",this._getTensionPoints)},_getTensionPoints:function(){return this.getClosed()?this._getTensionPointsClosed():Kinetic.Util._expandPoints(this.getPoints(),this.getTension())},_getTensionPointsClosed:function(){var n=this.getPoints(),t=n.length,u=this.getTension(),f=Kinetic.Util,i=f._getControlPoints(n[t-2],n[t-1],n[0],n[1],n[2],n[3],u),r=f._getControlPoints(n[t-4],n[t-3],n[t-2],n[t-1],n[0],n[1],u),e=Kinetic.Util._expandPoints(n,u);return[i[2],i[3]].concat(e).concat([r[0],r[1],n[t-2],n[t-1],r[2],r[3],i[0],i[1],n[0],n[1]])}};Kinetic.Util.extend(Kinetic.Line,Kinetic.Shape);Kinetic.Factory.addGetterSetter(Kinetic.Line,"closed",!1);Kinetic.Factory.addGetterSetter(Kinetic.Line,"tension",0);Kinetic.Factory.addGetterSetter(Kinetic.Line,"points");Kinetic.Collection.mapMethods(Kinetic.Line)}(),function(){Kinetic.Sprite=function(n){this.___init(n)};Kinetic.Sprite.prototype={___init:function(n){Kinetic.Shape.call(this,n);this.className="Sprite";this.anim=new Kinetic.Animation;this.on("animationChange.kinetic",function(){this.frameIndex(0)});this.on("frameRateChange.kinetic",function(){this.anim.isRunning()&&(clearInterval(this.interval),this._setInterval())});this.sceneFunc(this._sceneFunc);this.hitFunc(this._hitFunc)},_sceneFunc:function(n){var e=this.getAnimation(),o=this.frameIndex(),t=4*o,i=this.getAnimations()[e],s=i[t+0],h=i[t+1],r=i[t+2],u=i[t+3],f=this.getImage();f&&n.drawImage(f,s,h,r,u,0,0,r,u)},_hitFunc:function(n){var r=this.getAnimation(),u=this.frameIndex(),t=4*u,i=this.getAnimations()[r],f=i[t+2],e=i[t+3];n.beginPath();n.rect(0,0,f,e);n.closePath();n.fillShape(this)},_useBufferCanvas:function(){return(this.hasShadow()||1!==this.getAbsoluteOpacity())&&this.hasStroke()},_setInterval:function(){var n=this;this.interval=setInterval(function(){n._updateIndex()},1e3/this.getFrameRate())},start:function(){var n=this.getLayer();this.anim.setLayers(n);this._setInterval();this.anim.start()},stop:function(){this.anim.stop();clearInterval(this.interval)},isRunning:function(){return this.anim.isRunning()},_updateIndex:function(){var n=this.frameIndex(),t=this.getAnimation(),i=this.getAnimations(),r=i[t],u=r.length/4;this.frameIndex(u-1>n?n+1:0)}};Kinetic.Util.extend(Kinetic.Sprite,Kinetic.Shape);Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"animation");Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"animations");Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"image");Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"frameIndex",0);Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"frameRate",17);Kinetic.Factory.backCompat(Kinetic.Sprite,{index:"frameIndex",getIndex:"getFrameIndex",setIndex:"setFrameIndex"});Kinetic.Collection.mapMethods(Kinetic.Sprite)}(),function(){Kinetic.Path=function(n){this.___init(n)};Kinetic.Path.prototype={___init:function(n){this.dataArray=[];var t=this;Kinetic.Shape.call(this,n);this.className="Path";this.dataArray=Kinetic.Path.parsePathData(this.getData());this.on("dataChange.kinetic",function(){t.dataArray=Kinetic.Path.parsePathData(this.getData())});this.sceneFunc(this._sceneFunc)},_sceneFunc:function(n){var f=this.dataArray,e=!1,u,o,t;for(n.beginPath(),u=0;u<f.length;u++){o=f[u].command;t=f[u].points;switch(o){case"L":n.lineTo(t[0],t[1]);break;case"M":n.moveTo(t[0],t[1]);break;case"C":n.bezierCurveTo(t[0],t[1],t[2],t[3],t[4],t[5]);break;case"Q":n.quadraticCurveTo(t[0],t[1],t[2],t[3]);break;case"A":var s=t[0],h=t[1],i=t[2],r=t[3],c=t[4],y=t[5],l=t[6],p=t[7],w=i>r?i:r,a=i>r?1:i/r,v=i>r?r/i:1;n.translate(s,h);n.rotate(l);n.scale(a,v);n.arc(0,0,w,c,c+y,1-p);n.scale(1/a,1/v);n.rotate(-l);n.translate(-s,-h);break;case"z":n.closePath();e=!0}}e?n.fillStrokeShape(this):n.strokeShape(this)}};Kinetic.Util.extend(Kinetic.Path,Kinetic.Shape);Kinetic.Path.getLineLength=function(n,t,i,r){return Math.sqrt((i-n)*(i-n)+(r-t)*(r-t))};Kinetic.Path.getPointOnLine=function(n,t,i,r,u,f,e){var o,s,c,h,v,y,l,a,p,w;if(void 0===f&&(f=t),void 0===e&&(e=i),o=(u-i)/(r-t+1e-8),s=Math.sqrt(n*n/(1+o*o)),t>r&&(s*=-1),h=o*s,r===t)c={x:f,y:e+h};else if((e-i)/(f-t+1e-8)===o)c={x:f+s,y:e+h};else{if(l=this.getLineLength(t,i,r,u),1e-8>l)return void 0;a=(f-t)*(r-t)+(e-i)*(u-i);a/=l*l;v=t+a*(r-t);y=i+a*(u-i);p=this.getLineLength(f,e,v,y);w=Math.sqrt(n*n-p*p);s=Math.sqrt(w*w/(1+o*o));t>r&&(s*=-1);h=o*s;c={x:v+s,y:y+h}}return c};Kinetic.Path.getPointOnCubicBezier=function(n,t,i,r,u,f,e,o,s){function h(n){return n*n*n}function c(n){return 3*n*n*(1-n)}function l(n){return 3*n*(1-n)*(1-n)}function a(n){return(1-n)*(1-n)*(1-n)}var v=o*h(n)+f*c(n)+r*l(n)+t*a(n),y=s*h(n)+e*c(n)+u*l(n)+i*a(n);return{x:v,y:y}};Kinetic.Path.getPointOnQuadraticBezier=function(n,t,i,r,u,f,e){function o(n){return n*n}function s(n){return 2*n*(1-n)}function h(n){return(1-n)*(1-n)}var c=f*o(n)+r*s(n)+t*h(n),l=e*o(n)+u*s(n)+i*h(n);return{x:c,y:l}};Kinetic.Path.getPointOnEllipticalArc=function(n,t,i,r,u,f){var o=Math.cos(f),s=Math.sin(f),e={x:i*Math.cos(u),y:r*Math.sin(u)};return{x:n+(e.x*o-e.y*s),y:t+(e.x*s+e.y*o)}};Kinetic.Path.parsePathData=function(n){var v,w,l,c,a,t,p,rt,ut,y;if(!n)return[];for(v=n,w=["m","M","l","L","v","V","h","H","z","Z","c","C","q","Q","t","T","s","S","a","A"],v=v.replace(new RegExp(" ","g"),","),l=0;l<w.length;l++)v=v.replace(new RegExp(w[l],"g"),"|"+w[l]);var ft=v.split("|"),f=[],i=0,r=0;for(l=1;l<ft.length;l++){for(c=ft[l],a=c.charAt(0),c=c.slice(1),c=c.replace(new RegExp(",-","g"),"-"),c=c.replace(new RegExp("-","g"),",-"),c=c.replace(new RegExp("e,-","g"),"e-"),t=c.split(","),t.length>0&&""===t[0]&&t.shift(),p=0;p<t.length;p++)t[p]=parseFloat(t[p]);for(;t.length>0&&!isNaN(t[0]);){var o,s,h,b,k,d,g,nt,tt,it,e=null,u=[],et=i,ot=r;switch(a){case"l":i+=t.shift();r+=t.shift();e="L";u.push(i,r);break;case"L":i=t.shift();r=t.shift();u.push(i,r);break;case"m":if(rt=t.shift(),ut=t.shift(),i+=rt,r+=ut,e="M",f.length>2&&"z"===f[f.length-1].command)for(y=f.length-2;y>=0;y--)if("M"===f[y].command){i=f[y].points[0]+rt;r=f[y].points[1]+ut;break}u.push(i,r);a="l";break;case"M":i=t.shift();r=t.shift();e="M";u.push(i,r);a="L";break;case"h":i+=t.shift();e="L";u.push(i,r);break;case"H":i=t.shift();e="L";u.push(i,r);break;case"v":r+=t.shift();e="L";u.push(i,r);break;case"V":r=t.shift();e="L";u.push(i,r);break;case"C":u.push(t.shift(),t.shift(),t.shift(),t.shift());i=t.shift();r=t.shift();u.push(i,r);break;case"c":u.push(i+t.shift(),r+t.shift(),i+t.shift(),r+t.shift());i+=t.shift();r+=t.shift();e="C";u.push(i,r);break;case"S":s=i;h=r;o=f[f.length-1];"C"===o.command&&(s=i+(i-o.points[2]),h=r+(r-o.points[3]));u.push(s,h,t.shift(),t.shift());i=t.shift();r=t.shift();e="C";u.push(i,r);break;case"s":s=i;h=r;o=f[f.length-1];"C"===o.command&&(s=i+(i-o.points[2]),h=r+(r-o.points[3]));u.push(s,h,i+t.shift(),r+t.shift());i+=t.shift();r+=t.shift();e="C";u.push(i,r);break;case"Q":u.push(t.shift(),t.shift());i=t.shift();r=t.shift();u.push(i,r);break;case"q":u.push(i+t.shift(),r+t.shift());i+=t.shift();r+=t.shift();e="Q";u.push(i,r);break;case"T":s=i;h=r;o=f[f.length-1];"Q"===o.command&&(s=i+(i-o.points[0]),h=r+(r-o.points[1]));i=t.shift();r=t.shift();e="Q";u.push(s,h,i,r);break;case"t":s=i;h=r;o=f[f.length-1];"Q"===o.command&&(s=i+(i-o.points[0]),h=r+(r-o.points[1]));i+=t.shift();r+=t.shift();e="Q";u.push(s,h,i,r);break;case"A":b=t.shift();k=t.shift();d=t.shift();g=t.shift();nt=t.shift();tt=i;it=r;i=t.shift();r=t.shift();e="A";u=this.convertEndpointToCenterParameterization(tt,it,i,r,g,nt,b,k,d);break;case"a":b=t.shift();k=t.shift();d=t.shift();g=t.shift();nt=t.shift();tt=i;it=r;i+=t.shift();r+=t.shift();e="A";u=this.convertEndpointToCenterParameterization(tt,it,i,r,g,nt,b,k,d)}f.push({command:e||a,points:u,start:{x:et,y:ot},pathLength:this.calcLength(et,ot,e||a,u)})}("z"===a||"Z"===a)&&f.push({command:"z",points:[],start:void 0,pathLength:0})}return f};Kinetic.Path.calcLength=function(n,t,i,r){var s,f,u,e,o=Kinetic.Path;switch(i){case"L":return o.getLineLength(n,t,r[0],r[1]);case"C":for(s=0,f=o.getPointOnCubicBezier(0,n,t,r[0],r[1],r[2],r[3],r[4],r[5]),e=.01;1>=e;e+=.01)u=o.getPointOnCubicBezier(e,n,t,r[0],r[1],r[2],r[3],r[4],r[5]),s+=o.getLineLength(f.x,f.y,u.x,u.y),f=u;return s;case"Q":for(s=0,f=o.getPointOnQuadraticBezier(0,n,t,r[0],r[1],r[2],r[3]),e=.01;1>=e;e+=.01)u=o.getPointOnQuadraticBezier(e,n,t,r[0],r[1],r[2],r[3]),s+=o.getLineLength(f.x,f.y,u.x,u.y),f=u;return s;case"A":s=0;var c=r[4],a=r[5],l=r[4]+a,h=Math.PI/180;if(Math.abs(c-l)<h&&(h=Math.abs(c-l)),f=o.getPointOnEllipticalArc(r[0],r[1],r[2],r[3],c,0),0>a)for(e=c-h;e>l;e-=h)u=o.getPointOnEllipticalArc(r[0],r[1],r[2],r[3],e,0),s+=o.getLineLength(f.x,f.y,u.x,u.y),f=u;else for(e=c+h;l>e;e+=h)u=o.getPointOnEllipticalArc(r[0],r[1],r[2],r[3],e,0),s+=o.getLineLength(f.x,f.y,u.x,u.y),f=u;return u=o.getPointOnEllipticalArc(r[0],r[1],r[2],r[3],l,0),s+o.getLineLength(f.x,f.y,u.x,u.y)}return 0};Kinetic.Path.convertEndpointToCenterParameterization=function(n,t,i,r,u,f,e,o,s){var l=s*(Math.PI/180),h=Math.cos(l)*(n-i)/2+Math.sin(l)*(t-r)/2,c=-1*Math.sin(l)*(n-i)/2+Math.cos(l)*(t-r)/2,w=h*h/(e*e)+c*c/(o*o),v;w>1&&(e*=Math.sqrt(w),o*=Math.sqrt(w));v=Math.sqrt((e*e*o*o-e*e*c*c-o*o*h*h)/(e*e*c*c+o*o*h*h));u===f&&(v*=-1);isNaN(v)&&(v=0);var y=v*e*c/o,p=v*-o*h/e,tt=(n+i)/2+Math.cos(l)*y-Math.sin(l)*p,it=(t+r)/2+Math.sin(l)*y+Math.cos(l)*p,g=function(n){return Math.sqrt(n[0]*n[0]+n[1]*n[1])},b=function(n,t){return(n[0]*t[0]+n[1]*t[1])/(g(n)*g(t))},nt=function(n,t){return(n[0]*t[1]<n[1]*t[0]?-1:1)*Math.acos(b(n,t))},rt=nt([1,0],[(h-y)/e,(c-p)/o]),k=[(h-y)/e,(c-p)/o],d=[(-1*h-y)/e,(-1*c-p)/o],a=nt(k,d);return b(k,d)<=-1&&(a=Math.PI),b(k,d)>=1&&(a=0),0===f&&a>0&&(a-=2*Math.PI),1===f&&0>a&&(a+=2*Math.PI),[tt,it,e,o,rt,a,l,f]};Kinetic.Factory.addGetterSetter(Kinetic.Path,"data");Kinetic.Collection.mapMethods(Kinetic.Path)}(),function(){function n(n){n.fillText(this.partialText,0,0)}function t(n){n.strokeText(this.partialText,0,0)}var i="normal";Kinetic.TextPath=function(n){this.___init(n)};Kinetic.TextPath.prototype={___init:function(i){var r=this;this.dummyCanvas=Kinetic.Util.createCanvasElement();this.dataArray=[];Kinetic.Shape.call(this,i);this._fillFunc=n;this._strokeFunc=t;this._fillFuncHit=n;this._strokeFuncHit=t;this.className="TextPath";this.dataArray=Kinetic.Path.parsePathData(this.attrs.data);this.on("dataChange.kinetic",function(){r.dataArray=Kinetic.Path.parsePathData(this.attrs.data)});this.on("textChange.kinetic textStroke.kinetic textStrokeWidth.kinetic",r._setTextData);r._setTextData();this.sceneFunc(this._sceneFunc)},_sceneFunc:function(n){var i,t,r;for(n.setAttr("font",this._getContextFont()),n.setAttr("textBaseline","middle"),n.setAttr("textAlign","left"),n.save(),i=this.glyphInfo,t=0;t<i.length;t++)n.save(),r=i[t].p0,n.translate(r.x,r.y),n.rotate(i[t].rotation),this.partialText=i[t].text,n.fillStrokeShape(this),n.restore();n.restore()},getTextWidth:function(){return this.textWidth},getTextHeight:function(){return this.textHeight},setText:function(n){Kinetic.Text.prototype.setText.call(this,n)},_getTextSize:function(n){var r=this.dummyCanvas,t=r.getContext("2d"),i;return t.save(),t.font=this._getContextFont(),i=t.measureText(n),t.restore(),{width:i.width,height:parseInt(this.attrs.fontSize,10)}},_setTextData:function(){var e=this,o=this._getTextSize(this.attrs.text);this.textWidth=o.width;this.textHeight=o.height;this.glyphInfo=[];for(var i,r,n,f=this.attrs.text.split(""),s=-1,t=0,c=function(){t=0;for(var r=e.dataArray,n=s+1;n<r.length;n++){if(r[n].pathLength>0)return s=n,r[n];"M"==r[n].command&&(i={x:r[n].points[0],y:r[n].points[1]})}return{}},l=function(u){var f=e._getTextSize(u).width,o=0,v=0,l,h;for(r=void 0;Math.abs(f-o)/f>.01&&25>v;){for(v++,l=o;void 0===n;)n=c(),n&&l+n.pathLength<f&&(l+=n.pathLength,n=void 0);if(n==={}||void 0===i)return void 0;h=!1;switch(n.command){case"L":Kinetic.Path.getLineLength(i.x,i.y,n.points[0],n.points[1])>f?r=Kinetic.Path.getPointOnLine(f,i.x,i.y,n.points[0],n.points[1],i.x,i.y):n=void 0;break;case"A":var y=n.points[4],s=n.points[5],a=n.points[4]+s;0===t?t=y+1e-8:f>o?t+=Math.PI/180*s/Math.abs(s):t-=Math.PI/360*s/Math.abs(s);(0>s&&a>t||s>=0&&t>a)&&(t=a,h=!0);r=Kinetic.Path.getPointOnEllipticalArc(n.points[0],n.points[1],n.points[2],n.points[3],t,n.points[6]);break;case"C":0===t?t=f>n.pathLength?1e-8:f/n.pathLength:f>o?t+=(f-o)/n.pathLength:t-=(o-f)/n.pathLength;t>1&&(t=1,h=!0);r=Kinetic.Path.getPointOnCubicBezier(t,n.start.x,n.start.y,n.points[0],n.points[1],n.points[2],n.points[3],n.points[4],n.points[5]);break;case"Q":0===t?t=f/n.pathLength:f>o?t+=(f-o)/n.pathLength:t-=(o-f)/n.pathLength;t>1&&(t=1,h=!0);r=Kinetic.Path.getPointOnQuadraticBezier(t,n.start.x,n.start.y,n.points[0],n.points[1],n.points[2],n.points[3])}void 0!==r&&(o=Kinetic.Path.getLineLength(i.x,i.y,r.x,r.y));h&&(h=!1,n=void 0)}},u=0;u<f.length&&(l(f[u]),void 0!==i&&void 0!==r);u++){var a=Kinetic.Path.getLineLength(i.x,i.y,r.x,r.y),h=Kinetic.Path.getPointOnLine(0+a/2,i.x,i.y,r.x,r.y),v=Math.atan2(r.y-i.y,r.x-i.x);this.glyphInfo.push({transposeX:h.x,transposeY:h.y,text:f[u],rotation:v,p0:i,p1:r});i=r}}};Kinetic.TextPath.prototype._getContextFont=Kinetic.Text.prototype._getContextFont;Kinetic.Util.extend(Kinetic.TextPath,Kinetic.Shape);Kinetic.Factory.addGetterSetter(Kinetic.TextPath,"fontFamily","Arial");Kinetic.Factory.addGetterSetter(Kinetic.TextPath,"fontSize",12);Kinetic.Factory.addGetterSetter(Kinetic.TextPath,"fontStyle",i);Kinetic.Factory.addGetterSetter(Kinetic.TextPath,"fontVariant",i);Kinetic.Factory.addGetter(Kinetic.TextPath,"text","");Kinetic.Collection.mapMethods(Kinetic.TextPath)}(),function(){Kinetic.RegularPolygon=function(n){this.___init(n)};Kinetic.RegularPolygon.prototype={___init:function(n){Kinetic.Shape.call(this,n);this.className="RegularPolygon";this.sceneFunc(this._sceneFunc)},_sceneFunc:function(n){var t,u,f,i=this.attrs.sides,r=this.attrs.radius;for(n.beginPath(),n.moveTo(0,0-r),t=1;i>t;t++)u=r*Math.sin(2*t*Math.PI/i),f=-1*r*Math.cos(2*t*Math.PI/i),n.lineTo(u,f);n.closePath();n.fillStrokeShape(this)}};Kinetic.Util.extend(Kinetic.RegularPolygon,Kinetic.Shape);Kinetic.Factory.addGetterSetter(Kinetic.RegularPolygon,"radius",0);Kinetic.Factory.addGetterSetter(Kinetic.RegularPolygon,"sides",0);Kinetic.Collection.mapMethods(Kinetic.RegularPolygon)}(),function(){Kinetic.Star=function(n){this.___init(n)};Kinetic.Star.prototype={___init:function(n){Kinetic.Shape.call(this,n);this.className="Star";this.sceneFunc(this._sceneFunc)},_sceneFunc:function(n){var f=this.innerRadius(),r=this.outerRadius(),i=this.numPoints(),t;for(n.beginPath(),n.moveTo(0,0-r),t=1;2*i>t;t++){var u=t%2==0?r:f,e=u*Math.sin(t*Math.PI/i),o=-1*u*Math.cos(t*Math.PI/i);n.lineTo(e,o)}n.closePath();n.fillStrokeShape(this)}};Kinetic.Util.extend(Kinetic.Star,Kinetic.Shape);Kinetic.Factory.addGetterSetter(Kinetic.Star,"numPoints",5);Kinetic.Factory.addGetterSetter(Kinetic.Star,"innerRadius",0);Kinetic.Factory.addGetterSetter(Kinetic.Star,"outerRadius",0);Kinetic.Collection.mapMethods(Kinetic.Star)}(),function(){var n=["fontFamily","fontSize","fontStyle","padding","lineHeight","text"],f="Change.kinetic",t="up",i="right",r="down",u="left",e="Label",o=n.length;Kinetic.Label=function(n){this.____init(n)};Kinetic.Label.prototype={____init:function(n){var t=this;this.className=e;Kinetic.Group.call(this,n);this.on("add.kinetic",function(n){t._addListeners(n.child);t._sync()})},getText:function(){return this.find("Text")[0]},getTag:function(){return this.find("Tag")[0]},_addListeners:function(t){for(var r=this,u=function(){r._sync()},i=0;o>i;i++)t.on(n[i]+f,u)},getWidth:function(){return this.getText().getWidth()},getHeight:function(){return this.getText().getHeight()},_sync:function(){var e,o,a,c,n,f,l,h=this.getText(),s=this.getTag();if(h&&s){switch(e=h.getWidth(),o=h.getHeight(),a=s.getPointerDirection(),c=s.getPointerWidth(),l=s.getPointerHeight(),n=0,f=0,a){case t:n=e/2;f=-1*l;break;case i:n=e+c;f=o/2;break;case r:n=e/2;f=o+l;break;case u:n=-1*c;f=o/2}s.setAttrs({x:-1*n,y:-1*f,width:e,height:o});h.setAttrs({x:-1*n,y:-1*f})}}};Kinetic.Util.extend(Kinetic.Label,Kinetic.Group);Kinetic.Collection.mapMethods(Kinetic.Label);Kinetic.Tag=function(n){this.___init(n)};Kinetic.Tag.prototype={___init:function(n){Kinetic.Shape.call(this,n);this.className="Tag";this.sceneFunc(this._sceneFunc)},_sceneFunc:function(n){var f=this.getWidth(),e=this.getHeight(),h=this.getPointerDirection(),o=this.getPointerWidth(),s=this.getPointerHeight();n.beginPath();n.moveTo(0,0);h===t&&(n.lineTo((f-o)/2,0),n.lineTo(f/2,-1*s),n.lineTo((f+o)/2,0));n.lineTo(f,0);h===i&&(n.lineTo(f,(e-s)/2),n.lineTo(f+o,e/2),n.lineTo(f,(e+s)/2));n.lineTo(f,e);h===r&&(n.lineTo((f+o)/2,e),n.lineTo(f/2,e+s),n.lineTo((f-o)/2,e));n.lineTo(0,e);h===u&&(n.lineTo(0,(e+s)/2),n.lineTo(-1*o,e/2),n.lineTo(0,(e-s)/2));n.closePath();n.fillStrokeShape(this)}};Kinetic.Util.extend(Kinetic.Tag,Kinetic.Shape);Kinetic.Factory.addGetterSetter(Kinetic.Tag,"pointerDirection","none");Kinetic.Factory.addGetterSetter(Kinetic.Tag,"pointerWidth",0);Kinetic.Factory.addGetterSetter(Kinetic.Tag,"pointerHeight",0);Kinetic.Factory.addGetterSetter(Kinetic.Tag,"cornerRadius",0);Kinetic.Collection.mapMethods(Kinetic.Tag)}()