2016-01-30 07:48:16 -05:00
/ * !
2017-10-08 11:54:18 -04:00
* Paper . js v0 . 11.5 - develop - The Swiss Army Knife of Vector Graphics Scripting .
2016-01-30 07:48:16 -05:00
* http : //paperjs.org/
*
* Copyright ( c ) 2011 - 2016 , Juerg Lehni & Jonathan Puckey
* http : //scratchdisk.com/ & http://jonathanpuckey.com/
*
* Distributed under the MIT license . See LICENSE file for details .
*
* All rights reserved .
*
2018-10-03 12:03:29 -04:00
* Date : Wed Oct 3 17 : 57 : 45 2018 + 0200
2016-01-30 07:48:16 -05:00
*
* * *
*
* Straps . js - Class inheritance library with support for bean - style accessors
*
* Copyright ( c ) 2006 - 2016 Juerg Lehni
* http : //scratchdisk.com/
*
* Distributed under the MIT license .
*
* * *
*
* Acorn . js
* http : //marijnhaverbeke.nl/acorn/
*
* Acorn is a tiny , fast JavaScript parser written in JavaScript ,
* created by Marijn Haverbeke and released under an MIT license .
*
* /
2018-10-03 10:52:34 -04:00
var paper = function ( t , e ) { t = t || require ( "./node/self.js" ) ; var n = t . window , i = t . document , r = new function ( ) { function t ( t , e , r , s , a ) { function u ( i , u ) { u = u || ( u = o ( e , i ) ) && ( u . get ? u : u . value ) , "string" == typeof u && "#" === u [ 0 ] && ( u = t [ u . substring ( 1 ) ] || u ) ; var c , f = "function" == typeof u , d = u , _ = a || f && ! u . base ? u && u . get ? i in t : t [ i ] : null ; a && _ || ( f && _ && ( u . base = _ ) , f && s !== ! 1 && ( c = i . match ( /^([gs]et|is)(([A-Z])(.*))$/ ) ) && ( l [ c [ 3 ] . toLowerCase ( ) + c [ 4 ] ] = c [ 2 ] ) , d && ! f && d . get && "function" == typeof d . get && n . isPlainObject ( d ) || ( d = { value : d , writable : ! 0 } ) , ( o ( t , i ) || { configurable : ! 0 } ) . configurable && ( d . configurable = ! 0 , d . enumerable = null != r ? r : ! c ) , h ( t , i , d ) ) } var l = { } ; if ( e ) { for ( var c in e ) e . hasOwnProperty ( c ) && ! i . test ( c ) && u ( c ) ; for ( var c in l ) { var f = l [ c ] , d = t [ "set" + f ] , _ = t [ "get" + f ] || d && t [ "is" + f ] ; ! _ || s !== ! 0 && 0 !== _ . length || u ( c , { get : _ , set : d } ) } } return t } function n ( ) { for ( var t = 0 , e = arguments . length ; t < e ; t ++ ) { var n = arguments [ t ] ; n && c ( this , n ) } return this } var i = /^(statics|enumerable|beans|preserve)$/ , r = [ ] , s = r . slice , a = Object . create , o = Object . getOwnPropertyDescriptor , h = Object . defineProperty , u = r . forEach || function ( t , e ) { for ( var n = 0 , i = this . length ; n < i ; n ++ ) t . call ( e , this [ n ] , n , this ) } , l = function ( t , e ) { for ( var n in this ) this . hasOwnProperty ( n ) && t . call ( e , this [ n ] , n , this ) } , c = Object . assign || function ( t ) { for ( var e = 1 , n = arguments . length ; e < n ; e ++ ) { var i = arguments [ e ] ; for ( var r in i ) i . hasOwnProperty ( r ) && ( t [ r ] = i [ r ] ) } return t } , f = function ( t , e , n ) { if ( t ) { var i = o ( t , "length" ) ; ( i && "number" == typeof i . value ? u : l ) . call ( t , e , n = n || t ) } return n } ; return t ( n , { inject : function ( e ) { if ( e ) { var n = e . statics === ! 0 ? e : e . statics , i = e . beans , r = e . preserve ; n !== e && t ( this . prototype , e , e . enumerable , i , r ) , t ( this , n , null , i , r ) } for ( var s = 1 , a = arguments . length ; s < a ; s ++ ) this . inject ( arguments [ s ] ) ; return this } , extend : function ( ) { for ( var e , n , i , r = this , s = 0 , o = arguments . length ; s < o && ( ! e || ! n ) ; s ++ ) i = arguments [ s ] , e = e || i . initialize , n = n || i . prototype ; return e = e || function ( ) { r . apply ( this , arguments ) } , n = e . prototype = n || a ( this . prototype ) , h ( n , "constructor" , { value : e , writable : ! 0 , configurable : ! 0 } ) , t ( e , this ) , arguments . length && this . inject . apply ( e , arguments ) , e . base = r , e } } ) . inject ( { enumerable : ! 1 , initialize : n , set : n , inject : function ( ) { for ( var e = 0 , n = arguments . length ; e < n ; e ++ ) { var i = arguments [ e ] ; i && t ( this , i , i . enumerable , i . beans , i . preserve ) } return this } , extend : function ( ) { var t = a ( this ) ; return t . inject . apply ( t , arguments ) } , each : function ( t , e ) { return f ( this , t , e ) } , clone : function ( ) { return new this . constructor ( this ) } , statics : { set : c , each : f , create : a , define : h , describe : o , clone : function ( t ) { return c ( new t . constructor , t ) } , isPlainObject : function ( t ) { var e = null != t && t . constructor ; return e && ( e === Object || e === n || "Object" === e . name ) } , pick : function ( t , n ) { return t !== e ? t : n } , slice : function ( t , e , n ) { return s . call ( t , e , n ) } } } ) } ; "undefined" != typeof module && ( module . exports = r ) , r . inject ( { enumerable : ! 1 , toString : function ( ) { return null != this . _id ? ( this . _class || "Object" ) + ( this . _name ? " '" + this . _name + "'" : " @" + this . _id ) : "{ " + r . each ( this , function ( t , e ) { if ( ! /^_/ . test ( e ) ) { var n = typeof t ; this . push ( e + ": " + ( "number" === n ? h . instance . number ( t ) : "string" === n ? "'" + t + "'" : t ) ) } } , [ ] ) . join ( ", " ) + " }" } , getClassName : function ( ) { return this . _class || "" } , importJSON : function ( t ) { return r . importJSON ( t , this ) } , exportJSON : function ( t ) { return r . exportJSON ( this , t ) } , toJSON : function ( ) { return r . serialize ( this ) } , set : function ( t , e ) { return t && r . filter ( this , t , e , this . _prioritize ) , this } } , { beans : ! 1 , statics : { exports : { } , extend : function rt ( ) { var t = rt . base . apply ( this , arguments ) , e = t . prototype . _class ; return e && ! r . exports [ e ] && ( r . exports [ e ] = t ) , t } , equals : function ( t , e ) { if ( t === e ) return ! 0 ; if ( t && t . equals ) return t . equals ( e ) ; if ( e && e . equals ) return e . equals ( t ) ; if ( t && e && "object" == typeof t && "object" == typeof e ) { if ( Array . isArray ( t ) && Array . isArray ( e ) ) { var n = t . length ; if ( n !== e . length ) return ! 1 ; for ( ; n -- ; ) if ( ! r . equals ( t [ n ] , e [ n ] ) ) return ! 1 } else { var i = Object . keys ( t ) , n = i . length ; if ( n !== Object . keys ( e ) . length ) return ! 1 ; for ( ; n -- ; ) { var s = i [ n ] ; if ( ! e . hasOwnProperty ( s ) || ! r . equals ( t [ s ] , e [ s ] ) ) return ! 1 } } return ! 0 } return ! 1 } , read : function ( t , n , i , s ) { if ( this === r ) { var a = this . peek ( t , n ) ; return t . _ _index ++ , a } var o = this . prototype , h = o . _readIndex , u = n || h && t . _ _index || 0 , l = t . length , c = t [ u ] ; if ( s = s || l - u , c instanceof this || i && i . readNull && null == c && s <= 1 ) return h && ( t . _ _
2018-10-03 12:03:29 -04:00
this . _c *= t . y , this . _d *= t . y , e && this . translate ( e . negate ( ) ) , this . _changed ( ) , this } , rotate : function ( t ) { t *= Math . PI / 180 ; var e = c . read ( arguments , 1 ) , n = e . x , i = e . y , r = Math . cos ( t ) , s = Math . sin ( t ) , a = n - n * r + i * s , o = i - n * s - i * r , h = this . _a , u = this . _b , l = this . _c , f = this . _d ; return this . _a = r * h + s * l , this . _b = r * u + s * f , this . _c = - s * h + r * l , this . _d = - s * u + r * f , this . _tx += a * h + o * l , this . _ty += a * u + o * f , this . _changed ( ) , this } , shear : function ( ) { var t = c . read ( arguments ) , e = c . read ( arguments , 0 , { readNull : ! 0 } ) ; e && this . translate ( e ) ; var n = this . _a , i = this . _b ; return this . _a += t . y * this . _c , this . _b += t . y * this . _d , this . _c += t . x * n , this . _d += t . x * i , e && this . translate ( e . negate ( ) ) , this . _changed ( ) , this } , skew : function ( ) { var t = c . read ( arguments ) , e = c . read ( arguments , 0 , { readNull : ! 0 } ) , n = Math . PI / 180 , i = new c ( Math . tan ( t . x * n ) , Math . tan ( t . y * n ) ) ; return this . shear ( i , e ) } , append : function ( t , e ) { if ( t ) { var n = this . _a , i = this . _b , r = this . _c , s = this . _d , a = t . _a , o = t . _c , h = t . _b , u = t . _d , l = t . _tx , c = t . _ty ; this . _a = a * n + h * r , this . _c = o * n + u * r , this . _b = a * i + h * s , this . _d = o * i + u * s , this . _tx += l * n + c * r , this . _ty += l * i + c * s , e || this . _changed ( ) } return this } , prepend : function ( t , e ) { if ( t ) { var n = this . _a , i = this . _b , r = this . _c , s = this . _d , a = this . _tx , o = this . _ty , h = t . _a , u = t . _c , l = t . _b , c = t . _d , f = t . _tx , d = t . _ty ; this . _a = h * n + u * i , this . _c = h * r + u * s , this . _b = l * n + c * i , this . _d = l * r + c * s , this . _tx = h * a + u * o + f , this . _ty = l * a + c * o + d , e || this . _changed ( ) } return this } , appended : function ( t ) { return this . clone ( ) . append ( t ) } , prepended : function ( t ) { return this . clone ( ) . prepend ( t ) } , invert : function ( ) { var t = this . _a , e = this . _b , n = this . _c , i = this . _d , r = this . _tx , s = this . _ty , a = t * i - e * n , o = null ; return a && ! isNaN ( a ) && isFinite ( r ) && isFinite ( s ) && ( this . _a = i / a , this . _b = - e / a , this . _c = - n / a , this . _d = t / a , this . _tx = ( n * s - i * r ) / a , this . _ty = ( e * r - t * s ) / a , o = this ) , o } , inverted : function ( ) { return this . clone ( ) . invert ( ) } , concatenate : "#append" , preConcatenate : "#prepend" , chain : "#appended" , _shiftless : function ( ) { return new p ( this . _a , this . _b , this . _c , this . _d , 0 , 0 ) } , _orNullIfIdentity : function ( ) { return this . isIdentity ( ) ? null : this } , isIdentity : function ( ) { return 1 === this . _a && 0 === this . _b && 0 === this . _c && 1 === this . _d && 0 === this . _tx && 0 === this . _ty } , isInvertible : function ( ) { var t = this . _a * this . _d - this . _c * this . _b ; return t && ! isNaN ( t ) && isFinite ( this . _tx ) && isFinite ( this . _ty ) } , isSingular : function ( ) { return ! this . isInvertible ( ) } , transform : function ( t , e , n ) { return arguments . length < 3 ? this . _transformPoint ( c . read ( arguments ) ) : this . _transformCoordinates ( t , e , n ) } , _transformPoint : function ( t , e , n ) { var i = t . x , r = t . y ; return e || ( e = new c ) , e . _set ( i * this . _a + r * this . _c + this . _tx , i * this . _b + r * this . _d + this . _ty , n ) } , _transformCoordinates : function ( t , e , n ) { for ( var i = 0 , r = 2 * n ; i < r ; i += 2 ) { var s = t [ i ] , a = t [ i + 1 ] ; e [ i ] = s * this . _a + a * this . _c + this . _tx , e [ i + 1 ] = s * this . _b + a * this . _d + this . _ty } return e } , _transformCorners : function ( t ) { var e = t . x , n = t . y , i = e + t . width , r = n + t . height , s = [ e , n , i , n , i , r , e , r ] ; return this . _transformCoordinates ( s , s , 4 ) } , _transformBounds : function ( t , e , n ) { for ( var i = this . _transformCorners ( t ) , r = i . slice ( 0 , 2 ) , s = r . slice ( ) , a = 2 ; a < 8 ; a ++ ) { var o = i [ a ] , h = 1 & a ; o < r [ h ] ? r [ h ] = o : o > s [ h ] && ( s [ h ] = o ) } return e || ( e = new g ) , e . _set ( r [ 0 ] , r [ 1 ] , s [ 0 ] - r [ 0 ] , s [ 1 ] - r [ 1 ] , n ) } , inverseTransform : function ( ) { return this . _inverseTransform ( c . read ( arguments ) ) } , _inverseTransform : function ( t , e , n ) { var i = this . _a , r = this . _b , s = this . _c , a = this . _d , o = this . _tx , h = this . _ty , u = i * a - r * s , l = null ; if ( u && ! isNaN ( u ) && isFinite ( o ) && isFinite ( h ) ) { var f = t . x - this . _tx , d = t . y - this . _ty ; e || ( e = new c ) , l = e . _set ( ( f * a - d * s ) / u , ( d * i - f * r ) / u , n ) } return l } , decompose : function ( ) { var t , e , n , i = this . _a , r = this . _b , s = this . _c , a = this . _d , o = i * a - r * s , h = Math . sqrt , u = Math . atan2 , l = 180 / Math . PI ; if ( 0 !== i || 0 !== r ) { var f = h ( i * i + r * r ) ; t = Math . acos ( i / f ) * ( r > 0 ? 1 : - 1 ) , e = [ f , o / f ] , n = [ u ( i * s + r * a , f * f ) , 0 ] } else if ( 0 !== s || 0 !== a ) { var d = h ( s * s + a * a ) ; t = Math . asin ( s / d ) * ( a > 0 ? 1 : - 1 ) , e = [ o / d , d ] , n = [ 0 , u ( i * s + r * a , d * d ) ] } else t = 0 , n = e = [ 0 , 0 ] ; return { translation : this . getTranslation ( ) , rotation : t * l , scaling : new c ( e ) , skewing : new c ( n [ 0 ] * l , n [ 1 ] * l ) } } , getValues : function ( ) { return [ this . _a , this . _b , this . _c , this . _d , this . _tx , this . _ty ] } , getTranslation : function ( ) { return new c ( this . _tx , this . _ty ) } , getScaling : function ( ) { return ( this . decompose ( ) || { } ) . scaling } , getRotation : function ( ) { return ( this . decompose ( ) || { } ) . rotation } , applyToContext : function ( t ) { this . isIdentity ( ) || t . transform ( this . _a , this . _b , this . _c , this . _d , this . _
2018-10-03 11:37:37 -04:00
if ( g ? ( t . globalAlpha = f , _ && ( t . globalCompositeOperation = c ) ) : w && t . translate ( - u . x , - u . y ) , w && ( g ? a : s ) . applyToContext ( t ) , y && e . clipItem . draw ( t , e . extend ( { clip : ! 0 } ) ) , m ) { t . setTransform ( v , 0 , 0 , v , 0 , 0 ) ; var x = e . offset ; x && t . translate ( - x . x , - x . y ) } this . _draw ( t , e , s , m ) , t . restore ( ) , r . pop ( ) , e . clip && ! e . dontFinish && t . clip ( ) , g || ( et . process ( c , t , h , f , u . subtract ( l ) . multiply ( v ) ) , tt . release ( t ) , e . offset = l ) } } } , _isUpdated : function ( t ) { var e = this . _parent ; if ( e instanceof E ) return e . _isUpdated ( t ) ; var n = this . _updateVersion === t ; return ! n && e && e . _visible && e . _isUpdated ( t ) && ( this . _updateVersion = t , n = ! 0 ) , n } , _drawSelection : function ( t , e , n , i , r ) { var s = this . _selection , a = 1 & s , o = 2 & s || a && this . _selectBounds , h = 4 & s ; if ( this . _drawSelected || ( a = ! 1 ) , ( a || o || h ) && this . _isUpdated ( r ) ) { var u , l = this . getSelectedColor ( ! 0 ) || ( u = this . getLayer ( ) ) && u . getSelectedColor ( ! 0 ) , c = e . appended ( this . getGlobalMatrix ( ! 0 ) ) , f = n / 2 ; if ( t . strokeStyle = t . fillStyle = l ? l . toCanvasStyle ( t ) : "#009dec" , a && this . _drawSelected ( t , c , i ) , h ) { var d = c . _transformPoint ( this . getPosition ( ! 0 ) ) , _ = d . x , g = d . y ; t . beginPath ( ) , t . arc ( _ , g , f , 0 , 2 * Math . PI , ! 0 ) , t . stroke ( ) ; for ( var v = [ [ 0 , - 1 ] , [ 1 , 0 ] , [ 0 , 1 ] , [ - 1 , 0 ] ] , p = f , m = n + 1 , y = 0 ; y < 4 ; y ++ ) { var w = v [ y ] , x = w [ 0 ] , b = w [ 1 ] ; t . moveTo ( _ + x * p , g + b * p ) , t . lineTo ( _ + x * m , g + b * m ) , t . stroke ( ) } } if ( o ) { var C = c . _transformCorners ( this . getInternalBounds ( ) ) ; t . beginPath ( ) ; for ( var y = 0 ; y < 8 ; y ++ ) t [ y ? "lineTo" : "moveTo" ] ( C [ y ] , C [ ++ y ] ) ; t . closePath ( ) , t . stroke ( ) ; for ( var y = 0 ; y < 8 ; y ++ ) t . fillRect ( C [ y ] - f , C [ ++ y ] - f , n , n ) } } } , _canComposite : function ( ) { return ! 1 } } , r . each ( [ "down" , "drag" , "up" , "move" ] , function ( t ) { this [ "removeOn" + r . capitalize ( t ) ] = function ( ) { var e = { } ; return e [ t ] = ! 0 , this . removeOn ( e ) } } , { removeOn : function ( t ) { for ( var e in t ) if ( t [ e ] ) { var n = "mouse" + e , i = this . _project , r = i . _removeSets = i . _removeSets || { } ; r [ n ] = r [ n ] || { } , r [ n ] [ this . _id ] = this } return this } } ) ) , x = w . extend ( { _class : "Group" , _selectBounds : ! 1 , _selectChildren : ! 0 , _serializeFields : { children : [ ] } , initialize : function ( t ) { this . _children = [ ] , this . _namedChildren = { } , this . _initialize ( t ) || this . addChildren ( Array . isArray ( t ) ? t : arguments ) } , _changed : function ft ( t ) { ft . base . call ( this , t ) , 1026 & t && ( this . _clipItem = e ) } , _getClipItem : function ( ) { var t = this . _clipItem ; if ( t === e ) { t = null ; for ( var n = this . _children , i = 0 , r = n . length ; i < r ; i ++ ) if ( n [ i ] . _clipMask ) { t = n [ i ] ; break } this . _clipItem = t } return t } , isClipped : function ( ) { return ! ! this . _getClipItem ( ) } , setClipped : function ( t ) { var e = this . getFirstChild ( ) ; e && e . setClipMask ( t ) } , _getBounds : function dt ( t , e ) { var n = this . _getClipItem ( ) ; return n ? n . _getCachedBounds ( t && t . appended ( n . _matrix ) , r . set ( { } , e , { stroke : ! 1 } ) ) : dt . base . call ( this , t , e ) } , _hitTestChildren : function _t ( t , e , n ) { var i = this . _getClipItem ( ) ; return ( ! i || i . contains ( t ) ) && _t . base . call ( this , t , e , n , i ) } , _draw : function ( t , e ) { var n = e . clip , i = ! n && this . _getClipItem ( ) ; e = e . extend ( { clipItem : i , clip : ! 1 } ) , n ? ( t . beginPath ( ) , e . dontStart = e . dontFinish = ! 0 ) : i && i . draw ( t , e . extend ( { clip : ! 0 } ) ) ; for ( var r = this . _children , s = 0 , a = r . length ; s < a ; s ++ ) { var o = r [ s ] ; o !== i && o . draw ( t , e ) } } } ) , b = x . extend ( { _class : "Layer" , initialize : function ( ) { x . apply ( this , arguments ) } , _getOwner : function ( ) { return this . _parent || null != this . _index && this . _project } , isInserted : function gt ( ) { return this . _parent ? gt . base . call ( this ) : null != this . _index } , activate : function ( ) { this . _project . _activeLayer = this } , _hitTestSelf : function ( ) { } } ) , C = w . extend ( { _class : "Shape" , _applyMatrix : ! 1 , _canApplyMatrix : ! 1 , _canScaleStroke : ! 0 , _serializeFields : { type : null , size : null , radius : null } , initialize : function ( t , e ) { this . _initialize ( t , e ) } , _equals : function ( t ) { return this . _type === t . _type && this . _size . equals ( t . _size ) && r . equals ( this . _radius , t . _radius ) } , copyContent : function ( t ) { this . setType ( t . _type ) , this . setSize ( t . _size ) , this . setRadius ( t . _radius ) } , getType : function ( ) { return this . _type } , setType : function ( t ) { this . _type = t } , getShape : "#getType" , setShape : "#setType" , getSize : function ( ) { var t = this . _size ; return new _ ( t . width , t . height , this , "setSize" ) } , setSize : function ( ) { var t = d . read ( arguments ) ; if ( this . _size ) { if ( ! this . _size . equals ( t ) ) { var e = this . _type , n = t . width , i = t . height ; "rectangle" === e ? this . _radius . set ( d . min ( this . _radius , t . divide ( 2 ) ) ) : "circle" === e ? ( n = i = ( n + i ) / 2 , this . _radius = n / 2 ) : "ellipse" === e && this . _radius . _set ( n / 2 , i / 2 ) , this . _size . _set ( n , i ) , this . _changed ( 9 ) } } else this . _size = t . clone ( ) } , getRadius : f
v = l - o ) ; var k = Math . sqrt ( g * g + v * v ) ; k && ( g /= k , v /= k ) } if ( 3 === n ) { var h = 6 * y * e + 2 * m , l = 6 * b * e + 2 * x , I = Math . pow ( g * g + v * v , 1.5 ) ; g = 0 !== I ? ( g * l - v * h ) / I : 0 , v = 0 } } return 2 === n ? new c ( v , ( - g ) ) : new c ( g , v ) } return { statics : { classify : function ( t ) { function n ( t , n , i ) { var r = n !== e , s = r && n > 0 && n < 1 , a = r && i > 0 && i < 1 ; return ! r || ( s || a ) && ( "loop" !== t || s && a ) || ( t = "arch" , s = a = ! 1 ) , { type : t , roots : s || a ? s && a ? n < i ? [ n , i ] : [ i , n ] : [ s ? n : i ] : null } } var i = t [ 0 ] , r = t [ 1 ] , s = t [ 2 ] , a = t [ 3 ] , o = t [ 4 ] , h = t [ 5 ] , l = t [ 6 ] , c = t [ 7 ] , f = i * ( c - h ) + r * ( o - l ) + l * h - c * o , d = s * ( r - c ) + a * ( l - i ) + i * c - r * l , _ = o * ( a - r ) + h * ( i - s ) + s * r - a * i , g = 3 * _ , v = g - d , p = v - d + f , m = Math . sqrt ( p * p + v * v + g * g ) , y = 0 !== m ? 1 / m : 0 , w = u . isZero , x = "serpentine" ; if ( p *= y , v *= y , g *= y , w ( p ) ) return w ( v ) ? n ( w ( g ) ? "line" : "quadratic" ) : n ( x , g / ( 3 * v ) ) ; var b = 3 * v * v - 4 * p * g ; if ( w ( b ) ) return n ( "cusp" , v / ( 2 * p ) ) ; var C = b > 0 ? Math . sqrt ( b / 3 ) : Math . sqrt ( - b ) , S = 2 * p ; return n ( b > 0 ? x : "loop" , ( v + C ) / S , ( v - C ) / S ) } , getLength : function ( i , r , s , a ) { if ( r === e && ( r = 0 ) , s === e && ( s = 1 ) , T . isStraight ( i ) ) { var o = i ; s < 1 && ( o = T . subdivide ( o , s ) [ 0 ] , r /= s ) , r > 0 && ( o = T . subdivide ( o , r ) [ 1 ] ) ; var h = o [ 6 ] - o [ 0 ] , l = o [ 7 ] - o [ 1 ] ; return Math . sqrt ( h * h + l * l ) } return u . integrate ( a || t ( i ) , r , s , n ( r , s ) ) } , getTimeAt : function ( i , r , s ) { function a ( t ) { return p += u . integrate ( d , s , t , n ( s , t ) ) , s = t , p - r } if ( s === e && ( s = r < 0 ? 1 : 0 ) , 0 === r ) return s ; var o = Math . abs , h = 1e-12 , l = r > 0 , c = l ? s : 0 , f = l ? 1 : s , d = t ( i ) , _ = T . getLength ( i , c , f , d ) , g = o ( r ) - _ ; if ( o ( g ) < h ) return l ? f : c ; if ( g > h ) return null ; var v = r / _ , p = 0 ; return u . findRoot ( a , d , s + v , c , f , 32 , 1e-12 ) } , getPoint : function ( t , e ) { return i ( t , e , 0 , ! 1 ) } , getTangent : function ( t , e ) { return i ( t , e , 1 , ! 0 ) } , getWeightedTangent : function ( t , e ) { return i ( t , e , 1 , ! 1 ) } , getNormal : function ( t , e ) { return i ( t , e , 2 , ! 0 ) } , getWeightedNormal : function ( t , e ) { return i ( t , e , 2 , ! 1 ) } , getCurvature : function ( t , e ) { return i ( t , e , 3 , ! 1 ) . x } , getPeaks : function ( t ) { var e = t [ 0 ] , n = t [ 1 ] , i = t [ 2 ] , r = t [ 3 ] , s = t [ 4 ] , a = t [ 5 ] , o = t [ 6 ] , h = t [ 7 ] , l = - e + 3 * i - 3 * s + o , c = 3 * e - 6 * i + 3 * s , f = - 3 * e + 3 * i , d = - n + 3 * r - 3 * a + h , _ = 3 * n - 6 * r + 3 * a , g = - 3 * n + 3 * r , v = 1e-8 , p = 1 - v , m = [ ] ; return u . solveCubic ( 9 * ( l * l + d * d ) , 9 * ( l * c + _ * d ) , 2 * ( c * c + _ * _ ) + 3 * ( f * l + g * d ) , f * c + _ * g , m , v , p ) , m . sort ( ) } } } } , new function ( ) { function t ( t , e , n , i , r , s , a ) { var o = ! a && n . getPrevious ( ) === r , h = ! a && n !== r && n . getNext ( ) === r , u = 1e-8 , l = 1 - u ; if ( null !== i && i >= ( o ? u : 0 ) && i <= ( h ? l : 1 ) && null !== s && s >= ( h ? u : 0 ) && s <= ( o ? l : 1 ) ) { var c = new z ( n , i , null , a ) , f = new z ( r , s , null , a ) ; c . _intersection = f , f . _intersection = c , e && ! e ( c ) || z . insert ( t , c , ! 0 ) } } function e ( r , s , a , o , h , u , l , c , f , d , _ , g , v ) { if ( ++ f >= 4096 || ++ c >= 40 ) return f ; var p , y , w = 1e-9 , x = s [ 0 ] , b = s [ 1 ] , C = s [ 6 ] , S = s [ 7 ] , k = m . getSignedDistance , I = k ( x , b , C , S , s [ 2 ] , s [ 3 ] ) , P = k ( x , b , C , S , s [ 4 ] , s [ 5 ] ) , M = I * P > 0 ? . 75 : 4 / 9 , A = M * Math . min ( 0 , I , P ) , z = M * Math . max ( 0 , I , P ) , O = k ( x , b , C , S , r [ 0 ] , r [ 1 ] ) , L = k ( x , b , C , S , r [ 2 ] , r [ 3 ] ) , E = k ( x , b , C , S , r [ 4 ] , r [ 5 ] ) , N = k ( x , b , C , S , r [ 6 ] , r [ 7 ] ) , B = n ( O , L , E , N ) , F = B [ 0 ] , j = B [ 1 ] ; if ( 0 === I && 0 === P && 0 === O && 0 === L && 0 === E && 0 === N || null == ( p = i ( F , j , A , z ) ) || null == ( y = i ( F . reverse ( ) , j . reverse ( ) , A , z ) ) ) return f ; var D = d + ( _ - d ) * p , R = d + ( _ - d ) * y ; if ( Math . max ( v - g , R - D ) < w ) { var q = ( D + R ) / 2 , V = ( g + v ) / 2 ; t ( h , u , l ? o : a , l ? V : q , l ? a : o , l ? q : V ) } else if ( r = T . getPart ( r , p , y ) , y - p > . 8 ) if ( R - D > v - g ) { var U = T . subdivide ( r , . 5 ) , q = ( D + R ) / 2 ; f = e ( s , U [ 0 ] , o , a , h , u , ! l , c , f , g , v , D , q ) , f = e ( s , U [ 1 ] , o , a , h , u , ! l , c , f , g , v , q , R ) } else { var U = T . subdivide ( s , . 5 ) , V = ( g + v ) / 2 ; f = e ( U [ 0 ] , r , o , a , h , u , ! l , c , f , g , V , D , R ) , f = e ( U [ 1 ] , r , o , a , h , u , ! l , c , f , V , v , D , R ) } else f = v - g >= w ? e ( s , r , o , a , h , u , ! l , c , f , g , v , D , R ) : e ( r , s , a , o , h , u , l , c , f , D , R , g , v ) ; return f } function n ( t , e , n , i ) { var r , s = [ 0 , t ] , a = [ 1 / 3 , e ] , o = [ 2 / 3 , n ] , h = [ 1 , i ] , u = e - ( 2 * t + i ) / 3 , l = n - ( t + 2 * i ) / 3 ; if ( u * l < 0 ) r = [ [ s , a , h ] , [ s , o , h ] ] ; else { var c = u / l ; r = [ c >= 2 ? [ s , a , h ] : c <= . 5 ? [ s , o , h ] : [ s , a , o , h ] , [ s , h ] ] } return ( u || l ) < 0 ? r . reverse ( ) : r } function i ( t , e , n , i ) { return t [ 0 ] [ 1 ] < n ? s ( t , ! 0 , n ) : e [ 0 ] [ 1 ] > i ? s ( e , ! 1 , i ) : t [ 0 ] [ 0 ] } function s ( t , e , n ) { for ( var i = t [ 0 ] [ 0 ] , r = t [ 0 ] [ 1 ] , s = 1 , a = t . length ; s < a ; s ++ ) { var o = t [ s ] [ 0 ] , h = t [ s ] [ 1 ] ; if ( e ? h >= n : h <= n ) return h === n ? o : i + ( n - r ) * ( o - i ) / ( h - r ) ; i = o , r = h } return null } function a ( t , e , n , i , r ) { var s = u . isZero ; if ( s ( i ) && s ( r ) ) { var a = T . getTimeOf ( t , new c ( e , n ) ) ; return null === a ? [ ] : [ a ] } for ( var o = Math . atan2 ( - r , i ) , h = Math . sin ( o ) , l = Math . cos ( o ) , f = [ ] , d = [ ] , _ = 0 ; _ < 8 ; _ += 2 ) { var g = t [ _ ] - e , v = t [ _ + 1 ] - n ; f . push ( g * l - v * h , g * h + v * l ) } return T . solveCubic ( f , 1 , 0 , d , 0 , 1 ) , d } function o ( e , n , i , r , s , o , h ) { for ( var u = n [ 0 ] , l = n [ 1 ] , c = n [ 6 ] , f = n [ 7 ] , d = a ( e , u , l , c - u , f - l ) , _ = 0 , g = d . length ; _ < g ; _ ++ ) { var v = d [ _ ] , p = T . getPoint ( e , v ) , m = T . getTimeOf ( n , p ) ; null !== m && t ( s , o , h ? r : i , h ? m : v , h ? i : r , h ? v : m ) } } function h ( e , n , i , r , s , a ) { var o = m . intersect ( e [ 0 ] , e [ 1 ] , e [ 6
var S = _ , G = null ; if ( $ < V && ( G = s . rotate ( 90 ) . multiply ( Z ) , a ? ( S = a . _transformPoint ( s ) , G = a . _transformPoint ( s . add ( G ) ) . subtract ( S ) ) : S = n . add ( s ) ) , $ ) { var J = s . rotate ( - 90 ) . multiply ( Z ) ; a && ( J = a . _transformPoint ( s . add ( J ) ) . subtract ( S ) ) , W . push ( new M ( S , J , G ) ) } else l . setHandleOut ( G ) ; s = s . rotate ( U ) } this . _add ( W ) } , lineBy : function ( ) { var e = c . read ( arguments ) , n = t ( this ) . _point ; this . lineTo ( n . add ( e ) ) } , curveBy : function ( ) { var e = c . read ( arguments ) , n = c . read ( arguments ) , i = r . read ( arguments ) , s = t ( this ) . _point ; this . curveTo ( s . add ( e ) , s . add ( n ) , i ) } , cubicCurveBy : function ( ) { var e = c . read ( arguments ) , n = c . read ( arguments ) , i = c . read ( arguments ) , r = t ( this ) . _point ; this . cubicCurveTo ( r . add ( e ) , r . add ( n ) , r . add ( i ) ) } , quadraticCurveBy : function ( ) { var e = c . read ( arguments ) , n = c . read ( arguments ) , i = t ( this ) . _point ; this . quadraticCurveTo ( i . add ( e ) , i . add ( n ) ) } , arcBy : function ( ) { var e = t ( this ) . _point , n = e . add ( c . read ( arguments ) ) , i = r . pick ( r . peek ( arguments ) , ! 0 ) ; "boolean" == typeof i ? this . arcTo ( n , i ) : this . arcTo ( n , e . add ( c . read ( arguments ) ) ) } , closePath : function ( t ) { this . setClosed ( ! 0 ) , this . join ( this , t ) } } } , { _getBounds : function ( t , e ) { var n = e . handle ? "getHandleBounds" : e . stroke ? "getStrokeBounds" : "getBounds" ; return L [ n ] ( this . _segments , this . _closed , this , t , e ) } , statics : { getBounds : function ( t , e , n , i , r , s ) { function a ( t ) { t . _transformCoordinates ( i , h ) ; for ( var e = 0 ; e < 2 ; e ++ ) T . _addBounds ( u [ e ] , u [ e + 4 ] , h [ e + 2 ] , h [ e ] , e , s ? s [ e ] : 0 , l , c , f ) ; var n = u ; u = h , h = n } var o = t [ 0 ] ; if ( ! o ) return new g ; for ( var h = new Array ( 6 ) , u = o . _transformCoordinates ( i , new Array ( 6 ) ) , l = u . slice ( 0 , 2 ) , c = l . slice ( ) , f = new Array ( 2 ) , d = 1 , _ = t . length ; d < _ ; d ++ ) a ( t [ d ] ) ; return e && a ( o ) , new g ( l [ 0 ] , l [ 1 ] , c [ 0 ] - l [ 0 ] , c [ 1 ] - l [ 1 ] ) } , getStrokeBounds : function ( t , e , n , i , r ) { function s ( t ) { v = v . include ( t ) } function a ( t ) { v = v . unite ( x . setCenter ( t . _point . transform ( i ) ) ) } function o ( t , e ) { "round" === e || t . isSmooth ( ) ? a ( t ) : L . _addBevelJoin ( t , e , p , w , i , f , s ) } function h ( t , e ) { "round" === e ? a ( t ) : L . _addSquareCap ( t , e , p , i , f , s ) } var u = n . getStyle ( ) , l = u . hasStroke ( ) , c = u . getStrokeWidth ( ) , f = l && n . _getStrokeMatrix ( i , r ) , _ = l && L . _getStrokePadding ( c , f ) , v = L . getBounds ( t , e , n , i , r , _ ) ; if ( ! l ) return v ; for ( var p = c / 2 , m = u . getStrokeJoin ( ) , y = u . getStrokeCap ( ) , w = u . getMiterLimit ( ) , x = new g ( new d ( _ ) ) , b = t . length - ( e ? 0 : 1 ) , C = 1 ; C < b ; C ++ ) o ( t [ C ] , m ) ; return e ? o ( t [ 0 ] , m ) : b > 0 && ( h ( t [ 0 ] , y ) , h ( t [ t . length - 1 ] , y ) ) , v } , _getStrokePadding : function ( t , e ) { if ( ! e ) return [ t , t ] ; var n = new c ( t , 0 ) . transform ( e ) , i = new c ( 0 , t ) . transform ( e ) , r = n . getAngleInRadians ( ) , s = n . getLength ( ) , a = i . getLength ( ) , o = Math . sin ( r ) , h = Math . cos ( r ) , u = Math . tan ( r ) , l = Math . atan2 ( a * u , s ) , f = Math . atan2 ( a , u * s ) ; return [ Math . abs ( s * Math . cos ( l ) * h + a * Math . sin ( l ) * o ) , Math . abs ( a * Math . sin ( f ) * h + s * Math . cos ( f ) * o ) ] } , _addBevelJoin : function ( t , e , n , i , r , s , a , o ) { var h = t . getCurve ( ) , u = h . getPrevious ( ) , l = h . getPoint1 ( ) . transform ( r ) , f = u . getNormalAtTime ( 1 ) . multiply ( n ) . transform ( s ) , d = h . getNormalAtTime ( 0 ) . multiply ( n ) . transform ( s ) ; if ( f . getDirectedAngle ( d ) < 0 && ( f = f . negate ( ) , d = d . negate ( ) ) , o && a ( l ) , a ( l . add ( f ) ) , "miter" === e ) { var _ = new m ( l . add ( f ) , new c ( ( - f . y ) , f . x ) , ( ! 0 ) ) . intersect ( new m ( l . add ( d ) , new c ( ( - d . y ) , d . x ) , ( ! 0 ) ) , ! 0 ) ; _ && l . getDistance ( _ ) <= i * n && a ( _ ) } a ( l . add ( d ) ) } , _addSquareCap : function ( t , e , n , i , r , s , a ) { var o = t . _point . transform ( i ) , h = t . getLocation ( ) , u = h . getNormal ( ) . multiply ( 0 === h . getTime ( ) ? n : - n ) . transform ( r ) ; "square" === e && ( a && ( s ( o . subtract ( u ) ) , s ( o . add ( u ) ) ) , o = o . add ( u . rotate ( - 90 ) ) ) , s ( o . add ( u ) ) , s ( o . subtract ( u ) ) } , getHandleBounds : function ( t , e , n , i , r ) { var s , a , o = n . getStyle ( ) , h = r . stroke && o . hasStroke ( ) ; if ( h ) { var u = n . _getStrokeMatrix ( i , r ) , l = o . getStrokeWidth ( ) / 2 , c = l ; "miter" === o . getStrokeJoin ( ) && ( c = l * o . getMiterLimit ( ) ) , "square" === o . getStrokeCap ( ) && ( c = Math . max ( c , l * Math . SQRT2 ) ) , s = L . _getStrokePadding ( l , u ) , a = L . _getStrokePadding ( c , u ) } for ( var f = new Array ( 6 ) , d = 1 / 0 , _ = - d , v = d , p = _ , m = 0 , y = t . length ; m < y ; m ++ ) { var w = t [ m ] ; w . _transformCoordinates ( i , f ) ; for ( var x = 0 ; x < 6 ; x += 2 ) { var b = x ? s : a , C = b ? b [ 0 ] : 0 , S = b ? b [ 1 ] : 0 , k = f [ x ] , I = f [ x + 1 ] , P = k - C , M = k + C , A = I - S , T = I + S ; P < d && ( d = P ) , M > _ && ( _ = M ) , A < v && ( v = A ) , T > p && ( p = T ) } } return new g ( d , v , _ - d , p - v ) } } } ) ; L . inject ( { statics : new function ( ) { function t ( t , e , n ) { var i = r . getNamed ( n ) , s = new L ( i && 0 == i . insert && w . NO _INSERT ) ; return s . _add ( t ) , s . _closed = e , s . set ( i , { insert : ! 0 } ) } function e ( e , n , r ) { for ( var s = new Array ( 4 ) , a = 0 ; a < 4 ; a ++ ) { var o = i [ a ] ; s [ a ] = new M ( o . _point . multiply ( n ) . add ( e ) , o . _handleIn . multiply ( n ) , o . _handleOut . multiply ( n ) )
} , clone : function ( ) { for ( var t = [ ] , e = 0 , n = this . _stops . length ; e < n ; e ++ ) t [ e ] = this . _stops [ e ] . clone ( ) ; return new R ( t , this . _radial ) } , getStops : function ( ) { return this . _stops } , setStops : function ( t ) { if ( t . length < 2 ) throw new Error ( "Gradient stop list needs to contain at least two stops." ) ; var n = this . _stops ; if ( n ) for ( var i = 0 , r = n . length ; i < r ; i ++ ) n [ i ] . _owner = e ; n = this . _stops = q . readList ( t , 0 , { clone : ! 0 } ) ; for ( var i = 0 , r = n . length ; i < r ; i ++ ) n [ i ] . _owner = this ; this . _changed ( ) } , getRadial : function ( ) { return this . _radial } , setRadial : function ( t ) { this . _radial = t , this . _changed ( ) } , equals : function ( t ) { if ( t === this ) return ! 0 ; if ( t && this . _class === t . _class ) { var e = this . _stops , n = t . _stops , i = e . length ; if ( i === n . length ) { for ( var r = 0 ; r < i ; r ++ ) if ( ! e [ r ] . equals ( n [ r ] ) ) return ! 1 ; return ! 0 } } return ! 1 } } ) , q = r . extend ( { _class : "GradientStop" , initialize : function ( t , n ) { var i = t , r = n ; "object" == typeof t && n === e && ( Array . isArray ( t ) && "number" != typeof t [ 0 ] ? ( i = t [ 0 ] , r = t [ 1 ] ) : ( "color" in t || "offset" in t || "rampPoint" in t ) && ( i = t . color , r = t . offset || t . rampPoint || 0 ) ) , this . setColor ( i ) , this . setOffset ( r ) } , clone : function ( ) { return new q ( this . _color . clone ( ) , this . _offset ) } , _serialize : function ( t , e ) { var n = this . _color , i = this . _offset ; return r . serialize ( null == i ? [ n ] : [ n , i ] , t , ! 0 , e ) } , _changed : function ( ) { this . _owner && this . _owner . _changed ( 65 ) } , getOffset : function ( ) { return this . _offset } , setOffset : function ( t ) { this . _offset = t , this . _changed ( ) } , getRampPoint : "#getOffset" , setRampPoint : "#setOffset" , getColor : function ( ) { return this . _color } , setColor : function ( ) { var t = D . read ( arguments , 0 , { clone : ! 0 } ) ; t && ( t . _owner = this ) , this . _color = t , this . _changed ( ) } , equals : function ( t ) { return t === this || t && this . _class === t . _class && this . _color . equals ( t . _color ) && this . _offset == t . _offset || ! 1 } } ) , V = r . extend ( new function ( ) { var t = { fillColor : null , fillRule : "nonzero" , strokeColor : null , strokeWidth : 1 , strokeCap : "butt" , strokeJoin : "miter" , strokeScaling : ! 0 , miterLimit : 10 , dashOffset : 0 , dashArray : [ ] , shadowColor : null , shadowBlur : 0 , shadowOffset : new c , selectedColor : null } , n = r . set ( { } , t , { fontFamily : "sans-serif" , fontWeight : "normal" , fontSize : 12 , leading : null , justification : "left" } ) , i = r . set ( { } , n , { fillColor : new D } ) , s = { strokeWidth : 97 , strokeCap : 97 , strokeJoin : 97 , strokeScaling : 105 , miterLimit : 97 , fontFamily : 9 , fontWeight : 9 , fontSize : 9 , font : 9 , leading : 9 , justification : 9 } , a = { beans : ! 0 } , o = { _class : "Style" , beans : ! 0 , initialize : function ( e , r , s ) { this . _values = { } , this . _owner = r , this . _project = r && r . _project || s || paper . project , this . _defaults = ! r || r instanceof x ? n : r instanceof F ? i : t , e && this . set ( e ) } } ; return r . each ( n , function ( t , n ) { var i = /Color$/ . test ( n ) , h = "shadowOffset" === n , u = r . capitalize ( n ) , l = s [ n ] , f = "set" + u , d = "get" + u ; o [ f ] = function ( t ) { var r = this . _owner , s = r && r . _children ; if ( s && s . length > 0 && ! ( r instanceof E ) ) for ( var a = 0 , o = s . length ; a < o ; a ++ ) s [ a ] . _style [ f ] ( t ) ; else if ( n in this . _defaults ) { var h = this . _values [ n ] ; h !== t && ( i && ( h && h . _owner !== e && ( h . _owner = e , h . _canvasStyle = null ) , t && t . constructor === D && ( t . _owner && ( t = t . clone ( ) ) , t . _owner = r ) ) , this . _values [ n ] = t , r && r . _changed ( l || 65 ) ) } } , o [ d ] = function ( t ) { var s , a = this . _owner , o = a && a . _children ; if ( n in this . _defaults && ( ! o || ! o . length || t || a instanceof E ) ) { var s = this . _values [ n ] ; if ( s === e ) s = this . _defaults [ n ] , s && s . clone && ( s = s . clone ( ) ) ; else { var u = i ? D : h ? c : null ; ! u || s && s . constructor === u || ( this . _values [ n ] = s = u . read ( [ s ] , 0 , { readNull : ! 0 , clone : ! 0 } ) , s && i && ( s . _owner = a ) ) } } else if ( o ) for ( var l = 0 , f = o . length ; l < f ; l ++ ) { var _ = o [ l ] . _style [ d ] ( ) ; if ( l ) { if ( ! r . equals ( s , _ ) ) return e } else s = _ } return s } , a [ d ] = function ( t ) { return this . _style [ d ] ( t ) } , a [ f ] = function ( t ) { this . _style [ f ] ( t ) } } ) , r . each ( { Font : "FontFamily" , WindingRule : "FillRule" } , function ( t , e ) { var n = "get" + e , i = "set" + e ; o [ n ] = a [ n ] = "#get" + t , o [ i ] = a [ i ] = "#set" + t } ) , w . inject ( a ) , o } , { set : function ( t ) { var e = t instanceof V , n = e ? t . _values : t ; if ( n ) for ( var i in n ) if ( i in this . _defaults ) { var r = n [ i ] ; this [ i ] = r && e && r . clone ? r . clone ( ) : r } } , equals : function ( t ) { function n ( t , n , i ) { var s = t . _values , a = n . _values , o = n . _defaults ; for ( var h in s ) { var u = s [ h ] , l = a [ h ] ; if ( ! ( i && h in a || r . equals ( u , l === e ? o [ h ] : l ) ) ) return ! 1 } return ! 0 } return t === this || t && this . _class === t . _class && n ( this , t ) && n ( t , this , ! 0 ) || ! 1 } , _dispose : function ( ) { var t ; t = this . getFillColor ( ) , t && ( t . _canvasStyle = null ) , t = this . getStrokeColor ( ) , t && ( t . _canvasStyle = null ) , t = this . getShadowColor ( ) ,
if ( "color" === o && null != h ) { var u = h . getAlpha ( ) ; u < 1 && ( i [ e . attribute + "-opacity" ] = u ) } "style" === o ? a . push ( e . attribute + ": " + h ) : i [ e . attribute ] = null == h ? "none" : "color" === o ? h . gradient ? f ( h , t ) : h . toCSS ( ! 0 ) : "array" === o ? h . join ( "," ) : "lookup" === o ? e . toSVG [ h ] : h } } ) , a . length && ( i . style = a . join ( ";" ) ) , 1 === i . opacity && delete i . opacity , t . _visible || ( i . visibility = "hidden" ) , nt . set ( e , i , S ) } function v ( t , e ) { return k || ( k = { ids : { } , svgs : { } } ) , t && k . svgs [ e + "-" + ( t . _id || t . _ _id || ( t . _ _id = l . get ( "svg" ) ) ) ] } function m ( t , e , n ) { k || v ( ) ; var i = k . ids [ n ] = ( k . ids [ n ] || 0 ) + 1 ; e . id = n + "-" + i , k . svgs [ n + "-" + ( t . _id || t . _ _id ) ] = e } function x ( e , n ) { var i = e , r = null ; if ( k ) { i = "svg" === e . nodeName . toLowerCase ( ) && e ; for ( var s in k . svgs ) r || ( i || ( i = nt . create ( "svg" ) , i . appendChild ( e ) ) , r = i . insertBefore ( nt . create ( "defs" ) , i . firstChild ) ) , r . appendChild ( k . svgs [ s ] ) ; k = null } return n . asString ? ( new t . XMLSerializer ) . serializeToString ( i ) : i } function b ( t , e , n ) { var i = I [ t . _class ] , r = i && i ( t , e ) ; if ( r ) { var s = e . onExport ; s && ( r = s ( t , r , e ) || r ) ; var a = JSON . stringify ( t . _data ) ; a && "{}" !== a && "null" !== a && r . setAttribute ( "data-paper-data" , a ) } return r && _ ( t , r , n ) } function C ( t ) { return t || ( t = { } ) , S = new h ( t . precision ) , t } var S , k , I = { Group : n , Layer : n , Raster : i , Path : s , Shape : a , CompoundPath : o , SymbolItem : c , PointText : d } ; w . inject ( { exportSVG : function ( t ) { return t = C ( t ) , x ( b ( this , t , ! 0 ) , t ) } } ) , y . inject ( { exportSVG : function ( t ) { t = C ( t ) ; var n = this . _children , i = this . getView ( ) , s = r . pick ( t . bounds , "view" ) , a = t . matrix || "view" === s && i . _matrix , o = a && p . read ( [ a ] ) , h = "view" === s ? new g ( [ 0 , 0 ] , i . getViewSize ( ) ) : "content" === s ? w . _getBounds ( n , o , { stroke : ! 0 } ) . rect : g . read ( [ s ] , 0 , { readNull : ! 0 } ) , u = { version : "1.1" , xmlns : nt . svg , "xmlns:xlink" : nt . xlink } ; h && ( u . width = h . width , u . height = h . height , ( h . x || h . y ) && ( u . viewBox = S . rectangle ( h ) ) ) ; var l = nt . create ( "svg" , u , S ) , c = l ; o && ! o . isIdentity ( ) && ( c = l . appendChild ( nt . create ( "g" , e ( o ) , S ) ) ) ; for ( var f = 0 , d = n . length ; f < d ; f ++ ) c . appendChild ( b ( n [ f ] , t , ! 0 ) ) ; return x ( l , t ) } } ) } , new function ( ) { function s ( t , e , n , i , r ) { var s = nt . get ( t , e ) , a = null == s ? i ? null : n ? "" : 0 : n ? s : parseFloat ( s ) ; return /%\s*$/ . test ( s ) ? a / 100 * ( r ? 1 : T [ /x|^width/ . test ( e ) ? "width" : "height" ] ) : a } function a ( t , e , n , i , r ) { return e = s ( t , e || "x" , ! 1 , i , r ) , n = s ( t , n || "y" , ! 1 , i , r ) , ! i || null != e && null != n ? new c ( e , n ) : null } function o ( t , e , n , i , r ) { return e = s ( t , e || "width" , ! 1 , i , r ) , n = s ( t , n || "height" , ! 1 , i , r ) , ! i || null != e && null != n ? new d ( e , n ) : null } function h ( t , e , n ) { return "none" === t ? null : "number" === e ? parseFloat ( t ) : "array" === e ? t ? t . split ( /[\s,]+/g ) . map ( parseFloat ) : [ ] : "color" === e ? P ( t ) || t : "lookup" === e ? n [ t ] : t } function u ( t , e , n , i ) { var r = t . childNodes , s = "clippath" === e , a = "defs" === e , o = new x , h = o . _project , u = h . _currentStyle , l = [ ] ; if ( s || a || ( o = k ( o , t , i ) , h . _currentStyle = o . _style . clone ( ) ) , i ) for ( var c = t . querySelectorAll ( "defs" ) , f = 0 , d = c . length ; f < d ; f ++ ) M ( c [ f ] , n , ! 1 ) ; for ( var f = 0 , d = r . length ; f < d ; f ++ ) { var _ , g = r [ f ] ; 1 !== g . nodeType || /^defs$/i . test ( g . nodeName ) || ! ( _ = M ( g , n , ! 1 ) ) || _ instanceof I || l . push ( _ ) } return o . addChildren ( l ) , s && ( o = k ( o . reduce ( ) , t , i ) ) , h . _currentStyle = u , ( s || a ) && ( o . remove ( ) , o = null ) , o } function l ( t , e ) { for ( var n = t . getAttribute ( "points" ) . match ( /[+-]?(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?/g ) , i = [ ] , r = 0 , s = n . length ; r < s ; r += 2 ) i . push ( new c ( parseFloat ( n [ r ] ) , parseFloat ( n [ r + 1 ] ) ) ) ; var a = new L ( i ) ; return "polygon" === e && a . closePath ( ) , a } function f ( t ) { return O . create ( t . getAttribute ( "d" ) ) } function _ ( t , e ) { var n , i = ( s ( t , "href" , ! 0 ) || "" ) . substring ( 1 ) , r = "radialgradient" === e ; if ( i ) n = z [ i ] . getGradient ( ) , n . _radial ^ r && ( n = n . clone ( ) , n . _radial = r ) ; else { for ( var o = t . childNodes , h = [ ] , u = 0 , l = o . length ; u < l ; u ++ ) { var c = o [ u ] ; 1 === c . nodeType && h . push ( k ( new q , c ) ) } n = new R ( h , r ) } var f , d , _ , g = "userSpaceOnUse" !== s ( t , "gradientUnits" , ! 0 ) ; r ? ( f = a ( t , "cx" , "cy" , ! 1 , g ) , d = f . add ( s ( t , "r" , ! 1 , ! 1 , g ) , 0 ) , _ = a ( t , "fx" , "fy" , ! 0 , g ) ) : ( f = a ( t , "x1" , "y1" , ! 1 , g ) , d = a ( t , "x2" , "y2" , ! 1 , g ) ) ; var v = k ( new D ( n , f , d , _ ) , t ) ; return v . _scaleToBounds = g , null } function v ( t , e , n , i ) { if ( t . transform ) { for ( var r = ( i . getAttribute ( n ) || "" ) . split ( /\)\s*/g ) , s = new p , a = 0 , o = r . length ; a < o ; a ++ ) { var h = r [ a ] ; if ( ! h ) break ; for ( var u = h . split ( /\(\s*/ ) , l = u [ 0 ] , c = u [ 1 ] . split ( /[\s,]+/g ) , f = 0 , d = c . length ; f < d ; f ++ ) c [ f ] = parseFloat ( c [ f ] ) ; switch ( l ) { case "matrix" : s . append ( new p ( c [ 0 ] , c [ 1 ] , c [ 2 ] , c [ 3 ] , c [ 4 ] , c [ 5 ] ) ) ; break ; case "rotate" : s . rotate ( c [ 0 ] , c [ 1 ] || 0 , c [ 2 ] || 0 ) ; break ; case "translate" : s . translate ( c [ 0 ] , c [ 1 ] || 0 ) ; break ; case "scale" : s . scale ( c ) ; break ; case " s
2017-04-22 12:54:57 -04:00
return t < 65 ? 36 === t : t < 91 || ( t < 97 ? 95 === t : t < 123 || t >= 170 && $e . test ( String . fromCharCode ( t ) ) ) } , Ye = t . isIdentifierChar = function ( t ) { return t < 48 ? 36 === t : t < 58 || ! ( t < 65 ) && ( t < 91 || ( t < 97 ? 95 === t : t < 123 || t >= 170 && Ge . test ( String . fromCharCode ( t ) ) ) ) } , Qe = { kind : "loop" } , tn = { kind : "switch" } } ) , v . version || ( v = null ) } var w = { "+" : "__add" , "-" : "__subtract" , "*" : "__multiply" , "/" : "__divide" , "%" : "__modulo" , "==" : "__equals" , "!=" : "__equals" } , x = { "-" : "__negate" , "+" : "__self" } , b = r . each ( [ "add" , "subtract" , "multiply" , "divide" , "modulo" , "equals" , "negate" ] , function ( t ) { this [ "__" + t ] = "#" + t } , { _ _self : function ( ) { return this } } ) ; return c . inject ( b ) , d . inject ( b ) , D . inject ( b ) , n && ( "complete" === i . readyState ? setTimeout ( f ) : H . add ( n , { load : f } ) ) , { compile : h , execute : u , load : _ , parse : e } } . call ( this ) , paper = new ( a . inject ( r . exports , { Base : r , Numerical : u , Key : J , DomEvent : H , DomElement : U , document : i , window : n , Symbol : I , PlacedSymbol : k } ) ) , paper . agent . node && require ( "./node/extend.js" ) ( paper ) , "function" == typeof define && define . amd ? define ( "paper" , paper ) : "object" == typeof module && module && ( module . exports = paper ) , paper } . call ( this , "object" == typeof self ? self : null ) ;