2013-06-26 22:42:24 -04:00
/ * !
2014-03-20 12:23:45 -04:00
* Paper . js v0 . 9.17 - The Swiss Army Knife of Vector Graphics Scripting .
2013-06-26 22:42:24 -04:00
* http : //paperjs.org/
*
2014-03-13 12:49:37 -04:00
* Copyright ( c ) 2011 - 2014 , Juerg Lehni & Jonathan Puckey
* http : //scratchdisk.com/ & http://jonathanpuckey.com/
2013-06-26 22:42:24 -04:00
*
* Distributed under the MIT license . See LICENSE file for details .
*
* All rights reserved .
*
2014-03-20 12:23:45 -04:00
* Date : Thu Mar 20 17 : 20 : 10 2014 + 0100
2013-06-26 22:42:24 -04:00
*
* * *
*
2014-03-13 12:49:37 -04:00
* Straps . js - Class inheritance library with support for bean - style accessors
2013-06-26 22:42:24 -04:00
*
* Copyright ( c ) 2006 - 2013 Juerg Lehni
2014-03-13 12:49:37 -04:00
* http : //scratchdisk.com/
2013-06-26 22:42:24 -04:00
*
* Distributed under the MIT license .
*
* * *
*
2014-03-13 12:49:37 -04:00
* Acorn . js
2013-06-26 22:42:24 -04:00
* http : //marijnhaverbeke.nl/acorn/
*
* Acorn is a tiny , fast JavaScript parser written in JavaScript ,
* created by Marijn Haverbeke and released under an MIT license .
*
* /
2014-03-20 12:23:45 -04:00
var paper = new function ( t ) { var e = new function ( ) { function n ( n , i , r , a , o ) { function h ( s , a , h ) { var a = a || ( a = u ( i , s ) ) && ( a . get ? a : a . value ) ; "string" == typeof a && "#" === a [ 0 ] && ( a = n [ a . substring ( 1 ) ] || a ) ; var d , f = "function" == typeof a , _ = a , g = o || f ? a && a . get ? s in n : n [ s ] : null ; ! ( h || a !== t && i . hasOwnProperty ( s ) ) || o && g || ( f && g && ( a . base = g ) , f && l && ( d = s . match ( /^([gs]et|is)(([A-Z])(.*))$/ ) ) && ( l [ d [ 3 ] . toLowerCase ( ) + d [ 4 ] ] = d [ 2 ] ) , _ && ! f && _ . get && "function" == typeof _ . get && e . isPlainObject ( _ ) || ( _ = { value : _ , writable : ! 0 } ) , ( u ( n , s ) || { configurable : ! 0 } ) . configurable && ( _ . configurable = ! 0 , _ . enumerable = r ) , c ( n , s , _ ) ) } var l ; if ( i ) { l = { } ; for ( var d in i ) i . hasOwnProperty ( d ) && ! s . test ( d ) && h ( d , null , ! 0 ) ; h ( "toString" ) , h ( "valueOf" ) ; for ( var d in l ) { var f = l [ d ] , _ = n [ "set" + f ] , g = n [ "get" + f ] || _ && n [ "is" + f ] ; g && ( 0 === g . length || _ ) && h ( d , { get : g , set : _ } , ! 0 ) } } return n } function i ( t , e , n ) { return t && ( "length" in t && ! t . getLength && "number" == typeof t . length ? a : o ) . call ( t , e , n = n || t ) , n } function r ( t , e ) { for ( var n in e ) e . hasOwnProperty ( n ) && ( t [ n ] = e [ n ] ) ; return t } var s = /^(statics|preserve|enumerable|prototype|toString|valueOf)$/ , a = [ ] . forEach || function ( t , e ) { for ( var n = 0 , i = this . length ; i > n ; n ++ ) t . call ( e , this [ n ] , n , this ) } , o = function ( t , e ) { for ( var n in this ) this . hasOwnProperty ( n ) && t . call ( e , this [ n ] , n , this ) } , h = Object . create || function ( t ) { return { _ _proto _ _ : t } } , u = Object . getOwnPropertyDescriptor || function ( t , e ) { var n = t . _ _lookupGetter _ _ && t . _ _lookupGetter _ _ ( e ) ; return n ? { get : n , set : t . _ _lookupSetter _ _ ( e ) , enumerable : ! 0 , configurable : ! 0 } : t . hasOwnProperty ( e ) ? { value : t [ e ] , enumerable : ! 0 , configurable : ! 0 , writable : ! 0 } : null } , l = Object . defineProperty || function ( t , e , n ) { return ( n . get || n . set ) && t . _ _defineGetter _ _ ? ( n . get && t . _ _defineGetter _ _ ( e , n . get ) , n . set && t . _ _defineSetter _ _ ( e , n . set ) ) : t [ e ] = n . value , t } , c = function ( t , e , n ) { return delete t [ e ] , l ( t , e , n ) } ; return n ( function ( ) { for ( var t = 0 , e = arguments . length ; e > t ; t ++ ) r ( this , arguments [ t ] ) } , { inject : function ( t ) { if ( t ) { var e = this . prototype , i = Object . getPrototypeOf ( e ) . constructor , r = t . statics === ! 0 ? t : t . statics ; r != t && n ( e , t , t . enumerable , i && i . prototype , t . preserve ) , n ( this , r , ! 0 , i , t . preserve ) } for ( var s = 1 , a = arguments . length ; a > s ; s ++ ) this . inject ( arguments [ s ] ) ; return this } , extend : function ( ) { for ( var t , e = this , i = 0 , r = arguments . length ; r > i && ! ( t = arguments [ i ] . initialize ) ; i ++ ) ; return t = t || function ( ) { e . apply ( this , arguments ) } , t . prototype = h ( this . prototype ) , t . base = e , c ( t . prototype , "constructor" , { value : t , writable : ! 0 , configurable : ! 0 } ) , n ( t , this , ! 0 ) , arguments . length ? this . inject . apply ( t , arguments ) : t } } , ! 0 ) . inject ( { inject : function ( ) { for ( var t = 0 , e = arguments . length ; e > t ; t ++ ) n ( this , arguments [ t ] , arguments [ t ] . enumerable ) ; return this } , extend : function ( ) { var t = h ( this ) ; return t . inject . apply ( t , arguments ) } , each : function ( t , e ) { return i ( this , t , e ) } , clone : function ( ) { return new this . constructor ( this ) } , statics : { each : i , create : h , define : c , describe : u , copy : r , clone : function ( t ) { return r ( new t . constructor , t ) } , isPlainObject : function ( t ) { var n = null != t && t . constructor ; return n && ( n === Object || n === e || "Object" === n . name ) } , pick : function ( ) { for ( var e = 0 , n = arguments . length ; n > e ; e ++ ) if ( arguments [ e ] !== t ) return arguments [ e ] ; return null } } } ) } ; "undefined" != typeof module && ( module . exports = e ) , Array . isArray || ( Array . isArray = function ( t ) { return "[object Array]" === Object . prototype . toString . call ( t ) } ) , document . head || ( document . head = document . getElementsByTagName ( "head" ) [ 0 ] ) , e . inject ( { toString : function ( ) { return null != this . _id ? ( this . _class || "Object" ) + ( this . _name ? " '" + this . _name + "'" : " @" + this . _id ) : "{ " + e . each ( this , function ( t , e ) { if ( ! /^_/ . test ( e ) ) { var n = typeof t ; this . push ( e + ": " + ( "number" === n ? a . instance . number ( t ) : "string" === n ? "'" + t + "'" : t ) ) } } , [ ] ) . join ( ", " ) + " }" } , exportJSON : function ( t ) { return e . exportJSON ( this , t ) } , toJSON : function ( ) { return e . serialize ( this ) } , _set : function ( n , i ) { if ( n && e . isPlainObject ( n ) ) { var r = n . _filtering || n ; for ( var s in r ) if ( s in this && r . hasOwnProperty ( s ) && ( ! i || ! i [ s ] ) ) { var a = n [ s ] ; a !== t && ( this [ s ] = a ) } return ! 0 } } , statics : { exports : { enumerable : ! 0 } , extend : function re ( ) { var t = re . base . apply ( this , arguments ) , n = t . prototype . _class ; return n && ! e . exports [ n ] && ( e . exports [ n ] = t ) , t } , equals : function ( t , n ) { function i ( t , e ) { for ( var n in t ) if ( t . hasOwnProperty ( n ) && ! e . hasOwnProperty ( n ) ) return ! 1 ; return ! 0 } if ( t === n ) return ! 0 ; if ( t && t . equals ) return t . equals
return this . _transformCoordinates ( s , 0 , s , 0 , 4 ) } , _transformBounds : function ( t , e , n ) { for ( var i = this . _transformCorners ( t ) , r = i . slice ( 0 , 2 ) , s = i . slice ( ) , a = 2 ; 8 > a ; a ++ ) { var o = i [ a ] , h = 1 & a ; o < r [ h ] ? r [ h ] = o : o > s [ h ] && ( s [ h ] = o ) } return e || ( e = new f ) , e . set ( r [ 0 ] , r [ 1 ] , s [ 0 ] - r [ 0 ] , s [ 1 ] - r [ 1 ] , n ) } , inverseTransform : function ( ) { return this . _inverseTransform ( h . read ( arguments ) ) } , _getDeterminant : function ( ) { var t = this . _a * this . _d - this . _b * this . _c ; return isFinite ( t ) && ! o . isZero ( t ) && isFinite ( this . _tx ) && isFinite ( this . _ty ) ? t : null } , _inverseTransform : function ( t , e , n ) { var i = this . _getDeterminant ( ) ; if ( ! i ) return null ; var r = t . x - this . _tx , s = t . y - this . _ty ; return e || ( e = new h ) , e . set ( ( r * this . _d - s * this . _b ) / i , ( s * this . _a - r * this . _c ) / i , n ) } , decompose : function ( ) { var t = this . _a , e = this . _b , n = this . _c , i = this . _d ; if ( o . isZero ( t * i - e * n ) ) return null ; var r = Math . sqrt ( t * t + e * e ) ; t /= r , e /= r ; var s = t * n + e * i ; n -= t * s , i -= e * s ; var a = Math . sqrt ( n * n + i * i ) ; return n /= a , i /= a , s /= a , e * n > t * i && ( t = - t , e = - e , s = - s , r = - r ) , { scaling : new h ( r , a ) , rotation : 180 * - Math . atan2 ( e , t ) / Math . PI , shearing : s } } , getValues : function ( ) { return [ this . _a , this . _c , this . _b , this . _d , this . _tx , this . _ty ] } , getTranslation : function ( ) { return new h ( this . _tx , this . _ty ) } , getScaling : function ( ) { return ( this . decompose ( ) || { } ) . scaling } , getRotation : function ( ) { return ( this . decompose ( ) || { } ) . rotation } , inverted : function ( ) { var t = this . _getDeterminant ( ) ; return t && new g ( this . _d / t , - this . _c / t , - this . _b / t , this . _a / t , ( this . _b * this . _ty - this . _d * this . _tx ) / t , ( this . _c * this . _tx - this . _a * this . _ty ) / t ) } , shiftless : function ( ) { return new g ( this . _a , this . _c , this . _b , this . _d , 0 , 0 ) } , applyToContext : function ( t ) { t . transform ( this . _a , this . _c , this . _b , this . _d , this . _tx , this . _ty ) } } , new function ( ) { return e . each ( [ "a" , "c" , "b" , "d" , "tx" , "ty" ] , function ( t ) { var n = e . capitalize ( t ) , i = "_" + t ; this [ "get" + n ] = function ( ) { return this [ i ] } , this [ "set" + n ] = function ( t ) { this [ i ] = t , this . _changed ( ) } } , { } ) } ) , p = e . extend ( { _class : "Line" , initialize : function ( t , e , n , i , r ) { var s = ! 1 ; arguments . length >= 4 ? ( this . _px = t , this . _py = e , this . _vx = n , this . _vy = i , s = r ) : ( this . _px = t . x , this . _py = t . y , this . _vx = e . x , this . _vy = e . y , s = n ) , s || ( this . _vx -= this . _px , this . _vy -= this . _py ) } , getPoint : function ( ) { return new h ( this . _px , this . _py ) } , getVector : function ( ) { return new h ( this . _vx , this . _vy ) } , getLength : function ( ) { return this . getVector ( ) . getLength ( ) } , intersect : function ( t , e ) { return p . intersect ( this . _px , this . _py , this . _vx , this . _vy , t . _px , t . _py , t . _vx , t . _vy , ! 0 , e ) } , getSide : function ( t ) { return p . getSide ( this . _px , this . _py , this . _vx , this . _vy , t . x , t . y , ! 0 ) } , getDistance : function ( t ) { return Math . abs ( p . getSignedDistance ( this . _px , this . _py , this . _vx , this . _vy , t . x , t . y , ! 0 ) ) } , statics : { intersect : function ( t , e , n , i , r , s , a , u , l , c ) { l || ( n -= t , i -= e , a -= r , u -= s ) ; var d = u * n - a * i ; if ( ! o . isZero ( d ) ) { var f = t - r , _ = e - s , g = ( a * _ - u * f ) / d , p = ( n * _ - i * f ) / d ; if ( ( c || g >= 0 && 1 >= g ) && ( c || p >= 0 && 1 >= p ) ) return new h ( t + g * n , e + g * i ) } } , getSide : function ( t , e , n , i , r , s , a ) { a || ( n -= t , i -= e ) ; var o = r - t , h = s - e , u = o * i - h * n ; return 0 === u && ( u = o * n + h * i , u > 0 && ( o -= n , h -= i , u = o * n + h * i , 0 > u && ( u = 0 ) ) ) , 0 > u ? - 1 : u > 0 ? 1 : 0 } , getSignedDistance : function ( t , e , n , i , r , s , a ) { a || ( n -= t , i -= e ) ; var o = i / n , h = e - o * t ; return ( s - o * r - h ) / Math . sqrt ( o * o + 1 ) } } } ) , v = s . extend ( { _class : "Project" , _list : "projects" , _reference : "project" , initialize : function ( t ) { s . call ( this , ! 0 ) , this . layers = [ ] , this . symbols = [ ] , this . _currentStyle = new q ( null , null , this ) , this . activeLayer = new x , this . _view = H . create ( this , t || te . getCanvas ( 1 , 1 ) ) , this . _selectedItems = { } , this . _selectedItemCount = 0 , this . _updateVersion = 0 } , _serialize : function ( t , n ) { return e . serialize ( this . layers , t , ! 0 , n ) } , clear : function ( ) { for ( var t = this . layers . length - 1 ; t >= 0 ; t -- ) this . layers [ t ] . remove ( ) ; this . symbols = [ ] } , isEmpty : function ( ) { return this . layers . length <= 1 && ( ! this . activeLayer || this . activeLayer . isEmpty ( ) ) } , remove : function he ( ) { return he . base . call ( this ) ? ( this . _view && this . _view . remove ( ) , ! 0 ) : ! 1 } , getView : function ( ) { return this . _view } , getCurrentStyle : function ( ) { return this . _currentStyle } , setCurrentStyle : function ( t ) { this . _currentStyle . initialize ( t ) } , getIndex : function ( ) { return this . _index } , addChild : function ( t ) { return t instanceof x ? ( e . splice ( this . layers , [ t ] ) , this . activeLayer || ( this . activeLayer = t ) ) : t instanceof y ? ( this . activeLayer || this . addChild ( new x ( y . NO _INSERT ) ) ) . addChild ( t ) : t = null , t } , getSelectedItems : function ( ) { var t = [ ] ; for ( var
if ( ( n ? l . expand ( n ) : l ) . contains ( e ) ) return u } } function e ( t , e ) { var n = t . getAngleInRadians ( ) , i = 2 * e . width , r = 2 * e . height , s = i * Math . sin ( n ) , a = r * Math . cos ( n ) ; return i * r / ( 2 * Math . sqrt ( s * s + a * a ) ) } return { _contains : function n ( e ) { if ( "rectangle" === this . _type ) { var i = t ( this , e ) ; return i ? e . subtract ( i ) . divide ( this . _radius ) . getLength ( ) <= 1 : n . base . call ( this , e ) } return e . divide ( this . size ) . getLength ( ) <= . 5 } , _hitTest : function i ( n , r ) { var s = ! 1 ; if ( this . hasStroke ( ) ) { var a = this . _type , o = this . _radius , h = this . getStrokeWidth ( ) + 2 * r . tolerance ; if ( "rectangle" === a ) { var u = t ( this , n , h ) ; if ( u ) { var l = n . subtract ( u ) ; s = 2 * Math . abs ( l . getLength ( ) - e ( l , o ) ) <= h } else { var c = new f ( this . _size ) . setCenter ( 0 , 0 ) , d = c . expand ( h ) , _ = c . expand ( - h ) ; s = d . _containsPoint ( n ) && ! _ . _containsPoint ( n ) } } else "ellipse" === a && ( o = e ( n , o ) ) , s = 2 * Math . abs ( n . getLength ( ) - o ) <= h } return s ? new P ( "stroke" , this ) : i . base . apply ( this , arguments ) } } } , { statics : new function ( ) { function t ( t , n , i , r , s ) { var a = new b ( e . getNamed ( s ) ) ; return a . _type = t , a . _size = i , a . _radius = r , a . translate ( n ) } return { Circle : function ( ) { var n = h . readNamed ( arguments , "center" ) , i = e . readNamed ( arguments , "radius" ) ; return t ( "circle" , n , new c ( 2 * i ) , i , arguments ) } , Rectangle : function ( ) { var e = f . readNamed ( arguments , "rectangle" ) , n = c . min ( c . readNamed ( arguments , "radius" ) , e . getSize ( ! 0 ) . divide ( 2 ) ) ; return t ( "rectangle" , e . getCenter ( ! 0 ) , e . getSize ( ! 0 ) , n , arguments ) } , Ellipse : function ( ) { var e = b . _readEllipse ( arguments ) ; return radius = e . radius , t ( "ellipse" , e . center , radius . multiply ( 2 ) , radius , arguments ) } , _readEllipse : function ( t ) { var n , i ; if ( e . hasNamed ( t , "radius" ) ) n = h . readNamed ( t , "center" ) , i = c . readNamed ( t , "radius" ) ; else { var r = f . readNamed ( t , "rectangle" ) ; n = r . getCenter ( ! 0 ) , i = r . getSize ( ! 0 ) . divide ( 2 ) } return { center : n , radius : i } } } } } ) , C = y . extend ( { _class : "Raster" , _applyMatrix : ! 1 , _canApplyMatrix : ! 1 , _boundsGetter : "getBounds" , _boundsSelected : ! 0 , _serializeFields : { source : null } , initialize : function ( e , n ) { this . _initialize ( e , n !== t && h . read ( arguments , 1 ) ) || ( "string" == typeof e ? this . setSource ( e ) : this . setImage ( e ) ) , this . _size || ( this . _size = new c ) } , _equals : function ( t ) { return this . getSource ( ) === t . getSource ( ) } , clone : function ( t ) { var e = new C ( y . NO _INSERT ) , n = this . _image , i = this . _canvas ; if ( n ) e . setImage ( n ) ; else if ( i ) { var r = te . getCanvas ( this . _size ) ; r . getContext ( "2d" ) . drawImage ( i , 0 , 0 ) , e . setCanvas ( r ) } return this . _clone ( e , t ) } , getSize : function ( ) { var t = this . _size ; return new d ( t . width , t . height , this , "setSize" ) } , setSize : function ( ) { var t = c . read ( arguments ) ; if ( ! this . _size . equals ( t ) ) { var e = this . getElement ( ) ; this . setCanvas ( te . getCanvas ( t ) ) , e && this . getContext ( ! 0 ) . drawImage ( e , 0 , 0 , t . width , t . height ) } } , getWidth : function ( ) { return this . _size . width } , getHeight : function ( ) { return this . _size . height } , isEmpty : function ( ) { return 0 == this . _size . width && 0 == this . _size . height } , getPpi : function ( ) { var t = this . _matrix , e = new h ( 0 , 0 ) . transform ( t ) , n = new h ( 1 , 0 ) . transform ( t ) . subtract ( e ) , i = new h ( 0 , 1 ) . transform ( t ) . subtract ( e ) ; return new c ( 72 / n . getLength ( ) , 72 / i . getLength ( ) ) } , getImage : function ( ) { return this . _image } , setImage : function ( t ) { this . _canvas && te . release ( this . _canvas ) , t . getContext ? ( this . _image = null , this . _canvas = t ) : ( this . _image = t , this . _canvas = null ) , this . _size = new c ( t . naturalWidth || t . width , t . naturalHeight || t . height ) , this . _context = null , this . _changed ( 521 ) } , getCanvas : function ( ) { if ( ! this . _canvas ) { var t = te . getContext ( this . _size ) ; try { this . _image && t . drawImage ( this . _image , 0 , 0 ) , this . _canvas = t . canvas } catch ( e ) { te . release ( t ) } } return this . _canvas } , setCanvas : "#setImage" , getContext : function ( t ) { return this . _context || ( this . _context = this . getCanvas ( ) . getContext ( "2d" ) ) , t && ( this . _image = null , this . _changed ( 513 ) ) , this . _context } , setContext : function ( t ) { this . _context = t } , getSource : function ( ) { return this . _image && this . _image . src || this . toDataURL ( ) } , setSource : function ( t ) { function e ( ) { var t = i . getView ( ) ; t && ( paper = t . _scope , i . setImage ( n ) , i . fire ( "load" ) , t . update ( ) ) } var n , i = this ; n = document . getElementById ( t ) || new Image , n . naturalWidth && n . naturalHeight ? setTimeout ( e , 0 ) : ( Z . add ( n , { load : e } ) , n . src || ( n . src = t ) ) , this . setImage ( n ) } , getElement : function ( ) { return this . _canvas || this . _image } , getSubCanvas : function ( t ) { var t = f . read ( arguments ) , e = te . getContext ( t . getSize ( ) ) ; return e . drawImage ( this . getCanvas ( ) , t . x , t . y , t . width , t . height , 0 , 0 , t . width , t . heigh
return ! 0 } , _add : function ( t , e ) { for ( var n = this . _segments , i = this . _curves , r = t . length , s = null == e , e = s ? n . length : e , a = 0 ; r > a ; a ++ ) { var o = t [ a ] ; o . _path && ( o = t [ a ] = o . clone ( ) ) , o . _path = this , o . _index = e + a , o . _selectionState && this . _updateSelection ( o , 0 , o . _selectionState ) } if ( s ) n . push . apply ( n , t ) ; else { n . splice . apply ( n , [ e , 0 ] . concat ( t ) ) ; for ( var a = e + r , h = n . length ; h > a ; a ++ ) n [ a ] . _index = a } if ( i || t . _curves ) { i || ( i = this . _curves = [ ] ) ; var u = e > 0 ? e - 1 : e , l = u , c = Math . min ( u + r , this . _countCurves ( ) ) ; t . _curves && ( i . splice . apply ( i , [ u , 0 ] . concat ( t . _curves ) ) , l += t . _curves . length ) ; for ( var a = l ; c > a ; a ++ ) i . splice ( a , 0 , new I ( this , null , null ) ) ; this . _adjustCurves ( u , c ) } return this . _changed ( 25 ) , t } , _adjustCurves : function ( t , e ) { for ( var n , i = this . _segments , r = this . _curves , s = t ; e > s ; s ++ ) n = r [ s ] , n . _path = this , n . _segment1 = i [ s ] , n . _segment2 = i [ s + 1 ] || i [ 0 ] ; ( n = r [ this . _closed && 0 === t ? i . length - 1 : t - 1 ] ) && ( n . _segment2 = i [ t ] || i [ 0 ] ) , ( n = r [ e ] ) && ( n . _segment1 = i [ e ] ) } , _countCurves : function ( ) { var t = this . _segments . length ; return ! this . _closed && t > 0 ? t - 1 : t } , add : function ( t ) { return arguments . length > 1 && "number" != typeof t ? this . _add ( M . readAll ( arguments ) ) : this . _add ( [ M . read ( arguments ) ] ) [ 0 ] } , insert : function ( t , e ) { return arguments . length > 2 && "number" != typeof e ? this . _add ( M . readAll ( arguments , 1 ) , t ) : this . _add ( [ M . read ( arguments , 1 ) ] , t ) [ 0 ] } , addSegment : function ( ) { return this . _add ( [ M . read ( arguments ) ] ) [ 0 ] } , insertSegment : function ( t ) { return this . _add ( [ M . read ( arguments , 1 ) ] , t ) [ 0 ] } , addSegments : function ( t ) { return this . _add ( M . readAll ( t ) ) } , insertSegments : function ( t , e ) { return this . _add ( M . readAll ( e ) , t ) } , removeSegment : function ( t ) { return this . removeSegments ( t , t + 1 ) [ 0 ] || null } , removeSegments : function ( t , n , i ) { t = t || 0 , n = e . pick ( n , this . _segments . length ) ; var r = this . _segments , s = this . _curves , a = r . length , o = r . splice ( t , n - t ) , h = o . length ; if ( ! h ) return o ; for ( var u = 0 ; h > u ; u ++ ) { var l = o [ u ] ; l . _selectionState && this . _updateSelection ( l , l . _selectionState , 0 ) , l . _index = l . _path = null } for ( var u = t , c = r . length ; c > u ; u ++ ) r [ u ] . _index = u ; if ( s ) { var d = t > 0 && n === a + ( this . _closed ? 1 : 0 ) ? t - 1 : t , s = s . splice ( d , h ) ; i && ( o . _curves = s . slice ( 1 ) ) , this . _adjustCurves ( d , d ) } return this . _changed ( 25 ) , o } , clear : "#removeSegments" , isFullySelected : function ( ) { var t = this . _segments . length ; return this . _selected && t > 0 && this . _selectedSegmentState === 7 * t } , setFullySelected : function ( t ) { t && this . _selectSegments ( ! 0 ) , this . setSelected ( t ) } , setSelected : function xe ( t ) { t || this . _selectSegments ( ! 1 ) , xe . base . call ( this , t ) } , _selectSegments : function ( t ) { var e = this . _segments . length ; this . _selectedSegmentState = t ? 7 * e : 0 ; for ( var n = 0 ; e > n ; n ++ ) this . _segments [ n ] . _selectionState = t ? 7 : 0 } , _updateSelection : function ( t , e , n ) { t . _selectionState = n ; var i = this . _selectedSegmentState += n - e ; i > 0 && this . setSelected ( ! 0 ) } , flatten : function ( t ) { for ( var e = new E ( this ) , n = 0 , i = e . length / Math . ceil ( e . length / t ) , r = e . length + ( this . _closed ? - i : i ) / 2 , s = [ ] ; r >= n ; ) s . push ( new M ( e . evaluate ( n , 0 ) ) ) , n += i ; this . setSegments ( s ) } , reduce : function ( ) { for ( var t = this . getCurves ( ) , e = t . length - 1 ; e >= 0 ; e -- ) { var n = t [ e ] ; n . isLinear ( ) && 0 === n . getLength ( ) && n . remove ( ) } return this } , simplify : function ( t ) { if ( this . _segments . length > 2 ) { var e = new N ( this , t || 2.5 ) ; this . setSegments ( e . fit ( ) ) } } , split : function ( t , e ) { if ( null !== e ) { if ( 1 === arguments . length ) { var n = t ; "number" == typeof n && ( n = this . getLocationAt ( n ) ) , t = n . index , e = n . parameter } var i = 1e-5 ; e >= 1 - i && ( t ++ , e -- ) ; var r = this . getCurves ( ) ; if ( t >= 0 && t < r . length ) { e > i && r [ t ++ ] . divide ( e , ! 0 ) ; var s , a = this . removeSegments ( t , this . _segments . length , ! 0 ) ; return this . _closed ? ( this . setClosed ( ! 1 ) , s = this ) : t > 0 && ( s = this . _clone ( ( new O ) . insertAbove ( this , ! 0 ) ) ) , s . _add ( a , 0 ) , this . addSegment ( a [ 0 ] ) , s } return null } } , isClockwise : function ( ) { return this . _clockwise !== t ? this . _clockwise : O . isClockwise ( this . _segments ) } , setClockwise : function ( t ) { this . isClockwise ( ) != ( t = ! ! t ) && this . reverse ( ) , this . _clockwise = t } , reverse : function ( ) { this . _segments . reverse ( ) ; for ( var e = 0 , n = this . _segments . length ; n > e ; e ++ ) { var i = this . _segments [ e ] , r = i . _handleIn ; i . _handleIn = i . _handleOut , i . _handleOut = r , i . _index = e } this . _curves = null , this . _clockwise !== t && ( this . _clockwise = ! this . _clockwise ) } , join : function ( t ) { if ( t ) { var e = t . _segments , n = this . getLastSegment ( ) , i = t . getLastSegment ( ) ; n . _point . equals ( i . _point ) && t . reverse ( ) ; var r , s = t . getFirstSegment ( ) ; return n . _point . equals ( s . _point ) ? ( n . setHandleOut ( s . _hand
for ( var i = 1 , r = e - t ; r >= i ; i ++ ) n [ i ] /= n [ r ] ; return n } , findMaxError : function ( t , e , n , i ) { for ( var r = Math . floor ( ( e - t + 1 ) / 2 ) , s = 0 , a = t + 1 ; e > a ; a ++ ) { var o = this . evaluate ( 3 , n , i [ a - t ] ) , h = o . subtract ( this . points [ a ] ) , u = h . x * h . x + h . y * h . y ; u >= s && ( s = u , r = a ) } return { error : s , index : r } } } ) , j = y . extend ( { _class : "TextItem" , _boundsSelected : ! 0 , _applyMatrix : ! 1 , _canApplyMatrix : ! 1 , _serializeFields : { content : null } , _boundsGetter : "getBounds" , initialize : function ( n ) { this . _content = "" , this . _lines = [ ] ; var i = n && e . isPlainObject ( n ) && n . x === t && n . y === t ; this . _initialize ( i && n , ! i && h . read ( arguments ) ) } , _equals : function ( t ) { return this . _content === t . _content } , _clone : function Ce ( t ) { return t . setContent ( this . _content ) , Ce . base . call ( this , t ) } , getContent : function ( ) { return this . _content } , setContent : function ( t ) { this . _content = "" + t , this . _lines = this . _content . split ( /\r\n|\n|\r/gm ) , this . _changed ( 265 ) } , isEmpty : function ( ) { return ! this . _content } , getCharacterStyle : "#getStyle" , setCharacterStyle : "#setStyle" , getParagraphStyle : "#getStyle" , setParagraphStyle : "#setStyle" } ) , D = j . extend ( { _class : "PointText" , initialize : function ( ) { j . apply ( this , arguments ) } , clone : function ( t ) { return this . _clone ( new D ( y . NO _INSERT ) , t ) } , getPoint : function ( ) { var t = this . _matrix . getTranslation ( ) ; return new u ( t . x , t . y , this , "setPoint" ) } , setPoint : function ( ) { var t = h . read ( arguments ) ; this . translate ( t . subtract ( this . _matrix . getTranslation ( ) ) ) } , _draw : function ( t ) { if ( this . _content ) { this . _setStyles ( t ) ; var e = this . _style , n = this . _lines , i = e . getLeading ( ) , r = t . shadowColor ; t . font = e . getFontStyle ( ) , t . textAlign = e . getJustification ( ) ; for ( var s = 0 , a = n . length ; a > s ; s ++ ) { t . shadowColor = r ; var o = n [ s ] ; e . hasFill ( ) && ( t . fillText ( o , 0 , 0 ) , t . shadowColor = "rgba(0,0,0,0)" ) , e . hasStroke ( ) && t . strokeText ( o , 0 , 0 ) , t . translate ( 0 , i ) } } } , _getBounds : function ( t , e ) { var n = this . _style , i = this . _lines , r = i . length , s = n . getJustification ( ) , a = n . getLeading ( ) , o = this . getView ( ) . getTextWidth ( n . getFontStyle ( ) , i ) , h = 0 ; "left" !== s && ( h -= o / ( "center" === s ? 2 : 1 ) ) ; var u = new f ( h , r ? - . 75 * a : 0 , o , r * a ) ; return e ? e . _transformBounds ( u , u ) : u } } ) , B = e . extend ( new function ( ) { function t ( t ) { var e , i = t . match ( /^#(\w{1,2})(\w{1,2})(\w{1,2})$/ ) ; if ( i ) { e = [ 0 , 0 , 0 ] ; for ( var r = 0 ; 3 > r ; r ++ ) { var a = i [ r + 1 ] ; e [ r ] = parseInt ( 1 == a . length ? a + a : a , 16 ) / 255 } } else if ( i = t . match ( /^rgba?\((.*)\)$/ ) ) { e = i [ 1 ] . split ( "," ) ; for ( var r = 0 , o = e . length ; o > r ; r ++ ) { var a = + e [ r ] ; e [ r ] = 3 > r ? a / 255 : a } } else { var h = s [ t ] ; if ( ! h ) { n || ( n = te . getContext ( 1 , 1 ) , n . globalCompositeOperation = "copy" ) , n . fillStyle = "rgba(0,0,0,0)" , n . fillStyle = t , n . fillRect ( 0 , 0 , 1 , 1 ) ; var u = n . getImageData ( 0 , 0 , 1 , 1 ) . data ; h = s [ t ] = [ u [ 0 ] / 255 , u [ 1 ] / 255 , u [ 2 ] / 255 ] } e = h . slice ( ) } return e } var n , i = { gray : [ "gray" ] , rgb : [ "red" , "green" , "blue" ] , hsb : [ "hue" , "saturation" , "brightness" ] , hsl : [ "hue" , "saturation" , "lightness" ] , gradient : [ "gradient" , "origin" , "destination" , "highlight" ] } , r = { } , s = { } , o = [ [ 0 , 3 , 1 ] , [ 2 , 0 , 1 ] , [ 1 , 0 , 3 ] , [ 1 , 2 , 0 ] , [ 3 , 1 , 0 ] , [ 0 , 1 , 2 ] ] , u = { "rgb-hsb" : function ( t , e , n ) { var i = Math . max ( t , e , n ) , r = Math . min ( t , e , n ) , s = i - r , a = 0 === s ? 0 : 60 * ( i == t ? ( e - n ) / s + ( n > e ? 6 : 0 ) : i == e ? ( n - t ) / s + 2 : ( t - e ) / s + 4 ) ; return [ a , 0 === i ? 0 : s / i , i ] } , "hsb-rgb" : function ( t , e , n ) { t = ( t / 60 % 6 + 6 ) % 6 ; var i = Math . floor ( t ) , r = t - i , i = o [ i ] , s = [ n , n * ( 1 - e ) , n * ( 1 - e * r ) , n * ( 1 - e * ( 1 - r ) ) ] ; return [ s [ i [ 0 ] ] , s [ i [ 1 ] ] , s [ i [ 2 ] ] ] } , "rgb-hsl" : function ( t , e , n ) { var i = Math . max ( t , e , n ) , r = Math . min ( t , e , n ) , s = i - r , a = 0 === s , o = a ? 0 : 60 * ( i == t ? ( e - n ) / s + ( n > e ? 6 : 0 ) : i == e ? ( n - t ) / s + 2 : ( t - e ) / s + 4 ) , h = ( i + r ) / 2 , u = a ? 0 : . 5 > h ? s / ( i + r ) : s / ( 2 - i - r ) ; return [ o , u , h ] } , "hsl-rgb" : function ( t , e , n ) { if ( t = ( t / 360 % 1 + 1 ) % 1 , 0 === e ) return [ n , n , n ] ; for ( var i = [ t + 1 / 3 , t , t - 1 / 3 ] , r = . 5 > n ? n * ( 1 + e ) : n + e - n * e , s = 2 * n - r , a = [ ] , o = 0 ; 3 > o ; o ++ ) { var h = i [ o ] ; 0 > h && ( h += 1 ) , h > 1 && ( h -= 1 ) , a [ o ] = 1 > 6 * h ? s + 6 * ( r - s ) * h : 1 > 2 * h ? r : 2 > 3 * h ? s + 6 * ( r - s ) * ( 2 / 3 - h ) : s } return a } , "rgb-gray" : function ( t , e , n ) { return [ . 2989 * t + . 587 * e + . 114 * n ] } , "gray-rgb" : function ( t ) { return [ t , t , t ] } , "gray-hsb" : function ( t ) { return [ 0 , 0 , t ] } , "gray-hsl" : function ( t ) { return [ 0 , 0 , t ] } , "gradient-rgb" : function ( ) { return [ ] } , "rgb-gradient" : function ( ) { return [ ] } } ; return e . each ( i , function ( t , n ) { r [ n ] = [ ] , e . each ( t , function ( t , s ) { var a = e . capitalize ( t ) , o = /^(hue|saturation)$/ . test ( t ) , u = r [ n ] [ s ] = "gradient" === t ? function ( t ) { var e = this . _components [ 0 ] ; return t = R . read ( Array . isArray ( t ) ? t : arguments , 0 , { readNull : ! 0 } ) , e !== t && ( e && e . _removeOwner ( this ) , t && t . _addOwner ( this ) ) , t } : "gradient" === n ? function ( ) { return h . read ( arguments , 0 , { readNull : "highlight" === t ,
} , setMiddlePoint : function ( t ) { this . _middlePoint = t } , getDelta : function ( ) { return ! this . _delta && this . tool . _lastPoint ? this . tool . _point . subtract ( this . tool . _lastPoint ) : this . _delta } , setDelta : function ( t ) { this . _delta = t } , getCount : function ( ) { return /^mouse(down|up)$/ . test ( this . type ) ? this . tool . _downCount : this . tool . _count } , setCount : function ( t ) { this . tool [ /^mouse(down|up)$/ . test ( this . type ) ? "downCount" : "count" ] = t } , getItem : function ( ) { if ( ! this . _item ) { var t = this . tool . _scope . project . hitTest ( this . getPoint ( ) ) ; if ( t ) { for ( var e = t . item , n = e . _parent ; /^(Group|CompoundPath)$/ . test ( n . _class ) ; ) e = n , n = n . _parent ; this . _item = e } } return this . _item } , setItem : function ( t ) { this . _item = t } , toString : function ( ) { return "{ type: " + this . type + ", point: " + this . getPoint ( ) + ", count: " + this . getCount ( ) + ", modifiers: " + this . getModifiers ( ) + " }" } } ) , K = s . extend ( { _class : "Tool" , _list : "tools" , _reference : "tool" , _events : [ "onActivate" , "onDeactivate" , "onEditOptions" , "onMouseDown" , "onMouseUp" , "onMouseDrag" , "onMouseMove" , "onKeyDown" , "onKeyUp" ] , initialize : function ( t ) { s . call ( this ) , this . _firstMove = ! 0 , this . _count = 0 , this . _downCount = 0 , this . _set ( t ) } , getMinDistance : function ( ) { return this . _minDistance } , setMinDistance : function ( t ) { this . _minDistance = t , null != this . _minDistance && null != this . _maxDistance && this . _minDistance > this . _maxDistance && ( this . _maxDistance = this . _minDistance ) } , getMaxDistance : function ( ) { return this . _maxDistance } , setMaxDistance : function ( t ) { this . _maxDistance = t , null != this . _minDistance && null != this . _maxDistance && this . _maxDistance < this . _minDistance && ( this . _minDistance = t ) } , getFixedDistance : function ( ) { return this . _minDistance == this . _maxDistance ? this . _minDistance : null } , setFixedDistance : function ( t ) { this . _minDistance = t , this . _maxDistance = t } , _updateEvent : function ( t , e , n , i , r , s , a ) { if ( ! r ) { if ( null != n || null != i ) { var o = null != n ? n : 0 , h = e . subtract ( this . _point ) , u = h . getLength ( ) ; if ( o > u ) return ! 1 ; var l = null != i ? i : 0 ; if ( 0 != l ) if ( u > l ) e = this . _point . add ( h . normalize ( l ) ) ; else if ( a ) return ! 1 } if ( s && e . equals ( this . _point ) ) return ! 1 } switch ( this . _lastPoint = r && "mousemove" == t ? e : this . _point , this . _point = e , t ) { case "mousedown" : this . _lastPoint = this . _downPoint , this . _downPoint = this . _point , this . _downCount ++ ; break ; case "mouseup" : this . _lastPoint = this . _downPoint } return this . _count = r ? 0 : this . _count + 1 , ! 0 } , _fireEvent : function ( t , e ) { var n = paper . project . _removeSets ; if ( n ) { "mouseup" === t && ( n . mousedrag = null ) ; var i = n [ t ] ; if ( i ) { for ( var r in i ) { var s = i [ r ] ; for ( var a in n ) { var o = n [ a ] ; o && o != i && delete o [ s . _id ] } s . remove ( ) } n [ t ] = null } } return this . responds ( t ) && this . fire ( t , new Y ( this , t , e ) ) } , _handleEvent : function ( t , e , n ) { paper = this . _scope ; var i = ! 1 ; switch ( t ) { case "mousedown" : this . _updateEvent ( t , e , null , null , ! 0 , ! 1 , ! 1 ) , i = this . _fireEvent ( t , n ) ; break ; case "mousedrag" : for ( var r = ! 1 , s = ! 1 ; this . _updateEvent ( t , e , this . minDistance , this . maxDistance , ! 1 , r , s ) ; ) i = this . _fireEvent ( t , n ) || i , r = ! 0 , s = ! 0 ; break ; case "mouseup" : ! e . equals ( this . _point ) && this . _updateEvent ( "mousedrag" , e , this . minDistance , this . maxDistance , ! 1 , ! 1 , ! 1 ) && ( i = this . _fireEvent ( "mousedrag" , n ) ) , this . _updateEvent ( t , e , null , this . maxDistance , ! 1 , ! 1 , ! 1 ) , i = this . _fireEvent ( t , n ) || i , this . _updateEvent ( t , e , null , null , ! 0 , ! 1 , ! 1 ) , this . _firstMove = ! 0 ; break ; case "mousemove" : for ( ; this . _updateEvent ( t , e , this . minDistance , this . maxDistance , this . _firstMove , ! 0 , ! 1 ) ; ) i = this . _fireEvent ( t , n ) || i , this . _firstMove = ! 1 } return i && n . preventDefault ( ) , i } } ) , Q = { request : function ( t , e , n ) { var i = new ( window . ActiveXObject || XMLHttpRequest ) ( "Microsoft.XMLHTTP" ) ; return i . open ( t . toUpperCase ( ) , e , ! 0 ) , "overrideMimeType" in i && i . overrideMimeType ( "text/plain" ) , i . onreadystatechange = function ( ) { if ( 4 === i . readyState ) { var t = i . status ; if ( 0 !== t && 200 !== t ) throw Error ( "Could not load " + e + " (Error " + t + ")" ) ; n . call ( i , i . responseText ) } } , i . send ( null ) } } , te = { canvases : [ ] , getCanvas : function ( t , e , n ) { var i , r = ! 0 ; "object" == typeof t && ( n = e , e = t . height , t = t . width ) , n ? 1 !== n && ( t *= n , e *= n ) : n = 1 , i = this . canvases . length ? this . canvases . pop ( ) : document . createElement ( "canvas" ) ; var s = i . getContext ( "2d" ) ; return i . width === t && i . height === e ? r && s . clearRect ( 0 , 0 , t + 1 , e + 1 ) : ( i . width = t , i . height = e ) , s . save ( ) , 1 !== n && s . scale ( n , n ) , i } , getContext : function ( t , e , n ) { return this . getCanvas ( t , e , n ) . getContext ( "2d" ) } , release : function ( t ) { var e = t . canvas ? t . canvas : t ; e . getContext ( "2d" )
} function $ ( t , e ) { return t . left = e , t . right = J ( ) , F ( vn ) , t . body = H ( ) , Te . pop ( ) , N ( t , "ForInStatement" ) } function X ( t , e ) { for ( t . declarations = [ ] , t . kind = "var" ; ; ) { var i = L ( ) ; if ( i . id = le ( ) , Oe && Zn ( i . id . name ) && n ( i . id . start , "Binding " + i . id . name + " in strict mode" ) , i . init = D ( Sn ) ? J ( ! 0 , e ) : null , t . declarations . push ( N ( i , "VariableDeclarator" ) ) , ! D ( mn ) ) break } return N ( t , "VariableDeclaration" ) } function J ( t , e ) { var n = Y ( e ) ; if ( ! t && be === mn ) { var i = E ( n ) ; for ( i . expressions = [ n ] ; D ( mn ) ; ) i . expressions . push ( Y ( e ) ) ; return N ( i , "SequenceExpression" ) } return n } function Y ( t ) { var e = K ( t ) ; if ( be . isAssign ) { var n = E ( e ) ; return n . operator = Ce , n . left = e , I ( ) , n . right = Y ( t ) , V ( e ) , N ( n , "AssignmentExpression" ) } return e } function K ( t ) { var e = Q ( t ) ; if ( D ( bn ) ) { var n = E ( e ) ; return n . test = e , n . consequent = J ( ! 0 ) , F ( wn ) , n . alternate = J ( ! 0 , t ) , N ( n , "ConditionalExpression" ) } return e } function Q ( t ) { return te ( ee ( ) , - 1 , t ) } function te ( t , e , n ) { var i = be . binop ; if ( null != i && ( ! n || be !== ln ) && i > e ) { var r = E ( t ) ; r . left = t , r . operator = Ce , I ( ) , r . right = te ( ee ( ) , i , n ) ; var r = N ( r , /&&|\|\|/ . test ( r . operator ) ? "LogicalExpression" : "BinaryExpression" ) ; return te ( r , e , n ) } return t } function ee ( ) { if ( be . prefix ) { var t = L ( ) , e = be . isUpdate ; return t . operator = Ce , t . prefix = ! 0 , I ( ) , t . argument = ee ( ) , e ? V ( t . argument ) : Oe && "delete" === t . operator && "Identifier" === t . argument . type && n ( t . start , "Deleting local variable in strict mode" ) , N ( t , e ? "UpdateExpression" : "UnaryExpression" ) } for ( var i = ne ( ) ; be . postfix && ! B ( ) ; ) { var t = E ( i ) ; t . operator = Ce , t . prefix = ! 1 , t . argument = i , V ( i ) , I ( ) , i = N ( t , "UpdateExpression" ) } return i } function ne ( ) { return ie ( re ( ) ) } function ie ( t , e ) { if ( D ( xn ) ) { var n = E ( t ) ; return n . object = t , n . property = le ( ! 0 ) , n . computed = ! 1 , ie ( N ( n , "MemberExpression" ) , e ) } if ( D ( dn ) ) { var n = E ( t ) ; return n . object = t , n . property = J ( ) , n . computed = ! 0 , F ( fn ) , ie ( N ( n , "MemberExpression" ) , e ) } if ( ! e && D ( pn ) ) { var n = E ( t ) ; return n . callee = t , n . arguments = ue ( vn , ! 1 ) , ie ( N ( n , "CallExpression" ) , e ) } return t } function re ( ) { switch ( be ) { case an : var t = L ( ) ; return I ( ) , N ( t , "ThisExpression" ) ; case De : return le ( ) ; case Ee : case je : case Ne : var t = L ( ) ; return t . value = Ce , t . raw = de . slice ( me , ye ) , I ( ) , N ( t , "Literal" ) ; case on : case hn : case un : var t = L ( ) ; return t . value = be . atomValue , t . raw = be . keyword , I ( ) , N ( t , "Literal" ) ; case pn : var e = we , n = me ; I ( ) ; var i = J ( ) ; return i . start = n , i . end = ye , ce . locations && ( i . loc . start = e , i . loc . end = xe ) , ce . ranges && ( i . range = [ n , ye ] ) , F ( vn ) , i ; case dn : var t = L ( ) ; return I ( ) , t . elements = ue ( fn , ! 0 , ! 0 ) , N ( t , "ArrayExpression" ) ; case _n : return ae ( ) ; case Xe : var t = L ( ) ; return I ( ) , he ( t , ! 1 ) ; case sn : return se ( ) ; default : q ( ) } } function se ( ) { var t = L ( ) ; return I ( ) , t . callee = ie ( re ( ) , ! 0 ) , t . arguments = D ( pn ) ? ue ( vn , ! 1 ) : Le , N ( t , "NewExpression" ) } function ae ( ) { var t = L ( ) , e = ! 0 , i = ! 1 ; for ( t . properties = [ ] , I ( ) ; ! D ( gn ) ; ) { if ( e ) e = ! 1 ; else if ( F ( mn ) , ce . allowTrailingCommas && D ( gn ) ) break ; var r , s = { key : oe ( ) } , a = ! 1 ; if ( D ( wn ) ? ( s . value = J ( ! 0 ) , r = s . kind = "init" ) : ce . ecmaVersion >= 5 && "Identifier" === s . key . type && ( "get" === s . key . name || "set" === s . key . name ) ? ( a = i = ! 0 , r = s . kind = s . key . name , s . key = oe ( ) , be !== pn && q ( ) , s . value = he ( L ( ) , ! 1 ) ) : q ( ) , "Identifier" === s . key . type && ( Oe || i ) ) for ( var o = 0 ; o < t . properties . length ; ++ o ) { var h = t . properties [ o ] ; if ( h . key . name === s . key . name ) { var u = r == h . kind || a && "init" === h . kind || "init" === r && ( "get" === h . kind || "set" === h . kind ) ; u && ! Oe && "init" === r && "init" === h . kind && ( u = ! 1 ) , u && n ( s . key . start , "Redefinition of property" ) } } t . properties . push ( s ) } return N ( t , "ObjectExpression" ) } function oe ( ) { return be === Ee || be === je ? re ( ) : le ( ! 0 ) } function he ( t , e ) { be === De ? t . id = le ( ) : e ? q ( ) : t . id = null , t . params = [ ] ; var i = ! 0 ; for ( F ( pn ) ; ! D ( vn ) ; ) i ? i = ! 1 : F ( mn ) , t . params . push ( le ( ) ) ; var r = Ae , s = Te ; if ( Ae = ! 0 , Te = [ ] , t . body = W ( ! 0 ) , Ae = r , Te = s , Oe || t . body . body . length && j ( t . body . body [ 0 ] ) ) for ( var a = t . id ? - 1 : 0 ; a < t . params . length ; ++ a ) { var o = 0 > a ? t . id : t . params [ a ] ; if ( ( Vn ( o . name ) || Zn ( o . name ) ) && n ( o . start , "Defining '" + o . name + "' in strict mode" ) , a >= 0 ) for ( var h = 0 ; a > h ; ++ h ) o . name === t . params [ h ] . name && n ( o . start , "Argument name clash in strict mode" ) } return N ( t , e ? "FunctionDeclaration" : "FunctionExpression" ) } function ue ( t , e , n ) { for ( var i = [ ] , r = ! 0 ; ! D ( t ) ; ) { if ( r ) r = ! 1 ; else if ( F ( mn ) , e && ce . allowTrailingCommas && D ( t ) ) break ; n && be === mn ? i . push ( null ) : i . push ( J ( ! 0 ) ) } return i } function le ( t ) { var e = L ( ) ; return e . name = be === De ? Ce : t && ! ce . forbidReserved && be . keyword || q ( ) , I ( ) , N ( e , "Identifier" ) } t . version = "0.3.2" ; var ce , de , fe , _