From 86882c1acaafecdf77d6664d75e518329d69ffb8 Mon Sep 17 00:00:00 2001 From: Yusuke Oda Date: Fri, 31 Aug 2018 15:50:53 +0900 Subject: [PATCH 1/4] first commit for sphinx. --- .gitignore | 1 + docs/Makefile | 20 + docs/build/doctrees/environment.pickle | Bin 0 -> 1455591 bytes docs/build/doctrees/index.doctree | Bin 0 -> 4836 bytes docs/build/html/.buildinfo | 4 + docs/build/html/_sources/index.rst.txt | 20 + docs/build/html/_static/ajax-loader.gif | Bin 0 -> 673 bytes docs/build/html/_static/alabaster.css | 688 ++ docs/build/html/_static/basic.css | 665 + docs/build/html/_static/comment-bright.png | Bin 0 -> 756 bytes docs/build/html/_static/comment-close.png | Bin 0 -> 829 bytes docs/build/html/_static/comment.png | Bin 0 -> 641 bytes docs/build/html/_static/custom.css | 1 + docs/build/html/_static/doctools.js | 313 + .../html/_static/documentation_options.js | 9 + docs/build/html/_static/down-pressed.png | Bin 0 -> 222 bytes docs/build/html/_static/down.png | Bin 0 -> 202 bytes docs/build/html/_static/file.png | Bin 0 -> 286 bytes docs/build/html/_static/jquery-3.2.1.js | 10253 ++++++++++++++++ docs/build/html/_static/jquery.js | 4 + docs/build/html/_static/minus.png | Bin 0 -> 90 bytes docs/build/html/_static/plus.png | Bin 0 -> 90 bytes docs/build/html/_static/pygments.css | 69 + docs/build/html/_static/searchtools.js | 761 ++ docs/build/html/_static/underscore-1.3.1.js | 999 ++ docs/build/html/_static/underscore.js | 31 + docs/build/html/_static/up-pressed.png | Bin 0 -> 214 bytes docs/build/html/_static/up.png | Bin 0 -> 203 bytes docs/build/html/_static/websupport.js | 808 ++ docs/build/html/genindex.html | 97 + docs/build/html/index.html | 106 + docs/build/html/objects.inv | Bin 0 -> 260 bytes docs/build/html/search.html | 108 + docs/build/html/searchindex.js | 1 + docs/make.bat | 36 + docs/source/conf.py | 167 + docs/source/index.rst | 20 + docs/source/requirements.txt | 1 + 38 files changed, 15182 insertions(+) create mode 100644 docs/Makefile create mode 100644 docs/build/doctrees/environment.pickle create mode 100644 docs/build/doctrees/index.doctree create mode 100644 docs/build/html/.buildinfo create mode 100644 docs/build/html/_sources/index.rst.txt create mode 100644 docs/build/html/_static/ajax-loader.gif create mode 100644 docs/build/html/_static/alabaster.css create mode 100644 docs/build/html/_static/basic.css create mode 100644 docs/build/html/_static/comment-bright.png create mode 100644 docs/build/html/_static/comment-close.png create mode 100644 docs/build/html/_static/comment.png create mode 100644 docs/build/html/_static/custom.css create mode 100644 docs/build/html/_static/doctools.js create mode 100644 docs/build/html/_static/documentation_options.js create mode 100644 docs/build/html/_static/down-pressed.png create mode 100644 docs/build/html/_static/down.png create mode 100644 docs/build/html/_static/file.png create mode 100644 docs/build/html/_static/jquery-3.2.1.js create mode 100644 docs/build/html/_static/jquery.js create mode 100644 docs/build/html/_static/minus.png create mode 100644 docs/build/html/_static/plus.png create mode 100644 docs/build/html/_static/pygments.css create mode 100644 docs/build/html/_static/searchtools.js create mode 100644 docs/build/html/_static/underscore-1.3.1.js create mode 100644 docs/build/html/_static/underscore.js create mode 100644 docs/build/html/_static/up-pressed.png create mode 100644 docs/build/html/_static/up.png create mode 100644 docs/build/html/_static/websupport.js create mode 100644 docs/build/html/genindex.html create mode 100644 docs/build/html/index.html create mode 100644 docs/build/html/objects.inv create mode 100644 docs/build/html/search.html create mode 100644 docs/build/html/searchindex.js create mode 100644 docs/make.bat create mode 100644 docs/source/conf.py create mode 100644 docs/source/index.rst create mode 100644 docs/source/requirements.txt diff --git a/.gitignore b/.gitignore index f6c6212..57465da 100644 --- a/.gitignore +++ b/.gitignore @@ -6,5 +6,6 @@ __pycache__ ./*.egg-info ./build ./dist +./docs/build ./primitiv/_trainer.h ./primitiv/_trainer_api.h diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..042d830 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SPHINXPROJ = primitiv-python +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..680aaed5f5a84eb0e0f11b4595e421d924387e0b GIT binary patch literal 1455591 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 -Dg&f`_?U8Tn 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⪻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') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) === 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this === '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + }, + + initOnKeyListeners: function() { + $(document).keyup(function(event) { + var activeElementType = document.activeElement.tagName; + // don't navigate when in search box or textarea + if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { + switch (event.keyCode) { + case 37: // left + var prevHref = $('link[rel="prev"]').prop('href'); + if (prevHref) { + window.location.href = prevHref; + return false; + } + case 39: // right + var nextHref = $('link[rel="next"]').prop('href'); + if (nextHref) { + window.location.href = nextHref; + return false; + } + } + } + }); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); \ No newline at end of file diff --git a/docs/build/html/_static/documentation_options.js b/docs/build/html/_static/documentation_options.js new file mode 100644 index 0000000..893cd39 --- /dev/null +++ b/docs/build/html/_static/documentation_options.js @@ -0,0 +1,9 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '', + LANGUAGE: 'None', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' +}; \ No newline at end of file diff --git a/docs/build/html/_static/down-pressed.png b/docs/build/html/_static/down-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..5756c8cad8854722893dc70b9eb4bb0400343a39 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`OFdm2Ln;`PZ^+1>KjR?B@S0W7 z%OS_REiHONoJ6{+Ks@6k3590|7k9F+ddB6!zw3#&!aw#S`x}3V3&=A(a#84O-&F7T z^k3tZB;&iR9siw0|F|E|DAL<8r-F4!1H-;1{e*~yAKZN5f0|Ei6yUmR#Is)EM(Po_ zi`qJR6|P<~+)N+kSDgL7AjdIC_!O7Q?eGb+L+qOjm{~LLinM4NHn7U%HcK%uoMYO5 VJ~8zD2B3o(JYD@<);T3K0RV0%P>BEl literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/down.png b/docs/build/html/_static/down.png new file mode 100644 index 0000000000000000000000000000000000000000..1b3bdad2ceffae91cee61b32f3295f9bbe646e48 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6CVIL!hEy=F?b*7pIY7kW{q%Rg zx!yQ<9v8bmJwa`TQk7YSw}WVQ()mRdQ;TC;* literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/file.png b/docs/build/html/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/jquery-3.2.1.js b/docs/build/html/_static/jquery-3.2.1.js new file mode 100644 index 0000000..d2d8ca4 --- /dev/null +++ b/docs/build/html/_static/jquery-3.2.1.js @@ -0,0 +1,10253 @@ +/*! + * jQuery JavaScript Library v3.2.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2017-03-20T18:59Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var document = window.document; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + + + + function DOMEval( code, doc ) { + doc = doc || document; + + var script = doc.createElement( "script" ); + + script.text = code; + doc.head.appendChild( script ).parentNode.removeChild( script ); + } +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.2.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && Array.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // As of jQuery 3.0, isNumeric is limited to + // strings and numbers (primitives or objects) + // that can be coerced to finite numbers (gh-2662) + var type = jQuery.type( obj ); + return ( type === "number" || type === "string" ) && + + // parseFloat NaNs numeric-cast false positives ("") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + !isNaN( obj - parseFloat( obj ) ); + }, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + DOMEval( code ); + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE <=9 - 11, Edge 12 - 13 + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.3 + * https://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-08-08 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; 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", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + disabledAncestor = addCombinator( + function( elem ) { + return elem.disabled === true && ("form" in elem || "label" in elem); + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + disabledAncestor( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( preferredDoc !== document && + (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( el ) { + el.className = "i"; + return !el.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( el ) { + el.appendChild( document.createComment("") ); + return !el.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID filter and find + if ( support.getById ) { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( (elem = elems[i++]) ) { + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( el ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( el ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + 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, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( el ) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( el ) { + return el.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Simple selector that can be filtered directly, removing non-Elements + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + // Complex selector, compare the two sets, removing non-Elements + qualifier = jQuery.filter( qualifier, elements ); + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; + } ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( nodeName( elem, "iframe" ) ) { + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && jQuery.isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "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() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( jQuery.isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ jQuery.camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ jQuery.camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( jQuery.camelCase ); + } else { + key = jQuery.camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + jQuery.contains( elem.ownerDocument, elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + + + +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" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE <=9 only + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +// Support: IE <=9 only +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); +var documentElement = document.documentElement; + + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 only +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + // Make a writable jQuery.Event from the native event object + var event = jQuery.event.fix( nativeEvent ); + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: jQuery.isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( ">tbody", elem )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rmargin = ( /^margin/ ); + +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + div.style.cssText = + "box-sizing:border-box;" + + "position:relative;display:block;" + + "margin:auto;border:1px;padding:1px;" + + "top:1%;width:50%"; + div.innerHTML = ""; + documentElement.appendChild( container ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = divStyle.marginLeft === "2px"; + boxSizingReliableVal = divStyle.width === "4px"; + + // Support: Android 4.0 - 4.3 only + // Some styles come back with percentage values, even though they shouldn't + div.style.marginRight = "50%"; + pixelMarginRightVal = divStyle.marginRight === "4px"; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + + "padding:0;margin-top:1px;position:absolute"; + container.appendChild( div ); + + jQuery.extend( support, { + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelMarginRight: function() { + computeStyleTests(); + return pixelMarginRightVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }, + + cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style; + +// Return a css property mapped to a potentially vendor prefixed property +function vendorPropName( name ) { + + // Shortcut for names that are not vendor prefixed + if ( name in emptyStyle ) { + return name; + } + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a property mapped along what jQuery.cssProps suggests or to +// a vendor prefixed property. +function finalPropName( name ) { + var ret = jQuery.cssProps[ name ]; + if ( !ret ) { + ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; + } + return ret; +} + +function setPositiveNumber( elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i, + val = 0; + + // If we already have the right measurement, avoid augmentation + if ( extra === ( isBorderBox ? "border" : "content" ) ) { + i = 4; + + // Otherwise initialize for horizontal or vertical properties + } else { + i = name === "width" ? 1 : 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // At this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + + // At this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // At this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with computed style + var valueIsBorderBox, + styles = getStyles( elem ), + val = curCSS( elem, name, styles ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test( val ) ) { + return val; + } + + // Check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && + ( support.boxSizingReliable() || val === elem.style[ name ] ); + + // Fall back to offsetWidth/Height when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + if ( val === "auto" ) { + val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ]; + } + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + + // Use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + "float": "cssFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + if ( type === "number" ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = jQuery.camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, name ) { + jQuery.cssHooks[ name ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, name, extra ); + } ) : + getWidthOrHeight( elem, name, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = extra && getStyles( elem ), + subtract = extra && augmentWidthOrHeight( + elem, + name, + extra, + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + styles + ); + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ name ] = value; + value = jQuery.css( elem, name ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( !rmargin.test( prefix ) ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +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 || jQuery.easing._default; + 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; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && 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. + // 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 available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && + ( 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: IE <=9 only +// 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.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = jQuery.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise 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; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.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 defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + 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() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 13 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + 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 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +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 ( Array.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 won't overwrite existing keys. + // Reusing 'index' 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; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.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 ), + + // Support: Android 2.3 only + // 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 there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, 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.notifyWith( elem, [ animation, 1, 0 ] ); + 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 = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( jQuery.isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + jQuery.proxy( result.stop, result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( jQuery.isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( 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 + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + 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.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).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 || dataPriv.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 = dataPriv.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 = dataPriv.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; + } ); + } +} ); + +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 ); + }; +} ); + +// 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.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = jQuery.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( type === "string" ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = value.match( rnothtmlwhite ) || []; + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, isFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup contextmenu" ).split( " " ), + function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; +} ); + +jQuery.fn.extend( { + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +} ); + + + + +support.focusin = "onfocusin" in window; + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = jQuery.now(); + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && jQuery.type( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = jQuery.isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( jQuery.isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match == null ? null : match; + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 13 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available, append data to url + if ( s.data ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + "throws": true + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( jQuery.isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + + + + + + + + + + + + +
+
+
+ + +
+ + +

Index

+ +
+ +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/index.html b/docs/build/html/index.html new file mode 100644 index 0000000..ad1a7f9 --- /dev/null +++ b/docs/build/html/index.html @@ -0,0 +1,106 @@ + + + + + + + + Welcome to primitiv-python’s documentation! — primitiv-python documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Welcome to primitiv-python’s documentation!

+
+
+
+
+

Indices and tables

+ +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..e31d09fdc4a43ad9396db6344579e6bb41562013 GIT binary patch literal 260 zcmY#Z2rkIT%&Sny%qvUHE6FdaR47X=D$dN$Q!wIERtPA{&q_@$u~H}~%FN9y$t=?? zs4U6I&jU(@L6li30NEiKsR~7@xrv#1DXB#Y`DqFz8JWcjX_+~x3P3tJKewPLwYWGn zMWM7fGcR4CDkn2ZkE`OAxBuDGXS_Yv259JcZan4b<8?Ohf@z3Hd)KSfDNmkhR5Z + + + + + + Search — primitiv-python documentation + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Search

+
+ +

+ Please activate JavaScript to enable the search + functionality. +

+
+

+ From here you can search these documents. Enter your search + words into the box below and click "search". Note that the search + function will automatically search for all of the words. Pages + containing fewer words won't appear in the result list. +

+
+ + + +
+ +
+ +
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js new file mode 100644 index 0000000..c592ce1 --- /dev/null +++ b/docs/build/html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({docnames:["index"],envversion:53,filenames:["index.rst"],objects:{},objnames:{},objtypes:{},terms:{index:0,modul:0,page:0,search:0},titles:["Welcome to primitiv-python\u2019s documentation!"],titleterms:{document:0,indic:0,primitiv:0,python:0,tabl:0,welcom:0}}) \ No newline at end of file diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000..673be75 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,36 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build +set SPHINXPROJ=primitiv-python + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 0000000..9bec3bc --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,167 @@ +# -*- coding: utf-8 -*- +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/master/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + + +# -- Project information ----------------------------------------------------- + +project = 'primitiv-python' +copyright = '2018, primitiv Developer Group' +author = 'primitiv Developer Group' + +# The short X.Y version +version = '' +# The full version, including alpha/beta/rc tags +release = '' + + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.intersphinx', + 'sphinx.ext.mathjax', + 'sphinx.ext.viewcode', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path . +exclude_patterns = [] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'alabaster' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} + + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'primitiv-pythondoc' + + +# -- Options for LaTeX output ------------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'primitiv-python.tex', 'primitiv-python Documentation', + 'primitiv Developer Group', 'manual'), +] + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'primitiv-python', 'primitiv-python Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'primitiv-python', 'primitiv-python Documentation', + author, 'primitiv-python', 'One line description of project.', + 'Miscellaneous'), +] + + +# -- Extension configuration ------------------------------------------------- + +# -- Options for intersphinx extension --------------------------------------- + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'https://docs.python.org/': None} diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 0000000..39a90f3 --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,20 @@ +.. primitiv-python documentation master file, created by + sphinx-quickstart on Fri Aug 31 15:40:36 2018. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to primitiv-python's documentation! +=========================================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/docs/source/requirements.txt b/docs/source/requirements.txt new file mode 100644 index 0000000..5e28126 --- /dev/null +++ b/docs/source/requirements.txt @@ -0,0 +1 @@ +sqhinx>=1.7 From 4f3a9456927ceab31f13120dad0dea0a5a253a8c Mon Sep 17 00:00:00 2001 From: Yusuke Oda Date: Fri, 31 Aug 2018 16:00:29 +0900 Subject: [PATCH 2/4] fix typo. --- docs/source/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/requirements.txt b/docs/source/requirements.txt index 5e28126..01f90a9 100644 --- a/docs/source/requirements.txt +++ b/docs/source/requirements.txt @@ -1 +1 @@ -sqhinx>=1.7 +sphinx>=1.7 From 0008685f49d3a967060db8499119385348cd7a0a Mon Sep 17 00:00:00 2001 From: Yusuke Oda Date: Fri, 31 Aug 2018 16:06:23 +0900 Subject: [PATCH 3/4] change style. --- docs/source/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 9bec3bc..79f7c7f 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -78,7 +78,7 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -html_theme = 'alabaster' +html_theme = 'sphinx_rtd_theme' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the From 83331a68768c545bca4def43f182a5cb4ed48e7b Mon Sep 17 00:00:00 2001 From: Yusuke Oda Date: Fri, 31 Aug 2018 16:39:54 +0900 Subject: [PATCH 4/4] Add top description. --- docs/source/index.rst | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/docs/source/index.rst b/docs/source/index.rst index 39a90f3..26fefca 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -1,10 +1,24 @@ -.. primitiv-python documentation master file, created by - sphinx-quickstart on Fri Aug 31 15:40:36 2018. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. +============================= +primitiv-python Documentation +============================= + + +`primitiv `_ +is a neural network library developed by +`National Institute of Information and Communications Technology (NICT) `_ +and +`Nara Institute of Science and Technology (NAIST) `_. +primitiv allows users to write their own networks using a *define-by-run* style +construction methods, and most features in the library is designed +device-independent. +Users can perform the own network using various computing backends such as +Eigen, CUDA and OpenCL with no (or few) modifications of the original code. + +This document describes the official Python frontend of the primitiv library. +If you prefer to know about the primitiv C++ core library, follow +`the documentation of the core library `_. + -Welcome to primitiv-python's documentation! -=========================================== .. toctree:: :maxdepth: 2

}SUy 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�MD@LFgDv|*1P|jJLL5qxoIf_5hDB|?S@`1Z z)!yi-$@vIpU}9K|P!L1@6zje&_y23NQ2r)4MWKyC^h@dqi_S0D(^on#8HSPqxX#>i zr8zWmeP+_gd?z+6wh_*8AD_$@E18yi^gSPenz(7DuTBov^Kb}@!5r46_9xI8478`=UdZT(mEqr2;Qn|yg8LykklRvJ%bz7r!X7{}dT)3~wH;CZxQF+%oFOo! zy7p0&>c99n0fu2ZCW>`8WCqsG=#hUM(Awk9?eNkW_S^w><4HX&4$5`8JwfhCG?~s? zhFxCw^yraDbUv&0giYqrJY+N*NGj3Xu57C!kt9!Tjp6F=znFgqHl;Y{b^Xd_$DlK0 zrW};w$xw*@)yZ2q`TPX#(q{WDoY;s{pI`<-o&|>WxN(JY?hn4ZxAUFvNe0_w0?OW< zv^SDatb7L@Y^(2c2VH`a_lkerdW`hZaEa&-Y}-{IH!ShxORr#&>o?Q+;i2TP;AFLU z;@fk^Kg|xq0YcKAt3_siv!2*OyBMUDwC~tZ{pHUkH7@0C-cNReO(~aF};L!EdY2%{=%H$eD+Cz%MXG$-$ zVEJTs{g>%I?n6Si(hQXU*xZj⪼NfNPnjXencM1cB{x3kxr)_8%EK%&9%grIy23} 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"QsZKMa6Da25=K;SdQUAQ~EwWh00unFteL5?l;E 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 literal 0 HcmV?d00001 diff --git a/docs/build/html/.buildinfo b/docs/build/html/.buildinfo new file mode 100644 index 0000000..4b172ff --- /dev/null +++ b/docs/build/html/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 3d45a5ad590372ca1693ddcc8abd2595 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/build/html/_sources/index.rst.txt b/docs/build/html/_sources/index.rst.txt new file mode 100644 index 0000000..39a90f3 --- /dev/null +++ b/docs/build/html/_sources/index.rst.txt @@ -0,0 +1,20 @@ +.. primitiv-python documentation master file, created by + sphinx-quickstart on Fri Aug 31 15:40:36 2018. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to primitiv-python's documentation! +=========================================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/docs/build/html/_static/ajax-loader.gif b/docs/build/html/_static/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..61faf8cab23993bd3e1560bff0668bd628642330 GIT binary patch literal 673 zcmZ?wbhEHb6krfw_{6~Q|Nno%(3)e{?)x>&1u}A`t?OF7Z|1gRivOgXi&7IyQd1Pl zGfOfQ60;I3a`F>X^fL3(@);C=vM_KlFfb_o=k{|A33hf2a5d61U}gjg=>Rd%XaNQW zW@Cw{|b%Y*pl8F?4B9 zlo4Fz*0kZGJabY|>}Okf0}CCg{u4`zEPY^pV?j2@h+|igy0+Kz6p;@SpM4s6)XEMg z#3Y4GX>Hjlml5ftdH$4x0JGdn8~MX(U~_^d!Hi)=HU{V%g+mi8#UGbE-*ao8f#h+S z2a0-5+vc7MU$e-NhmBjLIC1v|)9+Im8x1yacJ7{^tLX(ZhYi^rpmXm0`@ku9b53aN zEXH@Y3JaztblgpxbJt{AtE1ad1Ca>{v$rwwvK(>{m~Gf_=-Ro7Fk{#;i~+{{>QtvI yb2P8Zac~?~=sRA>$6{!(^3;ZP0TPFR(G_-UDU(8Jl0?(IXu$~#4A!880|o%~Al1tN literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/alabaster.css b/docs/build/html/_static/alabaster.css new file mode 100644 index 0000000..25e7738 --- /dev/null +++ b/docs/build/html/_static/alabaster.css @@ -0,0 +1,688 @@ +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: Georgia, serif; + font-size: 17px; + background-color: #fff; + color: #000; + margin: 0; + padding: 0; +} + + +div.document { + width: 940px; + margin: 30px auto 0 auto; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 220px; +} + +div.sphinxsidebar { + width: 220px; + font-size: 14px; + line-height: 1.5; +} + +hr { + border: 1px solid #B1B4B6; +} + +div.body { + background-color: #fff; + color: #3E4349; + padding: 0 30px 0 30px; +} + +div.body > .section { + text-align: left; +} + +div.footer { + width: 940px; + margin: 20px auto 30px auto; + font-size: 14px; + color: #888; + text-align: right; +} + +div.footer a { + color: #888; +} + +p.caption { + font-family: inherit; + font-size: inherit; +} + + +div.relations { + display: none; +} + + +div.sphinxsidebar a { + color: #444; + text-decoration: none; + border-bottom: 1px dotted #999; +} + +div.sphinxsidebar a:hover { + border-bottom: 1px solid #999; +} + +div.sphinxsidebarwrapper { + padding: 18px 10px; +} + +div.sphinxsidebarwrapper p.logo { + padding: 0; + margin: -10px 0 0 0px; + text-align: center; +} + +div.sphinxsidebarwrapper h1.logo { + margin-top: -10px; + text-align: center; + margin-bottom: 5px; + text-align: left; +} + +div.sphinxsidebarwrapper h1.logo-name { + margin-top: 0px; +} + +div.sphinxsidebarwrapper p.blurb { + margin-top: 0; + font-style: normal; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: Georgia, serif; + color: #444; + font-size: 24px; + font-weight: normal; + margin: 0 0 5px 0; + padding: 0; +} + +div.sphinxsidebar h4 { + font-size: 20px; +} + +div.sphinxsidebar h3 a { + color: #444; +} + +div.sphinxsidebar p.logo a, +div.sphinxsidebar h3 a, +div.sphinxsidebar p.logo a:hover, +div.sphinxsidebar h3 a:hover { + border: none; +} + +div.sphinxsidebar p { + color: #555; + margin: 10px 0; +} + +div.sphinxsidebar ul { + margin: 10px 0; + padding: 0; + color: #000; +} + +div.sphinxsidebar ul li.toctree-l1 > a { + font-size: 120%; +} + +div.sphinxsidebar ul li.toctree-l2 > a { + font-size: 110%; +} + +div.sphinxsidebar input { + border: 1px solid #CCC; + font-family: Georgia, serif; + font-size: 1em; +} + +div.sphinxsidebar hr { + border: none; + height: 1px; + color: #AAA; + background: #AAA; + + text-align: left; + margin-left: 0; + width: 50%; +} + +/* -- body styles ----------------------------------------------------------- */ + +a { + color: #004B6B; + text-decoration: underline; +} + +a:hover { + color: #6D4100; + text-decoration: underline; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: Georgia, serif; + font-weight: normal; + margin: 30px 0px 10px 0px; + padding: 0; +} + +div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } +div.body h2 { font-size: 180%; } +div.body h3 { font-size: 150%; } +div.body h4 { font-size: 130%; } +div.body h5 { font-size: 100%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #DDD; + padding: 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + color: #444; + background: #EAEAEA; +} + +div.body p, div.body dd, div.body li { + line-height: 1.4em; +} + +div.admonition { + margin: 20px 0px; + padding: 10px 30px; + background-color: #EEE; + border: 1px solid #CCC; +} + +div.admonition tt.xref, div.admonition code.xref, div.admonition a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fafafa; +} + +div.admonition p.admonition-title { + font-family: Georgia, serif; + font-weight: normal; + font-size: 24px; + margin: 0 0 10px 0; + padding: 0; + line-height: 1; +} + +div.admonition p.last { + margin-bottom: 0; +} + +div.highlight { + background-color: #fff; +} + +dt:target, .highlight { + background: #FAF3E8; +} + +div.warning { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.danger { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.error { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.caution { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.attention { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.important { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.note { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.tip { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.hint { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.seealso { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.topic { + background-color: #EEE; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre, tt, code { + font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; + font-size: 0.9em; +} + +.hll { + background-color: #FFC; + margin: 0 -12px; + padding: 0 12px; + display: block; +} + +img.screenshot { +} + +tt.descname, tt.descclassname, code.descname, code.descclassname { + font-size: 0.95em; +} + +tt.descname, code.descname { + padding-right: 0.08em; +} + +img.screenshot { + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils { + border: 1px solid #888; + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils td, table.docutils th { + border: 1px solid #888; + padding: 0.25em 0.7em; +} + +table.field-list, table.footnote { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +table.footnote { + margin: 15px 0; + width: 100%; + border: 1px solid #EEE; + background: #FDFDFD; + font-size: 0.9em; +} + +table.footnote + table.footnote { + margin-top: -15px; + border-top: none; +} + +table.field-list th { + padding: 0 0.8em 0 0; +} + +table.field-list td { + padding: 0; +} + +table.field-list p { + margin-bottom: 0.8em; +} + +/* Cloned from + * https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68 + */ +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +table.footnote td.label { + width: .1px; + padding: 0.3em 0 0.3em 0.5em; +} + +table.footnote td { + padding: 0.3em 0.5em; +} + +dl { + margin: 0; + padding: 0; +} + +dl dd { + margin-left: 30px; +} + +blockquote { + margin: 0 0 0 30px; + padding: 0; +} + +ul, ol { + /* Matches the 30px from the narrow-screen "li > ul" selector below */ + margin: 10px 0 10px 30px; + padding: 0; +} + +pre { + background: #EEE; + padding: 7px 30px; + margin: 15px 0px; + line-height: 1.3em; +} + +div.viewcode-block:target { + background: #ffd; +} + +dl pre, blockquote pre, li pre { + margin-left: 0; + padding-left: 30px; +} + +tt, code { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ +} + +tt.xref, code.xref, a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fff; +} + +a.reference { + text-decoration: none; + border-bottom: 1px dotted #004B6B; +} + +/* Don't put an underline on images */ +a.image-reference, a.image-reference:hover { + border-bottom: none; +} + +a.reference:hover { + border-bottom: 1px solid #6D4100; +} + +a.footnote-reference { + text-decoration: none; + font-size: 0.7em; + vertical-align: top; + border-bottom: 1px dotted #004B6B; +} + +a.footnote-reference:hover { + border-bottom: 1px solid #6D4100; +} + +a:hover tt, a:hover code { + background: #EEE; +} + + +@media screen and (max-width: 870px) { + + div.sphinxsidebar { + display: none; + } + + div.document { + width: 100%; + + } + + div.documentwrapper { + margin-left: 0; + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + } + + div.bodywrapper { + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + margin-left: 0; + } + + ul { + margin-left: 0; + } + + li > ul { + /* Matches the 30px from the "ul, ol" selector above */ + margin-left: 30px; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .bodywrapper { + margin: 0; + } + + .footer { + width: auto; + } + + .github { + display: none; + } + + + +} + + + +@media screen and (max-width: 875px) { + + body { + margin: 0; + padding: 20px 30px; + } + + div.documentwrapper { + float: none; + background: #fff; + } + + div.sphinxsidebar { + display: block; + float: none; + width: 102.5%; + margin: 50px -30px -20px -30px; + padding: 10px 20px; + background: #333; + color: #FFF; + } + + div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, + div.sphinxsidebar h3 a { + color: #fff; + } + + div.sphinxsidebar a { + color: #AAA; + } + + div.sphinxsidebar p.logo { + display: none; + } + + div.document { + width: 100%; + margin: 0; + } + + div.footer { + display: none; + } + + div.bodywrapper { + margin: 0; + } + + div.body { + min-height: 0; + padding: 0; + } + + .rtd_doc_footer { + display: none; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .footer { + width: auto; + } + + .github { + display: none; + } +} + + +/* misc. */ + +.revsys-inline { + display: none!important; +} + +/* Make nested-list/multi-paragraph items look better in Releases changelog + * pages. Without this, docutils' magical list fuckery causes inconsistent + * formatting between different release sub-lists. + */ +div#changelog > div.section > ul > li > p:only-child { + margin-bottom: 0; +} + +/* Hide fugly table cell borders in ..bibliography:: directive output */ +table.docutils.citation, table.docutils.citation td, table.docutils.citation th { + border: none; + /* Below needed in some edge cases; if not applied, bottom shadows appear */ + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + + +/* relbar */ + +.related { + line-height: 30px; + width: 100%; + font-size: 0.9rem; +} + +.related.top { + border-bottom: 1px solid #EEE; + margin-bottom: 20px; +} + +.related.bottom { + border-top: 1px solid #EEE; +} + +.related ul { + padding: 0; + margin: 0; + list-style: none; +} + +.related li { + display: inline; +} + +nav#rellinks { + float: right; +} + +nav#rellinks li+li:before { + content: "|"; +} + +nav#breadcrumbs li+li:before { + content: "\00BB"; +} + +/* Hide certain items when printing */ +@media print { + div.related { + display: none; + } +} \ No newline at end of file diff --git a/docs/build/html/_static/basic.css b/docs/build/html/_static/basic.css new file mode 100644 index 0000000..19ced10 --- /dev/null +++ b/docs/build/html/_static/basic.css @@ -0,0 +1,665 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 450px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +div.code-block-caption { + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +div.code-block-caption + div > div.highlight > pre { + margin-top: 0; +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + padding: 1em 1em 0; +} + +div.literal-block-wrapper div.highlight { + margin: 0; +} + +code.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +code.descclassname { + background-color: transparent; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: relative; + left: 0px; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/docs/build/html/_static/comment-bright.png b/docs/build/html/_static/comment-bright.png new file mode 100644 index 0000000000000000000000000000000000000000..15e27edb12ac25701ac0ac21b97b52bb4e45415e GIT binary patch literal 756 zcmVgfIX78 z$8Pzv({A~p%??+>KickCb#0FM1rYN=mBmQ&Nwp<#JXUhU;{|)}%&s>suq6lXw*~s{ zvHx}3C%<;wE5CH!BR{p5@ml9ws}y)=QN-kL2?#`S5d*6j zk`h<}j1>tD$b?4D^N9w}-k)bxXxFg>+#kme^xx#qg6FI-%iv2U{0h(Y)cs%5a|m%Pn_K3X_bDJ>EH#(Fb73Z zfUt2Q3B>N+ot3qb*DqbTZpFIn4a!#_R-}{?-~Hs=xSS6p&$sZ-k1zDdtqU`Y@`#qL z&zv-~)Q#JCU(dI)Hf;$CEnK=6CK50}q7~wdbI->?E07bJ0R;!GSQTs5Am`#;*WHjvHRvY?&$Lm-vq1a_BzocI^ULXV!lbMd%|^B#fY;XX)n<&R^L z=84u1e_3ziq;Hz-*k5~zwY3*oDKt0;bM@M@@89;@m*4RFgvvM_4;5LB!@OB@^WbVT zjl{t;a8_>od-~P4 m{5|DvB&z#xT;*OnJqG}gk~_7HcNkCr0000W zanA~u9RIXo;n7c96&U)YLgs-FGlx~*_c{Jgvesu1E5(8YEf&5wF=YFPcRe@1=MJmi zag(L*xc2r0(slpcN!vC5CUju;vHJkHc*&70_n2OZsK%O~A=!+YIw z7zLLl7~Z+~RgWOQ=MI6$#0pvpu$Q43 zP@36QAmu6!_9NPM?o<1_!+stoVRRZbW9#SPe!n;#A_6m8f}|xN1;H{`0RoXQ2LM47 zt(g;iZ6|pCb@h2xk&(}S3=EVBUO0e90m2Lp5CB<(SPIaB;n4))3JB87Or#XPOPcum z?<^(g+m9}VNn4Y&B`g8h{t_$+RB1%HKRY6fjtd-<7&EsU;vs0GM(Lmbhi%Gwcfs0FTF}T zL{_M6Go&E0Eg8FuB*(Yn+Z*RVTBE@10eIOb3El^MhO`GabDll(V0&FlJi2k^;q8af zkENdk2}x2)_KVp`5OAwXZM;dG0?M-S)xE1IKDi6BY@5%Or?#aZ9$gcX)dPZ&wA1a< z$rFXHPn|TBf`e?>Are8sKtKrKcjF$i^lp!zkL?C|y^vlHr1HXeVJd;1I~g&Ob-q)& z(fn7s-KI}G{wnKzg_U5G(V%bX6uk zIa+<@>rdmZYd!9Y=C0cuchrbIjuRB_Wq{-RXlic?flu1*_ux}x%(HDH&nT`k^xCeC ziHi1!ChH*sQ6|UqJpTTzX$aw8e(UfcS^f;6yBWd+(1-70zU(rtxtqR%j z-lsH|CKQJXqD{+F7V0OTv8@{~(wp(`oIP^ZykMWgR>&|RsklFMCnOo&Bd{le} zV5F6424Qzl;o2G%oVvmHgRDP9!=rK8fy^!yV8y*4p=??uIRrrr0?>O!(z*g5AvL2!4z0{sq%vhG*Po}`a<6%kTK5TNhtC8}rXNu&h^QH4A&Sk~Autm*s~45(H7+0bi^MraaRVzr05hQ3iK?j` zR#U@^i0WhkIHTg29u~|ypU?sXCQEQgXfObPW;+0YAF;|5XyaMAEM0sQ@4-xCZe=0e z7r$ofiAxn@O5#RodD8rh5D@nKQ;?lcf@tg4o+Wp44aMl~c47azN_(im0N)7OqdPBC zGw;353_o$DqGRDhuhU$Eaj!@m000000NkvXXu0mjfjZ7Z_ literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/custom.css b/docs/build/html/_static/custom.css new file mode 100644 index 0000000..2a924f1 --- /dev/null +++ b/docs/build/html/_static/custom.css @@ -0,0 +1 @@ +/* This file intentionally left blank. */ diff --git a/docs/build/html/_static/doctools.js b/docs/build/html/_static/doctools.js new file mode 100644 index 0000000..d892892 --- /dev/null +++ b/docs/build/html/_static/doctools.js @@ -0,0 +1,313 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + */ +jQuery.urldecode = function(x) { + return decodeURIComponent(x).replace(/\+/g, ' '); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var bbox = span.getBBox(); + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + var parentOfText = node.parentNode.parentNode; + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated === 'undefined') + return string; + return (typeof translated === 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated === 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('