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" style="position: absolute; width: 41.116px; height: 51.116px;" />
You Win!
Level 3
Score 10
Play Game
ptions.hasContent && options.data || null ); }, abort: function() { if ( callback ) { callback(); } } }; } }); var fxNow, timerId, rfxtypes = /^(?:toggle|show|hide)$/, rfxnum = new RegExp( "^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i" ), rrun = /queueHooks$/, animationPrefilters = [ defaultPrefilter ], tweeners = { "*": [function( prop, value ) { var tween = this.createTween( prop, value ), target = tween.cur(), parts = rfxnum.exec( value ), unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), // Starting value computation is required for potential unit mismatches start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) && rfxnum.exec( jQuery.css( tween.elem, prop ) ), scale = 1, maxIterations = 20; if ( start && start[ 3 ] !== unit ) { // Trust units reported by jQuery.css unit = unit || start[ 3 ]; // Make sure we update the tween properties later on parts = parts || []; // Iteratively approximate from a nonzero starting point start = +target || 1; do { // If previous iteration zeroed out, double until we get *something* // Use a string for doubling factor so we don't accidentally see scale as unchanged below scale = scale || ".5"; // Adjust and apply start = start / scale; jQuery.style( tween.elem, prop, start + unit ); // Update scale, tolerating zero or NaN from tween.cur() // And breaking the loop if scale is unchanged or perfect, or if we've just had enough } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations ); } // Update tween properties if ( parts ) { start = tween.start = +start || +target || 0; tween.unit = unit; // If a +=/-= token was provided, we're doing a relative animation tween.end = parts[ 1 ] ? start + ( parts[ 1 ] + 1 ) * parts[ 2 ] : +parts[ 2 ]; } return tween; }] }; // Animations created synchronously will run synchronously function createFxNow() { setTimeout(function() { fxNow = undefined; }); return ( fxNow = jQuery.now() ); } function createTween( value, prop, animation ) { var tween, collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ), index = 0, length = collection.length; for ( ; index < length; index++ ) { if ( (tween = collection[ index ].call( animation, prop, value )) ) { // we're done with this property return tween; } } } function Animation( elem, properties, options ) { var result, stopped, index = 0, length = animationPrefilters.length, deferred = jQuery.Deferred().always( function() { // don't match elem in the :animated selector delete tick.elem; }), tick = function() { if ( stopped ) { return false; } var currentTime = fxNow || createFxNow(), remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497) temp = remaining / animation.duration || 0, percent = 1 - temp, index = 0, length = animation.tweens.length; for ( ; index < length ; index++ ) { animation.tweens[ index ].run( percent ); } deferred.notifyWith( elem, [ animation, percent, remaining ]); if ( percent < 1 && length ) { return remaining; } else { deferred.resolveWith( elem, [ animation ] ); return false; } }, animation = deferred.promise({ elem: elem, props: jQuery.extend( {}, properties ), opts: jQuery.extend( true, { specialEasing: {} }, options ), originalProperties: properties, originalOptions: options, startTime: fxNow || createFxNow(), duration: options.duration, tweens: [], createTween: function( prop, end ) { var tween = jQuery.Tween( elem, animation.opts, prop, end, animation.opts.specialEasing[ prop ] || animation.opts.easing ); animation.tweens.push( tween ); return tween; }, stop: function( gotoEnd ) { var index = 0, // if we are going to the end, we want to run all the tweens // otherwise we skip this part length = gotoEnd ? animation.tweens.length : 0; if ( stopped ) { return this; } stopped = true; for ( ; index < length ; index++ ) { animation.tweens[ index ].run( 1 ); } // resolve when we played the last frame // otherwise, reject if ( gotoEnd ) { deferred.resolveWith( elem, [ animation, gotoEnd ] ); } else { deferred.rejectWith( elem, [ animation, gotoEnd ] ); } return this; } }), props = animation.props; propFilter( props, animation.opts.specialEasing ); for ( ; index < length ; index++ ) { result = animationPrefilters[ index ].call( animation, elem, props, animation.opts ); if ( result ) { return result; } } jQuery.map( props, createTween, animation ); if ( jQuery.isFunction( animation.opts.start ) ) { animation.opts.start.call( elem, animation ); } jQuery.fx.timer( jQuery.extend( tick, { elem: elem, anim: animation, queue: animation.opts.queue }) ); // attach callbacks from options return animation.progress( animation.opts.progress ) .done( animation.opts.done, animation.opts.complete ) .fail( animation.opts.fail ) .always( animation.opts.always ); } function propFilter( props, specialEasing ) { var index, name, easing, value, hooks; // camelCase, specialEasing and expand cssHook pass for ( index in props ) { name = jQuery.camelCase( index ); easing = specialEasing[ name ]; value = props[ index ]; if ( jQuery.isArray( value ) ) { easing = value[ 1 ]; value = props[ index ] = value[ 0 ]; } if ( index !== name ) { props[ name ] = value; delete props[ index ]; } hooks = jQuery.cssHooks[ name ]; if ( hooks && "expand" in hooks ) { value = hooks.expand( value ); delete props[ name ]; // not quite $.extend, this wont overwrite keys already present. // also - reusing 'index' from above because we have the correct "name" for ( index in value ) { if ( !( index in props ) ) { props[ index ] = value[ index ]; specialEasing[ index ] = easing; } } } else { specialEasing[ name ] = easing; } } } jQuery.Animation = jQuery.extend( Animation, { tweener: function( props, callback ) { if ( jQuery.isFunction( props ) ) { callback = props; props = [ "*" ]; } else { props = props.split(" "); } var prop, index = 0, length = props.length; for ( ; index < length ; index++ ) { prop = props[ index ]; tweeners[ prop ] = tweeners[ prop ] || []; tweeners[ prop ].unshift( callback ); } }, prefilter: function( callback, prepend ) { if ( prepend ) { animationPrefilters.unshift( callback ); } else { animationPrefilters.push( callback ); } } }); function defaultPrefilter( elem, props, opts ) { /* jshint validthis: true */ var prop, value, toggle, tween, hooks, oldfire, anim = this, orig = {}, style = elem.style, hidden = elem.nodeType && isHidden( elem ), dataShow = data_priv.get( elem, "fxshow" ); // handle queue: false promises if ( !opts.queue ) { hooks = jQuery._queueHooks( elem, "fx" ); if ( hooks.unqueued == null ) { hooks.unqueued = 0; oldfire = hooks.empty.fire; hooks.empty.fire = function() { if ( !hooks.unqueued ) { oldfire(); } }; } hooks.unqueued++; anim.always(function() { // doing this makes sure that the complete handler will be called // before this completes anim.always(function() { hooks.unqueued--; if ( !jQuery.queue( elem, "fx" ).length ) { hooks.empty.fire(); } }); }); } // height/width overflow pass if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) { // Make sure that nothing sneaks out // Record all 3 overflow attributes because IE9-10 do not // change the overflow attribute when overflowX and // overflowY are set to the same value opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; // Set display property to inline-block for height/width // animations on inline elements that are having width/height animated if ( jQuery.css( elem, "display" ) === "inline" && jQuery.css( elem, "float" ) === "none" ) { style.display = "inline-block"; } } if ( opts.overflow ) { style.overflow = "hidden"; anim.always(function() { style.overflow = opts.overflow[ 0 ]; style.overflowX = opts.overflow[ 1 ]; style.overflowY = opts.overflow[ 2 ]; }); } // show/hide pass for ( prop in props ) { value = props[ prop ]; if ( rfxtypes.exec( value ) ) { delete props[ prop ]; toggle = toggle || value === "toggle"; if ( value === ( hidden ? "hide" : "show" ) ) { // If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { hidden = true; } else { continue; } } orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); } } if ( !jQuery.isEmptyObject( orig ) ) { if ( dataShow ) { if ( "hidden" in dataShow ) { hidden = dataShow.hidden; } } else { dataShow = data_priv.access( elem, "fxshow", {} ); } // store state if its toggle - enables .stop().toggle() to "reverse" if ( toggle ) { dataShow.hidden = !hidden; } if ( hidden ) { jQuery( elem ).show(); } else { anim.done(function() { jQuery( elem ).hide(); }); } anim.done(function() { var prop; data_priv.remove( elem, "fxshow" ); for ( prop in orig ) { jQuery.style( elem, prop, orig[ prop ] ); } }); for ( prop in orig ) { tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); if ( !( prop in dataShow ) ) { dataShow[ prop ] = tween.start; if ( hidden ) { tween.end = tween.start; tween.start = prop === "width" || prop === "height" ? 1 : 0; } } } } } function Tween( elem, options, prop, end, easing ) { return new Tween.prototype.init( elem, options, prop, end, easing ); } jQuery.Tween = Tween; Tween.prototype = { constructor: Tween, init: function( elem, options, prop, end, easing, unit ) { this.elem = elem; this.prop = prop; this.easing = easing || "swing"; this.options = options; this.start = this.now = this.cur(); this.end = end; this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); }, cur: function() { var hooks = Tween.propHooks[ this.prop ]; return hooks && hooks.get ? hooks.get( this ) : Tween.propHooks._default.get( this ); }, run: function( percent ) { var eased, hooks = Tween.propHooks[ this.prop ]; if ( this.options.duration ) { this.pos = eased = jQuery.easing[ this.easing ]( percent, this.options.duration * percent, 0, 1, this.options.duration ); } else { this.pos = eased = percent; } this.now = ( this.end - this.start ) * eased + this.start; if ( this.options.step ) { this.options.step.call( this.elem, this.now, this ); } if ( hooks && hooks.set ) { hooks.set( this ); } else { Tween.propHooks._default.set( this ); } return this; } }; Tween.prototype.init.prototype = Tween.prototype; Tween.propHooks = { _default: { get: function( tween ) { var result; if ( tween.elem[ tween.prop ] != null && (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) { return tween.elem[ tween.prop ]; } // passing an empty string as a 3rd parameter to .css will automatically // attempt a parseFloat and fallback to a string if the parse fails // so, simple values such as "10px" are parsed to Float. // complex values such as "rotate(1rad)" are returned as is. result = jQuery.css( tween.elem, tween.prop, "" ); // Empty strings, null, undefined and "auto" are converted to 0. return !result || result === "auto" ? 0 : result; }, set: function( tween ) { // use step hook for back compat - use cssHook if its there - use .style if its // available and use plain properties where available if ( jQuery.fx.step[ tween.prop ] ) { jQuery.fx.step[ tween.prop ]( tween ); } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) { jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); } else { tween.elem[ tween.prop ] = tween.now; } } } }; // Support: IE9 // Panic based approach to setting things on disconnected nodes Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { set: function( tween ) { if ( tween.elem.nodeType && tween.elem.parentNode ) { tween.elem[ tween.prop ] = tween.now; } } }; jQuery.each([ "toggle", "show", "hide" ], function( i, name ) { var cssFn = jQuery.fn[ name ]; jQuery.fn[ name ] = function( speed, easing, callback ) { return speed == null || typeof speed === "boolean" ? cssFn.apply( this, arguments ) : this.animate( genFx( name, true ), speed, easing, callback ); }; }); jQuery.fn.extend({ fadeTo: function( speed, to, easing, callback ) { // show any hidden elements after setting opacity to 0 return this.filter( isHidden ).css( "opacity", 0 ).show() // animate to the value specified .end().animate({ opacity: to }, speed, easing, callback ); }, animate: function( prop, speed, easing, callback ) { var empty = jQuery.isEmptyObject( prop ), optall = jQuery.speed( speed, easing, callback ), doAnimation = function() { // Operate on a copy of prop so per-property easing won't be lost var anim = Animation( this, jQuery.extend( {}, prop ), optall ); // Empty animations, or finishing resolves immediately if ( empty || data_priv.get( this, "finish" ) ) { anim.stop( true ); } }; doAnimation.finish = doAnimation; return empty || optall.queue === false ? this.each( doAnimation ) : this.queue( optall.queue, doAnimation ); }, stop: function( type, clearQueue, gotoEnd ) { var stopQueue = function( hooks ) { var stop = hooks.stop; delete hooks.stop; stop( gotoEnd ); }; if ( typeof type !== "string" ) { gotoEnd = clearQueue; clearQueue = type; type = undefined; } if ( clearQueue && type !== false ) { this.queue( type || "fx", [] ); } return this.each(function() { var dequeue = true, index = type != null && type + "queueHooks", timers = jQuery.timers, data = data_priv.get( this ); if ( index ) { if ( data[ index ] && data[ index ].stop ) { stopQueue( data[ index ] ); } } else { for ( index in data ) { if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { stopQueue( data[ index ] ); } } } for ( index = timers.length; index--; ) { if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) { timers[ index ].anim.stop( gotoEnd ); dequeue = false; timers.splice( index, 1 ); } } // start the next in the queue if the last step wasn't forced // timers currently will call their complete callbacks, which will dequeue // but only if they were gotoEnd if ( dequeue || !gotoEnd ) { jQuery.dequeue( this, type ); } }); }, finish: function( type ) { if ( type !== false ) { type = type || "fx"; } return this.each(function() { var index, data = data_priv.get( this ), queue = data[ type + "queue" ], hooks = data[ type + "queueHooks" ], timers = jQuery.timers, length = queue ? queue.length : 0; // enable finishing flag on private data data.finish = true; // empty the queue first jQuery.queue( this, type, [] ); if ( hooks && hooks.stop ) { hooks.stop.call( this, true ); } // look for any active animations, and finish them for ( index = timers.length; index--; ) { if ( timers[ index ].elem === this && timers[ index ].queue === type ) { timers[ index ].anim.stop( true ); timers.splice( index, 1 ); } } // look for any animations in the old queue and finish them for ( index = 0; index < length; index++ ) { if ( queue[ index ] && queue[ index ].finish ) { queue[ index ].finish.call( this ); } } // turn off finishing flag delete data.finish; }); } }); // Generate parameters to create a standard animation function genFx( type, includeWidth ) { var which, attrs = { height: type }, i = 0; // if we include width, step value is 1 to do all cssExpand values, // if we don't include width, step value is 2 to skip over Left and Right includeWidth = includeWidth? 1 : 0; for( ; i < 4 ; i += 2 - includeWidth ) { which = cssExpand[ i ]; attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; } if ( includeWidth ) { attrs.opacity = attrs.width = type; } return attrs; } // Generate shortcuts for custom animations jQuery.each({ slideDown: genFx("show"), slideUp: genFx("hide"), slideToggle: genFx("toggle"), fadeIn: { opacity: "show" }, fadeOut: { opacity: "hide" }, fadeToggle: { opacity: "toggle" } }, function( name, props ) { jQuery.fn[ name ] = function( speed, easing, callback ) { return this.animate( props, speed, easing, callback ); }; }); jQuery.speed = function( speed, easing, fn ) { var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { complete: fn || !fn && easing || jQuery.isFunction( speed ) && speed, duration: speed, easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing }; opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; // normalize opt.queue - true/undefined/null -> "fx" if ( opt.queue == null || opt.queue === true ) { opt.queue = "fx"; } // Queueing opt.old = opt.complete; opt.complete = function() { if ( jQuery.isFunction( opt.old ) ) { opt.old.call( this ); } if ( opt.queue ) { jQuery.dequeue( this, opt.queue ); } }; return opt; }; jQuery.easing = { linear: function( p ) { return p; }, swing: function( p ) { return 0.5 - Math.cos( p*Math.PI ) / 2; } }; jQuery.timers = []; jQuery.fx = Tween.prototype.init; jQuery.fx.tick = function() { var timer, timers = jQuery.timers, i = 0; fxNow = jQuery.now(); for ( ; i < timers.length; i++ ) { timer = timers[ i ]; // Checks the timer has not already been removed if ( !timer() && timers[ i ] === timer ) { timers.splice( i--, 1 ); } } if ( !timers.length ) { jQuery.fx.stop(); } fxNow = undefined; }; jQuery.fx.timer = function( timer ) { if ( timer() && jQuery.timers.push( timer ) ) { jQuery.fx.start(); } }; jQuery.fx.interval = 13; jQuery.fx.start = function() { if ( !timerId ) { timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval ); } }; jQuery.fx.stop = function() { clearInterval( timerId ); timerId = null; }; jQuery.fx.speeds = { slow: 600, fast: 200, // Default speed _default: 400 }; // Back Compat <1.8 extension point jQuery.fx.step = {}; if ( jQuery.expr && jQuery.expr.filters ) { jQuery.expr.filters.animated = function( elem ) { return jQuery.grep(jQuery.timers, function( fn ) { return elem === fn.elem; }).length; }; } jQuery.fn.offset = function( options ) { if ( arguments.length ) { return options === undefined ? this : this.each(function( i ) { jQuery.offset.setOffset( this, options, i ); }); } var docElem, win, elem = this[ 0 ], box = { top: 0, left: 0 }, doc = elem && elem.ownerDocument; if ( !doc ) { return; } docElem = doc.documentElement; // Make sure it's not a disconnected DOM node if ( !jQuery.contains( docElem, elem ) ) { return box; } // If we don't have gBCR, just use 0,0 rather than error // BlackBerry 5, iOS 3 (original iPhone) if ( typeof elem.getBoundingClientRect !== core_strundefined ) { box = elem.getBoundingClientRect(); } win = getWindow( doc ); return { top: box.top + win.pageYOffset - docElem.clientTop, left: box.left + win.pageXOffset - docElem.clientLeft }; }; jQuery.offset = { setOffset: function( elem, options, i ) { var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, position = jQuery.css( elem, "position" ), curElem = jQuery( elem ), props = {}; // Set position first, in-case top/left are set even on static elem if ( position === "static" ) { elem.style.position = "relative"; } curOffset = curElem.offset(); curCSSTop = jQuery.css( elem, "top" ); curCSSLeft = jQuery.css( elem, "left" ); calculatePosition = ( position === "absolute" || position === "fixed" ) && ( curCSSTop + curCSSLeft ).indexOf("auto") > -1; // Need to be able to calculate position if either top or left is auto and position is either absolute or fixed if ( calculatePosition ) { curPosition = curElem.position(); curTop = curPosition.top; curLeft = curPosition.left; } else { curTop = parseFloat( curCSSTop ) || 0; curLeft = parseFloat( curCSSLeft ) || 0; } if ( jQuery.isFunction( options ) ) { options = options.call( elem, i, curOffset ); } if ( options.top != null ) { props.top = ( options.top - curOffset.top ) + curTop; } if ( options.left != null ) { props.left = ( options.left - curOffset.left ) + curLeft; } if ( "using" in options ) { options.using.call( elem, props ); } else { curElem.css( props ); } } }; jQuery.fn.extend({ position: function() { if ( !this[ 0 ] ) { return; } var offsetParent, offset, elem = this[ 0 ], parentOffset = { top: 0, left: 0 }; // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent if ( jQuery.css( elem, "position" ) === "fixed" ) { // We assume that getBoundingClientRect is available when computed position is fixed offset = elem.getBoundingClientRect(); } else { // Get *real* offsetParent offsetParent = this.offsetParent(); // Get correct offsets offset = this.offset(); if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) { parentOffset = offsetParent.offset(); } // Add offsetParent borders parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ); parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true ); } // Subtract parent offsets and element margins return { top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true ) }; }, offsetParent: function() { return this.map(function() { var offsetParent = this.offsetParent || docElem; while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) { offsetParent = offsetParent.offsetParent; } return offsetParent || docElem; }); } }); // Create scrollLeft and scrollTop methods jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) { var top = "pageYOffset" === prop; jQuery.fn[ method ] = function( val ) { return jQuery.access( this, function( elem, method, val ) { var win = getWindow( elem ); if ( val === undefined ) { return win ? win[ prop ] : elem[ method ]; } if ( win ) { win.scrollTo( !top ? val : window.pageXOffset, top ? val : window.pageYOffset ); } else { elem[ method ] = val; } }, method, val, arguments.length, null ); }; }); function getWindow( elem ) { return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView; } // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) { // margin is only for outerHeight, outerWidth jQuery.fn[ funcName ] = function( margin, value ) { var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); return jQuery.access( this, function( elem, type, value ) { var doc; if ( jQuery.isWindow( elem ) ) { // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there // isn't a whole lot we can do. See pull request at this URL for discussion: // https://github.com/jquery/jquery/pull/764 return elem.document.documentElement[ "client" + name ]; } // Get document width or height if ( elem.nodeType === 9 ) { doc = elem.documentElement; // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], // whichever is greatest return Math.max( elem.body[ "scroll" + name ], doc[ "scroll" + name ], elem.body[ "offset" + name ], doc[ "offset" + name ], doc[ "client" + name ] ); } return value === undefined ? // Get width or height on the element, requesting but not forcing parseFloat jQuery.css( elem, type, extra ) : // Set width or height on the element jQuery.style( elem, type, value, extra ); }, type, chainable ? margin : undefined, chainable, null ); }; }); }); // Limit scope pollution from any deprecated API // (function() { // The number of elements contained in the matched element set jQuery.fn.size = function() { return this.length; }; jQuery.fn.andSelf = jQuery.fn.addBack; // })(); if ( typeof module === "object" && module && typeof module.exports === "object" ) { // Expose jQuery as module.exports in loaders that implement the Node // module pattern (including browserify). Do not create the global, since // the user will be storing it themselves locally, and globals are frowned // upon in the Node module world. module.exports = jQuery; } else { // Register as a named AMD module, since jQuery can be concatenated with other // files that may use define, but not via a proper concatenation script that // understands anonymous AMD modules. A named AMD is safest and most robust // way to register. Lowercase jquery is used because AMD module names are // derived from file names, and jQuery is normally delivered in a lowercase // file name. Do this after creating the global so that if an AMD module wants // to call noConflict to hide this version of jQuery, it will work. if ( typeof define === "function" && define.amd ) { define( "jquery", [], function () { return jQuery; } ); } } // If there is a window object, that at least has a document property, // define jQuery and $ identifiers if ( typeof window === "object" && typeof window.document === "object" ) { window.jQuery = window.$ = jQuery; } })( window ); ;(function setupjQuery(Global) { var lively = Global.lively || {}, jQuery = Global.jQuery; // we still are adding jQuery to Global but this is DEPRECATED. // We need to be able to run with libraries requiring // different jQuery versions so we will restrict "our" to // lively.$ in the future Global.$ = lively.$ = jQuery.noConflict(/*true -- really removes $*/); })(window); //! https://raw.github.com/rksm/jquery-bounds/master/jquery-bounds.js /*! * jQuery.bounds * authors: Andrew Powell, Robert Krahn * * This version is adapted from Andrew Powell's bounds function in jQuery UI: * http://goo.gl/7ByPv * */ ;(function($) { function Bounds() {} Bounds.prototype.left = Number.POSITIVE_INFINITY; Bounds.prototype.top = Number.POSITIVE_INFINITY; Bounds.prototype.right = Number.NEGATIVE_INFINITY; Bounds.prototype.bottom = Number.NEGATIVE_INFINITY; Bounds.prototype.width = function() { return this.right - this.left; }; Bounds.prototype.height = function() { return this.bottom - this.top; }, Bounds.prototype.toString = function() { return JSON.stringify(this); }; Bounds.prototype.show = function (ms) { var div = $('
').css({ position: 'absolute', left: this.left + 'px', top: this.top + 'px', width: (this.right - this.left) + 'px', height: (this.bottom - this.top) + 'px', outline: 'red 1px solid' }).appendTo('body'); setTimeout(div.remove.bind(div), ms || 1000); }; $.fn.bounds = function(options) { /* * Get the bounds of HTMLElement(s) * options: {withPadding: BOOL, withMargin: BOOL} */ var withMargin = options && options.withMargin, withPadding = (options && options.withPadding) || withMargin, bounds = new Bounds(); this.each(function (i,el) { var elQ = $(el), off = elQ.offset(); if (withPadding) { off.right = off.left + elQ.outerWidth(withMargin); off.bottom = off.top + elQ.outerHeight(withMargin); } else { off.right = off.left + elQ.width(); off.bottom = off.top + elQ.height(); } if (off.left < bounds.left) { bounds.left = off.left; } if (off.top < bounds.top) { bounds.top = off.top; } if (off.right > bounds.right) { bounds.right = off.right; } if (off.bottom > bounds.bottom) { bounds.bottom = off.bottom; } }); return bounds; }; $.fn.boundsEach = function(options) { var all = [] this.each(function (i,el) { all.push($(el).bounds(options)); }); all.show = function(ms) { $(all).each(function(i, bounds) { bounds.show(ms) }); } return all; } })(jQuery); //! https://raw.github.com/es-shims/es5-shim/v2.0.5/es5-shim.js // Copyright 2009-2012 by contributors, MIT License // vim: ts=4 sts=4 sw=4 expandtab // Module systems magic dance -- disabled by lively (function (definition) { definition(); })(function () { /** * Brings an environment as close to ECMAScript 5 compliance * as is possible with the facilities of erstwhile engines. * * Annotated ES5: http://es5.github.com/ (specific links below) * ES5 Spec: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf * Required reading: http://javascriptweblog.wordpress.com/2011/12/05/extending-javascript-natives/ */ // // Function // ======== // // ES-5 15.3.4.5 // http://es5.github.com/#x15.3.4.5 function Empty() {} if (!Function.prototype.bind) { Function.prototype.bind = function bind(that) { // .length is 1 // 1. Let Target be the this value. var target = this; // 2. If IsCallable(Target) is false, throw a TypeError exception. if (typeof target != "function") { throw new TypeError("Function.prototype.bind called on incompatible " + target); } // 3. Let A be a new (possibly empty) internal list of all of the // argument values provided after thisArg (arg1, arg2 etc), in order. // XXX slicedArgs will stand in for "A" if used var args = slice.call(arguments, 1); // for normal call // 4. Let F be a new native ECMAScript object. // 11. Set the [[Prototype]] internal property of F to the standard // built-in Function prototype object as specified in 15.3.3.1. // 12. Set the [[Call]] internal property of F as described in // 15.3.4.5.1. // 13. Set the [[Construct]] internal property of F as described in // 15.3.4.5.2. // 14. Set the [[HasInstance]] internal property of F as described in // 15.3.4.5.3. var bound = function () { if (this instanceof bound) { // 15.3.4.5.2 [[Construct]] // When the [[Construct]] internal method of a function object, // F that was created using the bind function is called with a // list of arguments ExtraArgs, the following steps are taken: // 1. Let target be the value of F's [[TargetFunction]] // internal property. // 2. If target has no [[Construct]] internal method, a // TypeError exception is thrown. // 3. Let boundArgs be the value of F's [[BoundArgs]] internal // property. // 4. Let args be a new list containing the same values as the // list boundArgs in the same order followed by the same // values as the list ExtraArgs in the same order. // 5. Return the result of calling the [[Construct]] internal // method of target providing args as the arguments. var result = target.apply( this, args.concat(slice.call(arguments)) ); if (Object(result) === result) { return result; } return this; } else { // 15.3.4.5.1 [[Call]] // When the [[Call]] internal method of a function object, F, // which was created using the bind function is called with a // this value and a list of arguments ExtraArgs, the following // steps are taken: // 1. Let boundArgs be the value of F's [[BoundArgs]] internal // property. // 2. Let boundThis be the value of F's [[BoundThis]] internal // property. // 3. Let target be the value of F's [[TargetFunction]] internal // property. // 4. Let args be a new list containing the same values as the // list boundArgs in the same order followed by the same // values as the list ExtraArgs in the same order. // 5. Return the result of calling the [[Call]] internal method // of target providing boundThis as the this value and // providing args as the arguments. // equiv: target.call(this, ...boundArgs, ...args) return target.apply( that, args.concat(slice.call(arguments)) ); } }; if(target.prototype) { Empty.prototype = target.prototype; bound.prototype = new Empty(); // Clean up dangling references. Empty.prototype = null; } // XXX bound.length is never writable, so don't even try // // 15. If the [[Class]] internal property of Target is "Function", then // a. Let L be the length property of Target minus the length of A. // b. Set the length own property of F to either 0 or L, whichever is // larger. // 16. Else set the length own property of F to 0. // 17. Set the attributes of the length own property of F to the values // specified in 15.3.5.1. // TODO // 18. Set the [[Extensible]] internal property of F to true. // TODO // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3). // 20. Call the [[DefineOwnProperty]] internal method of F with // arguments "caller", PropertyDescriptor {[[Get]]: thrower, [[Set]]: // thrower, [[Enumerable]]: false, [[Configurable]]: false}, and // false. // 21. Call the [[DefineOwnProperty]] internal method of F with // arguments "arguments", PropertyDescriptor {[[Get]]: thrower, // [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false}, // and false. // TODO // NOTE Function objects created using Function.prototype.bind do not // have a prototype property or the [[Code]], [[FormalParameters]], and // [[Scope]] internal properties. // XXX can't delete prototype in pure-js. // 22. Return F. return bound; }; } // Shortcut to an often accessed properties, in order to avoid multiple // dereference that costs universally. // _Please note: Shortcuts are defined after `Function.prototype.bind` as we // us it in defining shortcuts. var call = Function.prototype.call; var prototypeOfArray = Array.prototype; var prototypeOfObject = Object.prototype; var slice = prototypeOfArray.slice; // Having a toString local variable name breaks in Opera so use _toString. var _toString = call.bind(prototypeOfObject.toString); var owns = call.bind(prototypeOfObject.hasOwnProperty); // If JS engine supports accessors creating shortcuts. var defineGetter; var defineSetter; var lookupGetter; var lookupSetter; var supportsAccessors; if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) { defineGetter = call.bind(prototypeOfObject.__defineGetter__); defineSetter = call.bind(prototypeOfObject.__defineSetter__); lookupGetter = call.bind(prototypeOfObject.__lookupGetter__); lookupSetter = call.bind(prototypeOfObject.__lookupSetter__); } // // Array // ===== // // ES5 15.4.4.12 // http://es5.github.com/#x15.4.4.12 // Default value for second param // [bugfix, ielt9, old browsers] // IE < 9 bug: [1,2].splice(0).join("") == "" but should be "12" if ([1,2].splice(0).length != 2) { var array_splice = Array.prototype.splice; Array.prototype.splice = function(start, deleteCount) { if (!arguments.length) { return []; } else { return array_splice.apply(this, [ start === void 0 ? 0 : start, deleteCount === void 0 ? (this.length - start) : deleteCount ].concat(slice.call(arguments, 2))) } }; } // ES5 15.4.4.12 // http://es5.github.com/#x15.4.4.13 // Return len+argCount. // [bugfix, ielt8] // IE < 8 bug: [].unshift(0) == undefined but should be "1" if ([].unshift(0) != 1) { var array_unshift = Array.prototype.unshift; Array.prototype.unshift = function() { array_unshift.apply(this, arguments); return this.length; }; } // ES5 15.4.3.2 // http://es5.github.com/#x15.4.3.2 // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray if (!Array.isArray) { Array.isArray = function isArray(obj) { return _toString(obj) == "[object Array]"; }; } // The IsCallable() check in the Array functions // has been replaced with a strict check on the // internal class of the object to trap cases where // the provided function was actually a regular // expression literal, which in V8 and // JavaScriptCore is a typeof "function". Only in // V8 are regular expression literals permitted as // reduce parameters, so it is desirable in the // general case for the shim to match the more // strict and common behavior of rejecting regular // expressions. // ES5 15.4.4.18 // http://es5.github.com/#x15.4.4.18 // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/array/forEach // Check failure of by-index access of string characters (IE < 9) // and failure of `0 in boxedString` (Rhino) var boxedString = Object("a"), splitString = boxedString[0] != "a" || !(0 in boxedString); if (!Array.prototype.forEach) { Array.prototype.forEach = function forEach(fun /*, thisp*/) { var object = toObject(this), self = splitString && _toString(this) == "[object String]" ? this.split("") : object, thisp = arguments[1], i = -1, length = self.length >>> 0; // If no callback function or if callback is not a callable function if (_toString(fun) != "[object Function]") { throw new TypeError(); // TODO message } while (++i < length) { if (i in self) { // Invoke the callback function with call, passing arguments: // context, property value, property key, thisArg object // context fun.call(thisp, self[i], i, object); } } }; } // ES5 15.4.4.19 // http://es5.github.com/#x15.4.4.19 // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map if (!Array.prototype.map) { Array.prototype.map = function map(fun /*, thisp*/) { var object = toObject(this), self = splitString && _toString(this) == "[object String]" ? this.split("") : object, length = self.length >>> 0, result = Array(length), thisp = arguments[1]; // If no callback function or if callback is not a callable function if (_toString(fun) != "[object Function]") { throw new TypeError(fun + " is not a function"); } for (var i = 0; i < length; i++) { if (i in self) result[i] = fun.call(thisp, self[i], i, object); } return result; }; } // ES5 15.4.4.20 // http://es5.github.com/#x15.4.4.20 // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter if (!Array.prototype.filter) { Array.prototype.filter = function filter(fun /*, thisp */) { var object = toObject(this), self = splitString && _toString(this) == "[object String]" ? this.split("") : object, length = self.length >>> 0, result = [], value, thisp = arguments[1]; // If no callback function or if callback is not a callable function if (_toString(fun) != "[object Function]") { throw new TypeError(fun + " is not a function"); } for (var i = 0; i < length; i++) { if (i in self) { value = self[i]; if (fun.call(thisp, value, i, object)) { result.push(value); } } } return result; }; } // ES5 15.4.4.16 // http://es5.github.com/#x15.4.4.16 // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every if (!Array.prototype.every) { Array.prototype.every = function every(fun /*, thisp */) { var object = toObject(this), self = splitString && _toString(this) == "[object String]" ? this.split("") : object, length = self.length >>> 0, thisp = arguments[1]; // If no callback function or if callback is not a callable function if (_toString(fun) != "[object Function]") { throw new TypeError(fun + " is not a function"); } for (var i = 0; i < length; i++) { if (i in self && !fun.call(thisp, self[i], i, object)) { return false; } } return true; }; } // ES5 15.4.4.17 // http://es5.github.com/#x15.4.4.17 // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some if (!Array.prototype.some) { Array.prototype.some = function some(fun /*, thisp */) { var object = toObject(this), self = splitString && _toString(this)؆1(iƸ46~'IB*lJQI`῿r.\TcxϖzUa#v^Ξ+#׳G;JJK%\5"ռE*F'V'hܱ#q;{oȓXPm}B$ [dy,>H8Իp' - pVhWVՊ-u &kɧ-3SZy,t\rEL1†ԯd2*Ik1"$R)gbjlǷ'DtXi)ޟJW>մҽL^YB&I׎_a+cZE:+!·Uo&t>8  Zm6e"4$X6䒺88ݟ޽eh-üZPSZsi.'|T,r2֊khyWpȐLtaZSb  I*5! nZTH]a MۍM3"Ǥ)0LWY.7 aOG%+׬*faqhMz?Δ[Wh~peqף>zL"ݭʊǦ1jUWpT!3Q.RCEZ4&u ZZ;.D鎒|;_Z5z+8d,fHc62`Ydŕ*8jx@Y*sz1h /.o5xtQg' VTF T,h)?r׫V< Y~x 0R;Pxt{Jwcn묅\ݬNI!ᡚ`: [S?|.ҁGKo TÄReIZtLPJҐ%6elgl!x"N1+ MF|s Wê\5s T)%/w_nymNQupEXrb/:@%y*֒rQ͋mo0͹x1wt6Ev+8v UgsqAYSTP|TE $gF+w Yq+;LY)_Ba}Nu!mU8TW7>!=>5~uƱ 4<'ᗣy>[_QoDi h<{?AVvĂ`BqdLjX(B=oHw|d.V*&f.1 8:):ܢ?tҧ{0WVMi˝zA[ @Va{Y6Z$8.?._8)ĞyWN`Im_:}ґ\[``gLbK4ڑ`GFۀ-OFisL_^``ԃoYMcVњ.573&JGNj .",\EY`|*BO0RE_RSd%kE3^@St M($[, "L)0._oسivՕ8))\

wTHXؒ!8%4̾?7ALW@!C+u+C+5}Yix\=e+KIPv0Mvy5&`gf',):QS-koT $(tAԥv|i;NY{<.hXp`"}ApL_ى# 2b׀KV"r:)J$yԑ.&q{\S N׾{7 2vp(2(+h=OYݝ ]n#SlIg"bmt<~W<`jU櫄YVد(W&7/4-=3&AbBoVZp ԙ*CUU#Dt7:0O]w.DcfHكX䳽Y7xJ4R#8nk ɱhˤRn]6 7XC"sᅛ>UJuR4WC|(5Ū_mjgks*1&Ts<Fl9D2gvH/U;҆0#hx1x|WG!k/dRE]E*vb-e>e? .I&[,z")c>Phe8m|ZDr+YYV$n%ot?]"~֒.XQ IAʥ1c#(MxKno1mL{ +I-8{h)B <,'Gn/#Q%]o%r_x.ߞ,h܁hbI,dr "Ke%hT=]WN r9ä*6**TxSS]FżYDLt[XؕZ HJ@9IZQ3hH%%3 X'ɎH \HK l:K - m̝KƕCN-pEy<8C`<{m7vx:1ߤZNEFx֙J3pu*&;TK Bsc v+-8l"`Zݧٸ[%w5;Sݑ \cofhdTw"`Ug} }YzIpLc/,pGmDI.2;L$X+aDqx/xM])Rx8N+p(dbDB/˦htk}t_w6C.lC;D:f{ S߁ӼHe:Enc'ΧXTL ȇl*f,=?di & "0 Mqu1 ŬmTJ[Ӵ̟e wM.ny`Okgm7bAz/ft}|f`7JkیlKL\.'jA7pd"q{_h8N; X#*E#@}u@jY' Wa{Sl' f\6B@86%3C8+%ۃ_ɫl5MZGt1|X{ʟr -۟5p]Y&:LrcQH2 W1\46!HCŦs&&`,}Rѽәc` v$ t/ˈ" rE0oS[gymw5 vԱ=K[jm:$Yl1g =xl'w-ft4oxTXr>΋tY:4h6oYf\ri!yيYgztZ5\̿=\wC[,z?b6GStqA4@[A^4|/0u5ItЋK/T EZ>^0|P+A@x!Q]RNm:/zټkt 5;߉+Wg KiЅ_%Y0l~d3k{晈vbIMӾ乞(o /W]j^%M^d*?7u{<8'-^^78S&.79b{|_ /zW;<(g[Q$ZIw`̘WvNجG'f֓:Q#.qU"!K0mQE+īZ9G-rQ+ 9\N;Iܴ0a2y@%38h\'DP0CJ WSz:x>f`(:O(scN K֢E,!^èNFǸI$kbˀ R Oa3#PTV,36JZ'>aΙ^?ÆԠMvqp%s !<KuN> +l|I`i%8@Er YY\QW)0^" ïmVmrVzqz ǯM6نEBlq7dXf,'7<";3M^Gwli i6GK^+aѩ"@G{EV7շO]2fNJ0X#ut$L^^6eXُ< ,Y`f4bChDջH%]Y3 E [@o5,GڔE0ewn ։lAB03G0sJmxQ25 bJUÈŜҾ}?tI]N ;${fub ɖR%n}l RFEHsFҺ26AKԉ(Zذ^`_Upv|[˅vwW?&<@˗&bŕ/g) "vd8["`;E-Ty˖ qxSŴD:+ᨱ3)wh=742Et%XqF ez]0~GyE|4y Z8NtL9ljAQB+XGs%7'/|ao]/ 唎uω.=)XŢZCěG)AXA M>/GvC՝d* FU-)Ҥ}9o']Kٖ}=QU0/ԁmա(˫dTU+;oޝͲt]H8nZBiQ5)?~N./i+ /HTJpTj^ %ٸevm"WΑEUX痗ٮݤ%NlpUn'\*5gm/vi܉ϴ7 JVèz(p:j)SWjFyśGsGێSn'id6)SwFHH*5zϥ *#l$ҌF[oVw).PbyC`k1z_1\OI1bt@a\'PT V)n7-h~CC)PYH"5Az*CGI.{B_kR#7iz`L/4[9.(!ĎrE]Vu A*SqAϻ5\#6٧_3X]JD6yґ }WVE]#u_Nge ": {euu823Ќ%\E(C/ub< ZDXh}P-†&~b$E99kQ;Ԅ<E s(JAʈԜy4 v&ǘ@HcmƖU}3萩jh`A͝څQyyޗFˣ7xZ 1#߻QZܤגZ1]j9$rD+>G׌daA@Àd:[ebj3dfzCFE1R,(Ϩow4۽)S@>|CU<6.e K]kIWTP!U7& M^&FX N1IaꌶN)Q8DUM1YR\o:Q6%7 )"Q.8f@f/&Dȧ}qOxP gOՋ;bnh6-:=卢_JMGJha-8=k2wΎ2.dWu2e +E8GKlJ94UYĮ4 YyAq+YCW0IbMQʐV湳`Sٝ6 c@L&lpkl~}9msE*UHF P3|vWq p2x0lX;lF[*.Ȅj۟PC˙}:gXS.luL ^PbqbQRax2PX<0c W"S|G^DPt(J~:DݹUK QKGG:t|8"2:B}\)=Nq!'MQTOzDZZKfD{"/}qS:e4?aK%uIct6{L'xI갯ZNtvtǮSfK?QK4Ag7 !`޲DŽM6!3"LfԨ_ЀP f?{蠸,e[Ǔ-( @n9]SZNro+'z鸀%1ԻBn=GIHtUmڢJpN|yؕ3 /ٌ̛Xvp4PG=Ѩ. c+E$H\6뇂)Rs4`D d N!= C( P[!pT@d,HlnvP 4ƁwtlN/#*d0`7AV$KN.fncRqmOfg1mvW QLhGΈKnl 0x~gHY&[_$P`iO5 1&u5hn۪m wcæqv=w.5({v1 /Z?nC>.V8N#Dvܱ.*X |H" gsUܿf-8\_|xs1P9u9̙8 h93iuV[W޸~-\U w?fj⌉p3DÏe^ns+z{DsWtn-Сq Ů۔{CRvLQ5~3hmazaHGO%O՚IQՃx[[ken.3栀u]6UBP -nE<5> ]t/T`$fwOgTm:ψC,F9n(uY9Q5PЇi2~() EPGr+D\5ip*U6 )}v~3ly1ɫ[ &(+fS#s1*8#3;Uur\%'(TzB t(:܍2 z<|DXON^=ONwG9x2o>4ǻoOJv5A_ONcv><>xw˃?$/ۣ)==6fx5}qpxpzup!::Nvwǧ{?'~:~wtHo޾:=B, HN^bkn'1"OG/}o>;=x3H^aj $d4) ==dȼ:>zC=хJGg@8Aɾ=p0[o ƒ 8z[t3.cGd=\tAu"!'hB{TxtA>﹮2W !SG{Ȍ_Sݿ Mhe$J U9{Kvm]nGTY>70UoҼС՞=um*l]*b{x`I2Trj2-\r|F{pA^?>Pa[ \8e~E7Fq L֩ nLf,aȎe퀀HnŋH̴w=f~c:(! E[% dnj *gփ Ќr.=;RY|VOeq7-5%>1rt 0jF',=Qg9۵E_ IȋE$Q㈡p V Md^@){j/ dY x95?q{5եݙn _5JSu:TL16m+ wWV F5jIU/%Ų[F#$qoɪ`^r>?Z3u.~w_R1J)'NQuvBHȊ؟W+Ǧݾ,GEGE;z0F ?ӛBxjz]!r#7‚&w%yMfHFQ /q6Q&DZ8 Dg4BcNU*8$u&( SѨÖp 1, Qy龢-UuC(ĥBQN 3$)|'I"ߵ3_ +Y;~0*$u{&o(?Sk^۬0I\NVtEK6h{Gp5Xx`D e/VNmf,恡 vڳHwjgm,20 09e=#nf;q L?WE")dG31{iUL@̖ꙓX;)d]t:h(1y휴l:>W1\gahzeD9rKVyPu |p~ ~դYgmϬ~"WJNBZo~`0)OY0@'{y؍ [G U`qnD1xbGbt\ޮ^-^Q5%[ȮA˴3p^yz"Zh8&O3%zNti%,f!|mAL枰ӐZN[2> BF}!w+ j 쓪ȶ? ;뽴&t9DrM)+v4+N*⶜Ζ+탟}KSJpq"??!?EJa/)0qi zq6T6ly40!@2SCa4 3J³v4R:>hwwt{Xu!@nhgX)ȳoP+ i;"mw45:;+$C\"ͫ6oU'zuSG稃mn呆G.k6y Eh&/^c~y.n s+.]<~#J#H`QE y%EBՌ!Fu2 G1 UC Xo(=n7*vB3. &w,)JJ"1H@e:GW|eqG=*jUoh0i{OUF5Crh2Nw:Ge&+ 7WF5#z>l&Hh3\)G{ԇy9]:C-Z6TX33IM:-ّ; i'PGf8p\]H?4#6;fx)c%/ :#8 @_/yHǵҪU:HɄiko j"