2017-03-21 10:31:40 -07:00
! function ( global , factory ) { "use strict" ; "object" == typeof module && "object" == typeof module . exports ? module . exports = global . document ? factory ( global , ! 0 ) : function ( w ) { if ( ! w . document ) throw new Error ( "jQuery requires a window with a document" ) ; return factory ( w ) } : factory ( global ) } ( "undefined" != typeof window ? window : this , function ( window , noGlobal ) { "use strict" ; function DOMEval ( code , doc ) { doc = doc || document ; var script = doc . createElement ( "script" ) ; script . text = code , doc . head . appendChild ( script ) . parentNode . removeChild ( script ) } function isArrayLike ( obj ) { var length = ! ! obj && "length" in obj && obj . length , type = jQuery . type ( obj ) ; return "function" !== type && ! jQuery . isWindow ( obj ) && ( "array" === type || 0 === length || "number" == typeof length && length > 0 && length - 1 in obj ) } function nodeName ( elem , name ) { return elem . nodeName && elem . nodeName . toLowerCase ( ) === name . toLowerCase ( ) } function winnow ( elements , qualifier , not ) { return jQuery . isFunction ( qualifier ) ? jQuery . grep ( elements , function ( elem , i ) { return ! ! qualifier . call ( elem , i , elem ) !== not } ) : qualifier . nodeType ? jQuery . grep ( elements , function ( elem ) { return elem === qualifier !== not } ) : "string" != typeof qualifier ? jQuery . grep ( elements , function ( elem ) { return indexOf . call ( qualifier , elem ) > - 1 !== not } ) : risSimple . test ( qualifier ) ? jQuery . filter ( qualifier , elements , not ) : ( qualifier = jQuery . filter ( qualifier , elements ) , jQuery . grep ( elements , function ( elem ) { return indexOf . call ( qualifier , elem ) > - 1 !== not && 1 === elem . nodeType } ) ) } function sibling ( cur , dir ) { for ( ; ( cur = cur [ dir ] ) && 1 !== cur . nodeType ; ) ; return cur } function createOptions ( options ) { var object = { } ; return jQuery . each ( options . match ( rnothtmlwhite ) || [ ] , function ( _ , flag ) { object [ flag ] = ! 0 } ) , object } function Identity ( v ) { return v } function Thrower ( ex ) { throw ex } function adoptValue ( value , resolve , reject , noValue ) { var method ; try { value && jQuery . isFunction ( method = value . promise ) ? method . call ( value ) . done ( resolve ) . fail ( reject ) : value && jQuery . isFunction ( method = value . then ) ? method . call ( value , resolve , reject ) : resolve . apply ( void 0 , [ value ] . slice ( noValue ) ) } catch ( value ) { reject . apply ( void 0 , [ value ] ) } } function completed ( ) { document . removeEventListener ( "DOMContentLoaded" , completed ) , window . removeEventListener ( "load" , completed ) , jQuery . ready ( ) } function Data ( ) { this . expando = jQuery . expando + Data . uid ++ } function getData ( data ) { return "true" === data || "false" !== data && ( "null" === data ? null : data === + data + "" ? + data : rbrace . test ( data ) ? JSON . parse ( data ) : data ) } function dataAttr ( elem , key , data ) { var name ; if ( void 0 === data && 1 === elem . nodeType ) if ( name = "data-" + key . replace ( rmultiDash , "-$&" ) . toLowerCase ( ) , data = elem . getAttribute ( name ) , "string" == typeof data ) { try { data = getData ( data ) } catch ( e ) { } dataUser . set ( elem , key , data ) } else data = void 0 ; return data } function adjustCSS ( elem , prop , valueParts , tween ) { var adjusted , scale = 1 , maxIterations = 20 , currentValue = tween ? function ( ) { return tween . cur ( ) } : function ( ) { return jQuery . css ( elem , prop , "" ) } , initial = currentValue ( ) , unit = valueParts && valueParts [ 3 ] || ( jQuery . cssNumber [ prop ] ? "" : "px" ) , initialInUnit = ( jQuery . cssNumber [ prop ] || "px" !== unit && + initial ) && rcssNum . exec ( jQuery . css ( elem , prop ) ) ; if ( initialInUnit && initialInUnit [ 3 ] !== unit ) { unit = unit || initialInUnit [ 3 ] , valueParts = valueParts || [ ] , initialInUnit = + initial || 1 ; do scale = scale || ".5" , initialInUnit /= scale , jQuery . style ( elem , prop , initialInUnit + unit ) ; while ( scale !== ( scale = currentValue ( ) / initial ) && 1 !== scale && -- maxIterations ) } return valueParts && ( initialInUnit = + initialInUnit || + initial || 0 , adjusted = valueParts [ 1 ] ? initialInUnit + ( valueParts [ 1 ] + 1 ) * valueParts [ 2 ] : + valueParts [ 2 ] , tween && ( tween . unit = unit , tween . start = initialInUnit , tween . end = adjusted ) ) , adjusted } function getDefaultDisplay ( elem ) { var temp , doc = elem . ownerDocument , nodeName = elem . nodeName , display = defaultDisplayMap [ nodeName ] ; return display ? display : ( temp = doc . body . appendChild ( doc . createElement ( nodeName ) ) , display = jQuery . css ( temp , "display" ) , temp . parentNode . removeChild ( temp ) , "none" === display && ( display = "block" ) , defaultDisplayMap [ nodeName ] = display , display ) } function showHide ( elements , show ) { for ( var display , elem , values = [ ] , index = 0 , length = elements . length ; index < length ; index ++ ) elem = elements [ index ] , elem . style && ( display = elem . style . display , show ? ( "none" === display && ( values [ index ] = dataPriv . get ( elem , "display" ) || null , v
i = temp . length ; i -- ; ) ( elem = temp [ i ] ) && ( matcherOut [ postMap [ i ] ] = ! ( matcherIn [ postMap [ i ] ] = elem ) ) ; if ( seed ) { if ( postFinder || preFilter ) { if ( postFinder ) { for ( temp = [ ] , i = matcherOut . length ; i -- ; ) ( elem = matcherOut [ i ] ) && temp . push ( matcherIn [ i ] = elem ) ; postFinder ( null , matcherOut = [ ] , temp , xml ) } for ( i = matcherOut . length ; i -- ; ) ( elem = matcherOut [ i ] ) && ( temp = postFinder ? indexOf ( seed , elem ) : preMap [ i ] ) > - 1 && ( seed [ temp ] = ! ( results [ temp ] = elem ) ) } } else matcherOut = condense ( matcherOut === results ? matcherOut . splice ( preexisting , matcherOut . length ) : matcherOut ) , postFinder ? postFinder ( null , results , matcherOut , xml ) : push . apply ( results , matcherOut ) } ) } function matcherFromTokens ( tokens ) { for ( var checkContext , matcher , j , len = tokens . length , leadingRelative = Expr . relative [ tokens [ 0 ] . type ] , implicitRelative = leadingRelative || Expr . relative [ " " ] , i = leadingRelative ? 1 : 0 , matchContext = addCombinator ( function ( elem ) { return elem === checkContext } , implicitRelative , ! 0 ) , matchAnyContext = addCombinator ( function ( elem ) { return indexOf ( checkContext , elem ) > - 1 } , implicitRelative , ! 0 ) , matchers = [ function ( elem , context , xml ) { var ret = ! leadingRelative && ( xml || context !== outermostContext ) || ( ( checkContext = context ) . nodeType ? matchContext ( elem , context , xml ) : matchAnyContext ( elem , context , xml ) ) ; return checkContext = null , ret } ] ; i < len ; i ++ ) if ( matcher = Expr . relative [ tokens [ i ] . type ] ) matchers = [ addCombinator ( elementMatcher ( matchers ) , matcher ) ] ; else { if ( matcher = Expr . filter [ tokens [ i ] . type ] . apply ( null , tokens [ i ] . matches ) , matcher [ expando ] ) { for ( j = ++ i ; j < len && ! Expr . relative [ tokens [ j ] . type ] ; j ++ ) ; return setMatcher ( i > 1 && elementMatcher ( matchers ) , i > 1 && toSelector ( tokens . slice ( 0 , i - 1 ) . concat ( { value : " " === tokens [ i - 2 ] . type ? "*" : "" } ) ) . replace ( rtrim , "$1" ) , matcher , i < j && matcherFromTokens ( tokens . slice ( i , j ) ) , j < len && matcherFromTokens ( tokens = tokens . slice ( j ) ) , j < len && toSelector ( tokens ) ) } matchers . push ( matcher ) } return elementMatcher ( matchers ) } function matcherFromGroupMatchers ( elementMatchers , setMatchers ) { var bySet = setMatchers . length > 0 , byElement = elementMatchers . length > 0 , superMatcher = function ( seed , context , xml , results , outermost ) { var elem , j , matcher , matchedCount = 0 , i = "0" , unmatched = seed && [ ] , setMatched = [ ] , contextBackup = outermostContext , elems = seed || byElement && Expr . find . TAG ( "*" , outermost ) , dirrunsUnique = dirruns += null == contextBackup ? 1 : Math . random ( ) || . 1 , len = elems . length ; for ( outermost && ( outermostContext = context === document || context || outermost ) ; i !== len && null != ( elem = elems [ i ] ) ; i ++ ) { if ( byElement && elem ) { for ( j = 0 , context || elem . ownerDocument === document || ( setDocument ( elem ) , xml = ! documentIsHTML ) ; matcher = elementMatchers [ j ++ ] ; ) if ( matcher ( elem , context || document , xml ) ) { results . push ( elem ) ; break } outermost && ( dirruns = dirrunsUnique ) } bySet && ( ( elem = ! matcher && elem ) && matchedCount -- , seed && unmatched . push ( elem ) ) } if ( matchedCount += i , bySet && i !== matchedCount ) { for ( j = 0 ; matcher = setMatchers [ j ++ ] ; ) matcher ( unmatched , setMatched , context , xml ) ; if ( seed ) { if ( matchedCount > 0 ) for ( ; i -- ; ) unmatched [ i ] || setMatched [ i ] || ( setMatched [ i ] = pop . call ( results ) ) ; setMatched = condense ( setMatched ) } push . apply ( results , setMatched ) , outermost && ! seed && setMatched . length > 0 && matchedCount + setMatchers . length > 1 && Sizzle . uniqueSort ( results ) } return outermost && ( dirruns = dirrunsUnique , outermostContext = contextBackup ) , unmatched } ; return bySet ? markFunction ( superMatcher ) : superMatcher } var i , support , Expr , getText , isXML , tokenize , compile , select , outermostContext , sortInput , hasDuplicate , setDocument , document , docElem , documentIsHTML , rbuggyQSA , rbuggyMatches , matches , contains , expando = "sizzle" + 1 * new Date , preferredDoc = window . document , dirruns = 0 , done = 0 , classCache = createCache ( ) , tokenCache = createCache ( ) , compilerCache = createCache ( ) , sortOrder = function ( a , b ) { return a === b && ( hasDuplicate = ! 0 ) , 0 } , hasOwn = { } . hasOwnProperty , arr = [ ] , pop = arr . pop , push _native = arr . push , push = arr . push , slice = arr . slice , indexOf = function ( list , elem ) { for ( var i = 0 , len = list . length ; i < len ; i ++ ) if ( list [ i ] === elem ) return i ; return - 1 } , booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped" , whitespace = "[\\x20\\t\\r\\n\\f]" , identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+" , attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + "*([*^$|!~]?=)" + whitespace + " * ( ? : '((?:\\\\.|[^\\\\' ] ) * ) '
this } , locked : function ( ) { return ! ! locked } , fireWith : function ( context , args ) { return locked || ( args = args || [ ] , args = [ context , args . slice ? args . slice ( ) : args ] , queue . push ( args ) , firing || fire ( ) ) , this } , fire : function ( ) { return self . fireWith ( this , arguments ) , this } , fired : function ( ) { return ! ! fired } } ; return self } , jQuery . extend ( { Deferred : function ( func ) { var tuples = [ [ "notify" , "progress" , jQuery . Callbacks ( "memory" ) , jQuery . Callbacks ( "memory" ) , 2 ] , [ "resolve" , "done" , jQuery . Callbacks ( "once memory" ) , jQuery . Callbacks ( "once memory" ) , 0 , "resolved" ] , [ "reject" , "fail" , jQuery . Callbacks ( "once memory" ) , jQuery . Callbacks ( "once memory" ) , 1 , "rejected" ] ] , state = "pending" , promise = { state : function ( ) { return state } , always : function ( ) { return deferred . done ( arguments ) . fail ( arguments ) , this } , catch : function ( fn ) { return promise . then ( null , fn ) } , pipe : function ( ) { var fns = arguments ; return jQuery . Deferred ( function ( newDefer ) { jQuery . each ( tuples , function ( i , tuple ) { var fn = jQuery . isFunction ( fns [ tuple [ 4 ] ] ) && fns [ tuple [ 4 ] ] ; deferred [ tuple [ 1 ] ] ( function ( ) { var returned = fn && fn . apply ( this , arguments ) ; returned && jQuery . isFunction ( returned . promise ) ? returned . promise ( ) . progress ( newDefer . notify ) . done ( newDefer . resolve ) . fail ( newDefer . reject ) : newDefer [ tuple [ 0 ] + "With" ] ( this , fn ? [ returned ] : arguments ) } ) } ) , fns = null } ) . promise ( ) } , then : function ( onFulfilled , onRejected , onProgress ) { function resolve ( depth , deferred , handler , special ) { return function ( ) { var that = this , args = arguments , mightThrow = function ( ) { var returned , then ; if ( ! ( depth < maxDepth ) ) { if ( returned = handler . apply ( that , args ) , returned === deferred . promise ( ) ) throw new TypeError ( "Thenable self-resolution" ) ; then = returned && ( "object" == typeof returned || "function" == typeof returned ) && returned . then , jQuery . isFunction ( then ) ? special ? then . call ( returned , resolve ( maxDepth , deferred , Identity , special ) , resolve ( maxDepth , deferred , Thrower , special ) ) : ( maxDepth ++ , then . call ( returned , resolve ( maxDepth , deferred , Identity , special ) , resolve ( maxDepth , deferred , Thrower , special ) , resolve ( maxDepth , deferred , Identity , deferred . notifyWith ) ) ) : ( handler !== Identity && ( that = void 0 , args = [ returned ] ) , ( special || deferred . resolveWith ) ( that , args ) ) } } , process = special ? mightThrow : function ( ) { try { mightThrow ( ) } catch ( e ) { jQuery . Deferred . exceptionHook && jQuery . Deferred . exceptionHook ( e , process . stackTrace ) , depth + 1 >= maxDepth && ( handler !== Thrower && ( that = void 0 , args = [ e ] ) , deferred . rejectWith ( that , args ) ) } } ; depth ? process ( ) : ( jQuery . Deferred . getStackHook && ( process . stackTrace = jQuery . Deferred . getStackHook ( ) ) , window . setTimeout ( process ) ) } } var maxDepth = 0 ; return jQuery . Deferred ( function ( newDefer ) { tuples [ 0 ] [ 3 ] . add ( resolve ( 0 , newDefer , jQuery . isFunction ( onProgress ) ? onProgress : Identity , newDefer . notifyWith ) ) , tuples [ 1 ] [ 3 ] . add ( resolve ( 0 , newDefer , jQuery . isFunction ( onFulfilled ) ? onFulfilled : Identity ) ) , tuples [ 2 ] [ 3 ] . add ( resolve ( 0 , newDefer , jQuery . isFunction ( onRejected ) ? onRejected : Thrower ) ) } ) . promise ( ) } , promise : function ( obj ) { return null != obj ? jQuery . extend ( obj , promise ) : promise } } , deferred = { } ; return jQuery . each ( tuples , function ( i , tuple ) { var list = tuple [ 2 ] , stateString = tuple [ 5 ] ; promise [ tuple [ 1 ] ] = list . add , stateString && list . add ( function ( ) { state = stateString } , tuples [ 3 - i ] [ 2 ] . disable , tuples [ 0 ] [ 2 ] . lock ) , list . add ( tuple [ 3 ] . fire ) , deferred [ tuple [ 0 ] ] = function ( ) { return deferred [ tuple [ 0 ] + "With" ] ( this === deferred ? void 0 : this , arguments ) , this } , deferred [ tuple [ 0 ] + "With" ] = list . fireWith } ) , promise . promise ( deferred ) , func && func . call ( deferred , deferred ) , deferred } , when : function ( singleValue ) { var remaining = arguments . length , i = remaining , resolveContexts = Array ( i ) , resolveValues = slice . call ( arguments ) , master = jQuery . Deferred ( ) , updateFunc = function ( i ) { return function ( value ) { resolveContexts [ i ] = this , resolveValues [ i ] = arguments . length > 1 ? slice . call ( arguments ) : value , -- remaining || master . resolveWith ( resolveContexts , resolveValues ) } } ; if ( remaining <= 1 && ( adoptValue ( singleValue , master . done ( updateFunc ( i ) ) . resolve , master . reject , ! remaining ) , "pending" === master . state ( ) || jQuery . isFunction ( resolveValues [ i ] && resolveValues [ i ] . then ) ) ) return master . then ( ) ; for ( ; i -- ; ) adoptValue ( resolveValues [ i ] , updateFunc ( i ) , master . reject ) ; return master . promise ( ) } } ) ; var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/ ; jQuery . Deferred . exceptionHook = fu
tweeners : { "*" : [ function ( prop , value ) { var tween = this . createTween ( prop , value ) ; return adjustCSS ( tween . elem , prop , rcssNum . exec ( value ) , tween ) , tween } ] } , tweener : function ( props , callback ) { jQuery . isFunction ( props ) ? ( callback = props , props = [ "*" ] ) : props = props . match ( rnothtmlwhite ) ; for ( var prop , index = 0 , length = props . length ; index < length ; index ++ ) prop = props [ index ] , Animation . tweeners [ prop ] = Animation . tweeners [ prop ] || [ ] , Animation . tweeners [ prop ] . unshift ( callback ) } , prefilters : [ defaultPrefilter ] , prefilter : function ( callback , prepend ) { prepend ? Animation . prefilters . unshift ( callback ) : Animation . prefilters . push ( callback ) } } ) , jQuery . speed = function ( speed , easing , fn ) { var opt = speed && "object" == typeof speed ? jQuery . extend ( { } , speed ) : { complete : fn || ! fn && easing || jQuery . isFunction ( speed ) && speed , duration : speed , easing : fn && easing || easing && ! jQuery . isFunction ( easing ) && easing } ; return jQuery . fx . off ? opt . duration = 0 : "number" != typeof opt . duration && ( opt . duration in jQuery . fx . speeds ? opt . duration = jQuery . fx . speeds [ opt . duration ] : opt . duration = jQuery . fx . speeds . _default ) , null != opt . queue && opt . queue !== ! 0 || ( opt . queue = "fx" ) , opt . old = opt . complete , opt . complete = function ( ) { jQuery . isFunction ( opt . old ) && opt . old . call ( this ) , opt . queue && jQuery . dequeue ( this , opt . queue ) } , opt } , jQuery . fn . extend ( { fadeTo : function ( speed , to , easing , callback ) { return this . filter ( isHiddenWithinTree ) . css ( "opacity" , 0 ) . show ( ) . 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 ( ) { var anim = Animation ( this , jQuery . extend ( { } , prop ) , optall ) ; ( empty || dataPriv . get ( this , "finish" ) ) && anim . stop ( ! 0 ) } ; return doAnimation . finish = doAnimation , empty || optall . queue === ! 1 ? 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 ) } ; return "string" != typeof type && ( gotoEnd = clearQueue , clearQueue = type , type = void 0 ) , clearQueue && type !== ! 1 && this . queue ( type || "fx" , [ ] ) , this . each ( function ( ) { var dequeue = ! 0 , index = null != type && type + "queueHooks" , timers = jQuery . timers , data = dataPriv . get ( this ) ; if ( index ) data [ index ] && data [ index ] . stop && stopQueue ( data [ index ] ) ; else for ( index in data ) data [ index ] && data [ index ] . stop && rrun . test ( index ) && stopQueue ( data [ index ] ) ; for ( index = timers . length ; index -- ; ) timers [ index ] . elem !== this || null != type && timers [ index ] . queue !== type || ( timers [ index ] . anim . stop ( gotoEnd ) , dequeue = ! 1 , timers . splice ( index , 1 ) ) ; ! dequeue && gotoEnd || jQuery . dequeue ( this , type ) } ) } , finish : function ( type ) { return type !== ! 1 && ( type = type || "fx" ) , this . each ( function ( ) { var index , data = dataPriv . get ( this ) , queue = data [ type + "queue" ] , hooks = data [ type + "queueHooks" ] , timers = jQuery . timers , length = queue ? queue . length : 0 ; for ( data . finish = ! 0 , jQuery . queue ( this , type , [ ] ) , hooks && hooks . stop && hooks . stop . call ( this , ! 0 ) , index = timers . length ; index -- ; ) timers [ index ] . elem === this && timers [ index ] . queue === type && ( timers [ index ] . anim . stop ( ! 0 ) , timers . splice ( index , 1 ) ) ; for ( index = 0 ; index < length ; index ++ ) queue [ index ] && queue [ index ] . finish && queue [ index ] . finish . call ( this ) ; delete data . finish } ) } } ) , jQuery . each ( [ "toggle" , "show" , "hide" ] , function ( i , name ) { var cssFn = jQuery . fn [ name ] ; jQuery . fn [ name ] = function ( speed , easing , callback ) { return null == speed || "boolean" == typeof speed ? cssFn . apply ( this , arguments ) : this . animate ( genFx ( name , ! 0 ) , speed , easing , callback ) } } ) , 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 . timers = [ ] , jQuery . fx . tick = function ( ) { var timer , i = 0 , timers = jQuery . timers ; for ( fxNow = jQuery . now ( ) ; i < timers . length ; i ++ ) timer = timers [ i ] , timer ( ) || timers [ i ] !== timer || timers . splice ( i -- , 1 ) ; timers . length || jQuery . fx . stop ( ) , fxNow = void 0 } , jQuery . fx . timer = function ( timer ) { jQuery . timers . push ( timer ) , jQuery . fx . start ( ) } , jQuery . fx . interval = 13 , jQuery . fx . start = function ( ) { inProgress || ( inProgress = ! 0 , schedule ( ) ) } , jQuery . fx . stop = function ( ) { inProgress = null } , jQuery . fx . speeds = { slow : 600 , fast : 200 , _defau
} ) ; var doc , docElem , rect , win , elem = this [ 0 ] ; if ( elem ) return elem . getClientRects ( ) . length ? ( rect = elem . getBoundingClientRect ( ) , doc = elem . ownerDocument , docElem = doc . documentElement , win = doc . defaultView , { top : rect . top + win . pageYOffset - docElem . clientTop , left : rect . left + win . pageXOffset - docElem . clientLeft } ) : { top : 0 , left : 0 } } , position : function ( ) { if ( this [ 0 ] ) { var offsetParent , offset , elem = this [ 0 ] , parentOffset = { top : 0 , left : 0 } ; return "fixed" === jQuery . css ( elem , "position" ) ? offset = elem . getBoundingClientRect ( ) : ( offsetParent = this . offsetParent ( ) , offset = this . offset ( ) , nodeName ( offsetParent [ 0 ] , "html" ) || ( parentOffset = offsetParent . offset ( ) ) , parentOffset = { top : parentOffset . top + jQuery . css ( offsetParent [ 0 ] , "borderTopWidth" , ! 0 ) , left : parentOffset . left + jQuery . css ( offsetParent [ 0 ] , "borderLeftWidth" , ! 0 ) } ) , { top : offset . top - parentOffset . top - jQuery . css ( elem , "marginTop" , ! 0 ) , left : offset . left - parentOffset . left - jQuery . css ( elem , "marginLeft" , ! 0 ) } } } , offsetParent : function ( ) { return this . map ( function ( ) { for ( var offsetParent = this . offsetParent ; offsetParent && "static" === jQuery . css ( offsetParent , "position" ) ; ) offsetParent = offsetParent . offsetParent ; return offsetParent || documentElement } ) } } ) , jQuery . each ( { scrollLeft : "pageXOffset" , scrollTop : "pageYOffset" } , function ( method , prop ) { var top = "pageYOffset" === prop ; jQuery . fn [ method ] = function ( val ) { return access ( this , function ( elem , method , val ) { var win ; return jQuery . isWindow ( elem ) ? win = elem : 9 === elem . nodeType && ( win = elem . defaultView ) , void 0 === val ? win ? win [ prop ] : elem [ method ] : void ( win ? win . scrollTo ( top ? win . pageXOffset : val , top ? val : win . pageYOffset ) : elem [ method ] = val ) } , method , val , arguments . length ) } } ) , jQuery . each ( [ "top" , "left" ] , function ( i , prop ) { jQuery . cssHooks [ prop ] = addGetHookIf ( support . pixelPosition , function ( elem , computed ) { if ( computed ) return computed = curCSS ( elem , prop ) , rnumnonpx . test ( computed ) ? jQuery ( elem ) . position ( ) [ prop ] + "px" : computed } ) } ) , jQuery . each ( { Height : "height" , Width : "width" } , function ( name , type ) { jQuery . each ( { padding : "inner" + name , content : type , "" : "outer" + name } , function ( defaultExtra , funcName ) { jQuery . fn [ funcName ] = function ( margin , value ) { var chainable = arguments . length && ( defaultExtra || "boolean" != typeof margin ) , extra = defaultExtra || ( margin === ! 0 || value === ! 0 ? "margin" : "border" ) ; return access ( this , function ( elem , type , value ) { var doc ; return jQuery . isWindow ( elem ) ? 0 === funcName . indexOf ( "outer" ) ? elem [ "inner" + name ] : elem . document . documentElement [ "client" + name ] : 9 === elem . nodeType ? ( doc = elem . documentElement , Math . max ( elem . body [ "scroll" + name ] , doc [ "scroll" + name ] , elem . body [ "offset" + name ] , doc [ "offset" + name ] , doc [ "client" + name ] ) ) : void 0 === value ? jQuery . css ( elem , type , extra ) : jQuery . style ( elem , type , value , extra ) } , type , chainable ? margin : void 0 , chainable ) } } ) } ) , jQuery . fn . extend ( { bind : function ( types , data , fn ) { return this . on ( types , null , data , fn ) } , unbind : function ( types , fn ) { return this . off ( types , null , fn ) } , delegate : function ( selector , types , data , fn ) { return this . on ( types , selector , data , fn ) } , undelegate : function ( selector , types , fn ) { return 1 === arguments . length ? this . off ( selector , "**" ) : this . off ( types , selector || "**" , fn ) } } ) , jQuery . holdReady = function ( hold ) { hold ? jQuery . readyWait ++ : jQuery . ready ( ! 0 ) } , jQuery . isArray = Array . isArray , jQuery . parseJSON = JSON . parse , jQuery . nodeName = nodeName , "function" == typeof define && define . amd && define ( "jquery" , [ ] , function ( ) { return jQuery } ) ; var _jQuery = window . jQuery , _$ = window . $ ; return jQuery . noConflict = function ( deep ) { return window . $ === jQuery && ( window . $ = _$ ) , deep && window . jQuery === jQuery && ( window . jQuery = _jQuery ) , jQuery } , noGlobal || ( window . jQuery = window . $ = jQuery ) , jQuery } ) ;