From 420d609bf6a9a5273e12fe1ca8f91a7c70c2d199 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Fri, 11 Mar 2016 15:02:02 -0500 Subject: [PATCH 1/5] adds documentation for contributing and rate limits --- doc/contributing.rst | 49 +++++++++++++++++++++++++++ doc/index.rst | 2 ++ doc/rate_limits.rst | 80 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 131 insertions(+) create mode 100644 doc/contributing.rst create mode 100644 doc/rate_limits.rst diff --git a/doc/contributing.rst b/doc/contributing.rst new file mode 100644 index 00000000..7f5fd796 --- /dev/null +++ b/doc/contributing.rst @@ -0,0 +1,49 @@ +Contributing +------------ + +Getting the code +================ + +The code is hosted at `Github `_. + +Check out the latest development version anonymously with:: + + $ git clone git://github.com/bear/python-twitter.git + $ cd python-twitter + +Setting up a development environment can be handled automatically with ``make`` +or via an existing virtual enviroment. To use ``make`` type the following +commands:: + + $ make env-devel + $ . env/bin/activate + +The first command will create a virtual environment in the ``env/`` directory and install +the required dependencies for you. The second will activate the virtual +environment so that you can start working on the library. + +If you would prefer to use an existing installation of virtualenvwrapper or +similar, you can install the required dependencies with:: + + $ pip install requirements.devel.txt + +or:: + + $ make deps-devel + +which will install the required dependencies for development of the library. + +Testing +======= + +Once you have your development environment set up, you can run:: + + $ make test + +to ensure that all tests are currently passing before starting work. You can +also check test coverage by running:: + + $ make coverage + +Pull requests are welcome or, if you are having trouble, please open an issue on +GitHub. diff --git a/doc/index.rst b/doc/index.rst index e33b237a..f2384fb4 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -14,7 +14,9 @@ Contents: installation.rst getting_started.rst + contributing.rst migration_v30.rst + rate_limits.rst models.rst searching.rst with_django.rst diff --git a/doc/rate_limits.rst b/doc/rate_limits.rst new file mode 100644 index 00000000..ff99ba20 --- /dev/null +++ b/doc/rate_limits.rst @@ -0,0 +1,80 @@ +Rate Limiting +------------ + +Twitter imposes rate limiting based either on user tokens or application +tokens. Please see: `API Rate Limits +`_ for a more detailed +explanation of Twitter's policies. What follows will be a summary of how Python-Twitter attempts to +deal with rate limits and how you should expect those limits to be respected +(or not). + + +Python-Twitter tries to abstract away the details of Twitter's rate limiting by +allowing you to globally respect those limits or ignore them. If you wish to +have the application sleep when it hits a rate limit, you should instantiate +the API with ``sleep_on_rate_limit=True`` like so:: + + import twitter + api = twitter.Api(consumer_key=[consumer key], + consumer_secret=[consumer secret], + access_token_key=[access token], + access_token_secret=[access token secret], + sleep_on_rate_limit=True) + +**By default, python-twitter will raise a hard error for rate limits** + +Effectively, when the API determines that the **next** call to an endpoint will +result in a rate limit error being thrown by Twitter, it will sleep until you +are able to safely make that call. For most API methods, the headers in the +response from Twitter will contain the following information: + + ``x-rate-limit-limit``: The number of times you can request the given + endpoint within a certain number of minutes (otherwise known as a window). + + ``x-rate-limit-remaining``: The number of times you have left for a given endpoint within a window. + + ``x-rate-limit-reset``: The number of seconds left until the window resets. + +For most endpoints, this is 15 requests per 15 minutes. So if you have set the +global ``sleep_on_rate_limit`` to ``True``, the process looks something like this:: + + api.GetListMembersPaged() + # GET /list/{id}/members.json?cursor=-1 + # GET /list/{id}/members.json?cursor=2 + # GET /list/{id}/members.json?cursor=3 + # GET /list/{id}/members.json?cursor=4 + # GET /list/{id}/members.json?cursor=5 + # GET /list/{id}/members.json?cursor=6 + # GET /list/{id}/members.json?cursor=7 + # GET /list/{id}/members.json?cursor=8 + # GET /list/{id}/members.json?cursor=9 + # GET /list/{id}/members.json?cursor=10 + # GET /list/{id}/members.json?cursor=11 + # GET /list/{id}/members.json?cursor=12 + # GET /list/{id}/members.json?cursor=13 + # GET /list/{id}/members.json?cursor=14 + + # This last GET request returns a response where x-rate-limit-remaining + # is equal to 0, so the API sleeps for 15 minutes + + # GET /list/{id}/members.json?cursor=15 + + # ... etc ... + +If you would rather not have your API instance sleep when hitting, then do not +pass ``sleep_on_rate_limit=True`` to your API instance. This will cause the API +to raise a hard error when attempting to make call #15 above. + +Technical +--------- + +The twitter/ratelimit.py file contains the code that handles storing and +checking rate limits for endpoints. Since Twitter does not send any information +regarding the endpoint that you are requesting with the ``x-rate-limit-*`` +headers, the endpoint is determined by some regex using the URL. + +The twitter.Api instance contains an ``Api.rate_limit`` object that you can inspect +to see the current limits for any URL and exposes a number of methods for +querying and setting rate limits on a per-resource (i.e., endpoint) basis. See +:py:func:`twitter.ratelimit.RateLimit` for more information. + From 3ca425bea59bd374b61d07bfc433d8efdad71222 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Fri, 11 Mar 2016 15:55:45 -0500 Subject: [PATCH 2/5] updates README --- README.rst | 49 +++++++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/README.rst b/README.rst index 875df106..7223d2c8 100644 --- a/README.rst +++ b/README.rst @@ -24,7 +24,7 @@ By the `Python-Twitter Developers `_ Introduction ============ -This library provides a pure Python interface for the `Twitter API `_. It works with Python versions from 2.6+. Python 3 support is under development. +This library provides a pure Python interface for the `Twitter API `_. It works with Python versions from 2.7+ and python 3. `Twitter `_ provides a service that allows people to connect via the web, IM, and SMS. Twitter exposes a `web services API `_ and this library is intended to make it even easier for Python programmers to use. @@ -47,24 +47,24 @@ Check out the latest development version anonymously with:: $ git clone git://github.com/bear/python-twitter.git $ cd python-twitter -Setup a virtual environment and install dependencies: +Setup a virtual environment and install dependencies:: - $ make env + $ make env-devel -Activate the virtual environment created: +Activate the virtual environment created:: $ source env/bin/activate ============= Running Tests ============= -Note that tests require ```pip install nose``` and optionally ```pip install coverage```: +Note that tests require ```pip install pytest``` and optionally ```pip install pytest-cov```: -To run the unit tests: +To run the unit tests:: $ make test -to also run code coverage: +to also run code coverage:: $ make coverage @@ -72,13 +72,14 @@ to also run code coverage: Documentation ============= -View the last release API documentation at: https://dev.twitter.com/overview/documentation +View the latest python-twitter documentation at +https://python-twitter.readthedocs.org. You can view Twitter's API documentation at: https://dev.twitter.com/overview/documentation ===== Using ===== -The library provides a Python wrapper around the Twitter API and the Twitter data model. +The library provides a Python wrapper around the Twitter API and the Twitter data model. To get started, check out the examples in the examples/ folder or read the documentation at https://python-twitter.readthedocs.org which contains information about getting your authentication keys from Twitter and using the library. ---- Using with Django @@ -86,17 +87,25 @@ Using with Django Additional template tags that expand tweet urls and urlize tweet text. See the django template tags available for use with python-twitter: https://github.com/radzhome/python-twitter-django-tags ------ -Model ------ +------ +Models +------ -The three model classes are ``twitter.Status``, ``twitter.User``, and ``twitter.DirectMessage``. The API methods return instances of these classes. +The library utilizes models to represent various data structures returned by Twitter. Those models are: + * twitter.Category + * twitter.DirectMessage + * twitter.Hashtag + * twitter.List + * twitter.Media + * twitter.Status + * twitter.Trend + * twitter.Url + * twitter.User + * twitter.UserStatus -To read the full API for ``twitter.Status``, ``twitter.User``, or ``twitter.DirectMessage``, run:: +To read the documentation for any of these models, run:: - $ pydoc twitter.Status - $ pydoc twitter.User - $ pydoc twitter.DirectMessage + $ pydoc twitter.[model] --- API @@ -149,8 +158,6 @@ There are many more API methods, to read the full API documentation:: $ pydoc twitter.Api - - ---- Todo ---- @@ -161,8 +168,6 @@ Add more example scripts. The twitter.Status and ``twitter.User`` classes are going to be hard to keep in sync with the API if the API changes. More of the code could probably be written with introspection. -Statement coverage of ``twitter_test`` is only about 80% of twitter.py. - The ``twitter.Status`` and ``twitter.User`` classes could perform more validation on the property setters. ---------------- @@ -183,7 +188,7 @@ Now it's a full-on open source project with many contributors over time. See AUT License ------- -| Copyright 2007-2014 The Python-Twitter Developers +| Copyright 2007-2016 The Python-Twitter Developers | | Licensed under the Apache License, Version 2.0 (the 'License'); | you may not use this file except in compliance with the License. From 104749a7d34ea6e009c1f7a5b4c770b68b9fb8b1 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Fri, 11 Mar 2016 18:06:46 -0500 Subject: [PATCH 3/5] deletes built documentation --- doc/_build/doctrees/environment.pickle | Bin 4871 -> 0 bytes doc/_build/doctrees/index.doctree | Bin 17349 -> 0 bytes doc/_build/html/.buildinfo | 4 - doc/_build/html/_sources/index.txt | 78 - doc/_build/html/_static/ajax-loader.gif | Bin 673 -> 0 bytes doc/_build/html/_static/basic.css | 537 ---- doc/_build/html/_static/comment-bright.png | Bin 3500 -> 0 bytes doc/_build/html/_static/comment-close.png | Bin 3578 -> 0 bytes doc/_build/html/_static/comment.png | Bin 3445 -> 0 bytes doc/_build/html/_static/default.css | 269 -- doc/_build/html/_static/doctools.js | 241 -- doc/_build/html/_static/down-pressed.png | Bin 368 -> 0 bytes doc/_build/html/_static/down.png | Bin 363 -> 0 bytes doc/_build/html/_static/file.png | Bin 392 -> 0 bytes doc/_build/html/_static/jquery.js | 2803 -------------------- doc/_build/html/_static/minus.png | Bin 199 -> 0 bytes doc/_build/html/_static/plus.png | Bin 199 -> 0 bytes doc/_build/html/_static/pygments.css | 330 --- doc/_build/html/_static/searchtools.js | 630 ----- doc/_build/html/_static/sidebar.js | 159 -- doc/_build/html/_static/underscore.js | 559 ---- doc/_build/html/_static/up-pressed.png | Bin 372 -> 0 bytes doc/_build/html/_static/up.png | Bin 363 -> 0 bytes doc/_build/html/_static/websupport.js | 812 ------ doc/_build/html/genindex.html | 91 - doc/_build/html/index.html | 213 -- doc/_build/html/objects.inv | Bin 210 -> 0 bytes doc/_build/html/search.html | 103 - doc/_build/html/searchindex.js | 107 - 29 files changed, 6936 deletions(-) delete mode 100644 doc/_build/doctrees/environment.pickle delete mode 100644 doc/_build/doctrees/index.doctree delete mode 100644 doc/_build/html/.buildinfo delete mode 100644 doc/_build/html/_sources/index.txt delete mode 100644 doc/_build/html/_static/ajax-loader.gif delete mode 100644 doc/_build/html/_static/basic.css delete mode 100644 doc/_build/html/_static/comment-bright.png delete mode 100644 doc/_build/html/_static/comment-close.png delete mode 100644 doc/_build/html/_static/comment.png delete mode 100644 doc/_build/html/_static/default.css delete mode 100644 doc/_build/html/_static/doctools.js delete mode 100644 doc/_build/html/_static/down-pressed.png delete mode 100644 doc/_build/html/_static/down.png delete mode 100644 doc/_build/html/_static/file.png delete mode 100644 doc/_build/html/_static/jquery.js delete mode 100644 doc/_build/html/_static/minus.png delete mode 100644 doc/_build/html/_static/plus.png delete mode 100644 doc/_build/html/_static/pygments.css delete mode 100644 doc/_build/html/_static/searchtools.js delete mode 100644 doc/_build/html/_static/sidebar.js delete mode 100644 doc/_build/html/_static/underscore.js delete mode 100644 doc/_build/html/_static/up-pressed.png delete mode 100644 doc/_build/html/_static/up.png delete mode 100644 doc/_build/html/_static/websupport.js delete mode 100644 doc/_build/html/genindex.html delete mode 100644 doc/_build/html/index.html delete mode 100644 doc/_build/html/objects.inv delete mode 100644 doc/_build/html/search.html delete mode 100644 doc/_build/html/searchindex.js diff --git a/doc/_build/doctrees/environment.pickle b/doc/_build/doctrees/environment.pickle deleted file mode 100644 index 0948e77245ff80da8f2701d662303b795c09fce0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4871 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 Glm82-Sf|_o diff --git a/doc/_build/html/.buildinfo b/doc/_build/html/.buildinfo deleted file mode 100644 index 666a5fbb..00000000 --- a/doc/_build/html/.buildinfo +++ /dev/null @@ -1,4 +0,0 @@ -# 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: c43a9c1bc9ab3e4c662332b15085c411 -tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/doc/_build/html/_sources/index.txt b/doc/_build/html/_sources/index.txt deleted file mode 100644 index 732dc970..00000000 --- a/doc/_build/html/_sources/index.txt +++ /dev/null @@ -1,78 +0,0 @@ -.. python-twitter documentation master file, created by - sphinx-quickstart on Fri Aug 30 14:37:05 2013. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Welcome to python-twitter's documentation! -========================================== -**A Python wrapper around the Twitter API.** - -Author: The Python-Twitter Developers - -Introduction ------------- -This library provides a pure Python interface for the `Twitter API `_. It works with Python versions from 2.5 to 2.7. Python 3 support is under development. - -`Twitter `_ provides a service that allows people to connect via the web, IM, and SMS. Twitter exposes a `web services API `_ and this library is intended to make it even easier for Python programmers to use. - - -Building --------- -From source: - -Install the dependencies: - -- `Requests OAuthlib `_ -- `HTTPLib2 `_ - -This branch is currently in development to replace the OAuth and HTTPLib2 libarays with the following: - -- `Requests `_ - - -Alternatively use `pip`:: - - $ pip install -r requirements.txt - -Download the latest `python-twitter` library from: http://code.google.com/p/python-twitter/ - -Extract the source distribution and run:: - - $ python setup.py build - $ python setup.py install - - -Testing -------- -With setuptools installed:: - - $ python setup.py test - - -Without setuptools installed:: - - $ python twitter_test.py - - -Getting the code ----------------- -The code is hosted at `Github `_. - -Check out the latest development version anonymously with:: - -$ git clone git://github.com/bear/python-twitter.git -$ cd python-twitter - - -.. toctree:: - :maxdepth: 2 - - - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff --git a/doc/_build/html/_static/ajax-loader.gif b/doc/_build/html/_static/ajax-loader.gif deleted file mode 100644 index 61faf8cab23993bd3e1560bff0668bd628642330..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/doc/_build/html/_static/basic.css b/doc/_build/html/_static/basic.css deleted file mode 100644 index 23800563..00000000 --- a/doc/_build/html/_static/basic.css +++ /dev/null @@ -1,537 +0,0 @@ -/* - * basic.css - * ~~~~~~~~~ - * - * Sphinx stylesheet -- basic theme. - * - * :copyright: Copyright 2007-2013 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%; -} - -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"] { - width: 170px; -} - -div.sphinxsidebar #searchbox input[type="submit"] { - width: 30px; -} - -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%; -} - -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 dl, table.indextable dd { - margin-top: 0; - margin-bottom: 0; -} - -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; -} - -/* -- general body styles --------------------------------------------------- */ - -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 { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.field-list ul { - padding-left: 1em; -} - -.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.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.field-list td, table.field-list th { - border: 0 !important; -} - -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; -} - -/* -- 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, .highlighted { - background-color: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.optional { - font-size: 1.3em; -} - -.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 */ -} - -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; -} - -tt.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -tt.descclassname { - background-color: transparent; -} - -tt.xref, a tt { - background-color: transparent; - font-weight: bold; -} - -h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { - 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; -} - -/* -- 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/doc/_build/html/_static/comment-bright.png b/doc/_build/html/_static/comment-bright.png deleted file mode 100644 index 551517b8c83b76f734ff791f847829a760ad1903..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3500 zcmV;d4O8-oP)Oz@Z0f2-7z;ux~O9+4z06=<WDR*FRcSTFz- zW=q650N5=6FiBTtNC2?60Km==3$g$R3;-}uh=nNt1bYBr$Ri_o0EC$U6h`t_Jn<{8 z5a%iY0C<_QJh>z}MS)ugEpZ1|S1ukX&Pf+56gFW3VVXcL!g-k)GJ!M?;PcD?0HBc- z5#WRK{dmp}uFlRjj{U%*%WZ25jX z{P*?XzTzZ-GF^d31o+^>%=Ap99M6&ogks$0k4OBs3;+Bb(;~!4V!2o<6ys46agIcq zjPo+3B8fthDa9qy|77CdEc*jK-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S z1Au6Q;m>#f??3%Vpd|o+W=WE9003S@Bra6Svp>fO002awfhw>;8}z{#EWidF!3EsG z3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~xDGvV5BgyU zp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$Qi@a{RY)E3 zJ#qp$hg?Rwkvqr$GJ^buyhkyVfwECO)C{#lxu`c9ghrwZ&}4KmnvWKso6vH!8a<3Q zq36)6Xb;+tK10Vaz~~qUGsJ8#F2=(`u{bOVlVi)VBCHIn#u~6ztOL7=^<&SmcLWlF zMZgI*1b0FpVIDz9SWH+>*hr`#93(Um+6gxa1B6k+CnA%mOSC4s5&6UzVlpv@SV$}* z))J2sFA#f(L&P^E5{W}HC%KRUNwK6<(h|}}(r!{C=`5+6G)NjFlgZj-YqAG9lq?`C z$c5yc>d>VnA`E_*3F2Qp##d8RZb=H01_mm@+|Cqnc9PsG(F5HIG_C zt)aG3uTh7n6Et<2In9F>NlT@zqLtGcXcuVrX|L#Xx)I%#9!{6gSJKPrN9dR61N3(c z4Tcqi$B1Vr8Jidf7-t!G7_XR2rWwr)$3XQ?}=hpK0&Z&W{| zep&sA23f;Q!%st`QJ}G3cbou<7-yIK2z4nfCCCtN2-XOGSWo##{8Q{ATurxr~;I`ytDs%xbip}RzP zziy}Qn4Z2~fSycmr`~zJ=lUFdFa1>gZThG6M+{g7vkW8#+YHVaJjFF}Z#*3@$J_By zLtVo_L#1JrVVB{Ak-5=4qt!-@Mh}c>#$4kh<88)m#-k<%CLtzEP3leVno>={htGUuD;o7bD)w_sX$S}eAxwzy?UvgBH(S?;#HZiQMoS*2K2 zT3xe7t(~nU*1N5{rxB;QPLocnp4Ml>u<^FZwyC!nu;thW+pe~4wtZn|Vi#w(#jeBd zlf9FDx_yoPJqHbk*$%56S{;6Kv~mM9!g3B(KJ}#RZ#@)!hR|78Dq|Iq-afF%KE1Brn_fm;Im z_u$xr8UFki1L{Ox>G0o)(&RAZ;=|I=wN2l97;cLaHH6leTB-XXa*h%dBOEvi`+x zi?=Txl?TadvyiL>SuF~-LZ;|cS}4~l2eM~nS7yJ>iOM;atDY;(?aZ^v+mJV$@1Ote z62cPUlD4IWOIIx&SmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGA zUct(O!LkCy1<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}Ti zncS4LsjI}fWY1>OX6feMEuLErma3QLmkw?X+1j)X-&VBk_4Y;EFPF_I+q;9dL%E~B zJh;4Nr^(LEJ3myURP{Rblsw%57T)g973R8o)DE9*xN#~;4_o$q%o z4K@u`jhx2fBXC4{U8Qn{*%*B$Ge=nny$HAYq{=vy|sI0 z_vss+H_qMky?OB#|JK!>IX&II^LlUh#rO5!7TtbwC;iULyV-Xq?ybB}ykGP{?LpZ? z-G|jbTmIbG@7#ZCz;~eY(cDM(28Dyq{*m>M4?_iynUBkc4TkHUI6gT!;y-fz>HMcd z&t%Ugo)`Y2{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P` z?ZJ24cOCDe-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy000JJOGiWi{{a60 z|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^RV2niQ93PPz|JOBU!-bqA3 zR5;6pl1pe^WfX zkSdl!omi0~*ntl;2q{jA^;J@WT8O!=A(Gck8fa>hn{#u{`Tyg)!KXI6l>4dj==iVKK6+%4zaRizy(5eryC3d2 z+5Y_D$4}k5v2=Siw{=O)SWY2HJwR3xX1*M*9G^XQ*TCNXF$Vj(kbMJXK0DaS_Sa^1 z?CEa!cFWDhcwxy%a?i@DN|G6-M#uuWU>lss@I>;$xmQ|`u3f;MQ|pYuHxxvMeq4TW;>|7Z2*AsqT=`-1O~nTm6O&pNEK?^cf9CX= zkq5|qAoE7un3V z^yy=@%6zqN^x`#qW+;e7j>th{6GV}sf*}g7{(R#T)yg-AZh0C&U;WA`AL$qz8()5^ zGFi2`g&L7!c?x+A2oOaG0c*Bg&YZt8cJ{jq_W{uTdA-<;`@iP$$=$H?gYIYc_q^*$ z#k(Key`d40R3?+GmgK8hHJcwiQ~r4By@w9*PuzR>x3#(F?YW_W5pPc(t(@-Y{psOt zz2!UE_5S)bLF)Oz@Z0f2-7z;ux~O9+4z06=<WDR*FRcSTFz- zW=q650N5=6FiBTtNC2?60Km==3$g$R3;-}uh=nNt1bYBr$Ri_o0EC$U6h`t_Jn<{8 z5a%iY0C<_QJh>z}MS)ugEpZ1|S1ukX&Pf+56gFW3VVXcL!g-k)GJ!M?;PcD?0HBc- z5#WRK{dmp}uFlRjj{U%*%WZ25jX z{P*?XzTzZ-GF^d31o+^>%=Ap99M6&ogks$0k4OBs3;+Bb(;~!4V!2o<6ys46agIcq zjPo+3B8fthDa9qy|77CdEc*jK-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S z1Au6Q;m>#f??3%Vpd|o+W=WE9003S@Bra6Svp>fO002awfhw>;8}z{#EWidF!3EsG z3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~xDGvV5BgyU zp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$Qi@a{RY)E3 zJ#qp$hg?Rwkvqr$GJ^buyhkyVfwECO)C{#lxu`c9ghrwZ&}4KmnvWKso6vH!8a<3Q zq36)6Xb;+tK10Vaz~~qUGsJ8#F2=(`u{bOVlVi)VBCHIn#u~6ztOL7=^<&SmcLWlF zMZgI*1b0FpVIDz9SWH+>*hr`#93(Um+6gxa1B6k+CnA%mOSC4s5&6UzVlpv@SV$}* z))J2sFA#f(L&P^E5{W}HC%KRUNwK6<(h|}}(r!{C=`5+6G)NjFlgZj-YqAG9lq?`C z$c5yc>d>VnA`E_*3F2Qp##d8RZb=H01_mm@+|Cqnc9PsG(F5HIG_C zt)aG3uTh7n6Et<2In9F>NlT@zqLtGcXcuVrX|L#Xx)I%#9!{6gSJKPrN9dR61N3(c z4Tcqi$B1Vr8Jidf7-t!G7_XR2rWwr)$3XQ?}=hpK0&Z&W{| zep&sA23f;Q!%st`QJ}G3cbou<7-yIK2z4nfCCCtN2-XOGSWo##{8Q{ATurxr~;I`ytDs%xbip}RzP zziy}Qn4Z2~fSycmr`~zJ=lUFdFa1>gZThG6M+{g7vkW8#+YHVaJjFF}Z#*3@$J_By zLtVo_L#1JrVVB{Ak-5=4qt!-@Mh}c>#$4kh<88)m#-k<%CLtzEP3leVno>={htGUuD;o7bD)w_sX$S}eAxwzy?UvgBH(S?;#HZiQMoS*2K2 zT3xe7t(~nU*1N5{rxB;QPLocnp4Ml>u<^FZwyC!nu;thW+pe~4wtZn|Vi#w(#jeBd zlf9FDx_yoPJqHbk*$%56S{;6Kv~mM9!g3B(KJ}#RZ#@)!hR|78Dq|Iq-afF%KE1Brn_fm;Im z_u$xr8UFki1L{Ox>G0o)(&RAZ;=|I=wN2l97;cLaHH6leTB-XXa*h%dBOEvi`+x zi?=Txl?TadvyiL>SuF~-LZ;|cS}4~l2eM~nS7yJ>iOM;atDY;(?aZ^v+mJV$@1Ote z62cPUlD4IWOIIx&SmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGA zUct(O!LkCy1<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}Ti zncS4LsjI}fWY1>OX6feMEuLErma3QLmkw?X+1j)X-&VBk_4Y;EFPF_I+q;9dL%E~B zJh;4Nr^(LEJ3myURP{Rblsw%57T)g973R8o)DE9*xN#~;4_o$q%o z4K@u`jhx2fBXC4{U8Qn{*%*B$Ge=nny$HAYq{=vy|sI0 z_vss+H_qMky?OB#|JK!>IX&II^LlUh#rO5!7TtbwC;iULyV-Xq?ybB}ykGP{?LpZ? z-G|jbTmIbG@7#ZCz;~eY(cDM(28Dyq{*m>M4?_iynUBkc4TkHUI6gT!;y-fz>HMcd z&t%Ugo)`Y2{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P` z?ZJ24cOCDe-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy000JJOGiWi{{a60 z|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^RV2oe()A>y0J-2easEJ;K` zR5;6Jl3z%jbr{D#&+mQTbB>-f&3W<<%ayjKi&ZjBc2N<@)`~{dMXWB0(ajbV85_gJ zf(EU`iek}4Bt%55ix|sVMm1u8KvB#hnmU~_r<Ogd(A5vg_omvd-#L!=(BMVklxVqhdT zofSj`QA^|)G*lu58>#vhvA)%0Or&dIsb%b)st*LV8`ANnOipDbh%_*c7`d6# z21*z~Xd?ovgf>zq(o0?Et~9ti+pljZC~#_KvJhA>u91WRaq|uqBBKP6V0?p-NL59w zrK0w($_m#SDPQ!Z$nhd^JO|f+7k5xca94d2OLJ&sSxlB7F%NtrF@@O7WWlkHSDtor zzD?u;b&KN$*MnHx;JDy9P~G<{4}9__s&MATBV4R+MuA8TjlZ3ye&qZMCUe8ihBnHI zhMSu zSERHwrmBb$SWVr+)Yk2k^FgTMR6mP;@FY2{}BeV|SUo=mNk<-XSOHNErw>s{^rR-bu$@aN7= zj~-qXcS2!BA*(Q**BOOl{FggkyHdCJi_Fy>?_K+G+DYwIn8`29DYPg&s4$}7D`fv? zuyJ2sMfJX(I^yrf6u!(~9anf(AqAk&ke}uL0SIb-H!SaDQvd(}07*qoM6N<$g1Ha7 A2LJ#7 diff --git a/doc/_build/html/_static/comment.png b/doc/_build/html/_static/comment.png deleted file mode 100644 index 92feb52b8824c6b0f59b658b1196c61de9162a95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3445 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 Xn!ZpXD%P(H00000NkvXXu0mjf= 0 && !jQuery(node.parentNode).hasClass(className)) { - var 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); - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function () { - highlight(this); - }); - } - } - - return this.each(function () { - highlight(this); - }); -}; - -/** - * 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 - */ - 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); - $('') - .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); - } -}; - -// quick alias for translations -_ = Documentation.gettext; - -$(document).ready(function () { - Documentation.init(); -}); diff --git a/doc/_build/html/_static/down-pressed.png b/doc/_build/html/_static/down-pressed.png deleted file mode 100644 index 6f7ad782782e4f8e39b0c6e15c7344700cdd2527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6U4S$Y z{B+)352QE?JR*yM+OLB!qm#z$3ZNi+iKnkC`z>}Z23@f-Ava~9&<9T!#}JFtXD=!G zGdl{fK6ro2OGiOl+hKvH6i=D3%%Y^j`yIkRn!8O>@bG)IQR0{Kf+mxNd=_WScA8u_ z3;8(7x2){m9`nt+U(Nab&1G)!{`SPVpDX$w8McLTzAJ39wprG3p4XLq$06M`%}2Yk zRPPsbES*dnYm1wkGL;iioAUB*Or2kz6(-M_r_#Me-`{mj$Z%( diff --git a/doc/_build/html/_static/down.png b/doc/_build/html/_static/down.png deleted file mode 100644 index 3003a88770de3977d47a2ba69893436a2860f9e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6U4S$Y z{B+)352QE?JR*yM+OLB!qm#z$3ZNi+iKnkC`z>}xaV3tUZ$qnrLa#kt978NlpS`ru z&)HFc^}^>{UOEce+71h5nn>6&w6A!ieNbu1wh)UGh{8~et^#oZ1# z>T7oM=FZ~xXWnTo{qnXm$ZLOlqGswI_m2{XwVK)IJmBjW{J3-B3x@C=M{ShWt#fYS9M?R;8K$~YwlIqwf>VA7q=YKcwf2DS4Zj5inDKXXB1zl=(YO3ST6~rDq)&z z*o>z)=hxrfG-cDBW0G$!?6{M<$@{_4{m1o%Ub!naEtn|@^frU1tDnm{r-UW|!^@B8 diff --git a/doc/_build/html/_static/file.png b/doc/_build/html/_static/file.png deleted file mode 100644 index d18082e397e7e54f20721af768c4c2983258f1b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP$HyOL$D9)yc9|lc|nKf<9@eUiWd>3GuTC!a5vdfWYEazjncPj5ZQX%+1 zt8B*4=d)!cdDz4wr^#OMYfqGz$1LDFF>|#>*O?AGil(WEs?wLLy{Gj2J_@opDm%`dlax3yA*@*N$G&*ukFv>P8+2CBWO(qz zD0k1@kN>hhb1_6`&wrCswzINE(evt-5C1B^STi2@PmdKI;Vst0PQB6!2kdN diff --git a/doc/_build/html/_static/jquery.js b/doc/_build/html/_static/jquery.js deleted file mode 100644 index 072b46db..00000000 --- a/doc/_build/html/_static/jquery.js +++ /dev/null @@ -1,2803 +0,0 @@ -/*! jQuery v1.8.3 jquery.com | jquery.org/license */ -(function (e, t) { - function _(e) { - var t = M[e] = {}; - return v.each(e.split(y), function (e, n) { - t[n] = !0 - }), t - } - - function H(e, n, r) { - if (r === t && e.nodeType === 1) { - var i = "data-" + n.replace(P, "-$1").toLowerCase(); - r = e.getAttribute(i); - if (typeof r == "string") { - try { - r = r === "true" ? !0 : r === "false" ? !1 : r === "null" ? null : +r + "" === r ? +r : D.test(r) ? v.parseJSON(r) : r - } catch (s) { - } - v.data(e, n, r) - } else r = t - } - return r - } - - function B(e) { - var t; - for (t in e) { - if (t === "data" && v.isEmptyObject(e[t]))continue; - if (t !== "toJSON")return !1 - } - return !0 - } - - function et() { - return !1 - } - - function tt() { - return !0 - } - - function ut(e) { - return !e || !e.parentNode || e.parentNode.nodeType === 11 - } - - function at(e, t) { - do e = e[t]; while (e && e.nodeType !== 1); - return e - } - - function ft(e, t, n) { - t = t || 0; - if (v.isFunction(t))return v.grep(e, function (e, r) { - var i = !!t.call(e, r, e); - return i === n - }); - if (t.nodeType)return v.grep(e, function (e, r) { - return e === t === n - }); - if (typeof t == "string") { - var r = v.grep(e, function (e) { - return e.nodeType === 1 - }); - if (it.test(t))return v.filter(t, r, !n); - t = v.filter(t, r) - } - return v.grep(e, function (e, r) { - return v.inArray(e, t) >= 0 === n - }) - } - - function lt(e) { - var t = ct.split("|"), n = e.createDocumentFragment(); - if (n.createElement)while (t.length)n.createElement(t.pop()); - return n - } - - function Lt(e, t) { - return e.getElementsByTagName(t)[0] || e.appendChild(e.ownerDocument.createElement(t)) - } - - function At(e, t) { - if (t.nodeType !== 1 || !v.hasData(e))return; - var n, r, i, s = v._data(e), o = v._data(t, s), u = s.events; - if (u) { - delete o.handle, o.events = {}; - for (n in u)for (r = 0, i = u[n].length; r < i; r++)v.event.add(t, n, u[n][r]) - } - o.data && (o.data = v.extend({}, o.data)) - } - - function Ot(e, t) { - var n; - if (t.nodeType !== 1)return; - t.clearAttributes && t.clearAttributes(), t.mergeAttributes && t.mergeAttributes(e), n = t.nodeName.toLowerCase(), n === "object" ? (t.parentNode && (t.outerHTML = e.outerHTML), v.support.html5Clone && e.innerHTML && !v.trim(t.innerHTML) && (t.innerHTML = e.innerHTML)) : n === "input" && Et.test(e.type) ? (t.defaultChecked = t.checked = e.checked, t.value !== e.value && (t.value = e.value)) : n === "option" ? t.selected = e.defaultSelected : n === "input" || n === "textarea" ? t.defaultValue = e.defaultValue : n === "script" && t.text !== e.text && (t.text = e.text), t.removeAttribute(v.expando) - } - - function Mt(e) { - return typeof e.getElementsByTagName != "undefined" ? e.getElementsByTagName("*") : typeof e.querySelectorAll != "undefined" ? e.querySelectorAll("*") : [] - } - - function _t(e) { - Et.test(e.type) && (e.defaultChecked = e.checked) - } - - function Qt(e, t) { - if (t in e)return t; - var n = t.charAt(0).toUpperCase() + t.slice(1), r = t, i = Jt.length; - while (i--) { - t = Jt[i] + n; - if (t in e)return t - } - return r - } - - function Gt(e, t) { - return e = t || e, v.css(e, "display") === "none" || !v.contains(e.ownerDocument, e) - } - - function Yt(e, t) { - var n, r, i = [], s = 0, o = e.length; - for (; s < o; s++) { - n = e[s]; - if (!n.style)continue; - i[s] = v._data(n, "olddisplay"), t ? (!i[s] && n.style.display === "none" && (n.style.display = ""), n.style.display === "" && Gt(n) && (i[s] = v._data(n, "olddisplay", nn(n.nodeName)))) : (r = Dt(n, "display"), !i[s] && r !== "none" && v._data(n, "olddisplay", r)) - } - for (s = 0; s < o; s++) { - n = e[s]; - if (!n.style)continue; - if (!t || n.style.display === "none" || n.style.display === "")n.style.display = t ? i[s] || "" : "none" - } - return e - } - - function Zt(e, t, n) { - var r = Rt.exec(t); - return r ? Math.max(0, r[1] - (n || 0)) + (r[2] || "px") : t - } - - function en(e, t, n, r) { - var i = n === (r ? "border" : "content") ? 4 : t === "width" ? 1 : 0, s = 0; - for (; i < 4; i += 2)n === "margin" && (s += v.css(e, n + $t[i], !0)), r ? (n === "content" && (s -= parseFloat(Dt(e, "padding" + $t[i])) || 0), n !== "margin" && (s -= parseFloat(Dt(e, "border" + $t[i] + "Width")) || 0)) : (s += parseFloat(Dt(e, "padding" + $t[i])) || 0, n !== "padding" && (s += parseFloat(Dt(e, "border" + $t[i] + "Width")) || 0)); - return s - } - - function tn(e, t, n) { - var r = t === "width" ? e.offsetWidth : e.offsetHeight, i = !0, s = v.support.boxSizing && v.css(e, "boxSizing") === "border-box"; - if (r <= 0 || r == null) { - r = Dt(e, t); - if (r < 0 || r == null)r = e.style[t]; - if (Ut.test(r))return r; - i = s && (v.support.boxSizingReliable || r === e.style[t]), r = parseFloat(r) || 0 - } - return r + en(e, t, n || (s ? "border" : "content"), i) + "px" - } - - function nn(e) { - if (Wt[e])return Wt[e]; - var t = v("<" + e + ">").appendTo(i.body), n = t.css("display"); - t.remove(); - if (n === "none" || n === "") { - Pt = i.body.appendChild(Pt || v.extend(i.createElement("iframe"), {frameBorder: 0, width: 0, height: 0})); - if (!Ht || !Pt.createElement)Ht = (Pt.contentWindow || Pt.contentDocument).document, Ht.write(""), Ht.close(); - t = Ht.body.appendChild(Ht.createElement(e)), n = Dt(t, "display"), i.body.removeChild(Pt) - } - return Wt[e] = n, n - } - - function fn(e, t, n, r) { - var i; - if (v.isArray(t))v.each(t, function (t, i) { - n || sn.test(e) ? r(e, i) : fn(e + "[" + (typeof i == "object" ? t : "") + "]", i, n, r) - }); else if (!n && v.type(t) === "object")for (i in t)fn(e + "[" + i + "]", t[i], n, r); else r(e, t) - } - - function Cn(e) { - return function (t, n) { - typeof t != "string" && (n = t, t = "*"); - var r, i, s, o = t.toLowerCase().split(y), u = 0, a = o.length; - if (v.isFunction(n))for (; u < a; u++)r = o[u], s = /^\+/.test(r), s && (r = r.substr(1) || "*"), i = e[r] = e[r] || [], i[s ? "unshift" : "push"](n) - } - } - - function kn(e, n, r, i, s, o) { - s = s || n.dataTypes[0], o = o || {}, o[s] = !0; - var u, a = e[s], f = 0, l = a ? a.length : 0, c = e === Sn; - for (; f < l && (c || !u); f++)u = a[f](n, r, i), typeof u == "string" && (!c || o[u] ? u = t : (n.dataTypes.unshift(u), u = kn(e, n, r, i, u, o))); - return (c || !u) && !o["*"] && (u = kn(e, n, r, i, "*", o)), u - } - - function Ln(e, n) { - var r, i, s = v.ajaxSettings.flatOptions || {}; - for (r in n)n[r] !== t && ((s[r] ? e : i || (i = {}))[r] = n[r]); - i && v.extend(!0, e, i) - } - - function An(e, n, r) { - var i, s, o, u, a = e.contents, f = e.dataTypes, l = e.responseFields; - for (s in l)s in r && (n[l[s]] = r[s]); - while (f[0] === "*")f.shift(), i === t && (i = e.mimeType || n.getResponseHeader("content-type")); - if (i)for (s in a)if (a[s] && a[s].test(i)) { - f.unshift(s); - break - } - if (f[0]in r)o = f[0]; else { - for (s in r) { - if (!f[0] || e.converters[s + " " + f[0]]) { - o = s; - break - } - u || (u = s) - } - o = o || u - } - if (o)return o !== f[0] && f.unshift(o), r[o] - } - - function On(e, t) { - var n, r, i, s, o = e.dataTypes.slice(), u = o[0], a = {}, f = 0; - e.dataFilter && (t = e.dataFilter(t, e.dataType)); - if (o[1])for (n in e.converters)a[n.toLowerCase()] = e.converters[n]; - for (; i = o[++f];)if (i !== "*") { - if (u !== "*" && u !== i) { - n = a[u + " " + i] || a["* " + i]; - if (!n)for (r in a) { - s = r.split(" "); - if (s[1] === i) { - n = a[u + " " + s[0]] || a["* " + s[0]]; - if (n) { - n === !0 ? n = a[r] : a[r] !== !0 && (i = s[0], o.splice(f--, 0, i)); - break - } - } - } - if (n !== !0)if (n && e["throws"])t = n(t); else try { - t = n(t) - } catch (l) { - return {state: "parsererror", error: n ? l : "No conversion from " + u + " to " + i} - } - } - u = i - } - return {state: "success", data: t} - } - - function Fn() { - try { - return new e.XMLHttpRequest - } catch (t) { - } - } - - function In() { - try { - return new e.ActiveXObject("Microsoft.XMLHTTP") - } catch (t) { - } - } - - function $n() { - return setTimeout(function () { - qn = t - }, 0), qn = v.now() - } - - function Jn(e, t) { - v.each(t, function (t, n) { - var r = (Vn[t] || []).concat(Vn["*"]), i = 0, s = r.length; - for (; i < s; i++)if (r[i].call(e, t, n))return - }) - } - - function Kn(e, t, n) { - var r, i = 0, s = 0, o = Xn.length, u = v.Deferred().always(function () { - delete a.elem - }), a = function () { - var t = qn || $n(), n = Math.max(0, f.startTime + f.duration - t), r = n / f.duration || 0, i = 1 - r, s = 0, o = f.tweens.length; - for (; s < o; s++)f.tweens[s].run(i); - return u.notifyWith(e, [f, i, n]), i < 1 && o ? n : (u.resolveWith(e, [f]), !1) - }, f = u.promise({ - elem: e, - props: v.extend({}, t), - opts: v.extend(!0, {specialEasing: {}}, n), - originalProperties: t, - originalOptions: n, - startTime: qn || $n(), - duration: n.duration, - tweens: [], - createTween: function (t, n, r) { - var i = v.Tween(e, f.opts, t, n, f.opts.specialEasing[t] || f.opts.easing); - return f.tweens.push(i), i - }, - stop: function (t) { - var n = 0, r = t ? f.tweens.length : 0; - for (; n < r; n++)f.tweens[n].run(1); - return t ? u.resolveWith(e, [f, t]) : u.rejectWith(e, [f, t]), this - } - }), l = f.props; - Qn(l, f.opts.specialEasing); - for (; i < o; i++) { - r = Xn[i].call(f, e, l, f.opts); - if (r)return r - } - return Jn(f, l), v.isFunction(f.opts.start) && f.opts.start.call(e, f), v.fx.timer(v.extend(a, { - anim: f, - queue: f.opts.queue, - elem: e - })), f.progress(f.opts.progress).done(f.opts.done, f.opts.complete).fail(f.opts.fail).always(f.opts.always) - } - - function Qn(e, t) { - var n, r, i, s, o; - for (n in e) { - r = v.camelCase(n), i = t[r], s = e[n], v.isArray(s) && (i = s[1], s = e[n] = s[0]), n !== r && (e[r] = s, delete e[n]), o = v.cssHooks[r]; - if (o && "expand"in o) { - s = o.expand(s), delete e[r]; - for (n in s)n in e || (e[n] = s[n], t[n] = i) - } else t[r] = i - } - } - - function Gn(e, t, n) { - var r, i, s, o, u, a, f, l, c, h = this, p = e.style, d = {}, m = [], g = e.nodeType && Gt(e); - n.queue || (l = v._queueHooks(e, "fx"), l.unqueued == null && (l.unqueued = 0, c = l.empty.fire, l.empty.fire = function () { - l.unqueued || c() - }), l.unqueued++, h.always(function () { - h.always(function () { - l.unqueued--, v.queue(e, "fx").length || l.empty.fire() - }) - })), e.nodeType === 1 && ("height"in t || "width"in t) && (n.overflow = [p.overflow, p.overflowX, p.overflowY], v.css(e, "display") === "inline" && v.css(e, "float") === "none" && (!v.support.inlineBlockNeedsLayout || nn(e.nodeName) === "inline" ? p.display = "inline-block" : p.zoom = 1)), n.overflow && (p.overflow = "hidden", v.support.shrinkWrapBlocks || h.done(function () { - p.overflow = n.overflow[0], p.overflowX = n.overflow[1], p.overflowY = n.overflow[2] - })); - for (r in t) { - s = t[r]; - if (Un.exec(s)) { - delete t[r], a = a || s === "toggle"; - if (s === (g ? "hide" : "show"))continue; - m.push(r) - } - } - o = m.length; - if (o) { - u = v._data(e, "fxshow") || v._data(e, "fxshow", {}), "hidden"in u && (g = u.hidden), a && (u.hidden = !g), g ? v(e).show() : h.done(function () { - v(e).hide() - }), h.done(function () { - var t; - v.removeData(e, "fxshow", !0); - for (t in d)v.style(e, t, d[t]) - }); - for (r = 0; r < o; r++)i = m[r], f = h.createTween(i, g ? u[i] : 0), d[i] = u[i] || v.style(e, i), i in u || (u[i] = f.start, g && (f.end = f.start, f.start = i === "width" || i === "height" ? 1 : 0)) - } - } - - function Yn(e, t, n, r, i) { - return new Yn.prototype.init(e, t, n, r, i) - } - - function Zn(e, t) { - var n, r = {height: e}, i = 0; - t = t ? 1 : 0; - for (; i < 4; i += 2 - t)n = $t[i], r["margin" + n] = r["padding" + n] = e; - return t && (r.opacity = r.width = e), r - } - - function tr(e) { - return v.isWindow(e) ? e : e.nodeType === 9 ? e.defaultView || e.parentWindow : !1 - } - - var n, r, i = e.document, s = e.location, o = e.navigator, u = e.jQuery, a = e.$, f = Array.prototype.push, l = Array.prototype.slice, c = Array.prototype.indexOf, h = Object.prototype.toString, p = Object.prototype.hasOwnProperty, d = String.prototype.trim, v = function (e, t) { - return new v.fn.init(e, t, n) - }, m = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source, g = /\S/, y = /\s+/, b = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, w = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, E = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, S = /^[\],:{}\s]*$/, x = /(?:^|:|,)(?:\s*\[)+/g, T = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, N = /"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g, C = /^-ms-/, k = /-([\da-z])/gi, L = function (e, t) { - return (t + "").toUpperCase() - }, A = function () { - i.addEventListener ? (i.removeEventListener("DOMContentLoaded", A, !1), v.ready()) : i.readyState === "complete" && (i.detachEvent("onreadystatechange", A), v.ready()) - }, O = {}; - v.fn = v.prototype = { - constructor: v, init: function (e, n, r) { - var s, o, u, a; - if (!e)return this; - if (e.nodeType)return this.context = this[0] = e, this.length = 1, this; - if (typeof e == "string") { - e.charAt(0) === "<" && e.charAt(e.length - 1) === ">" && e.length >= 3 ? s = [null, e, null] : s = w.exec(e); - if (s && (s[1] || !n)) { - if (s[1])return n = n instanceof v ? n[0] : n, a = n && n.nodeType ? n.ownerDocument || n : i, e = v.parseHTML(s[1], a, !0), E.test(s[1]) && v.isPlainObject(n) && this.attr.call(e, n, !0), v.merge(this, e); - o = i.getElementById(s[2]); - if (o && o.parentNode) { - if (o.id !== s[2])return r.find(e); - this.length = 1, this[0] = o - } - return this.context = i, this.selector = e, this - } - return !n || n.jquery ? (n || r).find(e) : this.constructor(n).find(e) - } - return v.isFunction(e) ? r.ready(e) : (e.selector !== t && (this.selector = e.selector, this.context = e.context), v.makeArray(e, this)) - }, selector: "", jquery: "1.8.3", length: 0, size: function () { - return this.length - }, toArray: function () { - return l.call(this) - }, get: function (e) { - return e == null ? this.toArray() : e < 0 ? this[this.length + e] : this[e] - }, pushStack: function (e, t, n) { - var r = v.merge(this.constructor(), e); - return r.prevObject = this, r.context = this.context, t === "find" ? r.selector = this.selector + (this.selector ? " " : "") + n : t && (r.selector = this.selector + "." + t + "(" + n + ")"), r - }, each: function (e, t) { - return v.each(this, e, t) - }, ready: function (e) { - return v.ready.promise().done(e), this - }, eq: function (e) { - return e = +e, e === -1 ? this.slice(e) : this.slice(e, e + 1) - }, first: function () { - return this.eq(0) - }, last: function () { - return this.eq(-1) - }, slice: function () { - return this.pushStack(l.apply(this, arguments), "slice", l.call(arguments).join(",")) - }, map: function (e) { - return this.pushStack(v.map(this, function (t, n) { - return e.call(t, n, t) - })) - }, end: function () { - return this.prevObject || this.constructor(null) - }, push: f, sort: [].sort, splice: [].splice - }, v.fn.init.prototype = v.fn, v.extend = v.fn.extend = function () { - var e, n, r, i, s, o, u = arguments[0] || {}, a = 1, f = arguments.length, l = !1; - typeof u == "boolean" && (l = u, u = arguments[1] || {}, a = 2), typeof u != "object" && !v.isFunction(u) && (u = {}), f === a && (u = this, --a); - for (; a < f; a++)if ((e = arguments[a]) != null)for (n in e) { - r = u[n], i = e[n]; - if (u === i)continue; - l && i && (v.isPlainObject(i) || (s = v.isArray(i))) ? (s ? (s = !1, o = r && v.isArray(r) ? r : []) : o = r && v.isPlainObject(r) ? r : {}, u[n] = v.extend(l, o, i)) : i !== t && (u[n] = i) - } - return u - }, v.extend({ - noConflict: function (t) { - return e.$ === v && (e.$ = a), t && e.jQuery === v && (e.jQuery = u), v - }, isReady: !1, readyWait: 1, holdReady: function (e) { - e ? v.readyWait++ : v.ready(!0) - }, ready: function (e) { - if (e === !0 ? --v.readyWait : v.isReady)return; - if (!i.body)return setTimeout(v.ready, 1); - v.isReady = !0; - if (e !== !0 && --v.readyWait > 0)return; - r.resolveWith(i, [v]), v.fn.trigger && v(i).trigger("ready").off("ready") - }, isFunction: function (e) { - return v.type(e) === "function" - }, isArray: Array.isArray || function (e) { - return v.type(e) === "array" - }, isWindow: function (e) { - return e != null && e == e.window - }, isNumeric: function (e) { - return !isNaN(parseFloat(e)) && isFinite(e) - }, type: function (e) { - return e == null ? String(e) : O[h.call(e)] || "object" - }, isPlainObject: function (e) { - if (!e || v.type(e) !== "object" || e.nodeType || v.isWindow(e))return !1; - try { - if (e.constructor && !p.call(e, "constructor") && !p.call(e.constructor.prototype, "isPrototypeOf"))return !1 - } catch (n) { - return !1 - } - var r; - for (r in e); - return r === t || p.call(e, r) - }, isEmptyObject: function (e) { - var t; - for (t in e)return !1; - return !0 - }, error: function (e) { - throw new Error(e) - }, parseHTML: function (e, t, n) { - var r; - return !e || typeof e != "string" ? null : (typeof t == "boolean" && (n = t, t = 0), t = t || i, (r = E.exec(e)) ? [t.createElement(r[1])] : (r = v.buildFragment([e], t, n ? null : []), v.merge([], (r.cacheable ? v.clone(r.fragment) : r.fragment).childNodes))) - }, parseJSON: function (t) { - if (!t || typeof t != "string")return null; - t = v.trim(t); - if (e.JSON && e.JSON.parse)return e.JSON.parse(t); - if (S.test(t.replace(T, "@").replace(N, "]").replace(x, "")))return (new Function("return " + t))(); - v.error("Invalid JSON: " + t) - }, parseXML: function (n) { - var r, i; - if (!n || typeof n != "string")return null; - try { - e.DOMParser ? (i = new DOMParser, r = i.parseFromString(n, "text/xml")) : (r = new ActiveXObject("Microsoft.XMLDOM"), r.async = "false", r.loadXML(n)) - } catch (s) { - r = t - } - return (!r || !r.documentElement || r.getElementsByTagName("parsererror").length) && v.error("Invalid XML: " + n), r - }, noop: function () { - }, globalEval: function (t) { - t && g.test(t) && (e.execScript || function (t) { - e.eval.call(e, t) - })(t) - }, camelCase: function (e) { - return e.replace(C, "ms-").replace(k, L) - }, nodeName: function (e, t) { - return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase() - }, each: function (e, n, r) { - var i, s = 0, o = e.length, u = o === t || v.isFunction(e); - if (r) { - if (u) { - for (i in e)if (n.apply(e[i], r) === !1)break - } else for (; s < o;)if (n.apply(e[s++], r) === !1)break - } else if (u) { - for (i in e)if (n.call(e[i], i, e[i]) === !1)break - } else for (; s < o;)if (n.call(e[s], s, e[s++]) === !1)break; - return e - }, trim: d && !d.call("\ufeff\u00a0") ? function (e) { - return e == null ? "" : d.call(e) - } : function (e) { - return e == null ? "" : (e + "").replace(b, "") - }, makeArray: function (e, t) { - var n, r = t || []; - return e != null && (n = v.type(e), e.length == null || n === "string" || n === "function" || n === "regexp" || v.isWindow(e) ? f.call(r, e) : v.merge(r, e)), r - }, inArray: function (e, t, n) { - var r; - if (t) { - if (c)return c.call(t, e, n); - r = t.length, n = n ? n < 0 ? Math.max(0, r + n) : n : 0; - for (; n < r; n++)if (n in t && t[n] === e)return n - } - return -1 - }, merge: function (e, n) { - var r = n.length, i = e.length, s = 0; - if (typeof r == "number")for (; s < r; s++)e[i++] = n[s]; else while (n[s] !== t)e[i++] = n[s++]; - return e.length = i, e - }, grep: function (e, t, n) { - var r, i = [], s = 0, o = e.length; - n = !!n; - for (; s < o; s++)r = !!t(e[s], s), n !== r && i.push(e[s]); - return i - }, map: function (e, n, r) { - var i, s, o = [], u = 0, a = e.length, f = e instanceof v || a !== t && typeof a == "number" && (a > 0 && e[0] && e[a - 1] || a === 0 || v.isArray(e)); - if (f)for (; u < a; u++)i = n(e[u], u, r), i != null && (o[o.length] = i); else for (s in e)i = n(e[s], s, r), i != null && (o[o.length] = i); - return o.concat.apply([], o) - }, guid: 1, proxy: function (e, n) { - var r, i, s; - return typeof n == "string" && (r = e[n], n = e, e = r), v.isFunction(e) ? (i = l.call(arguments, 2), s = function () { - return e.apply(n, i.concat(l.call(arguments))) - }, s.guid = e.guid = e.guid || v.guid++, s) : t - }, access: function (e, n, r, i, s, o, u) { - var a, f = r == null, l = 0, c = e.length; - if (r && typeof r == "object") { - for (l in r)v.access(e, n, l, r[l], 1, o, i); - s = 1 - } else if (i !== t) { - a = u === t && v.isFunction(i), f && (a ? (a = n, n = function (e, t, n) { - return a.call(v(e), n) - }) : (n.call(e, i), n = null)); - if (n)for (; l < c; l++)n(e[l], r, a ? i.call(e[l], l, n(e[l], r)) : i, u); - s = 1 - } - return s ? e : f ? n.call(e) : c ? n(e[0], r) : o - }, now: function () { - return (new Date).getTime() - } - }), v.ready.promise = function (t) { - if (!r) { - r = v.Deferred(); - if (i.readyState === "complete")setTimeout(v.ready, 1); else if (i.addEventListener)i.addEventListener("DOMContentLoaded", A, !1), e.addEventListener("load", v.ready, !1); else { - i.attachEvent("onreadystatechange", A), e.attachEvent("onload", v.ready); - var n = !1; - try { - n = e.frameElement == null && i.documentElement - } catch (s) { - } - n && n.doScroll && function o() { - if (!v.isReady) { - try { - n.doScroll("left") - } catch (e) { - return setTimeout(o, 50) - } - v.ready() - } - }() - } - } - return r.promise(t) - }, v.each("Boolean Number String Function Array Date RegExp Object".split(" "), function (e, t) { - O["[object " + t + "]"] = t.toLowerCase() - }), n = v(i); - var M = {}; - v.Callbacks = function (e) { - e = typeof e == "string" ? M[e] || _(e) : v.extend({}, e); - var n, r, i, s, o, u, a = [], f = !e.once && [], l = function (t) { - n = e.memory && t, r = !0, u = s || 0, s = 0, o = a.length, i = !0; - for (; a && u < o; u++)if (a[u].apply(t[0], t[1]) === !1 && e.stopOnFalse) { - n = !1; - break - } - i = !1, a && (f ? f.length && l(f.shift()) : n ? a = [] : c.disable()) - }, c = { - add: function () { - if (a) { - var t = a.length; - (function r(t) { - v.each(t, function (t, n) { - var i = v.type(n); - i === "function" ? (!e.unique || !c.has(n)) && a.push(n) : n && n.length && i !== "string" && r(n) - }) - })(arguments), i ? o = a.length : n && (s = t, l(n)) - } - return this - }, remove: function () { - return a && v.each(arguments, function (e, t) { - var n; - while ((n = v.inArray(t, a, n)) > -1)a.splice(n, 1), i && (n <= o && o--, n <= u && u--) - }), this - }, has: function (e) { - return v.inArray(e, a) > -1 - }, empty: function () { - return a = [], this - }, disable: function () { - return a = f = n = t, this - }, disabled: function () { - return !a - }, lock: function () { - return f = t, n || c.disable(), this - }, locked: function () { - return !f - }, fireWith: function (e, t) { - return t = t || [], t = [e, t.slice ? t.slice() : t], a && (!r || f) && (i ? f.push(t) : l(t)), this - }, fire: function () { - return c.fireWith(this, arguments), this - }, fired: function () { - return !!r - } - }; - return c - }, v.extend({ - Deferred: function (e) { - var t = [["resolve", "done", v.Callbacks("once memory"), "resolved"], ["reject", "fail", v.Callbacks("once memory"), "rejected"], ["notify", "progress", v.Callbacks("memory")]], n = "pending", r = { - state: function () { - return n - }, always: function () { - return i.done(arguments).fail(arguments), this - }, then: function () { - var e = arguments; - return v.Deferred(function (n) { - v.each(t, function (t, r) { - var s = r[0], o = e[t]; - i[r[1]](v.isFunction(o) ? function () { - var e = o.apply(this, arguments); - e && v.isFunction(e.promise) ? e.promise().done(n.resolve).fail(n.reject).progress(n.notify) : n[s + "With"](this === i ? n : this, [e]) - } : n[s]) - }), e = null - }).promise() - }, promise: function (e) { - return e != null ? v.extend(e, r) : r - } - }, i = {}; - return r.pipe = r.then, v.each(t, function (e, s) { - var o = s[2], u = s[3]; - r[s[1]] = o.add, u && o.add(function () { - n = u - }, t[e ^ 1][2].disable, t[2][2].lock), i[s[0]] = o.fire, i[s[0] + "With"] = o.fireWith - }), r.promise(i), e && e.call(i, i), i - }, when: function (e) { - var t = 0, n = l.call(arguments), r = n.length, i = r !== 1 || e && v.isFunction(e.promise) ? r : 0, s = i === 1 ? e : v.Deferred(), o = function (e, t, n) { - return function (r) { - t[e] = this, n[e] = arguments.length > 1 ? l.call(arguments) : r, n === u ? s.notifyWith(t, n) : --i || s.resolveWith(t, n) - } - }, u, a, f; - if (r > 1) { - u = new Array(r), a = new Array(r), f = new Array(r); - for (; t < r; t++)n[t] && v.isFunction(n[t].promise) ? n[t].promise().done(o(t, f, n)).fail(s.reject).progress(o(t, a, u)) : --i - } - return i || s.resolveWith(f, n), s.promise() - } - }), v.support = function () { - var t, n, r, s, o, u, a, f, l, c, h, p = i.createElement("div"); - p.setAttribute("className", "t"), p.innerHTML = "
a", n = p.getElementsByTagName("*"), r = p.getElementsByTagName("a")[0]; - if (!n || !r || !n.length)return {}; - s = i.createElement("select"), o = s.appendChild(i.createElement("option")), u = p.getElementsByTagName("input")[0], r.style.cssText = "top:1px;float:left;opacity:.5", t = { - leadingWhitespace: p.firstChild.nodeType === 3, - tbody: !p.getElementsByTagName("tbody").length, - htmlSerialize: !!p.getElementsByTagName("link").length, - style: /top/.test(r.getAttribute("style")), - hrefNormalized: r.getAttribute("href") === "/a", - opacity: /^0.5/.test(r.style.opacity), - cssFloat: !!r.style.cssFloat, - checkOn: u.value === "on", - optSelected: o.selected, - getSetAttribute: p.className !== "t", - enctype: !!i.createElement("form").enctype, - html5Clone: i.createElement("nav").cloneNode(!0).outerHTML !== "<:nav>", - boxModel: i.compatMode === "CSS1Compat", - submitBubbles: !0, - changeBubbles: !0, - focusinBubbles: !1, - deleteExpando: !0, - noCloneEvent: !0, - inlineBlockNeedsLayout: !1, - shrinkWrapBlocks: !1, - reliableMarginRight: !0, - boxSizingReliable: !0, - pixelPosition: !1 - }, u.checked = !0, t.noCloneChecked = u.cloneNode(!0).checked, s.disabled = !0, t.optDisabled = !o.disabled; - try { - delete p.test - } catch (d) { - t.deleteExpando = !1 - } - !p.addEventListener && p.attachEvent && p.fireEvent && (p.attachEvent("onclick", h = function () { - t.noCloneEvent = !1 - }), p.cloneNode(!0).fireEvent("onclick"), p.detachEvent("onclick", h)), u = i.createElement("input"), u.value = "t", u.setAttribute("type", "radio"), t.radioValue = u.value === "t", u.setAttribute("checked", "checked"), u.setAttribute("name", "t"), p.appendChild(u), a = i.createDocumentFragment(), a.appendChild(p.lastChild), t.checkClone = a.cloneNode(!0).cloneNode(!0).lastChild.checked, t.appendChecked = u.checked, a.removeChild(u), a.appendChild(p); - if (p.attachEvent)for (l in{ - submit: !0, - change: !0, - focusin: !0 - })f = "on" + l, c = f in p, c || (p.setAttribute(f, "return;"), c = typeof p[f] == "function"), t[l + "Bubbles"] = c; - return v(function () { - var n, r, s, o, u = "padding:0;margin:0;border:0;display:block;overflow:hidden;", a = i.getElementsByTagName("body")[0]; - if (!a)return; - n = i.createElement("div"), n.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px", a.insertBefore(n, a.firstChild), r = i.createElement("div"), n.appendChild(r), r.innerHTML = "
t
", s = r.getElementsByTagName("td"), s[0].style.cssText = "padding:0;margin:0;border:0;display:none", c = s[0].offsetHeight === 0, s[0].style.display = "", s[1].style.display = "none", t.reliableHiddenOffsets = c && s[0].offsetHeight === 0, r.innerHTML = "", r.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;", t.boxSizing = r.offsetWidth === 4, t.doesNotIncludeMarginInBodyOffset = a.offsetTop !== 1, e.getComputedStyle && (t.pixelPosition = (e.getComputedStyle(r, null) || {}).top !== "1%", t.boxSizingReliable = (e.getComputedStyle(r, null) || {width: "4px"}).width === "4px", o = i.createElement("div"), o.style.cssText = r.style.cssText = u, o.style.marginRight = o.style.width = "0", r.style.width = "1px", r.appendChild(o), t.reliableMarginRight = !parseFloat((e.getComputedStyle(o, null) || {}).marginRight)), typeof r.style.zoom != "undefined" && (r.innerHTML = "", r.style.cssText = u + "width:1px;padding:1px;display:inline;zoom:1", t.inlineBlockNeedsLayout = r.offsetWidth === 3, r.style.display = "block", r.style.overflow = "visible", r.innerHTML = "
", r.firstChild.style.width = "5px", t.shrinkWrapBlocks = r.offsetWidth !== 3, n.style.zoom = 1), a.removeChild(n), n = r = s = o = null - }), a.removeChild(p), n = r = s = o = u = a = p = null, t - }(); - var D = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, P = /([A-Z])/g; - v.extend({ - cache: {}, - deletedIds: [], - uuid: 0, - expando: "jQuery" + (v.fn.jquery + Math.random()).replace(/\D/g, ""), - noData: {embed: !0, object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", applet: !0}, - hasData: function (e) { - return e = e.nodeType ? v.cache[e[v.expando]] : e[v.expando], !!e && !B(e) - }, - data: function (e, n, r, i) { - if (!v.acceptData(e))return; - var s, o, u = v.expando, a = typeof n == "string", f = e.nodeType, l = f ? v.cache : e, c = f ? e[u] : e[u] && u; - if ((!c || !l[c] || !i && !l[c].data) && a && r === t)return; - c || (f ? e[u] = c = v.deletedIds.pop() || v.guid++ : c = u), l[c] || (l[c] = {}, f || (l[c].toJSON = v.noop)); - if (typeof n == "object" || typeof n == "function")i ? l[c] = v.extend(l[c], n) : l[c].data = v.extend(l[c].data, n); - return s = l[c], i || (s.data || (s.data = {}), s = s.data), r !== t && (s[v.camelCase(n)] = r), a ? (o = s[n], o == null && (o = s[v.camelCase(n)])) : o = s, o - }, - removeData: function (e, t, n) { - if (!v.acceptData(e))return; - var r, i, s, o = e.nodeType, u = o ? v.cache : e, a = o ? e[v.expando] : v.expando; - if (!u[a])return; - if (t) { - r = n ? u[a] : u[a].data; - if (r) { - v.isArray(t) || (t in r ? t = [t] : (t = v.camelCase(t), t in r ? t = [t] : t = t.split(" "))); - for (i = 0, s = t.length; i < s; i++)delete r[t[i]]; - if (!(n ? B : v.isEmptyObject)(r))return - } - } - if (!n) { - delete u[a].data; - if (!B(u[a]))return - } - o ? v.cleanData([e], !0) : v.support.deleteExpando || u != u.window ? delete u[a] : u[a] = null - }, - _data: function (e, t, n) { - return v.data(e, t, n, !0) - }, - acceptData: function (e) { - var t = e.nodeName && v.noData[e.nodeName.toLowerCase()]; - return !t || t !== !0 && e.getAttribute("classid") === t - } - }), v.fn.extend({ - data: function (e, n) { - var r, i, s, o, u, a = this[0], f = 0, l = null; - if (e === t) { - if (this.length) { - l = v.data(a); - if (a.nodeType === 1 && !v._data(a, "parsedAttrs")) { - s = a.attributes; - for (u = s.length; f < u; f++)o = s[f].name, o.indexOf("data-") || (o = v.camelCase(o.substring(5)), H(a, o, l[o])); - v._data(a, "parsedAttrs", !0) - } - } - return l - } - return typeof e == "object" ? this.each(function () { - v.data(this, e) - }) : (r = e.split(".", 2), r[1] = r[1] ? "." + r[1] : "", i = r[1] + "!", v.access(this, function (n) { - if (n === t)return l = this.triggerHandler("getData" + i, [r[0]]), l === t && a && (l = v.data(a, e), l = H(a, e, l)), l === t && r[1] ? this.data(r[0]) : l; - r[1] = n, this.each(function () { - var t = v(this); - t.triggerHandler("setData" + i, r), v.data(this, e, n), t.triggerHandler("changeData" + i, r) - }) - }, null, n, arguments.length > 1, null, !1)) - }, removeData: function (e) { - return this.each(function () { - v.removeData(this, e) - }) - } - }), v.extend({ - queue: function (e, t, n) { - var r; - if (e)return t = (t || "fx") + "queue", r = v._data(e, t), n && (!r || v.isArray(n) ? r = v._data(e, t, v.makeArray(n)) : r.push(n)), r || [] - }, dequeue: function (e, t) { - t = t || "fx"; - var n = v.queue(e, t), r = n.length, i = n.shift(), s = v._queueHooks(e, t), o = function () { - v.dequeue(e, t) - }; - i === "inprogress" && (i = n.shift(), r--), i && (t === "fx" && n.unshift("inprogress"), delete s.stop, i.call(e, o, s)), !r && s && s.empty.fire() - }, _queueHooks: function (e, t) { - var n = t + "queueHooks"; - return v._data(e, n) || v._data(e, n, { - empty: v.Callbacks("once memory").add(function () { - v.removeData(e, t + "queue", !0), v.removeData(e, n, !0) - }) - }) - } - }), v.fn.extend({ - queue: function (e, n) { - var r = 2; - return typeof e != "string" && (n = e, e = "fx", r--), arguments.length < r ? v.queue(this[0], e) : n === t ? this : this.each(function () { - var t = v.queue(this, e, n); - v._queueHooks(this, e), e === "fx" && t[0] !== "inprogress" && v.dequeue(this, e) - }) - }, dequeue: function (e) { - return this.each(function () { - v.dequeue(this, e) - }) - }, delay: function (e, t) { - return e = v.fx ? v.fx.speeds[e] || e : e, t = t || "fx", this.queue(t, function (t, n) { - var r = setTimeout(t, e); - n.stop = function () { - clearTimeout(r) - } - }) - }, clearQueue: function (e) { - return this.queue(e || "fx", []) - }, promise: function (e, n) { - var r, i = 1, s = v.Deferred(), o = this, u = this.length, a = function () { - --i || s.resolveWith(o, [o]) - }; - typeof e != "string" && (n = e, e = t), e = e || "fx"; - while (u--)r = v._data(o[u], e + "queueHooks"), r && r.empty && (i++, r.empty.add(a)); - return a(), s.promise(n) - } - }); - var j, F, I, q = /[\t\r\n]/g, R = /\r/g, U = /^(?:button|input)$/i, z = /^(?:button|input|object|select|textarea)$/i, W = /^a(?:rea|)$/i, X = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, V = v.support.getSetAttribute; - v.fn.extend({ - attr: function (e, t) { - return v.access(this, v.attr, e, t, arguments.length > 1) - }, removeAttr: function (e) { - return this.each(function () { - v.removeAttr(this, e) - }) - }, prop: function (e, t) { - return v.access(this, v.prop, e, t, arguments.length > 1) - }, removeProp: function (e) { - return e = v.propFix[e] || e, this.each(function () { - try { - this[e] = t, delete this[e] - } catch (n) { - } - }) - }, addClass: function (e) { - var t, n, r, i, s, o, u; - if (v.isFunction(e))return this.each(function (t) { - v(this).addClass(e.call(this, t, this.className)) - }); - if (e && typeof e == "string") { - t = e.split(y); - for (n = 0, r = this.length; n < r; n++) { - i = this[n]; - if (i.nodeType === 1)if (!i.className && t.length === 1)i.className = e; else { - s = " " + i.className + " "; - for (o = 0, u = t.length; o < u; o++)s.indexOf(" " + t[o] + " ") < 0 && (s += t[o] + " "); - i.className = v.trim(s) - } - } - } - return this - }, removeClass: function (e) { - var n, r, i, s, o, u, a; - if (v.isFunction(e))return this.each(function (t) { - v(this).removeClass(e.call(this, t, this.className)) - }); - if (e && typeof e == "string" || e === t) { - n = (e || "").split(y); - for (u = 0, a = this.length; u < a; u++) { - i = this[u]; - if (i.nodeType === 1 && i.className) { - r = (" " + i.className + " ").replace(q, " "); - for (s = 0, o = n.length; s < o; s++)while (r.indexOf(" " + n[s] + " ") >= 0)r = r.replace(" " + n[s] + " ", " "); - i.className = e ? v.trim(r) : "" - } - } - } - return this - }, toggleClass: function (e, t) { - var n = typeof e, r = typeof t == "boolean"; - return v.isFunction(e) ? this.each(function (n) { - v(this).toggleClass(e.call(this, n, this.className, t), t) - }) : this.each(function () { - if (n === "string") { - var i, s = 0, o = v(this), u = t, a = e.split(y); - while (i = a[s++])u = r ? u : !o.hasClass(i), o[u ? "addClass" : "removeClass"](i) - } else if (n === "undefined" || n === "boolean")this.className && v._data(this, "__className__", this.className), this.className = this.className || e === !1 ? "" : v._data(this, "__className__") || "" - }) - }, hasClass: function (e) { - var t = " " + e + " ", n = 0, r = this.length; - for (; n < r; n++)if (this[n].nodeType === 1 && (" " + this[n].className + " ").replace(q, " ").indexOf(t) >= 0)return !0; - return !1 - }, val: function (e) { - var n, r, i, s = this[0]; - if (!arguments.length) { - if (s)return n = v.valHooks[s.type] || v.valHooks[s.nodeName.toLowerCase()], n && "get"in n && (r = n.get(s, "value")) !== t ? r : (r = s.value, typeof r == "string" ? r.replace(R, "") : r == null ? "" : r); - return - } - return i = v.isFunction(e), this.each(function (r) { - var s, o = v(this); - if (this.nodeType !== 1)return; - i ? s = e.call(this, r, o.val()) : s = e, s == null ? s = "" : typeof s == "number" ? s += "" : v.isArray(s) && (s = v.map(s, function (e) { - return e == null ? "" : e + "" - })), n = v.valHooks[this.type] || v.valHooks[this.nodeName.toLowerCase()]; - if (!n || !("set"in n) || n.set(this, s, "value") === t)this.value = s - }) - } - }), v.extend({ - valHooks: { - option: { - get: function (e) { - var t = e.attributes.value; - return !t || t.specified ? e.value : e.text - } - }, select: { - get: function (e) { - var t, n, r = e.options, i = e.selectedIndex, s = e.type === "select-one" || i < 0, o = s ? null : [], u = s ? i + 1 : r.length, a = i < 0 ? u : s ? i : 0; - for (; a < u; a++) { - n = r[a]; - if ((n.selected || a === i) && (v.support.optDisabled ? !n.disabled : n.getAttribute("disabled") === null) && (!n.parentNode.disabled || !v.nodeName(n.parentNode, "optgroup"))) { - t = v(n).val(); - if (s)return t; - o.push(t) - } - } - return o - }, set: function (e, t) { - var n = v.makeArray(t); - return v(e).find("option").each(function () { - this.selected = v.inArray(v(this).val(), n) >= 0 - }), n.length || (e.selectedIndex = -1), n - } - } - }, - attrFn: {}, - attr: function (e, n, r, i) { - var s, o, u, a = e.nodeType; - if (!e || a === 3 || a === 8 || a === 2)return; - if (i && v.isFunction(v.fn[n]))return v(e)[n](r); - if (typeof e.getAttribute == "undefined")return v.prop(e, n, r); - u = a !== 1 || !v.isXMLDoc(e), u && (n = n.toLowerCase(), o = v.attrHooks[n] || (X.test(n) ? F : j)); - if (r !== t) { - if (r === null) { - v.removeAttr(e, n); - return - } - return o && "set"in o && u && (s = o.set(e, r, n)) !== t ? s : (e.setAttribute(n, r + ""), r) - } - return o && "get"in o && u && (s = o.get(e, n)) !== null ? s : (s = e.getAttribute(n), s === null ? t : s) - }, - removeAttr: function (e, t) { - var n, r, i, s, o = 0; - if (t && e.nodeType === 1) { - r = t.split(y); - for (; o < r.length; o++)i = r[o], i && (n = v.propFix[i] || i, s = X.test(i), s || v.attr(e, i, ""), e.removeAttribute(V ? i : n), s && n in e && (e[n] = !1)) - } - }, - attrHooks: { - type: { - set: function (e, t) { - if (U.test(e.nodeName) && e.parentNode)v.error("type property can't be changed"); else if (!v.support.radioValue && t === "radio" && v.nodeName(e, "input")) { - var n = e.value; - return e.setAttribute("type", t), n && (e.value = n), t - } - } - }, value: { - get: function (e, t) { - return j && v.nodeName(e, "button") ? j.get(e, t) : t in e ? e.value : null - }, set: function (e, t, n) { - if (j && v.nodeName(e, "button"))return j.set(e, t, n); - e.value = t - } - } - }, - propFix: { - tabindex: "tabIndex", - readonly: "readOnly", - "for": "htmlFor", - "class": "className", - maxlength: "maxLength", - cellspacing: "cellSpacing", - cellpadding: "cellPadding", - rowspan: "rowSpan", - colspan: "colSpan", - usemap: "useMap", - frameborder: "frameBorder", - contenteditable: "contentEditable" - }, - prop: function (e, n, r) { - var i, s, o, u = e.nodeType; - if (!e || u === 3 || u === 8 || u === 2)return; - return o = u !== 1 || !v.isXMLDoc(e), o && (n = v.propFix[n] || n, s = v.propHooks[n]), r !== t ? s && "set"in s && (i = s.set(e, r, n)) !== t ? i : e[n] = r : s && "get"in s && (i = s.get(e, n)) !== null ? i : e[n] - }, - propHooks: { - tabIndex: { - get: function (e) { - var n = e.getAttributeNode("tabindex"); - return n && n.specified ? parseInt(n.value, 10) : z.test(e.nodeName) || W.test(e.nodeName) && e.href ? 0 : t - } - } - } - }), F = { - get: function (e, n) { - var r, i = v.prop(e, n); - return i === !0 || typeof i != "boolean" && (r = e.getAttributeNode(n)) && r.nodeValue !== !1 ? n.toLowerCase() : t - }, set: function (e, t, n) { - var r; - return t === !1 ? v.removeAttr(e, n) : (r = v.propFix[n] || n, r in e && (e[r] = !0), e.setAttribute(n, n.toLowerCase())), n - } - }, V || (I = {name: !0, id: !0, coords: !0}, j = v.valHooks.button = { - get: function (e, n) { - var r; - return r = e.getAttributeNode(n), r && (I[n] ? r.value !== "" : r.specified) ? r.value : t - }, set: function (e, t, n) { - var r = e.getAttributeNode(n); - return r || (r = i.createAttribute(n), e.setAttributeNode(r)), r.value = t + "" - } - }, v.each(["width", "height"], function (e, t) { - v.attrHooks[t] = v.extend(v.attrHooks[t], { - set: function (e, n) { - if (n === "")return e.setAttribute(t, "auto"), n - } - }) - }), v.attrHooks.contenteditable = { - get: j.get, set: function (e, t, n) { - t === "" && (t = "false"), j.set(e, t, n) - } - }), v.support.hrefNormalized || v.each(["href", "src", "width", "height"], function (e, n) { - v.attrHooks[n] = v.extend(v.attrHooks[n], { - get: function (e) { - var r = e.getAttribute(n, 2); - return r === null ? t : r - } - }) - }), v.support.style || (v.attrHooks.style = { - get: function (e) { - return e.style.cssText.toLowerCase() || t - }, set: function (e, t) { - return e.style.cssText = t + "" - } - }), v.support.optSelected || (v.propHooks.selected = v.extend(v.propHooks.selected, { - get: function (e) { - var t = e.parentNode; - return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex), null - } - })), v.support.enctype || (v.propFix.enctype = "encoding"), v.support.checkOn || v.each(["radio", "checkbox"], function () { - v.valHooks[this] = { - get: function (e) { - return e.getAttribute("value") === null ? "on" : e.value - } - } - }), v.each(["radio", "checkbox"], function () { - v.valHooks[this] = v.extend(v.valHooks[this], { - set: function (e, t) { - if (v.isArray(t))return e.checked = v.inArray(v(e).val(), t) >= 0 - } - }) - }); - var $ = /^(?:textarea|input|select)$/i, J = /^([^\.]*|)(?:\.(.+)|)$/, K = /(?:^|\s)hover(\.\S+|)\b/, Q = /^key/, G = /^(?:mouse|contextmenu)|click/, Y = /^(?:focusinfocus|focusoutblur)$/, Z = function (e) { - return v.event.special.hover ? e : e.replace(K, "mouseenter$1 mouseleave$1") - }; - v.event = { - add: function (e, n, r, i, s) { - var o, u, a, f, l, c, h, p, d, m, g; - if (e.nodeType === 3 || e.nodeType === 8 || !n || !r || !(o = v._data(e)))return; - r.handler && (d = r, r = d.handler, s = d.selector), r.guid || (r.guid = v.guid++), a = o.events, a || (o.events = a = {}), u = o.handle, u || (o.handle = u = function (e) { - return typeof v == "undefined" || !!e && v.event.triggered === e.type ? t : v.event.dispatch.apply(u.elem, arguments) - }, u.elem = e), n = v.trim(Z(n)).split(" "); - for (f = 0; f < n.length; f++) { - l = J.exec(n[f]) || [], c = l[1], h = (l[2] || "").split(".").sort(), g = v.event.special[c] || {}, c = (s ? g.delegateType : g.bindType) || c, g = v.event.special[c] || {}, p = v.extend({ - type: c, - origType: l[1], - data: i, - handler: r, - guid: r.guid, - selector: s, - needsContext: s && v.expr.match.needsContext.test(s), - namespace: h.join(".") - }, d), m = a[c]; - if (!m) { - m = a[c] = [], m.delegateCount = 0; - if (!g.setup || g.setup.call(e, i, h, u) === !1)e.addEventListener ? e.addEventListener(c, u, !1) : e.attachEvent && e.attachEvent("on" + c, u) - } - g.add && (g.add.call(e, p), p.handler.guid || (p.handler.guid = r.guid)), s ? m.splice(m.delegateCount++, 0, p) : m.push(p), v.event.global[c] = !0 - } - e = null - }, - global: {}, - remove: function (e, t, n, r, i) { - var s, o, u, a, f, l, c, h, p, d, m, g = v.hasData(e) && v._data(e); - if (!g || !(h = g.events))return; - t = v.trim(Z(t || "")).split(" "); - for (s = 0; s < t.length; s++) { - o = J.exec(t[s]) || [], u = a = o[1], f = o[2]; - if (!u) { - for (u in h)v.event.remove(e, u + t[s], n, r, !0); - continue - } - p = v.event.special[u] || {}, u = (r ? p.delegateType : p.bindType) || u, d = h[u] || [], l = d.length, f = f ? new RegExp("(^|\\.)" + f.split(".").sort().join("\\.(?:.*\\.|)") + "(\\.|$)") : null; - for (c = 0; c < d.length; c++)m = d[c], (i || a === m.origType) && (!n || n.guid === m.guid) && (!f || f.test(m.namespace)) && (!r || r === m.selector || r === "**" && m.selector) && (d.splice(c--, 1), m.selector && d.delegateCount--, p.remove && p.remove.call(e, m)); - d.length === 0 && l !== d.length && ((!p.teardown || p.teardown.call(e, f, g.handle) === !1) && v.removeEvent(e, u, g.handle), delete h[u]) - } - v.isEmptyObject(h) && (delete g.handle, v.removeData(e, "events", !0)) - }, - customEvent: {getData: !0, setData: !0, changeData: !0}, - trigger: function (n, r, s, o) { - if (!s || s.nodeType !== 3 && s.nodeType !== 8) { - var u, a, f, l, c, h, p, d, m, g, y = n.type || n, b = []; - if (Y.test(y + v.event.triggered))return; - y.indexOf("!") >= 0 && (y = y.slice(0, -1), a = !0), y.indexOf(".") >= 0 && (b = y.split("."), y = b.shift(), b.sort()); - if ((!s || v.event.customEvent[y]) && !v.event.global[y])return; - n = typeof n == "object" ? n[v.expando] ? n : new v.Event(y, n) : new v.Event(y), n.type = y, n.isTrigger = !0, n.exclusive = a, n.namespace = b.join("."), n.namespace_re = n.namespace ? new RegExp("(^|\\.)" + b.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, h = y.indexOf(":") < 0 ? "on" + y : ""; - if (!s) { - u = v.cache; - for (f in u)u[f].events && u[f].events[y] && v.event.trigger(n, r, u[f].handle.elem, !0); - return - } - n.result = t, n.target || (n.target = s), r = r != null ? v.makeArray(r) : [], r.unshift(n), p = v.event.special[y] || {}; - if (p.trigger && p.trigger.apply(s, r) === !1)return; - m = [[s, p.bindType || y]]; - if (!o && !p.noBubble && !v.isWindow(s)) { - g = p.delegateType || y, l = Y.test(g + y) ? s : s.parentNode; - for (c = s; l; l = l.parentNode)m.push([l, g]), c = l; - c === (s.ownerDocument || i) && m.push([c.defaultView || c.parentWindow || e, g]) - } - for (f = 0; f < m.length && !n.isPropagationStopped(); f++)l = m[f][0], n.type = m[f][1], d = (v._data(l, "events") || {})[n.type] && v._data(l, "handle"), d && d.apply(l, r), d = h && l[h], d && v.acceptData(l) && d.apply && d.apply(l, r) === !1 && n.preventDefault(); - return n.type = y, !o && !n.isDefaultPrevented() && (!p._default || p._default.apply(s.ownerDocument, r) === !1) && (y !== "click" || !v.nodeName(s, "a")) && v.acceptData(s) && h && s[y] && (y !== "focus" && y !== "blur" || n.target.offsetWidth !== 0) && !v.isWindow(s) && (c = s[h], c && (s[h] = null), v.event.triggered = y, s[y](), v.event.triggered = t, c && (s[h] = c)), n.result - } - return - }, - dispatch: function (n) { - n = v.event.fix(n || e.event); - var r, i, s, o, u, a, f, c, h, p, d = (v._data(this, "events") || {})[n.type] || [], m = d.delegateCount, g = l.call(arguments), y = !n.exclusive && !n.namespace, b = v.event.special[n.type] || {}, w = []; - g[0] = n, n.delegateTarget = this; - if (b.preDispatch && b.preDispatch.call(this, n) === !1)return; - if (m && (!n.button || n.type !== "click"))for (s = n.target; s != this; s = s.parentNode || this)if (s.disabled !== !0 || n.type !== "click") { - u = {}, f = []; - for (r = 0; r < m; r++)c = d[r], h = c.selector, u[h] === t && (u[h] = c.needsContext ? v(h, this).index(s) >= 0 : v.find(h, this, null, [s]).length), u[h] && f.push(c); - f.length && w.push({elem: s, matches: f}) - } - d.length > m && w.push({elem: this, matches: d.slice(m)}); - for (r = 0; r < w.length && !n.isPropagationStopped(); r++) { - a = w[r], n.currentTarget = a.elem; - for (i = 0; i < a.matches.length && !n.isImmediatePropagationStopped(); i++) { - c = a.matches[i]; - if (y || !n.namespace && !c.namespace || n.namespace_re && n.namespace_re.test(c.namespace))n.data = c.data, n.handleObj = c, o = ((v.event.special[c.origType] || {}).handle || c.handler).apply(a.elem, g), o !== t && (n.result = o, o === !1 && (n.preventDefault(), n.stopPropagation())) - } - } - return b.postDispatch && b.postDispatch.call(this, n), n.result - }, - props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - fixHooks: {}, - keyHooks: { - props: "char charCode key keyCode".split(" "), filter: function (e, t) { - return e.which == null && (e.which = t.charCode != null ? t.charCode : t.keyCode), e - } - }, - mouseHooks: { - props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function (e, n) { - var r, s, o, u = n.button, a = n.fromElement; - return e.pageX == null && n.clientX != null && (r = e.target.ownerDocument || i, s = r.documentElement, o = r.body, e.pageX = n.clientX + (s && s.scrollLeft || o && o.scrollLeft || 0) - (s && s.clientLeft || o && o.clientLeft || 0), e.pageY = n.clientY + (s && s.scrollTop || o && o.scrollTop || 0) - (s && s.clientTop || o && o.clientTop || 0)), !e.relatedTarget && a && (e.relatedTarget = a === e.target ? n.toElement : a), !e.which && u !== t && (e.which = u & 1 ? 1 : u & 2 ? 3 : u & 4 ? 2 : 0), e - } - }, - fix: function (e) { - if (e[v.expando])return e; - var t, n, r = e, s = v.event.fixHooks[e.type] || {}, o = s.props ? this.props.concat(s.props) : this.props; - e = v.Event(r); - for (t = o.length; t;)n = o[--t], e[n] = r[n]; - return e.target || (e.target = r.srcElement || i), e.target.nodeType === 3 && (e.target = e.target.parentNode), e.metaKey = !!e.metaKey, s.filter ? s.filter(e, r) : e - }, - special: { - load: {noBubble: !0}, - focus: {delegateType: "focusin"}, - blur: {delegateType: "focusout"}, - beforeunload: { - setup: function (e, t, n) { - v.isWindow(this) && (this.onbeforeunload = n) - }, teardown: function (e, t) { - this.onbeforeunload === t && (this.onbeforeunload = null) - } - } - }, - simulate: function (e, t, n, r) { - var i = v.extend(new v.Event, n, {type: e, isSimulated: !0, originalEvent: {}}); - r ? v.event.trigger(i, null, t) : v.event.dispatch.call(t, i), i.isDefaultPrevented() && n.preventDefault() - } - }, v.event.handle = v.event.dispatch, v.removeEvent = i.removeEventListener ? function (e, t, n) { - e.removeEventListener && e.removeEventListener(t, n, !1) - } : function (e, t, n) { - var r = "on" + t; - e.detachEvent && (typeof e[r] == "undefined" && (e[r] = null), e.detachEvent(r, n)) - }, v.Event = function (e, t) { - if (!(this instanceof v.Event))return new v.Event(e, t); - e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || e.returnValue === !1 || e.getPreventDefault && e.getPreventDefault() ? tt : et) : this.type = e, t && v.extend(this, t), this.timeStamp = e && e.timeStamp || v.now(), this[v.expando] = !0 - }, v.Event.prototype = { - preventDefault: function () { - this.isDefaultPrevented = tt; - var e = this.originalEvent; - if (!e)return; - e.preventDefault ? e.preventDefault() : e.returnValue = !1 - }, stopPropagation: function () { - this.isPropagationStopped = tt; - var e = this.originalEvent; - if (!e)return; - e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0 - }, stopImmediatePropagation: function () { - this.isImmediatePropagationStopped = tt, this.stopPropagation() - }, isDefaultPrevented: et, isPropagationStopped: et, isImmediatePropagationStopped: et - }, v.each({mouseenter: "mouseover", mouseleave: "mouseout"}, function (e, t) { - v.event.special[e] = { - delegateType: t, bindType: t, handle: function (e) { - var n, r = this, i = e.relatedTarget, s = e.handleObj, o = s.selector; - if (!i || i !== r && !v.contains(r, i))e.type = s.origType, n = s.handler.apply(this, arguments), e.type = t; - return n - } - } - }), v.support.submitBubbles || (v.event.special.submit = { - setup: function () { - if (v.nodeName(this, "form"))return !1; - v.event.add(this, "click._submit keypress._submit", function (e) { - var n = e.target, r = v.nodeName(n, "input") || v.nodeName(n, "button") ? n.form : t; - r && !v._data(r, "_submit_attached") && (v.event.add(r, "submit._submit", function (e) { - e._submit_bubble = !0 - }), v._data(r, "_submit_attached", !0)) - }) - }, postDispatch: function (e) { - e._submit_bubble && (delete e._submit_bubble, this.parentNode && !e.isTrigger && v.event.simulate("submit", this.parentNode, e, !0)) - }, teardown: function () { - if (v.nodeName(this, "form"))return !1; - v.event.remove(this, "._submit") - } - }), v.support.changeBubbles || (v.event.special.change = { - setup: function () { - if ($.test(this.nodeName)) { - if (this.type === "checkbox" || this.type === "radio")v.event.add(this, "propertychange._change", function (e) { - e.originalEvent.propertyName === "checked" && (this._just_changed = !0) - }), v.event.add(this, "click._change", function (e) { - this._just_changed && !e.isTrigger && (this._just_changed = !1), v.event.simulate("change", this, e, !0) - }); - return !1 - } - v.event.add(this, "beforeactivate._change", function (e) { - var t = e.target; - $.test(t.nodeName) && !v._data(t, "_change_attached") && (v.event.add(t, "change._change", function (e) { - this.parentNode && !e.isSimulated && !e.isTrigger && v.event.simulate("change", this.parentNode, e, !0) - }), v._data(t, "_change_attached", !0)) - }) - }, handle: function (e) { - var t = e.target; - if (this !== t || e.isSimulated || e.isTrigger || t.type !== "radio" && t.type !== "checkbox")return e.handleObj.handler.apply(this, arguments) - }, teardown: function () { - return v.event.remove(this, "._change"), !$.test(this.nodeName) - } - }), v.support.focusinBubbles || v.each({focus: "focusin", blur: "focusout"}, function (e, t) { - var n = 0, r = function (e) { - v.event.simulate(t, e.target, v.event.fix(e), !0) - }; - v.event.special[t] = { - setup: function () { - n++ === 0 && i.addEventListener(e, r, !0) - }, teardown: function () { - --n === 0 && i.removeEventListener(e, r, !0) - } - } - }), v.fn.extend({ - on: function (e, n, r, i, s) { - var o, u; - if (typeof e == "object") { - typeof n != "string" && (r = r || n, n = t); - for (u in e)this.on(u, n, r, e[u], s); - return this - } - r == null && i == null ? (i = n, r = n = t) : i == null && (typeof n == "string" ? (i = r, r = t) : (i = r, r = n, n = t)); - if (i === !1)i = et; else if (!i)return this; - return s === 1 && (o = i, i = function (e) { - return v().off(e), o.apply(this, arguments) - }, i.guid = o.guid || (o.guid = v.guid++)), this.each(function () { - v.event.add(this, e, i, r, n) - }) - }, one: function (e, t, n, r) { - return this.on(e, t, n, r, 1) - }, off: function (e, n, r) { - var i, s; - if (e && e.preventDefault && e.handleObj)return i = e.handleObj, v(e.delegateTarget).off(i.namespace ? i.origType + "." + i.namespace : i.origType, i.selector, i.handler), this; - if (typeof e == "object") { - for (s in e)this.off(s, n, e[s]); - return this - } - if (n === !1 || typeof n == "function")r = n, n = t; - return r === !1 && (r = et), this.each(function () { - v.event.remove(this, e, r, n) - }) - }, bind: function (e, t, n) { - return this.on(e, null, t, n) - }, unbind: function (e, t) { - return this.off(e, null, t) - }, live: function (e, t, n) { - return v(this.context).on(e, this.selector, t, n), this - }, die: function (e, t) { - return v(this.context).off(e, this.selector || "**", t), this - }, delegate: function (e, t, n, r) { - return this.on(t, e, n, r) - }, undelegate: function (e, t, n) { - return arguments.length === 1 ? this.off(e, "**") : this.off(t, e || "**", n) - }, trigger: function (e, t) { - return this.each(function () { - v.event.trigger(e, t, this) - }) - }, triggerHandler: function (e, t) { - if (this[0])return v.event.trigger(e, t, this[0], !0) - }, toggle: function (e) { - var t = arguments, n = e.guid || v.guid++, r = 0, i = function (n) { - var i = (v._data(this, "lastToggle" + e.guid) || 0) % r; - return v._data(this, "lastToggle" + e.guid, i + 1), n.preventDefault(), t[i].apply(this, arguments) || !1 - }; - i.guid = n; - while (r < t.length)t[r++].guid = n; - return this.click(i) - }, hover: function (e, t) { - return this.mouseenter(e).mouseleave(t || e) - } - }), v.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function (e, t) { - v.fn[t] = function (e, n) { - return n == null && (n = e, e = null), arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t) - }, Q.test(t) && (v.event.fixHooks[t] = v.event.keyHooks), G.test(t) && (v.event.fixHooks[t] = v.event.mouseHooks) - }), function (e, t) { - function nt(e, t, n, r) { - n = n || [], t = t || g; - var i, s, a, f, l = t.nodeType; - if (!e || typeof e != "string")return n; - if (l !== 1 && l !== 9)return []; - a = o(t); - if (!a && !r)if (i = R.exec(e))if (f = i[1]) { - if (l === 9) { - s = t.getElementById(f); - if (!s || !s.parentNode)return n; - if (s.id === f)return n.push(s), n - } else if (t.ownerDocument && (s = t.ownerDocument.getElementById(f)) && u(t, s) && s.id === f)return n.push(s), n - } else { - if (i[2])return S.apply(n, x.call(t.getElementsByTagName(e), 0)), n; - if ((f = i[3]) && Z && t.getElementsByClassName)return S.apply(n, x.call(t.getElementsByClassName(f), 0)), n - } - return vt(e.replace(j, "$1"), t, n, r, a) - } - - function rt(e) { - return function (t) { - var n = t.nodeName.toLowerCase(); - return n === "input" && t.type === e - } - } - - function it(e) { - return function (t) { - var n = t.nodeName.toLowerCase(); - return (n === "input" || n === "button") && t.type === e - } - } - - function st(e) { - return N(function (t) { - return t = +t, N(function (n, r) { - var i, s = e([], n.length, t), o = s.length; - while (o--)n[i = s[o]] && (n[i] = !(r[i] = n[i])) - }) - }) - } - - function ot(e, t, n) { - if (e === t)return n; - var r = e.nextSibling; - while (r) { - if (r === t)return -1; - r = r.nextSibling - } - return 1 - } - - function ut(e, t) { - var n, r, s, o, u, a, f, l = L[d][e + " "]; - if (l)return t ? 0 : l.slice(0); - u = e, a = [], f = i.preFilter; - while (u) { - if (!n || (r = F.exec(u)))r && (u = u.slice(r[0].length) || u), a.push(s = []); - n = !1; - if (r = I.exec(u))s.push(n = new m(r.shift())), u = u.slice(n.length), n.type = r[0].replace(j, " "); - for (o in i.filter)(r = J[o].exec(u)) && (!f[o] || (r = f[o](r))) && (s.push(n = new m(r.shift())), u = u.slice(n.length), n.type = o, n.matches = r); - if (!n)break - } - return t ? u.length : u ? nt.error(e) : L(e, a).slice(0) - } - - function at(e, t, r) { - var i = t.dir, s = r && t.dir === "parentNode", o = w++; - return t.first ? function (t, n, r) { - while (t = t[i])if (s || t.nodeType === 1)return e(t, n, r) - } : function (t, r, u) { - if (!u) { - var a, f = b + " " + o + " ", l = f + n; - while (t = t[i])if (s || t.nodeType === 1) { - if ((a = t[d]) === l)return t.sizset; - if (typeof a == "string" && a.indexOf(f) === 0) { - if (t.sizset)return t - } else { - t[d] = l; - if (e(t, r, u))return t.sizset = !0, t; - t.sizset = !1 - } - } - } else while (t = t[i])if (s || t.nodeType === 1)if (e(t, r, u))return t - } - } - - function ft(e) { - return e.length > 1 ? function (t, n, r) { - var i = e.length; - while (i--)if (!e[i](t, n, r))return !1; - return !0 - } : e[0] - } - - function lt(e, t, n, r, i) { - var s, o = [], u = 0, a = e.length, f = t != null; - for (; u < a; u++)if (s = e[u])if (!n || n(s, r, i))o.push(s), f && t.push(u); - return o - } - - function ct(e, t, n, r, i, s) { - return r && !r[d] && (r = ct(r)), i && !i[d] && (i = ct(i, s)), N(function (s, o, u, a) { - var f, l, c, h = [], p = [], d = o.length, v = s || dt(t || "*", u.nodeType ? [u] : u, []), m = e && (s || !t) ? lt(v, h, e, u, a) : v, g = n ? i || (s ? e : d || r) ? [] : o : m; - n && n(m, g, u, a); - if (r) { - f = lt(g, p), r(f, [], u, a), l = f.length; - while (l--)if (c = f[l])g[p[l]] = !(m[p[l]] = c) - } - if (s) { - if (i || e) { - if (i) { - f = [], l = g.length; - while (l--)(c = g[l]) && f.push(m[l] = c); - i(null, g = [], f, a) - } - l = g.length; - while (l--)(c = g[l]) && (f = i ? T.call(s, c) : h[l]) > -1 && (s[f] = !(o[f] = c)) - } - } else g = lt(g === o ? g.splice(d, g.length) : g), i ? i(null, o, g, a) : S.apply(o, g) - }) - } - - function ht(e) { - var t, n, r, s = e.length, o = i.relative[e[0].type], u = o || i.relative[" "], a = o ? 1 : 0, f = at(function (e) { - return e === t - }, u, !0), l = at(function (e) { - return T.call(t, e) > -1 - }, u, !0), h = [function (e, n, r) { - return !o && (r || n !== c) || ((t = n).nodeType ? f(e, n, r) : l(e, n, r)) - }]; - for (; a < s; a++)if (n = i.relative[e[a].type])h = [at(ft(h), n)]; else { - n = i.filter[e[a].type].apply(null, e[a].matches); - if (n[d]) { - r = ++a; - for (; r < s; r++)if (i.relative[e[r].type])break; - return ct(a > 1 && ft(h), a > 1 && e.slice(0, a - 1).join("").replace(j, "$1"), n, a < r && ht(e.slice(a, r)), r < s && ht(e = e.slice(r)), r < s && e.join("")) - } - h.push(n) - } - return ft(h) - } - - function pt(e, t) { - var r = t.length > 0, s = e.length > 0, o = function (u, a, f, l, h) { - var p, d, v, m = [], y = 0, w = "0", x = u && [], T = h != null, N = c, C = u || s && i.find.TAG("*", h && a.parentNode || a), k = b += N == null ? 1 : Math.E; - T && (c = a !== g && a, n = o.el); - for (; (p = C[w]) != null; w++) { - if (s && p) { - for (d = 0; v = e[d]; d++)if (v(p, a, f)) { - l.push(p); - break - } - T && (b = k, n = ++o.el) - } - r && ((p = !v && p) && y--, u && x.push(p)) - } - y += w; - if (r && w !== y) { - for (d = 0; v = t[d]; d++)v(x, m, a, f); - if (u) { - if (y > 0)while (w--)!x[w] && !m[w] && (m[w] = E.call(l)); - m = lt(m) - } - S.apply(l, m), T && !u && m.length > 0 && y + t.length > 1 && nt.uniqueSort(l) - } - return T && (b = k, c = N), x - }; - return o.el = 0, r ? N(o) : o - } - - function dt(e, t, n) { - var r = 0, i = t.length; - for (; r < i; r++)nt(e, t[r], n); - return n - } - - function vt(e, t, n, r, s) { - var o, u, f, l, c, h = ut(e), p = h.length; - if (!r && h.length === 1) { - u = h[0] = h[0].slice(0); - if (u.length > 2 && (f = u[0]).type === "ID" && t.nodeType === 9 && !s && i.relative[u[1].type]) { - t = i.find.ID(f.matches[0].replace($, ""), t, s)[0]; - if (!t)return n; - e = e.slice(u.shift().length) - } - for (o = J.POS.test(e) ? -1 : u.length - 1; o >= 0; o--) { - f = u[o]; - if (i.relative[l = f.type])break; - if (c = i.find[l])if (r = c(f.matches[0].replace($, ""), z.test(u[0].type) && t.parentNode || t, s)) { - u.splice(o, 1), e = r.length && u.join(""); - if (!e)return S.apply(n, x.call(r, 0)), n; - break - } - } - } - return a(e, h)(r, t, s, n, z.test(e)), n - } - - function mt() { - } - - var n, r, i, s, o, u, a, f, l, c, h = !0, p = "undefined", d = ("sizcache" + Math.random()).replace(".", ""), m = String, g = e.document, y = g.documentElement, b = 0, w = 0, E = [].pop, S = [].push, x = [].slice, T = [].indexOf || function (e) { - var t = 0, n = this.length; - for (; t < n; t++)if (this[t] === e)return t; - return -1 - }, N = function (e, t) { - return e[d] = t == null || t, e - }, C = function () { - var e = {}, t = []; - return N(function (n, r) { - return t.push(n) > i.cacheLength && delete e[t.shift()], e[n + " "] = r - }, e) - }, k = C(), L = C(), A = C(), O = "[\\x20\\t\\r\\n\\f]", M = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+", _ = M.replace("w", "w#"), D = "([*^$|!~]?=)", P = "\\[" + O + "*(" + M + ")" + O + "*(?:" + D + O + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + _ + ")|)|)" + O + "*\\]", H = ":(" + M + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:" + P + ")|[^:]|\\\\.)*|.*))\\)|)", B = ":(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + O + "*((?:-\\d)?\\d*)" + O + "*\\)|)(?=[^-]|$)", j = new RegExp("^" + O + "+|((?:^|[^\\\\])(?:\\\\.)*)" + O + "+$", "g"), F = new RegExp("^" + O + "*," + O + "*"), I = new RegExp("^" + O + "*([\\x20\\t\\r\\n\\f>+~])" + O + "*"), q = new RegExp(H), R = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/, U = /^:not/, z = /[\x20\t\r\n\f]*[+~]/, W = /:not\($/, X = /h\d/i, V = /input|select|textarea|button/i, $ = /\\(?!\\)/g, J = { - ID: new RegExp("^#(" + M + ")"), - CLASS: new RegExp("^\\.(" + M + ")"), - NAME: new RegExp("^\\[name=['\"]?(" + M + ")['\"]?\\]"), - TAG: new RegExp("^(" + M.replace("w", "w*") + ")"), - ATTR: new RegExp("^" + P), - PSEUDO: new RegExp("^" + H), - POS: new RegExp(B, "i"), - CHILD: new RegExp("^:(only|nth|first|last)-child(?:\\(" + O + "*(even|odd|(([+-]|)(\\d*)n|)" + O + "*(?:([+-]|)" + O + "*(\\d+)|))" + O + "*\\)|)", "i"), - needsContext: new RegExp("^" + O + "*[>+~]|" + B, "i") - }, K = function (e) { - var t = g.createElement("div"); - try { - return e(t) - } catch (n) { - return !1 - } finally { - t = null - } - }, Q = K(function (e) { - return e.appendChild(g.createComment("")), !e.getElementsByTagName("*").length - }), G = K(function (e) { - return e.innerHTML = "", e.firstChild && typeof e.firstChild.getAttribute !== p && e.firstChild.getAttribute("href") === "#" - }), Y = K(function (e) { - e.innerHTML = ""; - var t = typeof e.lastChild.getAttribute("multiple"); - return t !== "boolean" && t !== "string" - }), Z = K(function (e) { - return e.innerHTML = "", !e.getElementsByClassName || !e.getElementsByClassName("e").length ? !1 : (e.lastChild.className = "e", e.getElementsByClassName("e").length === 2) - }), et = K(function (e) { - e.id = d + 0, e.innerHTML = "
", y.insertBefore(e, y.firstChild); - var t = g.getElementsByName && g.getElementsByName(d).length === 2 + g.getElementsByName(d + 0).length; - return r = !g.getElementById(d), y.removeChild(e), t - }); - try { - x.call(y.childNodes, 0)[0].nodeType - } catch (tt) { - x = function (e) { - var t, n = []; - for (; t = this[e]; e++)n.push(t); - return n - } - } - nt.matches = function (e, t) { - return nt(e, null, null, t) - }, nt.matchesSelector = function (e, t) { - return nt(t, null, null, [e]).length > 0 - }, s = nt.getText = function (e) { - var t, n = "", r = 0, i = e.nodeType; - if (i) { - if (i === 1 || i === 9 || i === 11) { - if (typeof e.textContent == "string")return e.textContent; - for (e = e.firstChild; e; e = e.nextSibling)n += s(e) - } else if (i === 3 || i === 4)return e.nodeValue - } else for (; t = e[r]; r++)n += s(t); - return n - }, o = nt.isXML = function (e) { - var t = e && (e.ownerDocument || e).documentElement; - return t ? t.nodeName !== "HTML" : !1 - }, u = nt.contains = y.contains ? function (e, t) { - var n = e.nodeType === 9 ? e.documentElement : e, r = t && t.parentNode; - return e === r || !!(r && r.nodeType === 1 && n.contains && n.contains(r)) - } : y.compareDocumentPosition ? function (e, t) { - return t && !!(e.compareDocumentPosition(t) & 16) - } : function (e, t) { - while (t = t.parentNode)if (t === e)return !0; - return !1 - }, nt.attr = function (e, t) { - var n, r = o(e); - return r || (t = t.toLowerCase()), (n = i.attrHandle[t]) ? n(e) : r || Y ? e.getAttribute(t) : (n = e.getAttributeNode(t), n ? typeof e[t] == "boolean" ? e[t] ? t : null : n.specified ? n.value : null : null) - }, i = nt.selectors = { - cacheLength: 50, - createPseudo: N, - match: J, - attrHandle: G ? {} : { - href: function (e) { - return e.getAttribute("href", 2) - }, type: function (e) { - return e.getAttribute("type") - } - }, - find: { - ID: r ? function (e, t, n) { - if (typeof t.getElementById !== p && !n) { - var r = t.getElementById(e); - return r && r.parentNode ? [r] : [] - } - } : function (e, n, r) { - if (typeof n.getElementById !== p && !r) { - var i = n.getElementById(e); - return i ? i.id === e || typeof i.getAttributeNode !== p && i.getAttributeNode("id").value === e ? [i] : t : [] - } - }, TAG: Q ? function (e, t) { - if (typeof t.getElementsByTagName !== p)return t.getElementsByTagName(e) - } : function (e, t) { - var n = t.getElementsByTagName(e); - if (e === "*") { - var r, i = [], s = 0; - for (; r = n[s]; s++)r.nodeType === 1 && i.push(r); - return i - } - return n - }, NAME: et && function (e, t) { - if (typeof t.getElementsByName !== p)return t.getElementsByName(name) - }, CLASS: Z && function (e, t, n) { - if (typeof t.getElementsByClassName !== p && !n)return t.getElementsByClassName(e) - } - }, - relative: { - ">": {dir: "parentNode", first: !0}, - " ": {dir: "parentNode"}, - "+": {dir: "previousSibling", first: !0}, - "~": {dir: "previousSibling"} - }, - preFilter: { - ATTR: function (e) { - return e[1] = e[1].replace($, ""), e[3] = (e[4] || e[5] || "").replace($, ""), e[2] === "~=" && (e[3] = " " + e[3] + " "), e.slice(0, 4) - }, CHILD: function (e) { - return e[1] = e[1].toLowerCase(), e[1] === "nth" ? (e[2] || nt.error(e[0]), e[3] = +(e[3] ? e[4] + (e[5] || 1) : 2 * (e[2] === "even" || e[2] === "odd")), e[4] = +(e[6] + e[7] || e[2] === "odd")) : e[2] && nt.error(e[0]), e - }, PSEUDO: function (e) { - var t, n; - if (J.CHILD.test(e[0]))return null; - if (e[3])e[2] = e[3]; else if (t = e[4])q.test(t) && (n = ut(t, !0)) && (n = t.indexOf(")", t.length - n) - t.length) && (t = t.slice(0, n), e[0] = e[0].slice(0, n)), e[2] = t; - return e.slice(0, 3) - } - }, - filter: { - ID: r ? function (e) { - return e = e.replace($, ""), function (t) { - return t.getAttribute("id") === e - } - } : function (e) { - return e = e.replace($, ""), function (t) { - var n = typeof t.getAttributeNode !== p && t.getAttributeNode("id"); - return n && n.value === e - } - }, TAG: function (e) { - return e === "*" ? function () { - return !0 - } : (e = e.replace($, "").toLowerCase(), function (t) { - return t.nodeName && t.nodeName.toLowerCase() === e - }) - }, CLASS: function (e) { - var t = k[d][e + " "]; - return t || (t = new RegExp("(^|" + O + ")" + e + "(" + O + "|$)")) && k(e, function (e) { - return t.test(e.className || typeof e.getAttribute !== p && e.getAttribute("class") || "") - }) - }, ATTR: function (e, t, n) { - return function (r, i) { - var s = nt.attr(r, e); - return s == null ? t === "!=" : t ? (s += "", t === "=" ? s === n : t === "!=" ? s !== n : t === "^=" ? n && s.indexOf(n) === 0 : t === "*=" ? n && s.indexOf(n) > -1 : t === "$=" ? n && s.substr(s.length - n.length) === n : t === "~=" ? (" " + s + " ").indexOf(n) > -1 : t === "|=" ? s === n || s.substr(0, n.length + 1) === n + "-" : !1) : !0 - } - }, CHILD: function (e, t, n, r) { - return e === "nth" ? function (e) { - var t, i, s = e.parentNode; - if (n === 1 && r === 0)return !0; - if (s) { - i = 0; - for (t = s.firstChild; t; t = t.nextSibling)if (t.nodeType === 1) { - i++; - if (e === t)break - } - } - return i -= r, i === n || i % n === 0 && i / n >= 0 - } : function (t) { - var n = t; - switch (e) { - case"only": - case"first": - while (n = n.previousSibling)if (n.nodeType === 1)return !1; - if (e === "first")return !0; - n = t; - case"last": - while (n = n.nextSibling)if (n.nodeType === 1)return !1; - return !0 - } - } - }, PSEUDO: function (e, t) { - var n, r = i.pseudos[e] || i.setFilters[e.toLowerCase()] || nt.error("unsupported pseudo: " + e); - return r[d] ? r(t) : r.length > 1 ? (n = [e, e, "", t], i.setFilters.hasOwnProperty(e.toLowerCase()) ? N(function (e, n) { - var i, s = r(e, t), o = s.length; - while (o--)i = T.call(e, s[o]), e[i] = !(n[i] = s[o]) - }) : function (e) { - return r(e, 0, n) - }) : r - } - }, - pseudos: { - not: N(function (e) { - var t = [], n = [], r = a(e.replace(j, "$1")); - return r[d] ? N(function (e, t, n, i) { - var s, o = r(e, null, i, []), u = e.length; - while (u--)if (s = o[u])e[u] = !(t[u] = s) - }) : function (e, i, s) { - return t[0] = e, r(t, null, s, n), !n.pop() - } - }), - has: N(function (e) { - return function (t) { - return nt(e, t).length > 0 - } - }), - contains: N(function (e) { - return function (t) { - return (t.textContent || t.innerText || s(t)).indexOf(e) > -1 - } - }), - enabled: function (e) { - return e.disabled === !1 - }, - disabled: function (e) { - return e.disabled === !0 - }, - checked: function (e) { - var t = e.nodeName.toLowerCase(); - return t === "input" && !!e.checked || t === "option" && !!e.selected - }, - selected: function (e) { - return e.parentNode && e.parentNode.selectedIndex, e.selected === !0 - }, - parent: function (e) { - return !i.pseudos.empty(e) - }, - empty: function (e) { - var t; - e = e.firstChild; - while (e) { - if (e.nodeName > "@" || (t = e.nodeType) === 3 || t === 4)return !1; - e = e.nextSibling - } - return !0 - }, - header: function (e) { - return X.test(e.nodeName) - }, - text: function (e) { - var t, n; - return e.nodeName.toLowerCase() === "input" && (t = e.type) === "text" && ((n = e.getAttribute("type")) == null || n.toLowerCase() === t) - }, - radio: rt("radio"), - checkbox: rt("checkbox"), - file: rt("file"), - password: rt("password"), - image: rt("image"), - submit: it("submit"), - reset: it("reset"), - button: function (e) { - var t = e.nodeName.toLowerCase(); - return t === "input" && e.type === "button" || t === "button" - }, - input: function (e) { - return V.test(e.nodeName) - }, - focus: function (e) { - var t = e.ownerDocument; - return e === t.activeElement && (!t.hasFocus || t.hasFocus()) && !!(e.type || e.href || ~e.tabIndex) - }, - active: function (e) { - return e === e.ownerDocument.activeElement - }, - first: st(function () { - return [0] - }), - last: st(function (e, t) { - return [t - 1] - }), - eq: st(function (e, t, n) { - return [n < 0 ? n + t : n] - }), - even: st(function (e, t) { - for (var n = 0; n < t; n += 2)e.push(n); - return e - }), - odd: st(function (e, t) { - for (var n = 1; n < t; n += 2)e.push(n); - return e - }), - lt: st(function (e, t, n) { - for (var r = n < 0 ? n + t : n; --r >= 0;)e.push(r); - return e - }), - gt: st(function (e, t, n) { - for (var r = n < 0 ? n + t : n; ++r < t;)e.push(r); - return e - }) - } - }, f = y.compareDocumentPosition ? function (e, t) { - return e === t ? (l = !0, 0) : (!e.compareDocumentPosition || !t.compareDocumentPosition ? e.compareDocumentPosition : e.compareDocumentPosition(t) & 4) ? -1 : 1 - } : function (e, t) { - if (e === t)return l = !0, 0; - if (e.sourceIndex && t.sourceIndex)return e.sourceIndex - t.sourceIndex; - var n, r, i = [], s = [], o = e.parentNode, u = t.parentNode, a = o; - if (o === u)return ot(e, t); - if (!o)return -1; - if (!u)return 1; - while (a)i.unshift(a), a = a.parentNode; - a = u; - while (a)s.unshift(a), a = a.parentNode; - n = i.length, r = s.length; - for (var f = 0; f < n && f < r; f++)if (i[f] !== s[f])return ot(i[f], s[f]); - return f === n ? ot(e, s[f], -1) : ot(i[f], t, 1) - }, [0, 0].sort(f), h = !l, nt.uniqueSort = function (e) { - var t, n = [], r = 1, i = 0; - l = h, e.sort(f); - if (l) { - for (; t = e[r]; r++)t === e[r - 1] && (i = n.push(r)); - while (i--)e.splice(n[i], 1) - } - return e - }, nt.error = function (e) { - throw new Error("Syntax error, unrecognized expression: " + e) - }, a = nt.compile = function (e, t) { - var n, r = [], i = [], s = A[d][e + " "]; - if (!s) { - t || (t = ut(e)), n = t.length; - while (n--)s = ht(t[n]), s[d] ? r.push(s) : i.push(s); - s = A(e, pt(i, r)) - } - return s - }, g.querySelectorAll && function () { - var e, t = vt, n = /'|\\/g, r = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, i = [":focus"], s = [":active"], u = y.matchesSelector || y.mozMatchesSelector || y.webkitMatchesSelector || y.oMatchesSelector || y.msMatchesSelector; - K(function (e) { - e.innerHTML = "", e.querySelectorAll("[selected]").length || i.push("\\[" + O + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)"), e.querySelectorAll(":checked").length || i.push(":checked") - }), K(function (e) { - e.innerHTML = "

", e.querySelectorAll("[test^='']").length && i.push("[*^$]=" + O + "*(?:\"\"|'')"), e.innerHTML = "", e.querySelectorAll(":enabled").length || i.push(":enabled", ":disabled") - }), i = new RegExp(i.join("|")), vt = function (e, r, s, o, u) { - if (!o && !u && !i.test(e)) { - var a, f, l = !0, c = d, h = r, p = r.nodeType === 9 && e; - if (r.nodeType === 1 && r.nodeName.toLowerCase() !== "object") { - a = ut(e), (l = r.getAttribute("id")) ? c = l.replace(n, "\\$&") : r.setAttribute("id", c), c = "[id='" + c + "'] ", f = a.length; - while (f--)a[f] = c + a[f].join(""); - h = z.test(e) && r.parentNode || r, p = a.join(",") - } - if (p)try { - return S.apply(s, x.call(h.querySelectorAll(p), 0)), s - } catch (v) { - } finally { - l || r.removeAttribute("id") - } - } - return t(e, r, s, o, u) - }, u && (K(function (t) { - e = u.call(t, "div"); - try { - u.call(t, "[test!='']:sizzle"), s.push("!=", H) - } catch (n) { - } - }), s = new RegExp(s.join("|")), nt.matchesSelector = function (t, n) { - n = n.replace(r, "='$1']"); - if (!o(t) && !s.test(n) && !i.test(n))try { - var a = u.call(t, n); - if (a || e || t.document && t.document.nodeType !== 11)return a - } catch (f) { - } - return nt(n, null, null, [t]).length > 0 - }) - }(), i.pseudos.nth = i.pseudos.eq, i.filters = mt.prototype = i.pseudos, i.setFilters = new mt, nt.attr = v.attr, v.find = nt, v.expr = nt.selectors, v.expr[":"] = v.expr.pseudos, v.unique = nt.uniqueSort, v.text = nt.getText, v.isXMLDoc = nt.isXML, v.contains = nt.contains - }(e); - var nt = /Until$/, rt = /^(?:parents|prev(?:Until|All))/, it = /^.[^:#\[\.,]*$/, st = v.expr.match.needsContext, ot = { - children: !0, - contents: !0, - next: !0, - prev: !0 - }; - v.fn.extend({ - find: function (e) { - var t, n, r, i, s, o, u = this; - if (typeof e != "string")return v(e).filter(function () { - for (t = 0, n = u.length; t < n; t++)if (v.contains(u[t], this))return !0 - }); - o = this.pushStack("", "find", e); - for (t = 0, n = this.length; t < n; t++) { - r = o.length, v.find(e, this[t], o); - if (t > 0)for (i = r; i < o.length; i++)for (s = 0; s < r; s++)if (o[s] === o[i]) { - o.splice(i--, 1); - break - } - } - return o - }, has: function (e) { - var t, n = v(e, this), r = n.length; - return this.filter(function () { - for (t = 0; t < r; t++)if (v.contains(this, n[t]))return !0 - }) - }, not: function (e) { - return this.pushStack(ft(this, e, !1), "not", e) - }, filter: function (e) { - return this.pushStack(ft(this, e, !0), "filter", e) - }, is: function (e) { - return !!e && (typeof e == "string" ? st.test(e) ? v(e, this.context).index(this[0]) >= 0 : v.filter(e, this).length > 0 : this.filter(e).length > 0) - }, closest: function (e, t) { - var n, r = 0, i = this.length, s = [], o = st.test(e) || typeof e != "string" ? v(e, t || this.context) : 0; - for (; r < i; r++) { - n = this[r]; - while (n && n.ownerDocument && n !== t && n.nodeType !== 11) { - if (o ? o.index(n) > -1 : v.find.matchesSelector(n, e)) { - s.push(n); - break - } - n = n.parentNode - } - } - return s = s.length > 1 ? v.unique(s) : s, this.pushStack(s, "closest", e) - }, index: function (e) { - return e ? typeof e == "string" ? v.inArray(this[0], v(e)) : v.inArray(e.jquery ? e[0] : e, this) : this[0] && this[0].parentNode ? this.prevAll().length : -1 - }, add: function (e, t) { - var n = typeof e == "string" ? v(e, t) : v.makeArray(e && e.nodeType ? [e] : e), r = v.merge(this.get(), n); - return this.pushStack(ut(n[0]) || ut(r[0]) ? r : v.unique(r)) - }, addBack: function (e) { - return this.add(e == null ? this.prevObject : this.prevObject.filter(e)) - } - }), v.fn.andSelf = v.fn.addBack, v.each({ - parent: function (e) { - var t = e.parentNode; - return t && t.nodeType !== 11 ? t : null - }, parents: function (e) { - return v.dir(e, "parentNode") - }, parentsUntil: function (e, t, n) { - return v.dir(e, "parentNode", n) - }, next: function (e) { - return at(e, "nextSibling") - }, prev: function (e) { - return at(e, "previousSibling") - }, nextAll: function (e) { - return v.dir(e, "nextSibling") - }, prevAll: function (e) { - return v.dir(e, "previousSibling") - }, nextUntil: function (e, t, n) { - return v.dir(e, "nextSibling", n) - }, prevUntil: function (e, t, n) { - return v.dir(e, "previousSibling", n) - }, siblings: function (e) { - return v.sibling((e.parentNode || {}).firstChild, e) - }, children: function (e) { - return v.sibling(e.firstChild) - }, contents: function (e) { - return v.nodeName(e, "iframe") ? e.contentDocument || e.contentWindow.document : v.merge([], e.childNodes) - } - }, function (e, t) { - v.fn[e] = function (n, r) { - var i = v.map(this, t, n); - return nt.test(e) || (r = n), r && typeof r == "string" && (i = v.filter(r, i)), i = this.length > 1 && !ot[e] ? v.unique(i) : i, this.length > 1 && rt.test(e) && (i = i.reverse()), this.pushStack(i, e, l.call(arguments).join(",")) - } - }), v.extend({ - filter: function (e, t, n) { - return n && (e = ":not(" + e + ")"), t.length === 1 ? v.find.matchesSelector(t[0], e) ? [t[0]] : [] : v.find.matches(e, t) - }, dir: function (e, n, r) { - var i = [], s = e[n]; - while (s && s.nodeType !== 9 && (r === t || s.nodeType !== 1 || !v(s).is(r)))s.nodeType === 1 && i.push(s), s = s[n]; - return i - }, sibling: function (e, t) { - var n = []; - for (; e; e = e.nextSibling)e.nodeType === 1 && e !== t && n.push(e); - return n - } - }); - var ct = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", ht = / jQuery\d+="(?:null|\d+)"/g, pt = /^\s+/, dt = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, vt = /<([\w:]+)/, mt = /]", "i"), Et = /^(?:checkbox|radio)$/, St = /checked\s*(?:[^=]|=\s*.checked.)/i, xt = /\/(java|ecma)script/i, Tt = /^\s*\s*$/g, Nt = { - option: [1, ""], - legend: [1, "
", "
"], - thead: [1, "", "
"], - tr: [2, "", "
"], - td: [3, "", "
"], - col: [2, "", "
"], - area: [1, "", ""], - _default: [0, "", ""] - }, Ct = lt(i), kt = Ct.appendChild(i.createElement("div")); - Nt.optgroup = Nt.option, Nt.tbody = Nt.tfoot = Nt.colgroup = Nt.caption = Nt.thead, Nt.th = Nt.td, v.support.htmlSerialize || (Nt._default = [1, "X
", "
"]), v.fn.extend({ - text: function (e) { - return v.access(this, function (e) { - return e === t ? v.text(this) : this.empty().append((this[0] && this[0].ownerDocument || i).createTextNode(e)) - }, null, e, arguments.length) - }, wrapAll: function (e) { - if (v.isFunction(e))return this.each(function (t) { - v(this).wrapAll(e.call(this, t)) - }); - if (this[0]) { - var t = v(e, this[0].ownerDocument).eq(0).clone(!0); - this[0].parentNode && t.insertBefore(this[0]), t.map(function () { - var e = this; - while (e.firstChild && e.firstChild.nodeType === 1)e = e.firstChild; - return e - }).append(this) - } - return this - }, wrapInner: function (e) { - return v.isFunction(e) ? this.each(function (t) { - v(this).wrapInner(e.call(this, t)) - }) : this.each(function () { - var t = v(this), n = t.contents(); - n.length ? n.wrapAll(e) : t.append(e) - }) - }, wrap: function (e) { - var t = v.isFunction(e); - return this.each(function (n) { - v(this).wrapAll(t ? e.call(this, n) : e) - }) - }, unwrap: function () { - return this.parent().each(function () { - v.nodeName(this, "body") || v(this).replaceWith(this.childNodes) - }).end() - }, append: function () { - return this.domManip(arguments, !0, function (e) { - (this.nodeType === 1 || this.nodeType === 11) && this.appendChild(e) - }) - }, prepend: function () { - return this.domManip(arguments, !0, function (e) { - (this.nodeType === 1 || this.nodeType === 11) && this.insertBefore(e, this.firstChild) - }) - }, before: function () { - if (!ut(this[0]))return this.domManip(arguments, !1, function (e) { - this.parentNode.insertBefore(e, this) - }); - if (arguments.length) { - var e = v.clean(arguments); - return this.pushStack(v.merge(e, this), "before", this.selector) - } - }, after: function () { - if (!ut(this[0]))return this.domManip(arguments, !1, function (e) { - this.parentNode.insertBefore(e, this.nextSibling) - }); - if (arguments.length) { - var e = v.clean(arguments); - return this.pushStack(v.merge(this, e), "after", this.selector) - } - }, remove: function (e, t) { - var n, r = 0; - for (; (n = this[r]) != null; r++)if (!e || v.filter(e, [n]).length)!t && n.nodeType === 1 && (v.cleanData(n.getElementsByTagName("*")), v.cleanData([n])), n.parentNode && n.parentNode.removeChild(n); - return this - }, empty: function () { - var e, t = 0; - for (; (e = this[t]) != null; t++) { - e.nodeType === 1 && v.cleanData(e.getElementsByTagName("*")); - while (e.firstChild)e.removeChild(e.firstChild) - } - return this - }, clone: function (e, t) { - return e = e == null ? !1 : e, t = t == null ? e : t, this.map(function () { - return v.clone(this, e, t) - }) - }, html: function (e) { - return v.access(this, function (e) { - var n = this[0] || {}, r = 0, i = this.length; - if (e === t)return n.nodeType === 1 ? n.innerHTML.replace(ht, "") : t; - if (typeof e == "string" && !yt.test(e) && (v.support.htmlSerialize || !wt.test(e)) && (v.support.leadingWhitespace || !pt.test(e)) && !Nt[(vt.exec(e) || ["", ""])[1].toLowerCase()]) { - e = e.replace(dt, "<$1>"); - try { - for (; r < i; r++)n = this[r] || {}, n.nodeType === 1 && (v.cleanData(n.getElementsByTagName("*")), n.innerHTML = e); - n = 0 - } catch (s) { - } - } - n && this.empty().append(e) - }, null, e, arguments.length) - }, replaceWith: function (e) { - return ut(this[0]) ? this.length ? this.pushStack(v(v.isFunction(e) ? e() : e), "replaceWith", e) : this : v.isFunction(e) ? this.each(function (t) { - var n = v(this), r = n.html(); - n.replaceWith(e.call(this, t, r)) - }) : (typeof e != "string" && (e = v(e).detach()), this.each(function () { - var t = this.nextSibling, n = this.parentNode; - v(this).remove(), t ? v(t).before(e) : v(n).append(e) - })) - }, detach: function (e) { - return this.remove(e, !0) - }, domManip: function (e, n, r) { - e = [].concat.apply([], e); - var i, s, o, u, a = 0, f = e[0], l = [], c = this.length; - if (!v.support.checkClone && c > 1 && typeof f == "string" && St.test(f))return this.each(function () { - v(this).domManip(e, n, r) - }); - if (v.isFunction(f))return this.each(function (i) { - var s = v(this); - e[0] = f.call(this, i, n ? s.html() : t), s.domManip(e, n, r) - }); - if (this[0]) { - i = v.buildFragment(e, this, l), o = i.fragment, s = o.firstChild, o.childNodes.length === 1 && (o = s); - if (s) { - n = n && v.nodeName(s, "tr"); - for (u = i.cacheable || c - 1; a < c; a++)r.call(n && v.nodeName(this[a], "table") ? Lt(this[a], "tbody") : this[a], a === u ? o : v.clone(o, !0, !0)) - } - o = s = null, l.length && v.each(l, function (e, t) { - t.src ? v.ajax ? v.ajax({ - url: t.src, - type: "GET", - dataType: "script", - async: !1, - global: !1, - "throws": !0 - }) : v.error("no ajax") : v.globalEval((t.text || t.textContent || t.innerHTML || "").replace(Tt, "")), t.parentNode && t.parentNode.removeChild(t) - }) - } - return this - } - }), v.buildFragment = function (e, n, r) { - var s, o, u, a = e[0]; - return n = n || i, n = !n.nodeType && n[0] || n, n = n.ownerDocument || n, e.length === 1 && typeof a == "string" && a.length < 512 && n === i && a.charAt(0) === "<" && !bt.test(a) && (v.support.checkClone || !St.test(a)) && (v.support.html5Clone || !wt.test(a)) && (o = !0, s = v.fragments[a], u = s !== t), s || (s = n.createDocumentFragment(), v.clean(e, n, s, r), o && (v.fragments[a] = u && s)), { - fragment: s, - cacheable: o - } - }, v.fragments = {}, v.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" - }, function (e, t) { - v.fn[e] = function (n) { - var r, i = 0, s = [], o = v(n), u = o.length, a = this.length === 1 && this[0].parentNode; - if ((a == null || a && a.nodeType === 11 && a.childNodes.length === 1) && u === 1)return o[t](this[0]), this; - for (; i < u; i++)r = (i > 0 ? this.clone(!0) : this).get(), v(o[i])[t](r), s = s.concat(r); - return this.pushStack(s, e, o.selector) - } - }), v.extend({ - clone: function (e, t, n) { - var r, i, s, o; - v.support.html5Clone || v.isXMLDoc(e) || !wt.test("<" + e.nodeName + ">") ? o = e.cloneNode(!0) : (kt.innerHTML = e.outerHTML, kt.removeChild(o = kt.firstChild)); - if ((!v.support.noCloneEvent || !v.support.noCloneChecked) && (e.nodeType === 1 || e.nodeType === 11) && !v.isXMLDoc(e)) { - Ot(e, o), r = Mt(e), i = Mt(o); - for (s = 0; r[s]; ++s)i[s] && Ot(r[s], i[s]) - } - if (t) { - At(e, o); - if (n) { - r = Mt(e), i = Mt(o); - for (s = 0; r[s]; ++s)At(r[s], i[s]) - } - } - return r = i = null, o - }, clean: function (e, t, n, r) { - var s, o, u, a, f, l, c, h, p, d, m, g, y = t === i && Ct, b = []; - if (!t || typeof t.createDocumentFragment == "undefined")t = i; - for (s = 0; (u = e[s]) != null; s++) { - typeof u == "number" && (u += ""); - if (!u)continue; - if (typeof u == "string")if (!gt.test(u))u = t.createTextNode(u); else { - y = y || lt(t), c = t.createElement("div"), y.appendChild(c), u = u.replace(dt, "<$1>"), a = (vt.exec(u) || ["", ""])[1].toLowerCase(), f = Nt[a] || Nt._default, l = f[0], c.innerHTML = f[1] + u + f[2]; - while (l--)c = c.lastChild; - if (!v.support.tbody) { - h = mt.test(u), p = a === "table" && !h ? c.firstChild && c.firstChild.childNodes : f[1] === "" && !h ? c.childNodes : []; - for (o = p.length - 1; o >= 0; --o)v.nodeName(p[o], "tbody") && !p[o].childNodes.length && p[o].parentNode.removeChild(p[o]) - } - !v.support.leadingWhitespace && pt.test(u) && c.insertBefore(t.createTextNode(pt.exec(u)[0]), c.firstChild), u = c.childNodes, c.parentNode.removeChild(c) - } - u.nodeType ? b.push(u) : v.merge(b, u) - } - c && (u = c = y = null); - if (!v.support.appendChecked)for (s = 0; (u = b[s]) != null; s++)v.nodeName(u, "input") ? _t(u) : typeof u.getElementsByTagName != "undefined" && v.grep(u.getElementsByTagName("input"), _t); - if (n) { - m = function (e) { - if (!e.type || xt.test(e.type))return r ? r.push(e.parentNode ? e.parentNode.removeChild(e) : e) : n.appendChild(e) - }; - for (s = 0; (u = b[s]) != null; s++)if (!v.nodeName(u, "script") || !m(u))n.appendChild(u), typeof u.getElementsByTagName != "undefined" && (g = v.grep(v.merge([], u.getElementsByTagName("script")), m), b.splice.apply(b, [s + 1, 0].concat(g)), s += g.length) - } - return b - }, cleanData: function (e, t) { - var n, r, i, s, o = 0, u = v.expando, a = v.cache, f = v.support.deleteExpando, l = v.event.special; - for (; (i = e[o]) != null; o++)if (t || v.acceptData(i)) { - r = i[u], n = r && a[r]; - if (n) { - if (n.events)for (s in n.events)l[s] ? v.event.remove(i, s) : v.removeEvent(i, s, n.handle); - a[r] && (delete a[r], f ? delete i[u] : i.removeAttribute ? i.removeAttribute(u) : i[u] = null, v.deletedIds.push(r)) - } - } - } - }), function () { - var e, t; - v.uaMatch = function (e) { - e = e.toLowerCase(); - var t = /(chrome)[ \/]([\w.]+)/.exec(e) || /(webkit)[ \/]([\w.]+)/.exec(e) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e) || /(msie) ([\w.]+)/.exec(e) || e.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e) || []; - return {browser: t[1] || "", version: t[2] || "0"} - }, e = v.uaMatch(o.userAgent), t = {}, e.browser && (t[e.browser] = !0, t.version = e.version), t.chrome ? t.webkit = !0 : t.webkit && (t.safari = !0), v.browser = t, v.sub = function () { - function e(t, n) { - return new e.fn.init(t, n) - } - - v.extend(!0, e, this), e.superclass = this, e.fn = e.prototype = this(), e.fn.constructor = e, e.sub = this.sub, e.fn.init = function (r, i) { - return i && i instanceof v && !(i instanceof e) && (i = e(i)), v.fn.init.call(this, r, i, t) - }, e.fn.init.prototype = e.fn; - var t = e(i); - return e - } - }(); - var Dt, Pt, Ht, Bt = /alpha\([^)]*\)/i, jt = /opacity=([^)]*)/, Ft = /^(top|right|bottom|left)$/, It = /^(none|table(?!-c[ea]).+)/, qt = /^margin/, Rt = new RegExp("^(" + m + ")(.*)$", "i"), Ut = new RegExp("^(" + m + ")(?!px)[a-z%]+$", "i"), zt = new RegExp("^([-+])=(" + m + ")", "i"), Wt = {BODY: "block"}, Xt = { - position: "absolute", - visibility: "hidden", - display: "block" - }, Vt = { - letterSpacing: 0, - fontWeight: 400 - }, $t = ["Top", "Right", "Bottom", "Left"], Jt = ["Webkit", "O", "Moz", "ms"], Kt = v.fn.toggle; - v.fn.extend({ - css: function (e, n) { - return v.access(this, function (e, n, r) { - return r !== t ? v.style(e, n, r) : v.css(e, n) - }, e, n, arguments.length > 1) - }, show: function () { - return Yt(this, !0) - }, hide: function () { - return Yt(this) - }, toggle: function (e, t) { - var n = typeof e == "boolean"; - return v.isFunction(e) && v.isFunction(t) ? Kt.apply(this, arguments) : this.each(function () { - (n ? e : Gt(this)) ? v(this).show() : v(this).hide() - }) - } - }), v.extend({ - cssHooks: { - opacity: { - get: function (e, t) { - if (t) { - var n = Dt(e, "opacity"); - return n === "" ? "1" : n - } - } - } - }, - cssNumber: { - fillOpacity: !0, - fontWeight: !0, - lineHeight: !0, - opacity: !0, - orphans: !0, - widows: !0, - zIndex: !0, - zoom: !0 - }, - cssProps: {"float": v.support.cssFloat ? "cssFloat" : "styleFloat"}, - style: function (e, n, r, i) { - if (!e || e.nodeType === 3 || e.nodeType === 8 || !e.style)return; - var s, o, u, a = v.camelCase(n), f = e.style; - n = v.cssProps[a] || (v.cssProps[a] = Qt(f, a)), u = v.cssHooks[n] || v.cssHooks[a]; - if (r === t)return u && "get"in u && (s = u.get(e, !1, i)) !== t ? s : f[n]; - o = typeof r, o === "string" && (s = zt.exec(r)) && (r = (s[1] + 1) * s[2] + parseFloat(v.css(e, n)), o = "number"); - if (r == null || o === "number" && isNaN(r))return; - o === "number" && !v.cssNumber[a] && (r += "px"); - if (!u || !("set"in u) || (r = u.set(e, r, i)) !== t)try { - f[n] = r - } catch (l) { - } - }, - css: function (e, n, r, i) { - var s, o, u, a = v.camelCase(n); - return n = v.cssProps[a] || (v.cssProps[a] = Qt(e.style, a)), u = v.cssHooks[n] || v.cssHooks[a], u && "get"in u && (s = u.get(e, !0, i)), s === t && (s = Dt(e, n)), s === "normal" && n in Vt && (s = Vt[n]), r || i !== t ? (o = parseFloat(s), r || v.isNumeric(o) ? o || 0 : s) : s - }, - swap: function (e, t, n) { - var r, i, s = {}; - for (i in t)s[i] = e.style[i], e.style[i] = t[i]; - r = n.call(e); - for (i in t)e.style[i] = s[i]; - return r - } - }), e.getComputedStyle ? Dt = function (t, n) { - var r, i, s, o, u = e.getComputedStyle(t, null), a = t.style; - return u && (r = u.getPropertyValue(n) || u[n], r === "" && !v.contains(t.ownerDocument, t) && (r = v.style(t, n)), Ut.test(r) && qt.test(n) && (i = a.width, s = a.minWidth, o = a.maxWidth, a.minWidth = a.maxWidth = a.width = r, r = u.width, a.width = i, a.minWidth = s, a.maxWidth = o)), r - } : i.documentElement.currentStyle && (Dt = function (e, t) { - var n, r, i = e.currentStyle && e.currentStyle[t], s = e.style; - return i == null && s && s[t] && (i = s[t]), Ut.test(i) && !Ft.test(t) && (n = s.left, r = e.runtimeStyle && e.runtimeStyle.left, r && (e.runtimeStyle.left = e.currentStyle.left), s.left = t === "fontSize" ? "1em" : i, i = s.pixelLeft + "px", s.left = n, r && (e.runtimeStyle.left = r)), i === "" ? "auto" : i - }), v.each(["height", "width"], function (e, t) { - v.cssHooks[t] = { - get: function (e, n, r) { - if (n)return e.offsetWidth === 0 && It.test(Dt(e, "display")) ? v.swap(e, Xt, function () { - return tn(e, t, r) - }) : tn(e, t, r) - }, set: function (e, n, r) { - return Zt(e, n, r ? en(e, t, r, v.support.boxSizing && v.css(e, "boxSizing") === "border-box") : 0) - } - } - }), v.support.opacity || (v.cssHooks.opacity = { - get: function (e, t) { - return jt.test((t && e.currentStyle ? e.currentStyle.filter : e.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : t ? "1" : "" - }, set: function (e, t) { - var n = e.style, r = e.currentStyle, i = v.isNumeric(t) ? "alpha(opacity=" + t * 100 + ")" : "", s = r && r.filter || n.filter || ""; - n.zoom = 1; - if (t >= 1 && v.trim(s.replace(Bt, "")) === "" && n.removeAttribute) { - n.removeAttribute("filter"); - if (r && !r.filter)return - } - n.filter = Bt.test(s) ? s.replace(Bt, i) : s + " " + i - } - }), v(function () { - v.support.reliableMarginRight || (v.cssHooks.marginRight = { - get: function (e, t) { - return v.swap(e, {display: "inline-block"}, function () { - if (t)return Dt(e, "marginRight") - }) - } - }), !v.support.pixelPosition && v.fn.position && v.each(["top", "left"], function (e, t) { - v.cssHooks[t] = { - get: function (e, n) { - if (n) { - var r = Dt(e, t); - return Ut.test(r) ? v(e).position()[t] + "px" : r - } - } - } - }) - }), v.expr && v.expr.filters && (v.expr.filters.hidden = function (e) { - return e.offsetWidth === 0 && e.offsetHeight === 0 || !v.support.reliableHiddenOffsets && (e.style && e.style.display || Dt(e, "display")) === "none" - }, v.expr.filters.visible = function (e) { - return !v.expr.filters.hidden(e) - }), v.each({margin: "", padding: "", border: "Width"}, function (e, t) { - v.cssHooks[e + t] = { - expand: function (n) { - var r, i = typeof n == "string" ? n.split(" ") : [n], s = {}; - for (r = 0; r < 4; r++)s[e + $t[r] + t] = i[r] || i[r - 2] || i[0]; - return s - } - }, qt.test(e) || (v.cssHooks[e + t].set = Zt) - }); - var rn = /%20/g, sn = /\[\]$/, on = /\r?\n/g, un = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, an = /^(?:select|textarea)/i; - v.fn.extend({ - serialize: function () { - return v.param(this.serializeArray()) - }, serializeArray: function () { - return this.map(function () { - return this.elements ? v.makeArray(this.elements) : this - }).filter(function () { - return this.name && !this.disabled && (this.checked || an.test(this.nodeName) || un.test(this.type)) - }).map(function (e, t) { - var n = v(this).val(); - return n == null ? null : v.isArray(n) ? v.map(n, function (e, n) { - return {name: t.name, value: e.replace(on, "\r\n")} - }) : {name: t.name, value: n.replace(on, "\r\n")} - }).get() - } - }), v.param = function (e, n) { - var r, i = [], s = function (e, t) { - t = v.isFunction(t) ? t() : t == null ? "" : t, i[i.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t) - }; - n === t && (n = v.ajaxSettings && v.ajaxSettings.traditional); - if (v.isArray(e) || e.jquery && !v.isPlainObject(e))v.each(e, function () { - s(this.name, this.value) - }); else for (r in e)fn(r, e[r], n, s); - return i.join("&").replace(rn, "+") - }; - var ln, cn, hn = /#.*$/, pn = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, dn = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/, vn = /^(?:GET|HEAD)$/, mn = /^\/\//, gn = /\?/, yn = /)<[^<]*)*<\/script>/gi, bn = /([?&])_=[^&]*/, wn = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/, En = v.fn.load, Sn = {}, xn = {}, Tn = ["*/"] + ["*"]; - try { - cn = s.href - } catch (Nn) { - cn = i.createElement("a"), cn.href = "", cn = cn.href - } - ln = wn.exec(cn.toLowerCase()) || [], v.fn.load = function (e, n, r) { - if (typeof e != "string" && En)return En.apply(this, arguments); - if (!this.length)return this; - var i, s, o, u = this, a = e.indexOf(" "); - return a >= 0 && (i = e.slice(a, e.length), e = e.slice(0, a)), v.isFunction(n) ? (r = n, n = t) : n && typeof n == "object" && (s = "POST"), v.ajax({ - url: e, - type: s, - dataType: "html", - data: n, - complete: function (e, t) { - r && u.each(r, o || [e.responseText, t, e]) - } - }).done(function (e) { - o = arguments, u.html(i ? v("
").append(e.replace(yn, "")).find(i) : e) - }), this - }, v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function (e, t) { - v.fn[t] = function (e) { - return this.on(t, e) - } - }), v.each(["get", "post"], function (e, n) { - v[n] = function (e, r, i, s) { - return v.isFunction(r) && (s = s || i, i = r, r = t), v.ajax({ - type: n, - url: e, - data: r, - success: i, - dataType: s - }) - } - }), v.extend({ - getScript: function (e, n) { - return v.get(e, t, n, "script") - }, - getJSON: function (e, t, n) { - return v.get(e, t, n, "json") - }, - ajaxSetup: function (e, t) { - return t ? Ln(e, v.ajaxSettings) : (t = e, e = v.ajaxSettings), Ln(e, t), e - }, - ajaxSettings: { - url: cn, - isLocal: dn.test(ln[1]), - global: !0, - type: "GET", - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - processData: !0, - async: !0, - accepts: { - xml: "application/xml, text/xml", - html: "text/html", - text: "text/plain", - json: "application/json, text/javascript", - "*": Tn - }, - contents: {xml: /xml/, html: /html/, json: /json/}, - responseFields: {xml: "responseXML", text: "responseText"}, - converters: {"* text": e.String, "text html": !0, "text json": v.parseJSON, "text xml": v.parseXML}, - flatOptions: {context: !0, url: !0} - }, - ajaxPrefilter: Cn(Sn), - ajaxTransport: Cn(xn), - ajax: function (e, n) { - function T(e, n, s, a) { - var l, y, b, w, S, T = n; - if (E === 2)return; - E = 2, u && clearTimeout(u), o = t, i = a || "", x.readyState = e > 0 ? 4 : 0, s && (w = An(c, x, s)); - if (e >= 200 && e < 300 || e === 304)c.ifModified && (S = x.getResponseHeader("Last-Modified"), S && (v.lastModified[r] = S), S = x.getResponseHeader("Etag"), S && (v.etag[r] = S)), e === 304 ? (T = "notmodified", l = !0) : (l = On(c, w), T = l.state, y = l.data, b = l.error, l = !b); else { - b = T; - if (!T || e)T = "error", e < 0 && (e = 0) - } - x.status = e, x.statusText = (n || T) + "", l ? d.resolveWith(h, [y, T, x]) : d.rejectWith(h, [x, T, b]), x.statusCode(g), g = t, f && p.trigger("ajax" + (l ? "Success" : "Error"), [x, c, l ? y : b]), m.fireWith(h, [x, T]), f && (p.trigger("ajaxComplete", [x, c]), --v.active || v.event.trigger("ajaxStop")) - } - - typeof e == "object" && (n = e, e = t), n = n || {}; - var r, i, s, o, u, a, f, l, c = v.ajaxSetup({}, n), h = c.context || c, p = h !== c && (h.nodeType || h instanceof v) ? v(h) : v.event, d = v.Deferred(), m = v.Callbacks("once memory"), g = c.statusCode || {}, b = {}, w = {}, E = 0, S = "canceled", x = { - readyState: 0, - setRequestHeader: function (e, t) { - if (!E) { - var n = e.toLowerCase(); - e = w[n] = w[n] || e, b[e] = t - } - return this - }, - getAllResponseHeaders: function () { - return E === 2 ? i : null - }, - getResponseHeader: function (e) { - var n; - if (E === 2) { - if (!s) { - s = {}; - while (n = pn.exec(i))s[n[1].toLowerCase()] = n[2] - } - n = s[e.toLowerCase()] - } - return n === t ? null : n - }, - overrideMimeType: function (e) { - return E || (c.mimeType = e), this - }, - abort: function (e) { - return e = e || S, o && o.abort(e), T(0, e), this - } - }; - d.promise(x), x.success = x.done, x.error = x.fail, x.complete = m.add, x.statusCode = function (e) { - if (e) { - var t; - if (E < 2)for (t in e)g[t] = [g[t], e[t]]; else t = e[x.status], x.always(t) - } - return this - }, c.url = ((e || c.url) + "").replace(hn, "").replace(mn, ln[1] + "//"), c.dataTypes = v.trim(c.dataType || "*").toLowerCase().split(y), c.crossDomain == null && (a = wn.exec(c.url.toLowerCase()), c.crossDomain = !(!a || a[1] === ln[1] && a[2] === ln[2] && (a[3] || (a[1] === "http:" ? 80 : 443)) == (ln[3] || (ln[1] === "http:" ? 80 : 443)))), c.data && c.processData && typeof c.data != "string" && (c.data = v.param(c.data, c.traditional)), kn(Sn, c, n, x); - if (E === 2)return x; - f = c.global, c.type = c.type.toUpperCase(), c.hasContent = !vn.test(c.type), f && v.active++ === 0 && v.event.trigger("ajaxStart"); - if (!c.hasContent) { - c.data && (c.url += (gn.test(c.url) ? "&" : "?") + c.data, delete c.data), r = c.url; - if (c.cache === !1) { - var N = v.now(), C = c.url.replace(bn, "$1_=" + N); - c.url = C + (C === c.url ? (gn.test(c.url) ? "&" : "?") + "_=" + N : "") - } - } - (c.data && c.hasContent && c.contentType !== !1 || n.contentType) && x.setRequestHeader("Content-Type", c.contentType), c.ifModified && (r = r || c.url, v.lastModified[r] && x.setRequestHeader("If-Modified-Since", v.lastModified[r]), v.etag[r] && x.setRequestHeader("If-None-Match", v.etag[r])), x.setRequestHeader("Accept", c.dataTypes[0] && c.accepts[c.dataTypes[0]] ? c.accepts[c.dataTypes[0]] + (c.dataTypes[0] !== "*" ? ", " + Tn + "; q=0.01" : "") : c.accepts["*"]); - for (l in c.headers)x.setRequestHeader(l, c.headers[l]); - if (!c.beforeSend || c.beforeSend.call(h, x, c) !== !1 && E !== 2) { - S = "abort"; - for (l in{success: 1, error: 1, complete: 1})x[l](c[l]); - o = kn(xn, c, n, x); - if (!o)T(-1, "No Transport"); else { - x.readyState = 1, f && p.trigger("ajaxSend", [x, c]), c.async && c.timeout > 0 && (u = setTimeout(function () { - x.abort("timeout") - }, c.timeout)); - try { - E = 1, o.send(b, T) - } catch (k) { - if (!(E < 2))throw k; - T(-1, k) - } - } - return x - } - return x.abort() - }, - active: 0, - lastModified: {}, - etag: {} - }); - var Mn = [], _n = /\?/, Dn = /(=)\?(?=&|$)|\?\?/, Pn = v.now(); - v.ajaxSetup({ - jsonp: "callback", jsonpCallback: function () { - var e = Mn.pop() || v.expando + "_" + Pn++; - return this[e] = !0, e - } - }), v.ajaxPrefilter("json jsonp", function (n, r, i) { - var s, o, u, a = n.data, f = n.url, l = n.jsonp !== !1, c = l && Dn.test(f), h = l && !c && typeof a == "string" && !(n.contentType || "").indexOf("application/x-www-form-urlencoded") && Dn.test(a); - if (n.dataTypes[0] === "jsonp" || c || h)return s = n.jsonpCallback = v.isFunction(n.jsonpCallback) ? n.jsonpCallback() : n.jsonpCallback, o = e[s], c ? n.url = f.replace(Dn, "$1" + s) : h ? n.data = a.replace(Dn, "$1" + s) : l && (n.url += (_n.test(f) ? "&" : "?") + n.jsonp + "=" + s), n.converters["script json"] = function () { - return u || v.error(s + " was not called"), u[0] - }, n.dataTypes[0] = "json", e[s] = function () { - u = arguments - }, i.always(function () { - e[s] = o, n[s] && (n.jsonpCallback = r.jsonpCallback, Mn.push(s)), u && v.isFunction(o) && o(u[0]), u = o = t - }), "script" - }), v.ajaxSetup({ - accepts: {script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"}, - contents: {script: /javascript|ecmascript/}, - converters: { - "text script": function (e) { - return v.globalEval(e), e - } - } - }), v.ajaxPrefilter("script", function (e) { - e.cache === t && (e.cache = !1), e.crossDomain && (e.type = "GET", e.global = !1) - }), v.ajaxTransport("script", function (e) { - if (e.crossDomain) { - var n, r = i.head || i.getElementsByTagName("head")[0] || i.documentElement; - return { - send: function (s, o) { - n = i.createElement("script"), n.async = "async", e.scriptCharset && (n.charset = e.scriptCharset), n.src = e.url, n.onload = n.onreadystatechange = function (e, i) { - if (i || !n.readyState || /loaded|complete/.test(n.readyState))n.onload = n.onreadystatechange = null, r && n.parentNode && r.removeChild(n), n = t, i || o(200, "success") - }, r.insertBefore(n, r.firstChild) - }, abort: function () { - n && n.onload(0, 1) - } - } - } - }); - var Hn, Bn = e.ActiveXObject ? function () { - for (var e in Hn)Hn[e](0, 1) - } : !1, jn = 0; - v.ajaxSettings.xhr = e.ActiveXObject ? function () { - return !this.isLocal && Fn() || In() - } : Fn, function (e) { - v.extend(v.support, {ajax: !!e, cors: !!e && "withCredentials"in e}) - }(v.ajaxSettings.xhr()), v.support.ajax && v.ajaxTransport(function (n) { - if (!n.crossDomain || v.support.cors) { - var r; - return { - send: function (i, s) { - var o, u, a = n.xhr(); - n.username ? a.open(n.type, n.url, n.async, n.username, n.password) : a.open(n.type, n.url, n.async); - if (n.xhrFields)for (u in n.xhrFields)a[u] = n.xhrFields[u]; - n.mimeType && a.overrideMimeType && a.overrideMimeType(n.mimeType), !n.crossDomain && !i["X-Requested-With"] && (i["X-Requested-With"] = "XMLHttpRequest"); - try { - for (u in i)a.setRequestHeader(u, i[u]) - } catch (f) { - } - a.send(n.hasContent && n.data || null), r = function (e, i) { - var u, f, l, c, h; - try { - if (r && (i || a.readyState === 4)) { - r = t, o && (a.onreadystatechange = v.noop, Bn && delete Hn[o]); - if (i)a.readyState !== 4 && a.abort(); else { - u = a.status, l = a.getAllResponseHeaders(), c = {}, h = a.responseXML, h && h.documentElement && (c.xml = h); - try { - c.text = a.responseText - } catch (p) { - } - try { - f = a.statusText - } catch (p) { - f = "" - } - !u && n.isLocal && !n.crossDomain ? u = c.text ? 200 : 404 : u === 1223 && (u = 204) - } - } - } catch (d) { - i || s(-1, d) - } - c && s(u, f, c, l) - }, n.async ? a.readyState === 4 ? setTimeout(r, 0) : (o = ++jn, Bn && (Hn || (Hn = {}, v(e).unload(Bn)), Hn[o] = r), a.onreadystatechange = r) : r() - }, abort: function () { - r && r(0, 1) - } - } - } - }); - var qn, Rn, Un = /^(?:toggle|show|hide)$/, zn = new RegExp("^(?:([-+])=|)(" + m + ")([a-z%]*)$", "i"), Wn = /queueHooks$/, Xn = [Gn], Vn = { - "*": [function (e, t) { - var n, r, i = this.createTween(e, t), s = zn.exec(t), o = i.cur(), u = +o || 0, a = 1, f = 20; - if (s) { - n = +s[2], r = s[3] || (v.cssNumber[e] ? "" : "px"); - if (r !== "px" && u) { - u = v.css(i.elem, e, !0) || n || 1; - do a = a || ".5", u /= a, v.style(i.elem, e, u + r); while (a !== (a = i.cur() / o) && a !== 1 && --f) - } - i.unit = r, i.start = u, i.end = s[1] ? u + (s[1] + 1) * n : n - } - return i - }] - }; - v.Animation = v.extend(Kn, { - tweener: function (e, t) { - v.isFunction(e) ? (t = e, e = ["*"]) : e = e.split(" "); - var n, r = 0, i = e.length; - for (; r < i; r++)n = e[r], Vn[n] = Vn[n] || [], Vn[n].unshift(t) - }, prefilter: function (e, t) { - t ? Xn.unshift(e) : Xn.push(e) - } - }), v.Tween = Yn, Yn.prototype = { - constructor: Yn, init: function (e, t, n, r, i, s) { - this.elem = e, this.prop = n, this.easing = i || "swing", this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = s || (v.cssNumber[n] ? "" : "px") - }, cur: function () { - var e = Yn.propHooks[this.prop]; - return e && e.get ? e.get(this) : Yn.propHooks._default.get(this) - }, run: function (e) { - var t, n = Yn.propHooks[this.prop]; - return this.options.duration ? this.pos = t = v.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : Yn.propHooks._default.set(this), this - } - }, Yn.prototype.init.prototype = Yn.prototype, Yn.propHooks = { - _default: { - get: function (e) { - var t; - return e.elem[e.prop] == null || !!e.elem.style && e.elem.style[e.prop] != null ? (t = v.css(e.elem, e.prop, !1, ""), !t || t === "auto" ? 0 : t) : e.elem[e.prop] - }, set: function (e) { - v.fx.step[e.prop] ? v.fx.step[e.prop](e) : e.elem.style && (e.elem.style[v.cssProps[e.prop]] != null || v.cssHooks[e.prop]) ? v.style(e.elem, e.prop, e.now + e.unit) : e.elem[e.prop] = e.now - } - } - }, Yn.propHooks.scrollTop = Yn.propHooks.scrollLeft = { - set: function (e) { - e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now) - } - }, v.each(["toggle", "show", "hide"], function (e, t) { - var n = v.fn[t]; - v.fn[t] = function (r, i, s) { - return r == null || typeof r == "boolean" || !e && v.isFunction(r) && v.isFunction(i) ? n.apply(this, arguments) : this.animate(Zn(t, !0), r, i, s) - } - }), v.fn.extend({ - fadeTo: function (e, t, n, r) { - return this.filter(Gt).css("opacity", 0).show().end().animate({opacity: t}, e, n, r) - }, animate: function (e, t, n, r) { - var i = v.isEmptyObject(e), s = v.speed(t, n, r), o = function () { - var t = Kn(this, v.extend({}, e), s); - i && t.stop(!0) - }; - return i || s.queue === !1 ? this.each(o) : this.queue(s.queue, o) - }, stop: function (e, n, r) { - var i = function (e) { - var t = e.stop; - delete e.stop, t(r) - }; - return typeof e != "string" && (r = n, n = e, e = t), n && e !== !1 && this.queue(e || "fx", []), this.each(function () { - var t = !0, n = e != null && e + "queueHooks", s = v.timers, o = v._data(this); - if (n)o[n] && o[n].stop && i(o[n]); else for (n in o)o[n] && o[n].stop && Wn.test(n) && i(o[n]); - for (n = s.length; n--;)s[n].elem === this && (e == null || s[n].queue === e) && (s[n].anim.stop(r), t = !1, s.splice(n, 1)); - (t || !r) && v.dequeue(this, e) - }) - } - }), v.each({ - slideDown: Zn("show"), - slideUp: Zn("hide"), - slideToggle: Zn("toggle"), - fadeIn: {opacity: "show"}, - fadeOut: {opacity: "hide"}, - fadeToggle: {opacity: "toggle"} - }, function (e, t) { - v.fn[e] = function (e, n, r) { - return this.animate(t, e, n, r) - } - }), v.speed = function (e, t, n) { - var r = e && typeof e == "object" ? v.extend({}, e) : { - complete: n || !n && t || v.isFunction(e) && e, - duration: e, - easing: n && t || t && !v.isFunction(t) && t - }; - r.duration = v.fx.off ? 0 : typeof r.duration == "number" ? r.duration : r.duration in v.fx.speeds ? v.fx.speeds[r.duration] : v.fx.speeds._default; - if (r.queue == null || r.queue === !0)r.queue = "fx"; - return r.old = r.complete, r.complete = function () { - v.isFunction(r.old) && r.old.call(this), r.queue && v.dequeue(this, r.queue) - }, r - }, v.easing = { - linear: function (e) { - return e - }, swing: function (e) { - return .5 - Math.cos(e * Math.PI) / 2 - } - }, v.timers = [], v.fx = Yn.prototype.init, v.fx.tick = function () { - var e, n = v.timers, r = 0; - qn = v.now(); - for (; r < n.length; r++)e = n[r], !e() && n[r] === e && n.splice(r--, 1); - n.length || v.fx.stop(), qn = t - }, v.fx.timer = function (e) { - e() && v.timers.push(e) && !Rn && (Rn = setInterval(v.fx.tick, v.fx.interval)) - }, v.fx.interval = 13, v.fx.stop = function () { - clearInterval(Rn), Rn = null - }, v.fx.speeds = { - slow: 600, - fast: 200, - _default: 400 - }, v.fx.step = {}, v.expr && v.expr.filters && (v.expr.filters.animated = function (e) { - return v.grep(v.timers, function (t) { - return e === t.elem - }).length - }); - var er = /^(?:body|html)$/i; - v.fn.offset = function (e) { - if (arguments.length)return e === t ? this : this.each(function (t) { - v.offset.setOffset(this, e, t) - }); - var n, r, i, s, o, u, a, f = {top: 0, left: 0}, l = this[0], c = l && l.ownerDocument; - if (!c)return; - return (r = c.body) === l ? v.offset.bodyOffset(l) : (n = c.documentElement, v.contains(n, l) ? (typeof l.getBoundingClientRect != "undefined" && (f = l.getBoundingClientRect()), i = tr(c), s = n.clientTop || r.clientTop || 0, o = n.clientLeft || r.clientLeft || 0, u = i.pageYOffset || n.scrollTop, a = i.pageXOffset || n.scrollLeft, { - top: f.top + u - s, - left: f.left + a - o - }) : f) - }, v.offset = { - bodyOffset: function (e) { - var t = e.offsetTop, n = e.offsetLeft; - return v.support.doesNotIncludeMarginInBodyOffset && (t += parseFloat(v.css(e, "marginTop")) || 0, n += parseFloat(v.css(e, "marginLeft")) || 0), { - top: t, - left: n - } - }, setOffset: function (e, t, n) { - var r = v.css(e, "position"); - r === "static" && (e.style.position = "relative"); - var i = v(e), s = i.offset(), o = v.css(e, "top"), u = v.css(e, "left"), a = (r === "absolute" || r === "fixed") && v.inArray("auto", [o, u]) > -1, f = {}, l = {}, c, h; - a ? (l = i.position(), c = l.top, h = l.left) : (c = parseFloat(o) || 0, h = parseFloat(u) || 0), v.isFunction(t) && (t = t.call(e, n, s)), t.top != null && (f.top = t.top - s.top + c), t.left != null && (f.left = t.left - s.left + h), "using"in t ? t.using.call(e, f) : i.css(f) - } - }, v.fn.extend({ - position: function () { - if (!this[0])return; - var e = this[0], t = this.offsetParent(), n = this.offset(), r = er.test(t[0].nodeName) ? { - top: 0, - left: 0 - } : t.offset(); - return n.top -= parseFloat(v.css(e, "marginTop")) || 0, n.left -= parseFloat(v.css(e, "marginLeft")) || 0, r.top += parseFloat(v.css(t[0], "borderTopWidth")) || 0, r.left += parseFloat(v.css(t[0], "borderLeftWidth")) || 0, { - top: n.top - r.top, - left: n.left - r.left - } - }, offsetParent: function () { - return this.map(function () { - var e = this.offsetParent || i.body; - while (e && !er.test(e.nodeName) && v.css(e, "position") === "static")e = e.offsetParent; - return e || i.body - }) - } - }), v.each({scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function (e, n) { - var r = /Y/.test(n); - v.fn[e] = function (i) { - return v.access(this, function (e, i, s) { - var o = tr(e); - if (s === t)return o ? n in o ? o[n] : o.document.documentElement[i] : e[i]; - o ? o.scrollTo(r ? v(o).scrollLeft() : s, r ? s : v(o).scrollTop()) : e[i] = s - }, e, i, arguments.length, null) - } - }), v.each({Height: "height", Width: "width"}, function (e, n) { - v.each({padding: "inner" + e, content: n, "": "outer" + e}, function (r, i) { - v.fn[i] = function (i, s) { - var o = arguments.length && (r || typeof i != "boolean"), u = r || (i === !0 || s === !0 ? "margin" : "border"); - return v.access(this, function (n, r, i) { - var s; - return v.isWindow(n) ? n.document.documentElement["client" + e] : n.nodeType === 9 ? (s = n.documentElement, Math.max(n.body["scroll" + e], s["scroll" + e], n.body["offset" + e], s["offset" + e], s["client" + e])) : i === t ? v.css(n, r, i, u) : v.style(n, r, i, u) - }, n, o ? i : t, o, null) - } - }) - }), e.jQuery = e.$ = v, typeof define == "function" && define.amd && define.amd.jQuery && define("jquery", [], function () { - return v - }) -})(window); \ No newline at end of file diff --git a/doc/_build/html/_static/minus.png b/doc/_build/html/_static/minus.png deleted file mode 100644 index da1c5620d10c047525a467a425abe9ff5269cfc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1SHkYJtzcHoCO|{#XvD(5N2eUHAey{$X?>< z>&kweokM_|(Po{+Q=kw>iEBiObAE1aYF-J$w=>iB1I2R$WLpMkF=>bh=@O1TaS?83{1OVknK< z>&kweokM`jkU7Va11Q8%;u=xnoS&PUnpeW`?aZ|OK(QcC7sn8Z%gHvy&v=;Q4jejg zV8NnAO`-4Z@2~&zopr02WF_WB>pF diff --git a/doc/_build/html/_static/pygments.css b/doc/_build/html/_static/pygments.css deleted file mode 100644 index 9c27fe06..00000000 --- a/doc/_build/html/_static/pygments.css +++ /dev/null @@ -1,330 +0,0 @@ -.highlight .hll { - background-color: #ffffcc -} - -.highlight { - background: #eeffcc; -} - -.highlight .c { - color: #408090; - font-style: italic -} - -/* Comment */ -.highlight .err { - border: 1px solid #FF0000 -} - -/* Error */ -.highlight .k { - color: #007020; - font-weight: bold -} - -/* Keyword */ -.highlight .o { - color: #666666 -} - -/* Operator */ -.highlight .cm { - color: #408090; - font-style: italic -} - -/* Comment.Multiline */ -.highlight .cp { - color: #007020 -} - -/* Comment.Preproc */ -.highlight .c1 { - color: #408090; - font-style: italic -} - -/* Comment.Single */ -.highlight .cs { - color: #408090; - background-color: #fff0f0 -} - -/* Comment.Special */ -.highlight .gd { - color: #A00000 -} - -/* Generic.Deleted */ -.highlight .ge { - font-style: italic -} - -/* Generic.Emph */ -.highlight .gr { - color: #FF0000 -} - -/* Generic.Error */ -.highlight .gh { - color: #000080; - font-weight: bold -} - -/* Generic.Heading */ -.highlight .gi { - color: #00A000 -} - -/* Generic.Inserted */ -.highlight .go { - color: #333333 -} - -/* Generic.Output */ -.highlight .gp { - color: #c65d09; - font-weight: bold -} - -/* Generic.Prompt */ -.highlight .gs { - font-weight: bold -} - -/* Generic.Strong */ -.highlight .gu { - color: #800080; - font-weight: bold -} - -/* Generic.Subheading */ -.highlight .gt { - color: #0044DD -} - -/* Generic.Traceback */ -.highlight .kc { - color: #007020; - font-weight: bold -} - -/* Keyword.Constant */ -.highlight .kd { - color: #007020; - font-weight: bold -} - -/* Keyword.Declaration */ -.highlight .kn { - color: #007020; - font-weight: bold -} - -/* Keyword.Namespace */ -.highlight .kp { - color: #007020 -} - -/* Keyword.Pseudo */ -.highlight .kr { - color: #007020; - font-weight: bold -} - -/* Keyword.Reserved */ -.highlight .kt { - color: #902000 -} - -/* Keyword.Type */ -.highlight .m { - color: #208050 -} - -/* Literal.Number */ -.highlight .s { - color: #4070a0 -} - -/* Literal.String */ -.highlight .na { - color: #4070a0 -} - -/* Name.Attribute */ -.highlight .nb { - color: #007020 -} - -/* Name.Builtin */ -.highlight .nc { - color: #0e84b5; - font-weight: bold -} - -/* Name.Class */ -.highlight .no { - color: #60add5 -} - -/* Name.Constant */ -.highlight .nd { - color: #555555; - font-weight: bold -} - -/* Name.Decorator */ -.highlight .ni { - color: #d55537; - font-weight: bold -} - -/* Name.Entity */ -.highlight .ne { - color: #007020 -} - -/* Name.Exception */ -.highlight .nf { - color: #06287e -} - -/* Name.Function */ -.highlight .nl { - color: #002070; - font-weight: bold -} - -/* Name.Label */ -.highlight .nn { - color: #0e84b5; - font-weight: bold -} - -/* Name.Namespace */ -.highlight .nt { - color: #062873; - font-weight: bold -} - -/* Name.Tag */ -.highlight .nv { - color: #bb60d5 -} - -/* Name.Variable */ -.highlight .ow { - color: #007020; - font-weight: bold -} - -/* Operator.Word */ -.highlight .w { - color: #bbbbbb -} - -/* Text.Whitespace */ -.highlight .mf { - color: #208050 -} - -/* Literal.Number.Float */ -.highlight .mh { - color: #208050 -} - -/* Literal.Number.Hex */ -.highlight .mi { - color: #208050 -} - -/* Literal.Number.Integer */ -.highlight .mo { - color: #208050 -} - -/* Literal.Number.Oct */ -.highlight .sb { - color: #4070a0 -} - -/* Literal.String.Backtick */ -.highlight .sc { - color: #4070a0 -} - -/* Literal.String.Char */ -.highlight .sd { - color: #4070a0; - font-style: italic -} - -/* Literal.String.Doc */ -.highlight .s2 { - color: #4070a0 -} - -/* Literal.String.Double */ -.highlight .se { - color: #4070a0; - font-weight: bold -} - -/* Literal.String.Escape */ -.highlight .sh { - color: #4070a0 -} - -/* Literal.String.Heredoc */ -.highlight .si { - color: #70a0d0; - font-style: italic -} - -/* Literal.String.Interpol */ -.highlight .sx { - color: #c65d09 -} - -/* Literal.String.Other */ -.highlight .sr { - color: #235388 -} - -/* Literal.String.Regex */ -.highlight .s1 { - color: #4070a0 -} - -/* Literal.String.Single */ -.highlight .ss { - color: #517918 -} - -/* Literal.String.Symbol */ -.highlight .bp { - color: #007020 -} - -/* Name.Builtin.Pseudo */ -.highlight .vc { - color: #bb60d5 -} - -/* Name.Variable.Class */ -.highlight .vg { - color: #bb60d5 -} - -/* Name.Variable.Global */ -.highlight .vi { - color: #bb60d5 -} - -/* Name.Variable.Instance */ -.highlight .il { - color: #208050 -} - -/* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/doc/_build/html/_static/searchtools.js b/doc/_build/html/_static/searchtools.js deleted file mode 100644 index 24924dbe..00000000 --- a/doc/_build/html/_static/searchtools.js +++ /dev/null @@ -1,630 +0,0 @@ -/* - * searchtools.js_t - * ~~~~~~~~~~~~~~~~ - * - * Sphinx JavaScript utilties for the full-text search. - * - * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - - -/** - * Porter Stemmer - */ -var Stemmer = function () { - - var step2list = { - ational: 'ate', - tional: 'tion', - enci: 'ence', - anci: 'ance', - izer: 'ize', - bli: 'ble', - alli: 'al', - entli: 'ent', - eli: 'e', - ousli: 'ous', - ization: 'ize', - ation: 'ate', - ator: 'ate', - alism: 'al', - iveness: 'ive', - fulness: 'ful', - ousness: 'ous', - aliti: 'al', - iviti: 'ive', - biliti: 'ble', - logi: 'log' - }; - - var step3list = { - icate: 'ic', - ative: '', - alize: 'al', - iciti: 'ic', - ical: 'ic', - ful: '', - ness: '' - }; - - var c = "[^aeiou]"; // consonant - var v = "[aeiouy]"; // vowel - var C = c + "[^aeiouy]*"; // consonant sequence - var V = v + "[aeiou]*"; // vowel sequence - - var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 - var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 - var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 - var s_v = "^(" + C + ")?" + v; // vowel in stem - - this.stemWord = function (w) { - var stem; - var suffix; - var firstch; - var origword = w; - - if (w.length < 3) - return w; - - var re; - var re2; - var re3; - var re4; - - firstch = w.substr(0, 1); - if (firstch == "y") - w = firstch.toUpperCase() + w.substr(1); - - // Step 1a - re = /^(.+?)(ss|i)es$/; - re2 = /^(.+?)([^s])s$/; - - if (re.test(w)) - w = w.replace(re, "$1$2"); - else if (re2.test(w)) - w = w.replace(re2, "$1$2"); - - // Step 1b - re = /^(.+?)eed$/; - re2 = /^(.+?)(ed|ing)$/; - if (re.test(w)) { - var fp = re.exec(w); - re = new RegExp(mgr0); - if (re.test(fp[1])) { - re = /.$/; - w = w.replace(re, ""); - } - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = new RegExp(s_v); - if (re2.test(stem)) { - w = stem; - re2 = /(at|bl|iz)$/; - re3 = new RegExp("([^aeiouylsz])\\1$"); - re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re2.test(w)) - w = w + "e"; - else if (re3.test(w)) { - re = /.$/; - w = w.replace(re, ""); - } - else if (re4.test(w)) - w = w + "e"; - } - } - - // Step 1c - re = /^(.+?)y$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(s_v); - if (re.test(stem)) - w = stem + "i"; - } - - // Step 2 - re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step2list[suffix]; - } - - // Step 3 - re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step3list[suffix]; - } - - // Step 4 - re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - re2 = /^(.+?)(s|t)(ion)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - if (re.test(stem)) - w = stem; - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = new RegExp(mgr1); - if (re2.test(stem)) - w = stem; - } - - // Step 5 - re = /^(.+?)e$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - re2 = new RegExp(meq1); - re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) - w = stem; - } - re = /ll$/; - re2 = new RegExp(mgr1); - if (re.test(w) && re2.test(w)) { - re = /.$/; - w = w.replace(re, ""); - } - - // and turn initial Y back to y - if (firstch == "y") - w = firstch.toLowerCase() + w.substr(1); - return w; - } -} - - -/** - * Simple result scoring code. - */ -var Scorer = { - // Implement the following function to further tweak the score for each result - // The function takes a result array [filename, title, anchor, descr, score] - // and returns the new score. - /* - score: function(result) { - return result[4]; - }, - */ - - // query matches the full name of an object - objNameMatch: 11, - // or matches in the last dotted part of the object name - objPartialMatch: 6, - // Additive scores depending on the priority of the object - objPrio: { - 0: 15, // used to be importantResults - 1: 5, // used to be objectResults - 2: -5 - }, // used to be unimportantResults - // Used when the priority is not in the mapping. - objPrioDefault: 0, - - // query found in title - title: 15, - // query found in terms - term: 5 -}; - - -/** - * Search Module - */ -var Search = { - - _index: null, - _queued_query: null, - _pulse_status: -1, - - init: function () { - var params = $.getQueryParameters(); - if (params.q) { - var query = params.q[0]; - $('input[name="q"]')[0].value = query; - this.performSearch(query); - } - }, - - loadIndex: function (url) { - $.ajax({ - type: "GET", url: url, data: null, - dataType: "script", cache: true, - complete: function (jqxhr, textstatus) { - if (textstatus != "success") { - document.getElementById("searchindexloader").src = url; - } - } - }); - }, - - setIndex: function (index) { - var q; - this._index = index; - if ((q = this._queued_query) !== null) { - this._queued_query = null; - Search.query(q); - } - }, - - hasIndex: function () { - return this._index !== null; - }, - - deferQuery: function (query) { - this._queued_query = query; - }, - - stopPulse: function () { - this._pulse_status = 0; - }, - - startPulse: function () { - if (this._pulse_status >= 0) - return; - function pulse() { - var i; - Search._pulse_status = (Search._pulse_status + 1) % 4; - var dotString = ''; - for (i = 0; i < Search._pulse_status; i++) - dotString += '.'; - Search.dots.text(dotString); - if (Search._pulse_status > -1) - window.setTimeout(pulse, 500); - } - - pulse(); - }, - - /** - * perform a search for something (or wait until index is loaded) - */ - performSearch: function (query) { - // create the required interface elements - this.out = $('#search-results'); - this.title = $('

' + _('Searching') + '

').appendTo(this.out); - this.dots = $('').appendTo(this.title); - this.status = $('

').appendTo(this.out); - this.output = $('
'; - - var replyTemplate = '\ -
  • \ -
    \ -
    \ - \ - \ - \ - \ - \ - \ -
    \ -
  • '; - - $(document).ready(function () { - init(); - }); -})(jQuery); - -$(document).ready(function () { - // add comment anchors for all paragraphs that are commentable - $('.sphinx-has-comment').comment(); - - // highlight search words in search results - $("div.context").each(function () { - var params = $.getQueryParameters(); - var terms = (params.q) ? params.q[0].split(/\s+/) : []; - var result = $(this); - $.each(terms, function () { - result.highlightText(this.toLowerCase(), 'highlighted'); - }); - }); - - // directly open comment window if requested - var anchor = document.location.hash; - if (anchor.substring(0, 9) == '#comment-') { - $('#ao' + anchor.substring(9)).click(); - document.location.hash = '#s' + anchor.substring(9); - } -}); diff --git a/doc/_build/html/genindex.html b/doc/_build/html/genindex.html deleted file mode 100644 index 611a47b5..00000000 --- a/doc/_build/html/genindex.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - Index — python-twitter 1.0 documentation - - - - - - - - - - - - - -
    -
    -
    -
    - - -

    Index

    - -
    - -
    - - -
    -
    -
    -
    -
    - - - - -
    -
    -
    -
    - - - - \ No newline at end of file diff --git a/doc/_build/html/index.html b/doc/_build/html/index.html deleted file mode 100644 index 5b34927a..00000000 --- a/doc/_build/html/index.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - - - Welcome to python-twitter’s documentation! — python-twitter 1.0 documentation - - - - - - - - - - - - - -
    -
    -
    -
    - -
    -

    Welcome to python-twitter’s documentation!

    - -

    A Python wrapper around the Twitter API.

    - -

    Author: The Python-Twitter Developers <python-twitter@googlegroups.com> -

    - -
    -

    Introduction

    - -

    This library provides a pure Python interface for the Twitter - API. It works with Python versions from 2.5 to 2.7. Python 3 support is under - development.

    - -

    Twitter provides a service that - allows people to connect via the web, IM, and SMS. Twitter exposes a web services API - and this library is intended to make it even easier for Python programmers to use.

    -
    -
    -

    Building

    - -

    From source:

    - -

    Install the dependencies:

    - -

    This branch is currently in development to replace the OAuth and HTTPLib2 libarays with the - following:

    - -

    Alternatively use pip:

    - -
    -
    $ pip install -r requirements.txt
    -
    -
    -
    -

    Download the latest python-twitter library from: http://code.google.com/p/python-twitter/ -

    - -

    Extract the source distribution and run:

    - -
    -
    $ python setup.py build
    -$ python setup.py install
    -
    -
    -
    -
    -
    -

    Testing

    - -

    With setuptools installed:

    - -
    -
    $ python setup.py test
    -
    -
    -
    -

    Without setuptools installed:

    - -
    -
    $ python twitter_test.py
    -
    -
    -
    -
    -
    -

    Getting the code

    - -

    The code is hosted at Github.

    - -

    Check out the latest development version anonymously with:

    - -
    -
    $ git clone git://github.com/bear/python-twitter.git
    -$ cd python-twitter
    -
    -
    -
    -
    -
      -
    -
    -
    -
    -
    -

    Indices and tables

    - -
    - - -
    -
    -
    -
    -
    -

    Table Of Contents

    - - -

    This Page

    - - - -
    -
    -
    -
    - - - - \ No newline at end of file diff --git a/doc/_build/html/objects.inv b/doc/_build/html/objects.inv deleted file mode 100644 index 1fa30d71a4858850b3c675b867091bba377ca4b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmY#Z2rkIT%&Sny%qvUHE6FdaR47X=D$dN$Q!wIERtPA{&q_@$u~I0gEXl~v(=92_ zEGbDX0?LFzR9Pt)>KOpJAsML(MX9-onRzLxMGE<83MCnt#R_SeIjIUjIypbLpeVJt zI5kC~v^X;_U7;!`Gf9uD;@0W2{wL3Pd#(-8(DU4Q%G1Z|Y~Tgc5RDaA&bE5JNS*TJ znTGa{XUnHNTcTCb)UxAJ@aGK~O`T4q4pYRItBI+mFVJe~aGc8OEW)C)Y - - - - - - - Search — python-twitter 1.0 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/doc/_build/html/searchindex.js b/doc/_build/html/searchindex.js deleted file mode 100644 index bbeea809..00000000 --- a/doc/_build/html/searchindex.js +++ /dev/null @@ -1,107 +0,0 @@ -Search.setIndex({ - envversion: 42, - terms: { - code: [], - replac: 0, - modul: 0, - request: 0, - download: 0, - api: 0, - connect: 0, - cheeseshop: [], - pip: 0, - instal: 0, - txt: 0, - extract: 0, - check: 0, - librari: 0, - out: 0, - even: 0, - index: 0, - oauthlib: 0, - git: 0, - from: 0, - googl: 0, - expos: 0, - author: 0, - oauth: 0, - support: 0, - develop: 0, - depend: 0, - wrapper: 0, - latest: 0, - current: 0, - web: 0, - run: 0, - version: 0, - interfac: 0, - build: [], - pure: 0, - under: 0, - test: [], - you: [], - content: [], - intend: 0, - easier: 0, - altern: 0, - simplegeo: [], - setup: 0, - sourc: 0, - http: 0, - around: 0, - get: [], - googlegroup: 0, - clone: 0, - setuptool: 0, - bear: 0, - pypi: [], - thi: 0, - host: 0, - oauth2: [], - libarai: 0, - branch: 0, - twitter_test: 0, - org: [], - along: [], - peopl: 0, - introduct: [], - search: 0, - github: 0, - via: 0, - doc: [], - servic: 0, - work: 0, - requir: 0, - dev: [], - page: 0, - provid: 0, - without: 0, - follow: 0, - allow: 0, - distribut: 0, - programm: 0, - anonym: 0, - readthedoc: [], - com: 0, - make: 0, - httplib2: 0 - }, - objtypes: {}, - objnames: {}, - filenames: ["index"], - titles: ["Welcome to python-twitter’s documentation!"], - objects: {}, - titleterms: { - code: 0, - welcom: 0, - get: 0, - python: 0, - twitter: 0, - indic: 0, - build: 0, - tabl: 0, - test: 0, - document: 0, - introduct: 0 - } -}) \ No newline at end of file From 4302c594491312c08782965dbe14cd2e0901d954 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Fri, 11 Mar 2016 18:44:42 -0500 Subject: [PATCH 4/5] merge cherry pick --- README.rst | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/README.rst b/README.rst index 7223d2c8..8a2c83bf 100644 --- a/README.rst +++ b/README.rst @@ -58,22 +58,23 @@ Activate the virtual environment created:: ============= Running Tests ============= -Note that tests require ```pip install pytest``` and optionally ```pip install pytest-cov```: +Note that tests require ```pip install pytest``` and optionally ```pip install pytest-cov``` (these are included if you have installed dependencies from ```requirements.devel.txt``` or run ```make env-devel```) To run the unit tests:: - $ make test + $ make test to also run code coverage:: $ make coverage + ============= Documentation ============= View the latest python-twitter documentation at -https://python-twitter.readthedocs.org. You can view Twitter's API documentation at: https://dev.twitter.com/overview/documentation +https://python-twitter.readthedocs.org. You can view Twitter's API documentation at: https://dev.twitter.com/overview/documentation ===== Using @@ -103,7 +104,7 @@ The library utilizes models to represent various data structures returned by Twi * twitter.User * twitter.UserStatus -To read the documentation for any of these models, run:: +To read the documentation for any of these models, run:: $ pydoc twitter.[model] @@ -113,7 +114,7 @@ API The API is exposed via the ``twitter.Api`` class. -The python-twitter library now only supports OAuth authentication as the Twitter devs have indicated that OAuth is the only method that will be supported moving forward. +The python-twitter requires the use of OAuth keys for nearly all operations. As of Twitter's API v1.1, authentication is required for most, if not all, endpoints. Therefore, you will need to register an app with Twitter in order to use this library. Please see the "Getting Started" guide on https://python-twitter.readthedocs.org for a more information. To generate an Access Token you have to pick what type of access your application requires and then do one of the following: @@ -138,7 +139,7 @@ To see if your credentials are successful:: **NOTE**: much more than the small sample given here will print -To fetch a single user's public status messages, where ``user`` is a Twitter *short name*:: +To fetch a single user's public status messages, where ``user`` is a Twitter *short name* (i.e., a user's screen name):: >>> statuses = api.GetUserTimeline(screen_name=user) >>> print([s.text for s in statuses]) @@ -154,7 +155,14 @@ To post a Twitter status message (requires authentication):: >>> print(status.text) I love python-twitter! -There are many more API methods, to read the full API documentation:: +There are many more API methods, to read the full API documentation either +check out the documentation on `readthedocs +`_, build the documentation locally +with:: + + $ make docs + +or check out the inline documentation with:: $ pydoc twitter.Api @@ -162,9 +170,12 @@ There are many more API methods, to read the full API documentation:: Todo ---- -Patches and bug reports are `welcome `_, just please keep the style consistent with the original source. +Patches, pull requests, and bug reports are `welcome `_, just please keep the style consistent with the original source. -Add more example scripts. +In particular, having more example scripts would be a huge help. If you have +a program that uses python-twitter and would like a link in the documentation, +submit a pull request against ``twitter/doc/getting_started.rst`` and add your +program at the bottom. The twitter.Status and ``twitter.User`` classes are going to be hard to keep in sync with the API if the API changes. More of the code could probably be written with introspection. From 2e692ecb93f01499fb920dc86f925a9c589e27c2 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sun, 20 Mar 2016 14:01:57 -0400 Subject: [PATCH 5/5] revise docs per PR #308 --- README.rst | 27 ++++++++++++++++++--------- doc/contributing.rst | 24 ++++++------------------ doc/installation.rst | 10 +++++----- doc/rate_limits.rst | 9 ++++++--- 4 files changed, 35 insertions(+), 35 deletions(-) diff --git a/README.rst b/README.rst index 8a2c83bf..7e5dd892 100644 --- a/README.rst +++ b/README.rst @@ -24,7 +24,7 @@ By the `Python-Twitter Developers `_ Introduction ============ -This library provides a pure Python interface for the `Twitter API `_. It works with Python versions from 2.7+ and python 3. +This library provides a pure Python interface for the `Twitter API `_. It works with Python versions from 2.7+ and Python 3. `Twitter `_ provides a service that allows people to connect via the web, IM, and SMS. Twitter exposes a `web services API `_ and this library is intended to make it even easier for Python programmers to use. @@ -47,18 +47,27 @@ Check out the latest development version anonymously with:: $ git clone git://github.com/bear/python-twitter.git $ cd python-twitter -Setup a virtual environment and install dependencies:: +To install dependencies, run either:: - $ make env-devel + $ make dev -Activate the virtual environment created:: +or:: - $ source env/bin/activate + $ pip install -r requirements.testing.txt + +To install the minimal dependencies for production use (i.e., what is installed +with ``pip install python-twitter``) run:: + + $ make env + +or:: + + $ pip install -r requirements.txt ============= Running Tests ============= -Note that tests require ```pip install pytest``` and optionally ```pip install pytest-cov``` (these are included if you have installed dependencies from ```requirements.devel.txt``` or run ```make env-devel```) +Note that tests require ```pip install pytest``` and optionally ```pip install pytest-cov``` (these are included if you have installed dependencies from ```requirements.testing.txt```) To run the unit tests:: @@ -139,17 +148,17 @@ To see if your credentials are successful:: **NOTE**: much more than the small sample given here will print -To fetch a single user's public status messages, where ``user`` is a Twitter *short name* (i.e., a user's screen name):: +To fetch a single user's public status messages, where ``user`` is a Twitter user's screen name:: >>> statuses = api.GetUserTimeline(screen_name=user) >>> print([s.text for s in statuses]) -To fetch a list a user's friends (requires authentication):: +To fetch a list a user's friends:: >>> users = api.GetFriends() >>> print([u.name for u in users]) -To post a Twitter status message (requires authentication):: +To post a Twitter status message:: >>> status = api.PostUpdate('I love python-twitter!') >>> print(status.text) diff --git a/doc/contributing.rst b/doc/contributing.rst index 7f5fd796..8f6f0874 100644 --- a/doc/contributing.rst +++ b/doc/contributing.rst @@ -11,27 +11,15 @@ Check out the latest development version anonymously with:: $ git clone git://github.com/bear/python-twitter.git $ cd python-twitter -Setting up a development environment can be handled automatically with ``make`` -or via an existing virtual enviroment. To use ``make`` type the following -commands:: +The following sections assuming that you have `pyenv +`_ installed and working on your computer. - $ make env-devel - $ . env/bin/activate +To install dependencies, run:: -The first command will create a virtual environment in the ``env/`` directory and install -the required dependencies for you. The second will activate the virtual -environment so that you can start working on the library. + $ make dev -If you would prefer to use an existing installation of virtualenvwrapper or -similar, you can install the required dependencies with:: - - $ pip install requirements.devel.txt - -or:: - - $ make deps-devel - -which will install the required dependencies for development of the library. +This will install all of the required packages for the core library, testing, +and installation. Testing ======= diff --git a/doc/installation.rst b/doc/installation.rst index 14dd3e3c..40a7d638 100644 --- a/doc/installation.rst +++ b/doc/installation.rst @@ -31,13 +31,13 @@ Extract the source distribution and run:: Testing ======= -Run:: +The following requires ``pip install pytest`` and ``pip install pytest-cov``. Run:: - $ python test.py + $ make test -If you would like to see coverage information and have `Nose `_ installed:: +If you would like to see coverage information:: - $ nosetests --with-coverage + $ make coverage Getting the code @@ -48,4 +48,4 @@ The code is hosted at `Github `_. Check out the latest development version anonymously with:: $ git clone git://github.com/bear/python-twitter.git -$ cd python-twitter \ No newline at end of file +$ cd python-twitter diff --git a/doc/rate_limits.rst b/doc/rate_limits.rst index ff99ba20..c6e3cf67 100644 --- a/doc/rate_limits.rst +++ b/doc/rate_limits.rst @@ -1,5 +1,8 @@ Rate Limiting ------------- +------------- + +Overview +++++++++ Twitter imposes rate limiting based either on user tokens or application tokens. Please see: `API Rate Limits @@ -66,9 +69,9 @@ pass ``sleep_on_rate_limit=True`` to your API instance. This will cause the API to raise a hard error when attempting to make call #15 above. Technical ---------- ++++++++++ -The twitter/ratelimit.py file contains the code that handles storing and +The ``twitter/ratelimit.py`` file contains the code that handles storing and checking rate limits for endpoints. Since Twitter does not send any information regarding the endpoint that you are requesting with the ``x-rate-limit-*`` headers, the endpoint is determined by some regex using the URL.