Version Notes
https://github.com/expressly/magento
Download this release
Release Info
Developer | Expressly |
Extension | Expressly |
Version | 0.4.0 |
Comparing to | |
See all releases |
Code changes from version 0.2.0 to 0.4.0
- app/code/community/Expressly/Expressly/Block/System/Config/Form/Register.php +0 -3
- app/code/community/Expressly/Expressly/Helper/Client.php +0 -2
- app/code/community/Expressly/Expressly/Model/Observer.php +10 -20
- app/code/community/Expressly/Expressly/composer.json +1 -1
- app/code/community/Expressly/Expressly/composer.lock +40 -38
- app/code/community/Expressly/Expressly/controllers/AbstractController.php +1 -0
- app/code/community/Expressly/Expressly/controllers/BatchController.php +77 -63
- app/code/community/Expressly/Expressly/controllers/CustomerController.php +65 -59
- app/code/community/Expressly/Expressly/controllers/UtilityController.php +15 -2
- app/code/community/Expressly/Expressly/etc/config.xml +11 -5
- app/code/community/Expressly/Expressly/etc/system.xml +12 -47
- app/code/community/Expressly/Expressly/lib/MerchantProvider.php +4 -24
- app/code/community/Expressly/Expressly/sql/expressly_expressly_setup/mysql4-install-0.1.0.php +7 -7
- app/code/community/Expressly/Expressly/sql/expressly_expressly_setup/upgrade-0.1.0-0.3.0.php +26 -0
- app/code/community/Expressly/Expressly/vendor/autoload.php +1 -1
- app/code/community/Expressly/Expressly/vendor/composer/autoload_real.php +4 -4
- app/code/community/Expressly/Expressly/vendor/composer/installed.json +276 -274
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/.gitignore +2 -1
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/bootstrap/bootstrap.php +0 -1
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/bootstrap/database.php +0 -12
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/bootstrap/services.php +1 -1
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/composer.json +1 -1
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/Makefile +192 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/environment.pickle +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/exceptions.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/flows.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/help.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/index.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/integration.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/integrations.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/license.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/overview.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/overview/index.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/project.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/project/index.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/requests.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/responses.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/routes.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/setup.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/setup/configuration.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/setup/index.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/setup/installation.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/setup/requirements.doctree +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/.buildinfo +4 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/exceptions.txt +10 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/flows.txt +129 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/help.txt +4 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/index.txt +16 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/integration.txt +29 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/integrations.txt +26 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/license.txt +24 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/overview.txt +105 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/overview/index.txt +5 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/project.txt +270 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/project/index.txt +5 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/requests.txt +297 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/responses.txt +309 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/routes.txt +337 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/setup.txt +48 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/{src/Proxy/.gitkeep → docs/build/html/_sources/setup/configuration.txt} +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/setup/index.txt +5 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/setup/installation.txt +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/setup/requirements.txt +5 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/ajax-loader.gif +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/alabaster.css +585 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/basic.css +599 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/comment-bright.png +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/comment-close.png +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/comment.png +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/css/badge_only.css +2 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/css/theme.css +5 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/doctools.js +263 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/down-pressed.png +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/down.png +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/file.png +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/Inconsolata-Bold.ttf +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/Inconsolata-Regular.ttf +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/Lato-Bold.ttf +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/Lato-Regular.ttf +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/RobotoSlab-Bold.ttf +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/RobotoSlab-Regular.ttf +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/fontawesome-webfont.eot +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/fontawesome-webfont.svg +520 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/fontawesome-webfont.ttf +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/fontawesome-webfont.woff +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/jquery-1.11.1.js +10308 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/jquery.js +4 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/js/modernizr.min.js +4 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/js/theme.js +153 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/minus.png +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/plus.png +0 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/pygments.css +63 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/searchtools.js +622 -0
- app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/underscore-1.3.1.js +686 -0
app/code/community/Expressly/Expressly/Block/System/Config/Form/Register.php
CHANGED
@@ -5,9 +5,6 @@ class Expressly_Expressly_Block_System_Config_Form_Register extends Mage_Adminht
|
|
5 |
protected function _prepareLayout()
|
6 |
{
|
7 |
parent::_prepareLayout();
|
8 |
-
if (!$this->getTemplate()) {
|
9 |
-
$this->setTemplate('expressly/register.phtml');
|
10 |
-
}
|
11 |
|
12 |
return $this;
|
13 |
}
|
5 |
protected function _prepareLayout()
|
6 |
{
|
7 |
parent::_prepareLayout();
|
|
|
|
|
|
|
8 |
|
9 |
return $this;
|
10 |
}
|
app/code/community/Expressly/Expressly/Helper/Client.php
CHANGED
@@ -21,8 +21,6 @@ class Expressly_Expressly_Helper_Client extends Mage_Core_Helper_Abstract
|
|
21 |
});
|
22 |
|
23 |
$this->app = $app;
|
24 |
-
$this->dispatcher = $app['dispatcher'];
|
25 |
-
$this->logger = $app['logger'];
|
26 |
}
|
27 |
|
28 |
public function getApp()
|
21 |
});
|
22 |
|
23 |
$this->app = $app;
|
|
|
|
|
24 |
}
|
25 |
|
26 |
public function getApp()
|
app/code/community/Expressly/Expressly/Model/Observer.php
CHANGED
@@ -4,6 +4,8 @@ use Expressly\Event\MerchantEvent;
|
|
4 |
use Expressly\Event\PasswordedEvent;
|
5 |
use Expressly\Exception\ExceptionFormatter;
|
6 |
use Expressly\Exception\GenericException;
|
|
|
|
|
7 |
|
8 |
class Expressly_Expressly_Model_Observer extends Varien_Event_Observer
|
9 |
{
|
@@ -18,36 +20,24 @@ class Expressly_Expressly_Model_Observer extends Varien_Event_Observer
|
|
18 |
$app = $helper->getApp();
|
19 |
$provider = $app['merchant.provider'];
|
20 |
$dispatcher = $app['dispatcher'];
|
21 |
-
|
22 |
$merchant = $provider->getMerchant();
|
23 |
-
$uuid = $merchant->getUuid();
|
24 |
-
$password = $merchant->getPassword();
|
25 |
$event = new PasswordedEvent($merchant);
|
26 |
|
27 |
try {
|
28 |
-
|
29 |
-
|
30 |
-
$dispatcher->dispatch('merchant.register', $event);
|
31 |
-
} else {
|
32 |
-
$dispatcher->dispatch('merchant.update', $event);
|
33 |
-
}
|
34 |
|
35 |
-
$content = $event->getContent();
|
36 |
if (!$event->isSuccessful()) {
|
37 |
-
throw new
|
38 |
-
}
|
39 |
-
|
40 |
-
if (empty($uuid) && empty($password)) {
|
41 |
-
$merchant
|
42 |
-
->setUuid($content['merchantUuid'])
|
43 |
-
->setPassword($content['secretKey']);
|
44 |
-
|
45 |
-
$provider->setMerchant($merchant);
|
46 |
}
|
47 |
} catch (\Exception $e) {
|
48 |
$app['logger']->error(ExceptionFormatter::format($e));
|
49 |
|
50 |
-
$response = array(
|
|
|
|
|
|
|
51 |
\Mage::app()->getResponse()->setBody(Mage::helper('core')->jsonEncode($response));
|
52 |
}
|
53 |
}
|
4 |
use Expressly\Event\PasswordedEvent;
|
5 |
use Expressly\Exception\ExceptionFormatter;
|
6 |
use Expressly\Exception\GenericException;
|
7 |
+
use Expressly\Exception\InvalidAPIKeyException;
|
8 |
+
use Expressly\Subscriber\MerchantSubscriber;
|
9 |
|
10 |
class Expressly_Expressly_Model_Observer extends Varien_Event_Observer
|
11 |
{
|
20 |
$app = $helper->getApp();
|
21 |
$provider = $app['merchant.provider'];
|
22 |
$dispatcher = $app['dispatcher'];
|
23 |
+
|
24 |
$merchant = $provider->getMerchant();
|
|
|
|
|
25 |
$event = new PasswordedEvent($merchant);
|
26 |
|
27 |
try {
|
28 |
+
$provider->setMerchant($merchant);
|
29 |
+
$dispatcher->dispatch(MerchantSubscriber::MERCHANT_REGISTER, $event);
|
|
|
|
|
|
|
|
|
30 |
|
|
|
31 |
if (!$event->isSuccessful()) {
|
32 |
+
throw new InvalidAPIKeyException();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
}
|
34 |
} catch (\Exception $e) {
|
35 |
$app['logger']->error(ExceptionFormatter::format($e));
|
36 |
|
37 |
+
$response = array(
|
38 |
+
'error' => -1,
|
39 |
+
'message' => $helper->__('Your values could not be transmitted to the server. Please try resubmitting, or contacting info@buyexpressly.com')
|
40 |
+
);
|
41 |
\Mage::app()->getResponse()->setBody(Mage::helper('core')->jsonEncode($response));
|
42 |
}
|
43 |
}
|
app/code/community/Expressly/Expressly/composer.json
CHANGED
@@ -10,7 +10,7 @@
|
|
10 |
}
|
11 |
],
|
12 |
"require": {
|
13 |
-
"expressly/php-common": "
|
14 |
},
|
15 |
"repositories": [
|
16 |
{
|
10 |
}
|
11 |
],
|
12 |
"require": {
|
13 |
+
"expressly/php-common": "2.3.2"
|
14 |
},
|
15 |
"repositories": [
|
16 |
{
|
app/code/community/Expressly/Expressly/composer.lock
CHANGED
@@ -4,8 +4,8 @@
|
|
4 |
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
5 |
"This file is @generated automatically"
|
6 |
],
|
7 |
-
"hash": "
|
8 |
-
"content-hash": "
|
9 |
"packages": [
|
10 |
{
|
11 |
"name": "deralex/yaml-config-service-provider",
|
@@ -126,16 +126,16 @@
|
|
126 |
},
|
127 |
{
|
128 |
"name": "expressly/php-common",
|
129 |
-
"version": "
|
130 |
"source": {
|
131 |
"type": "git",
|
132 |
"url": "https://github.com/expressly/php-common.git",
|
133 |
-
"reference": "
|
134 |
},
|
135 |
"dist": {
|
136 |
"type": "zip",
|
137 |
-
"url": "https://api.github.com/repos/expressly/php-common/zipball/
|
138 |
-
"reference": "
|
139 |
"shasum": ""
|
140 |
},
|
141 |
"require": {
|
@@ -169,10 +169,10 @@
|
|
169 |
],
|
170 |
"description": "Expressly common PHP library",
|
171 |
"support": {
|
172 |
-
"source": "https://github.com/expressly/php-common/tree/
|
173 |
"issues": "https://github.com/expressly/php-common/issues"
|
174 |
},
|
175 |
-
"time": "2015-
|
176 |
},
|
177 |
{
|
178 |
"name": "kriswallsmith/buzz",
|
@@ -564,16 +564,16 @@
|
|
564 |
},
|
565 |
{
|
566 |
"name": "symfony/debug",
|
567 |
-
"version": "v2.
|
568 |
"source": {
|
569 |
"type": "git",
|
570 |
"url": "https://github.com/symfony/debug.git",
|
571 |
-
"reference": "
|
572 |
},
|
573 |
"dist": {
|
574 |
"type": "zip",
|
575 |
-
"url": "https://api.github.com/repos/symfony/debug/zipball/
|
576 |
-
"reference": "
|
577 |
"shasum": ""
|
578 |
},
|
579 |
"require": {
|
@@ -584,20 +584,22 @@
|
|
584 |
"symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
|
585 |
},
|
586 |
"require-dev": {
|
587 |
-
"symfony/class-loader": "~2.2",
|
588 |
-
"symfony/http-kernel": "~2.3.24|~2.5.9|~2.6,>=2.6.2"
|
589 |
-
"symfony/phpunit-bridge": "~2.7"
|
590 |
},
|
591 |
"type": "library",
|
592 |
"extra": {
|
593 |
"branch-alias": {
|
594 |
-
"dev-master": "2.
|
595 |
}
|
596 |
},
|
597 |
"autoload": {
|
598 |
"psr-4": {
|
599 |
"Symfony\\Component\\Debug\\": ""
|
600 |
-
}
|
|
|
|
|
|
|
601 |
},
|
602 |
"notification-url": "https://packagist.org/downloads/",
|
603 |
"license": [
|
@@ -615,11 +617,11 @@
|
|
615 |
],
|
616 |
"description": "Symfony Debug Component",
|
617 |
"homepage": "https://symfony.com",
|
618 |
-
"time": "
|
619 |
},
|
620 |
{
|
621 |
"name": "symfony/event-dispatcher",
|
622 |
-
"version": "v2.6.
|
623 |
"target-dir": "Symfony/Component/EventDispatcher",
|
624 |
"source": {
|
625 |
"type": "git",
|
@@ -678,34 +680,34 @@
|
|
678 |
},
|
679 |
{
|
680 |
"name": "symfony/filesystem",
|
681 |
-
"version": "v2.
|
682 |
"source": {
|
683 |
"type": "git",
|
684 |
"url": "https://github.com/symfony/filesystem.git",
|
685 |
-
"reference": "
|
686 |
},
|
687 |
"dist": {
|
688 |
"type": "zip",
|
689 |
-
"url": "https://api.github.com/repos/symfony/filesystem/zipball/
|
690 |
-
"reference": "
|
691 |
"shasum": ""
|
692 |
},
|
693 |
"require": {
|
694 |
"php": ">=5.3.9"
|
695 |
},
|
696 |
-
"require-dev": {
|
697 |
-
"symfony/phpunit-bridge": "~2.7"
|
698 |
-
},
|
699 |
"type": "library",
|
700 |
"extra": {
|
701 |
"branch-alias": {
|
702 |
-
"dev-master": "2.
|
703 |
}
|
704 |
},
|
705 |
"autoload": {
|
706 |
"psr-4": {
|
707 |
"Symfony\\Component\\Filesystem\\": ""
|
708 |
-
}
|
|
|
|
|
|
|
709 |
},
|
710 |
"notification-url": "https://packagist.org/downloads/",
|
711 |
"license": [
|
@@ -723,11 +725,11 @@
|
|
723 |
],
|
724 |
"description": "Symfony Filesystem Component",
|
725 |
"homepage": "https://symfony.com",
|
726 |
-
"time": "
|
727 |
},
|
728 |
{
|
729 |
"name": "symfony/http-foundation",
|
730 |
-
"version": "v2.6.
|
731 |
"target-dir": "Symfony/Component/HttpFoundation",
|
732 |
"source": {
|
733 |
"type": "git",
|
@@ -781,17 +783,17 @@
|
|
781 |
},
|
782 |
{
|
783 |
"name": "symfony/http-kernel",
|
784 |
-
"version": "v2.6.
|
785 |
"target-dir": "Symfony/Component/HttpKernel",
|
786 |
"source": {
|
787 |
"type": "git",
|
788 |
"url": "https://github.com/symfony/http-kernel.git",
|
789 |
-
"reference": "
|
790 |
},
|
791 |
"dist": {
|
792 |
"type": "zip",
|
793 |
-
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/
|
794 |
-
"reference": "
|
795 |
"shasum": ""
|
796 |
},
|
797 |
"require": {
|
@@ -855,20 +857,20 @@
|
|
855 |
],
|
856 |
"description": "Symfony HttpKernel Component",
|
857 |
"homepage": "https://symfony.com",
|
858 |
-
"time": "
|
859 |
},
|
860 |
{
|
861 |
"name": "symfony/routing",
|
862 |
-
"version": "v2.6.
|
863 |
"target-dir": "Symfony/Component/Routing",
|
864 |
"source": {
|
865 |
"type": "git",
|
866 |
-
"url": "https://github.com/symfony/
|
867 |
"reference": "0a1764d41bbb54f3864808c50569ac382b44d128"
|
868 |
},
|
869 |
"dist": {
|
870 |
"type": "zip",
|
871 |
-
"url": "https://api.github.com/repos/symfony/
|
872 |
"reference": "0a1764d41bbb54f3864808c50569ac382b44d128",
|
873 |
"shasum": ""
|
874 |
},
|
4 |
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
5 |
"This file is @generated automatically"
|
6 |
],
|
7 |
+
"hash": "26e402ee2b3bac37eb71e5a41ec2e9ad",
|
8 |
+
"content-hash": "ff3dbc112134d363f6452e376192950d",
|
9 |
"packages": [
|
10 |
{
|
11 |
"name": "deralex/yaml-config-service-provider",
|
126 |
},
|
127 |
{
|
128 |
"name": "expressly/php-common",
|
129 |
+
"version": "2.3.2",
|
130 |
"source": {
|
131 |
"type": "git",
|
132 |
"url": "https://github.com/expressly/php-common.git",
|
133 |
+
"reference": "32ec030ac5186adc6dca4bb679633b2a627e8e70"
|
134 |
},
|
135 |
"dist": {
|
136 |
"type": "zip",
|
137 |
+
"url": "https://api.github.com/repos/expressly/php-common/zipball/32ec030ac5186adc6dca4bb679633b2a627e8e70",
|
138 |
+
"reference": "32ec030ac5186adc6dca4bb679633b2a627e8e70",
|
139 |
"shasum": ""
|
140 |
},
|
141 |
"require": {
|
169 |
],
|
170 |
"description": "Expressly common PHP library",
|
171 |
"support": {
|
172 |
+
"source": "https://github.com/expressly/php-common/tree/2.3.2",
|
173 |
"issues": "https://github.com/expressly/php-common/issues"
|
174 |
},
|
175 |
+
"time": "2015-11-25 17:35:18"
|
176 |
},
|
177 |
{
|
178 |
"name": "kriswallsmith/buzz",
|
564 |
},
|
565 |
{
|
566 |
"name": "symfony/debug",
|
567 |
+
"version": "v2.8.2",
|
568 |
"source": {
|
569 |
"type": "git",
|
570 |
"url": "https://github.com/symfony/debug.git",
|
571 |
+
"reference": "386364a0e71158615ab9ae76b74bf84efc0bac7e"
|
572 |
},
|
573 |
"dist": {
|
574 |
"type": "zip",
|
575 |
+
"url": "https://api.github.com/repos/symfony/debug/zipball/386364a0e71158615ab9ae76b74bf84efc0bac7e",
|
576 |
+
"reference": "386364a0e71158615ab9ae76b74bf84efc0bac7e",
|
577 |
"shasum": ""
|
578 |
},
|
579 |
"require": {
|
584 |
"symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
|
585 |
},
|
586 |
"require-dev": {
|
587 |
+
"symfony/class-loader": "~2.2|~3.0.0",
|
588 |
+
"symfony/http-kernel": "~2.3.24|~2.5.9|~2.6,>=2.6.2|~3.0.0"
|
|
|
589 |
},
|
590 |
"type": "library",
|
591 |
"extra": {
|
592 |
"branch-alias": {
|
593 |
+
"dev-master": "2.8-dev"
|
594 |
}
|
595 |
},
|
596 |
"autoload": {
|
597 |
"psr-4": {
|
598 |
"Symfony\\Component\\Debug\\": ""
|
599 |
+
},
|
600 |
+
"exclude-from-classmap": [
|
601 |
+
"/Tests/"
|
602 |
+
]
|
603 |
},
|
604 |
"notification-url": "https://packagist.org/downloads/",
|
605 |
"license": [
|
617 |
],
|
618 |
"description": "Symfony Debug Component",
|
619 |
"homepage": "https://symfony.com",
|
620 |
+
"time": "2016-01-13 10:28:07"
|
621 |
},
|
622 |
{
|
623 |
"name": "symfony/event-dispatcher",
|
624 |
+
"version": "v2.6.13",
|
625 |
"target-dir": "Symfony/Component/EventDispatcher",
|
626 |
"source": {
|
627 |
"type": "git",
|
680 |
},
|
681 |
{
|
682 |
"name": "symfony/filesystem",
|
683 |
+
"version": "v2.8.2",
|
684 |
"source": {
|
685 |
"type": "git",
|
686 |
"url": "https://github.com/symfony/filesystem.git",
|
687 |
+
"reference": "637b64d0ee10f44ae98dbad651b1ecdf35a11e8c"
|
688 |
},
|
689 |
"dist": {
|
690 |
"type": "zip",
|
691 |
+
"url": "https://api.github.com/repos/symfony/filesystem/zipball/637b64d0ee10f44ae98dbad651b1ecdf35a11e8c",
|
692 |
+
"reference": "637b64d0ee10f44ae98dbad651b1ecdf35a11e8c",
|
693 |
"shasum": ""
|
694 |
},
|
695 |
"require": {
|
696 |
"php": ">=5.3.9"
|
697 |
},
|
|
|
|
|
|
|
698 |
"type": "library",
|
699 |
"extra": {
|
700 |
"branch-alias": {
|
701 |
+
"dev-master": "2.8-dev"
|
702 |
}
|
703 |
},
|
704 |
"autoload": {
|
705 |
"psr-4": {
|
706 |
"Symfony\\Component\\Filesystem\\": ""
|
707 |
+
},
|
708 |
+
"exclude-from-classmap": [
|
709 |
+
"/Tests/"
|
710 |
+
]
|
711 |
},
|
712 |
"notification-url": "https://packagist.org/downloads/",
|
713 |
"license": [
|
725 |
],
|
726 |
"description": "Symfony Filesystem Component",
|
727 |
"homepage": "https://symfony.com",
|
728 |
+
"time": "2016-01-13 10:28:07"
|
729 |
},
|
730 |
{
|
731 |
"name": "symfony/http-foundation",
|
732 |
+
"version": "v2.6.13",
|
733 |
"target-dir": "Symfony/Component/HttpFoundation",
|
734 |
"source": {
|
735 |
"type": "git",
|
783 |
},
|
784 |
{
|
785 |
"name": "symfony/http-kernel",
|
786 |
+
"version": "v2.6.13",
|
787 |
"target-dir": "Symfony/Component/HttpKernel",
|
788 |
"source": {
|
789 |
"type": "git",
|
790 |
"url": "https://github.com/symfony/http-kernel.git",
|
791 |
+
"reference": "cdd991d304fed833514dc44d6aafcf19397c26cb"
|
792 |
},
|
793 |
"dist": {
|
794 |
"type": "zip",
|
795 |
+
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/cdd991d304fed833514dc44d6aafcf19397c26cb",
|
796 |
+
"reference": "cdd991d304fed833514dc44d6aafcf19397c26cb",
|
797 |
"shasum": ""
|
798 |
},
|
799 |
"require": {
|
857 |
],
|
858 |
"description": "Symfony HttpKernel Component",
|
859 |
"homepage": "https://symfony.com",
|
860 |
+
"time": "2016-01-14 10:11:16"
|
861 |
},
|
862 |
{
|
863 |
"name": "symfony/routing",
|
864 |
+
"version": "v2.6.13",
|
865 |
"target-dir": "Symfony/Component/Routing",
|
866 |
"source": {
|
867 |
"type": "git",
|
868 |
+
"url": "https://github.com/symfony/routing.git",
|
869 |
"reference": "0a1764d41bbb54f3864808c50569ac382b44d128"
|
870 |
},
|
871 |
"dist": {
|
872 |
"type": "zip",
|
873 |
+
"url": "https://api.github.com/repos/symfony/routing/zipball/0a1764d41bbb54f3864808c50569ac382b44d128",
|
874 |
"reference": "0a1764d41bbb54f3864808c50569ac382b44d128",
|
875 |
"shasum": ""
|
876 |
},
|
app/code/community/Expressly/Expressly/controllers/AbstractController.php
CHANGED
@@ -17,6 +17,7 @@ abstract class AbstractController extends \Mage_Core_Controller_Front_Action
|
|
17 |
) {
|
18 |
$helper = new \Expressly_Expressly_Helper_Client();
|
19 |
$this->app = $helper->getApp();
|
|
|
20 |
$this->dispatcher = $this->app['dispatcher'];
|
21 |
$this->logger = $this->app['logger'];
|
22 |
|
17 |
) {
|
18 |
$helper = new \Expressly_Expressly_Helper_Client();
|
19 |
$this->app = $helper->getApp();
|
20 |
+
$this->resolver = $this->app['route.resolver'];
|
21 |
$this->dispatcher = $this->app['dispatcher'];
|
22 |
$this->logger = $this->app['logger'];
|
23 |
|
app/code/community/Expressly/Expressly/controllers/BatchController.php
CHANGED
@@ -2,6 +2,7 @@
|
|
2 |
|
3 |
use Expressly\Entity\Invoice;
|
4 |
use Expressly\Entity\Order;
|
|
|
5 |
use Expressly\Exception\ExceptionFormatter;
|
6 |
use Expressly\Exception\GenericException;
|
7 |
use Expressly\Expressly\AbstractController;
|
@@ -12,88 +13,101 @@ class Expressly_Expressly_BatchController extends AbstractController
|
|
12 |
{
|
13 |
public function invoiceAction()
|
14 |
{
|
15 |
-
$
|
16 |
-
$
|
17 |
-
$invoices = array();
|
18 |
|
19 |
-
|
20 |
-
if (!property_exists($json, 'customers')) {
|
21 |
-
throw new GenericException('Invalid JSON input');
|
22 |
-
}
|
23 |
|
24 |
-
$
|
|
|
|
|
25 |
|
26 |
-
|
27 |
-
if (!property_exists($
|
28 |
-
|
29 |
}
|
30 |
|
31 |
-
$
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
$invoice->setEmail($customer->email);
|
38 |
-
foreach ($mageOrders as $mageOrder) {
|
39 |
-
$total = $mageOrder->getData('base_grand_total');
|
40 |
-
$tax = $mageOrder->getData('base_tax_amount');
|
41 |
-
|
42 |
-
$order = new Order();
|
43 |
-
$order
|
44 |
-
->setId($mageOrder->getData('increment_id'))
|
45 |
-
->setDate(new \DateTime($mageOrder->getData('created_at')))
|
46 |
-
->setCurrency($mageOrder->getData('base_currency_code'))
|
47 |
-
->setTotal((double)$total - (double)$tax, (double)$tax)
|
48 |
-
->setItemCount((int)$mageOrder->getData('total_qty_ordered'))
|
49 |
-
->setCoupon($mageOrder->getData('coupon_code'));
|
50 |
-
|
51 |
-
$invoice->addOrder($order);
|
52 |
-
}
|
53 |
|
54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
}
|
56 |
-
} catch (\Exception $e) {
|
57 |
-
$this->logger->error(ExceptionFormatter::format($e));
|
58 |
-
}
|
59 |
|
60 |
-
|
61 |
-
|
62 |
-
|
|
|
|
|
63 |
}
|
64 |
|
65 |
public function customerAction()
|
66 |
{
|
67 |
-
$
|
68 |
-
$
|
69 |
-
$customers = array();
|
70 |
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
|
76 |
-
|
77 |
-
|
|
|
|
|
78 |
|
79 |
-
|
80 |
-
$customerModel->
|
81 |
|
82 |
-
|
83 |
-
|
84 |
-
$customers['existing'][] = $email;
|
85 |
-
continue;
|
86 |
-
}
|
87 |
|
88 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
}
|
|
|
|
|
90 |
}
|
91 |
-
} catch (\Exception $e) {
|
92 |
-
$this->logger->error(ExceptionFormatter::format($e));
|
93 |
-
}
|
94 |
|
95 |
-
|
96 |
-
|
97 |
-
|
|
|
|
|
98 |
}
|
99 |
}
|
2 |
|
3 |
use Expressly\Entity\Invoice;
|
4 |
use Expressly\Entity\Order;
|
5 |
+
use Expressly\Entity\Route;
|
6 |
use Expressly\Exception\ExceptionFormatter;
|
7 |
use Expressly\Exception\GenericException;
|
8 |
use Expressly\Expressly\AbstractController;
|
13 |
{
|
14 |
public function invoiceAction()
|
15 |
{
|
16 |
+
$this->getResponse()->setHeader('Content-type', 'application/json');
|
17 |
+
$route = $this->resolver->process($_SERVER['REQUEST_URI']);
|
|
|
18 |
|
19 |
+
if ($route instanceof Route) {
|
|
|
|
|
|
|
20 |
|
21 |
+
$json = file_get_contents('php://input');
|
22 |
+
$json = json_decode($json);
|
23 |
+
$invoices = array();
|
24 |
|
25 |
+
try {
|
26 |
+
if (!property_exists($json, 'customers')) {
|
27 |
+
throw new GenericException('Invalid JSON input');
|
28 |
}
|
29 |
|
30 |
+
$orderModel = Mage::getModel('sales/order');
|
31 |
+
|
32 |
+
foreach ($json->customers as $customer) {
|
33 |
+
if (!property_exists($customer, 'email')) {
|
34 |
+
continue;
|
35 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
|
37 |
+
$mageOrders = $orderModel
|
38 |
+
->getCollection()
|
39 |
+
->addFieldToFilter('customer_email', $customer->email)
|
40 |
+
->setOrder('created_at', 'desc');
|
41 |
+
|
42 |
+
$invoice = new Invoice();
|
43 |
+
$invoice->setEmail($customer->email);
|
44 |
+
foreach ($mageOrders as $mageOrder) {
|
45 |
+
$total = $mageOrder->getData('base_grand_total');
|
46 |
+
$tax = $mageOrder->getData('base_tax_amount');
|
47 |
+
|
48 |
+
$order = new Order();
|
49 |
+
$order
|
50 |
+
->setId($mageOrder->getData('increment_id'))
|
51 |
+
->setDate(new \DateTime($mageOrder->getData('created_at')))
|
52 |
+
->setCurrency($mageOrder->getData('base_currency_code'))
|
53 |
+
->setTotal((double)$total - (double)$tax, (double)$tax)
|
54 |
+
->setItemCount((int)$mageOrder->getData('total_qty_ordered'))
|
55 |
+
->setCoupon($mageOrder->getData('coupon_code'));
|
56 |
+
|
57 |
+
$invoice->addOrder($order);
|
58 |
+
}
|
59 |
+
|
60 |
+
$invoices[] = $invoice;
|
61 |
+
}
|
62 |
+
} catch (\Exception $e) {
|
63 |
+
$this->logger->error(ExceptionFormatter::format($e));
|
64 |
}
|
|
|
|
|
|
|
65 |
|
66 |
+
$presenter = new BatchInvoicePresenter($invoices);
|
67 |
+
$this->getResponse()->setBody(json_encode($presenter->toArray()));
|
68 |
+
} else {
|
69 |
+
$this->getResponse()->setHttpResponseCode(401);
|
70 |
+
}
|
71 |
}
|
72 |
|
73 |
public function customerAction()
|
74 |
{
|
75 |
+
$this->getResponse()->setHeader('Content-type', 'application/json');
|
76 |
+
$route = $this->resolver->process($_SERVER['REQUEST_URI']);
|
|
|
77 |
|
78 |
+
if ($route instanceof Route) {
|
79 |
+
$json = file_get_contents('php://input');
|
80 |
+
$json = json_decode($json);
|
81 |
+
$customers = array();
|
82 |
|
83 |
+
try {
|
84 |
+
if (!property_exists($json, 'emails')) {
|
85 |
+
throw new GenericException('Invalid JSON input');
|
86 |
+
}
|
87 |
|
88 |
+
$customerModel = Mage::getModel('customer/customer');
|
89 |
+
$customerModel->setWebsiteId(Mage::app()->getWebsite()->getId());
|
90 |
|
91 |
+
foreach ($json->emails as $email) {
|
92 |
+
$customerModel->loadByEmail($email);
|
|
|
|
|
|
|
93 |
|
94 |
+
if ($customerModel->getId()) {
|
95 |
+
if ($customerModel->getData('is_active')) {
|
96 |
+
$customers['existing'][] = $email;
|
97 |
+
continue;
|
98 |
+
}
|
99 |
+
|
100 |
+
$customers['pending'][] = $email;
|
101 |
+
}
|
102 |
}
|
103 |
+
} catch (\Exception $e) {
|
104 |
+
$this->logger->error(ExceptionFormatter::format($e));
|
105 |
}
|
|
|
|
|
|
|
106 |
|
107 |
+
$presenter = new BatchCustomerPresenter($customers);
|
108 |
+
$this->getResponse()->setBody(json_encode($presenter->toArray()));
|
109 |
+
} else {
|
110 |
+
$this->getResponse()->setHttpResponseCode(401);
|
111 |
+
}
|
112 |
}
|
113 |
}
|
app/code/community/Expressly/Expressly/controllers/CustomerController.php
CHANGED
@@ -4,6 +4,7 @@ use Expressly\Entity\Address;
|
|
4 |
use Expressly\Entity\Customer;
|
5 |
use Expressly\Entity\Email;
|
6 |
use Expressly\Entity\Phone;
|
|
|
7 |
use Expressly\Event\CustomerMigrateEvent;
|
8 |
use Expressly\Exception\ExceptionFormatter;
|
9 |
use Expressly\Exception\GenericException;
|
@@ -15,68 +16,74 @@ class Expressly_Expressly_CustomerController extends AbstractController
|
|
15 |
public function showAction()
|
16 |
{
|
17 |
$this->getResponse()->setHeader('Content-type', 'application/json');
|
18 |
-
$
|
19 |
-
$merchant = $this->app['merchant.provider']->getMerchant();
|
20 |
|
21 |
-
|
22 |
-
$
|
23 |
-
$
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
$
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
$
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
$
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
|
|
|
|
|
|
|
|
70 |
|
71 |
-
|
72 |
-
|
73 |
|
74 |
-
|
75 |
-
|
|
|
|
|
|
|
|
|
76 |
}
|
77 |
-
}
|
78 |
-
$this->
|
79 |
-
$this->getResponse()->setBody(json_encode(array()));
|
80 |
}
|
81 |
}
|
82 |
|
@@ -187,7 +194,6 @@ class Expressly_Expressly_CustomerController extends AbstractController
|
|
187 |
->save();
|
188 |
}
|
189 |
|
190 |
-
|
191 |
$this->dispatcher->dispatch('customer.migrate.success', $event);
|
192 |
} catch (\Exception $e) {
|
193 |
$this->logger->error(ExceptionFormatter::format($e));
|
4 |
use Expressly\Entity\Customer;
|
5 |
use Expressly\Entity\Email;
|
6 |
use Expressly\Entity\Phone;
|
7 |
+
use Expressly\Entity\Route;
|
8 |
use Expressly\Event\CustomerMigrateEvent;
|
9 |
use Expressly\Exception\ExceptionFormatter;
|
10 |
use Expressly\Exception\GenericException;
|
16 |
public function showAction()
|
17 |
{
|
18 |
$this->getResponse()->setHeader('Content-type', 'application/json');
|
19 |
+
$route = $this->resolver->process($_SERVER['REQUEST_URI']);
|
|
|
20 |
|
21 |
+
if ($route instanceof Route) {
|
22 |
+
$emailAddress = $this->getRequest()->getParam('email');
|
23 |
+
$merchant = $this->app['merchant.provider']->getMerchant();
|
24 |
+
|
25 |
+
try {
|
26 |
+
$mageCustomer = \Mage::getModel('customer/customer');
|
27 |
+
$mageCustomer->setWebsiteId(\Mage::app()->getWebsite()->getId());
|
28 |
+
$mageCustomer->loadByEmail($emailAddress);
|
29 |
+
|
30 |
+
$reference = $mageCustomer->getId();
|
31 |
+
if ($reference) {
|
32 |
+
$customer = new Customer();
|
33 |
+
$customer
|
34 |
+
->setFirstName($mageCustomer->getFirstname())
|
35 |
+
->setLastName($mageCustomer->getLastname());
|
36 |
+
|
37 |
+
$email = new Email();
|
38 |
+
$email
|
39 |
+
->setAlias('default')
|
40 |
+
->setEmail($emailAddress);
|
41 |
+
$customer->addEmail($email);
|
42 |
+
|
43 |
+
$defaultBilling = $mageCustomer->getDefaultBilling();
|
44 |
+
$defaultShipping = $mageCustomer->getDefaultShipping();
|
45 |
+
foreach ($mageCustomer->getAddresses() as $mageAddress) {
|
46 |
+
$address = new Address();
|
47 |
+
$address
|
48 |
+
->setFirstName($mageAddress->getFirstname())
|
49 |
+
->setLastName($mageAddress->getLastname())
|
50 |
+
->setCompanyName($mageAddress->getCompany())
|
51 |
+
->setAddress1($mageAddress->getStreet1())
|
52 |
+
->setAddress2($mageAddress->getStreet2())
|
53 |
+
->setCity($mageAddress->getCity())
|
54 |
+
->setStateProvince($mageAddress->getRegionCode())
|
55 |
+
->setCountry($mageAddress->getCountry());
|
56 |
+
|
57 |
+
$phone = new Phone();
|
58 |
+
$phone
|
59 |
+
->setType(Phone::PHONE_TYPE_HOME)
|
60 |
+
->setNumber($mageAddress->getTelephone());
|
61 |
+
$customer->addPhone($phone);
|
62 |
+
$address->setPhonePosition($customer->getPhoneIndex($phone));
|
63 |
+
|
64 |
+
$primary = false;
|
65 |
+
$type = null;
|
66 |
+
if ($mageAddress->getId() == $defaultBilling) {
|
67 |
+
$primary = true;
|
68 |
+
$type = Address::ADDRESS_BILLING;
|
69 |
+
}
|
70 |
+
if ($mageAddress->getId() == $defaultShipping) {
|
71 |
+
$primary = true;
|
72 |
+
$type = ($type == Address::ADDRESS_BILLING) ? Address::ADDRESS_BOTH : Address::ADDRESS_SHIPPING;
|
73 |
+
}
|
74 |
|
75 |
+
$customer->addAddress($address, $primary, $type);
|
76 |
+
};
|
77 |
|
78 |
+
$presenter = new CustomerMigratePresenter($merchant, $customer, $emailAddress, $reference);
|
79 |
+
$this->getResponse()->setBody(json_encode($presenter->toArray()));
|
80 |
+
}
|
81 |
+
} catch (\Exception $e) {
|
82 |
+
$this->logger->error(ExceptionFormatter::format($e));
|
83 |
+
$this->getResponse()->setBody(json_encode(array()));
|
84 |
}
|
85 |
+
} else {
|
86 |
+
$this->getResponse()->setHttpResponseCode(401);
|
|
|
87 |
}
|
88 |
}
|
89 |
|
194 |
->save();
|
195 |
}
|
196 |
|
|
|
197 |
$this->dispatcher->dispatch('customer.migrate.success', $event);
|
198 |
} catch (\Exception $e) {
|
199 |
$this->logger->error(ExceptionFormatter::format($e));
|
app/code/community/Expressly/Expressly/controllers/UtilityController.php
CHANGED
@@ -1,16 +1,29 @@
|
|
1 |
<?php
|
2 |
|
|
|
3 |
use Expressly\Expressly\AbstractController;
|
4 |
use Expressly\Presenter\PingPresenter;
|
|
|
5 |
|
6 |
class Expressly_Expressly_UtilityController extends AbstractController
|
7 |
{
|
8 |
public function pingAction()
|
9 |
{
|
10 |
-
$helper = new Expressly_Expressly_Helper_Client();
|
11 |
-
|
12 |
$presenter = new PingPresenter();
|
13 |
$this->getResponse()->setHeader('Content-type', 'application/json');
|
14 |
$this->getResponse()->setBody(json_encode($presenter->toArray()));
|
15 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
}
|
1 |
<?php
|
2 |
|
3 |
+
use Expressly\Entity\Route;
|
4 |
use Expressly\Expressly\AbstractController;
|
5 |
use Expressly\Presenter\PingPresenter;
|
6 |
+
use Expressly\Presenter\RegisteredPresenter;
|
7 |
|
8 |
class Expressly_Expressly_UtilityController extends AbstractController
|
9 |
{
|
10 |
public function pingAction()
|
11 |
{
|
|
|
|
|
12 |
$presenter = new PingPresenter();
|
13 |
$this->getResponse()->setHeader('Content-type', 'application/json');
|
14 |
$this->getResponse()->setBody(json_encode($presenter->toArray()));
|
15 |
}
|
16 |
+
|
17 |
+
public function registeredAction()
|
18 |
+
{
|
19 |
+
$this->getResponse()->setHeader('Content-Type', 'application/json');
|
20 |
+
$route = $this->resolver->process($_SERVER['REQUEST_URI']);
|
21 |
+
|
22 |
+
if ($route instanceof Route) {
|
23 |
+
$presenter = new RegisteredPresenter();
|
24 |
+
$this->getResponse()->setBody(json_encode($presenter->toArray()));
|
25 |
+
} else {
|
26 |
+
$this->getResponse()->setHttpResponseCode(401);
|
27 |
+
}
|
28 |
+
}
|
29 |
}
|
app/code/community/Expressly/Expressly/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Expressly_Expressly>
|
5 |
-
<version>0.1
|
6 |
</Expressly_Expressly>
|
7 |
</modules>
|
8 |
<frontend>
|
@@ -73,6 +73,12 @@
|
|
73 |
<complete>1</complete>
|
74 |
</expressly_api_utility_ping>
|
75 |
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
<expressly_api_batch_invoice>
|
77 |
<from><![CDATA[#^/expressly/api/batch/invoice/?$#]]></from>
|
78 |
<to><![CDATA[/expressly/batch/invoice]]></to>
|
@@ -86,19 +92,19 @@
|
|
86 |
</expressly_api_batch_customer>
|
87 |
|
88 |
<expressly_api_customer_show>
|
89 |
-
<from><![CDATA[#^/expressly/api/user/([
|
90 |
<to><![CDATA[/expressly/customer/show/email/$1]]></to>
|
91 |
<complete>1</complete>
|
92 |
</expressly_api_customer_show>
|
93 |
|
94 |
<expressly_api_customer_migrate>
|
95 |
-
<from><![CDATA[#^/expressly/api/([
|
96 |
<to><![CDATA[/expressly/customer/migrate/uuid/$1]]></to>
|
97 |
<complete>1</complete>
|
98 |
</expressly_api_customer_migrate>
|
99 |
|
100 |
<expressly_api_customer_popup>
|
101 |
-
<from><![CDATA[#^/expressly/api/([
|
102 |
<to><![CDATA[/expressly/customer/popup/uuid/$1]]></to>
|
103 |
<complete>1</complete>
|
104 |
</expressly_api_customer_popup>
|
@@ -107,7 +113,7 @@
|
|
107 |
<adminhtml>
|
108 |
<acl>
|
109 |
<resources>
|
110 |
-
<admin>
|
111 |
<children>
|
112 |
<system>
|
113 |
<children>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Expressly_Expressly>
|
5 |
+
<version>0.3.1</version>
|
6 |
</Expressly_Expressly>
|
7 |
</modules>
|
8 |
<frontend>
|
73 |
<complete>1</complete>
|
74 |
</expressly_api_utility_ping>
|
75 |
|
76 |
+
<expressly_api_utility_registered>
|
77 |
+
<from><![CDATA[#^/expressly/api/registered/?$#]]></from>
|
78 |
+
<to><![CDATA[/expressly/utility/registered]]></to>
|
79 |
+
<complete>1</complete>
|
80 |
+
</expressly_api_utility_registered>
|
81 |
+
|
82 |
<expressly_api_batch_invoice>
|
83 |
<from><![CDATA[#^/expressly/api/batch/invoice/?$#]]></from>
|
84 |
<to><![CDATA[/expressly/batch/invoice]]></to>
|
92 |
</expressly_api_batch_customer>
|
93 |
|
94 |
<expressly_api_customer_show>
|
95 |
+
<from><![CDATA[#^/expressly/api/user/([0-9a-zA-Z\-\_]+\@[0-9a-zA-Z\-\_\.]+)\/?$#]]></from>
|
96 |
<to><![CDATA[/expressly/customer/show/email/$1]]></to>
|
97 |
<complete>1</complete>
|
98 |
</expressly_api_customer_show>
|
99 |
|
100 |
<expressly_api_customer_migrate>
|
101 |
+
<from><![CDATA[#^/expressly/api/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/migrate/?$#]]></from>
|
102 |
<to><![CDATA[/expressly/customer/migrate/uuid/$1]]></to>
|
103 |
<complete>1</complete>
|
104 |
</expressly_api_customer_migrate>
|
105 |
|
106 |
<expressly_api_customer_popup>
|
107 |
+
<from><![CDATA[#^/expressly/api/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/?$#]]></from>
|
108 |
<to><![CDATA[/expressly/customer/popup/uuid/$1]]></to>
|
109 |
<complete>1</complete>
|
110 |
</expressly_api_customer_popup>
|
113 |
<adminhtml>
|
114 |
<acl>
|
115 |
<resources>
|
116 |
+
<admin>x
|
117 |
<children>
|
118 |
<system>
|
119 |
<children>
|
app/code/community/Expressly/Expressly/etc/system.xml
CHANGED
@@ -18,58 +18,23 @@
|
|
18 |
<show_in_website>1</show_in_website>
|
19 |
<show_in_store>1</show_in_store>
|
20 |
<fields>
|
21 |
-
<
|
22 |
-
<label>
|
23 |
-
<comment>
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
</expressly_image>
|
30 |
-
|
31 |
-
<expressly_terms transtale="label">
|
32 |
-
<label>Terms URL</label>
|
33 |
-
<comment>Terms and Conditions URL for your store.</comment>
|
34 |
-
<frontend_type>text</frontend_type>
|
35 |
-
<sort_order>20</sort_order>
|
36 |
-
<show_in_default>1</show_in_default>
|
37 |
-
<show_in_website>1</show_in_website>
|
38 |
-
<show_in_store>1</show_in_store>
|
39 |
-
</expressly_terms>
|
40 |
-
|
41 |
-
<expressly_policy transtale="label">
|
42 |
-
<label>Privacy Policy URL</label>
|
43 |
-
<comment>Privacy Policy URL for your store.</comment>
|
44 |
-
<frontend_type>text</frontend_type>
|
45 |
-
<sort_order>30</sort_order>
|
46 |
-
<show_in_default>1</show_in_default>
|
47 |
-
<show_in_website>1</show_in_website>
|
48 |
-
<show_in_store>1</show_in_store>
|
49 |
-
</expressly_policy>
|
50 |
-
|
51 |
-
<expressly_password transtale="label">
|
52 |
-
<label>Password</label>
|
53 |
-
<comment>Password for your store. If your password field is blank, please press Save changes to register, and retrieve your password.</comment>
|
54 |
<frontend_type>text</frontend_type>
|
55 |
<sort_order>40</sort_order>
|
56 |
<show_in_default>1</show_in_default>
|
57 |
<show_in_website>1</show_in_website>
|
58 |
<show_in_store>1</show_in_store>
|
59 |
-
</
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
<button_label>Register</button_label>
|
64 |
-
<frontend_model>expressly/system_config_form_register</frontend_model>
|
65 |
-
<sort_order>50</sort_order>
|
66 |
-
<show_in_default>1</show_in_default>
|
67 |
-
<show_in_website>1</show_in_website>
|
68 |
-
<show_in_store>0</show_in_store>
|
69 |
-
</expressly_register>
|
70 |
-
</fields>
|
71 |
-
</expressly_general>
|
72 |
-
</groups>
|
73 |
</expressly>
|
74 |
</sections>
|
75 |
</config>
|
18 |
<show_in_website>1</show_in_website>
|
19 |
<show_in_store>1</show_in_store>
|
20 |
<fields>
|
21 |
+
<expressly_apikey transtale="label">
|
22 |
+
<label>API Key</label>
|
23 |
+
<comment>
|
24 |
+
API Key provided from our
|
25 |
+
<a href="https://buyexpressly.com/#/install#api">portal</a>.
|
26 |
+
If you do not have an API Key, please follow the previous link for instructions on how
|
27 |
+
to create one.
|
28 |
+
</comment>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
<frontend_type>text</frontend_type>
|
30 |
<sort_order>40</sort_order>
|
31 |
<show_in_default>1</show_in_default>
|
32 |
<show_in_website>1</show_in_website>
|
33 |
<show_in_store>1</show_in_store>
|
34 |
+
</expressly_apikey>
|
35 |
+
</fields>
|
36 |
+
</expressly_general>
|
37 |
+
</groups>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
</expressly>
|
39 |
</sections>
|
40 |
</config>
|
app/code/community/Expressly/Expressly/lib/MerchantProvider.php
CHANGED
@@ -11,16 +11,9 @@ class MerchantProvider implements MerchantProviderInterface
|
|
11 |
private $app;
|
12 |
private $merchant;
|
13 |
|
14 |
-
const
|
15 |
const PATH = 'expressly/expressly_general/expressly_path';
|
16 |
const HOST = 'expressly/expressly_general/expressly_host';
|
17 |
-
const IMAGE = 'expressly/expressly_general/expressly_image';
|
18 |
-
const NAME = 'design/header/logo_alt';
|
19 |
-
const OFFER = 'expressly/expressly_general/expressly_offer';
|
20 |
-
const PASSWORD = 'expressly/expressly_general/expressly_password';
|
21 |
-
const POLICY = 'expressly/expressly_general/expressly_policy';
|
22 |
-
const TERMS = 'expressly/expressly_general/expressly_terms';
|
23 |
-
const UUID = 'expressly/expressly_general/expressly_uuid';
|
24 |
|
25 |
public function __construct(Application $app)
|
26 |
{
|
@@ -33,16 +26,9 @@ class MerchantProvider implements MerchantProviderInterface
|
|
33 |
{
|
34 |
$merchant = new Merchant();
|
35 |
$merchant
|
36 |
-
->
|
37 |
->setPath($this->getParameter(self::PATH))
|
38 |
-
->setHost($this->getParameter(self::HOST))
|
39 |
-
->setImage($this->getParameter(self::IMAGE))
|
40 |
-
->setName($this->getParameter(self::NAME))
|
41 |
-
->setOffer($this->getParameter(self::OFFER))
|
42 |
-
->setPassword($this->getParameter(self::PASSWORD))
|
43 |
-
->setPolicy($this->getParameter(self::POLICY))
|
44 |
-
->setTerms($this->getParameter(self::TERMS))
|
45 |
-
->setUuid($this->getParameter(self::UUID));
|
46 |
|
47 |
$this->merchant = $merchant;
|
48 |
}
|
@@ -56,15 +42,9 @@ class MerchantProvider implements MerchantProviderInterface
|
|
56 |
{
|
57 |
$model = \Mage::getModel('core/config');
|
58 |
|
59 |
-
$model->saveConfig(self::
|
60 |
$model->saveConfig(self::PATH, $merchant->getPath(), 'default', 0);
|
61 |
$model->saveConfig(self::HOST, $merchant->getHost(), 'default', 0);
|
62 |
-
$model->saveConfig(self::IMAGE, $merchant->getImage(), 'default', 0);
|
63 |
-
$model->saveConfig(self::OFFER, $merchant->getOffer(), 'default', 0);
|
64 |
-
$model->saveConfig(self::PASSWORD, $merchant->getPassword(), 'default', 0);
|
65 |
-
$model->saveConfig(self::POLICY, $merchant->getPolicy(), 'default', 0);
|
66 |
-
$model->saveConfig(self::TERMS, $merchant->getTerms(), 'default', 0);
|
67 |
-
$model->saveConfig(self::UUID, $merchant->getUuid(), 'default', 0);
|
68 |
|
69 |
$this->merchant = $merchant;
|
70 |
}
|
11 |
private $app;
|
12 |
private $merchant;
|
13 |
|
14 |
+
const APIKEY = 'expressly/expressly_general/expressly_apikey';
|
15 |
const PATH = 'expressly/expressly_general/expressly_path';
|
16 |
const HOST = 'expressly/expressly_general/expressly_host';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
|
18 |
public function __construct(Application $app)
|
19 |
{
|
26 |
{
|
27 |
$merchant = new Merchant();
|
28 |
$merchant
|
29 |
+
->setApiKey($this->getParameter(self::APIKEY))
|
30 |
->setPath($this->getParameter(self::PATH))
|
31 |
+
->setHost($this->getParameter(self::HOST));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
|
33 |
$this->merchant = $merchant;
|
34 |
}
|
42 |
{
|
43 |
$model = \Mage::getModel('core/config');
|
44 |
|
45 |
+
$model->saveConfig(self::APIKEY, $merchant->getApiKey(), 'default', 0);
|
46 |
$model->saveConfig(self::PATH, $merchant->getPath(), 'default', 0);
|
47 |
$model->saveConfig(self::HOST, $merchant->getHost(), 'default', 0);
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
|
49 |
$this->merchant = $merchant;
|
50 |
}
|
app/code/community/Expressly/Expressly/sql/expressly_expressly_setup/mysql4-install-0.1.0.php
CHANGED
@@ -14,14 +14,14 @@ $host = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOS
|
|
14 |
$base = \Mage::getBaseUrl(\Mage_Core_Model_Store::URL_TYPE_WEB);
|
15 |
$path = trim(str_replace($host, '', $base));
|
16 |
|
17 |
-
$resource->saveConfig(
|
18 |
$resource->saveConfig(MerchantProvider::PATH, ($path == '/') ? '' : $path, 'default', 0);
|
19 |
$resource->saveConfig(MerchantProvider::HOST, $host, 'default', 0);
|
20 |
-
$resource->saveConfig(
|
21 |
-
$resource->saveConfig(
|
22 |
-
$resource->saveConfig(
|
23 |
-
$resource->saveConfig(
|
24 |
-
$resource->saveConfig(
|
25 |
-
$resource->saveConfig(
|
26 |
|
27 |
$installer->endSetup();
|
14 |
$base = \Mage::getBaseUrl(\Mage_Core_Model_Store::URL_TYPE_WEB);
|
15 |
$path = trim(str_replace($host, '', $base));
|
16 |
|
17 |
+
$resource->saveConfig('expressly/expressly_general/expressly_destination', '/', 'default', 0);
|
18 |
$resource->saveConfig(MerchantProvider::PATH, ($path == '/') ? '' : $path, 'default', 0);
|
19 |
$resource->saveConfig(MerchantProvider::HOST, $host, 'default', 0);
|
20 |
+
$resource->saveConfig('expressly/expressly_general/expressly_image', $base . \Mage::getStoreConfig('design/header/logo_src'), 'default', 0);
|
21 |
+
$resource->saveConfig('expressly/expressly_general/expressly_offer', true, 'default', 0);
|
22 |
+
$resource->saveConfig('expressly/expressly_general/expressly_password', '', 'default', 0);
|
23 |
+
$resource->saveConfig('expressly/expressly_general/expressly_policy', $base, 'default', 0);
|
24 |
+
$resource->saveConfig('expressly/expressly_general/expressly_terms', $base, 'default', 0);
|
25 |
+
$resource->saveConfig('expressly/expressly_general/expressly_uuid', '', 'default', 0);
|
26 |
|
27 |
$installer->endSetup();
|
app/code/community/Expressly/Expressly/sql/expressly_expressly_setup/upgrade-0.1.0-0.3.0.php
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once __DIR__ . '/../../vendor/autoload.php';
|
4 |
+
|
5 |
+
$installer = $this;
|
6 |
+
$installer->startSetup();
|
7 |
+
|
8 |
+
$resource = $installer->getResourceModel();
|
9 |
+
$resource->loadToXml(\Mage::getConfig());
|
10 |
+
$storeId = \Mage::app()->getStore()->getId();
|
11 |
+
$host = 'https://' . $_SERVER['HTTP_HOST'];
|
12 |
+
$base = \Mage::getBaseUrl(\Mage_Core_Model_Store::URL_TYPE_WEB);
|
13 |
+
|
14 |
+
$resource->saveConfig(Expressly\Expressly\MerchantProvider::APIKEY, '', 'default', 0);
|
15 |
+
$resource->saveConfig(Expressly\Expressly\MerchantProvider::PATH, '/', 'default', 0);
|
16 |
+
$resource->saveConfig(Expressly\Expressly\MerchantProvider::HOST, $host, 'default', 0);
|
17 |
+
|
18 |
+
$resource->deleteConfig('expressly/expressly_general/expressly_image', 'default', 0);
|
19 |
+
$resource->deleteConfig('expressly/expressly_general/expressly_terms', 'default', 0);
|
20 |
+
$resource->deleteConfig('expressly/expressly_general/expressly_policy', 'default', 0);
|
21 |
+
$resource->deleteConfig('expressly/expressly_general/expressly_password', 'default', 0);
|
22 |
+
$resource->deleteConfig('expressly/expressly_general/expressly_destination', 'default', 0);
|
23 |
+
$resource->deleteConfig('expressly/expressly_general/expressly_offer', 'default', 0);
|
24 |
+
$resource->deleteConfig('expressly/expressly_general/expressly_uuid', 'default', 0);
|
25 |
+
|
26 |
+
$installer->endSetup();
|
app/code/community/Expressly/Expressly/vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInit199d9156deb42fe5ced1eb374cb0acd0::getLoader();
|
app/code/community/Expressly/Expressly/vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,9 +19,9 @@ class ComposerAutoloaderInitd439793af87401f4cbb5f79c78a3091c
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
27 |
foreach ($map as $namespace => $path) {
|
@@ -44,7 +44,7 @@ class ComposerAutoloaderInitd439793af87401f4cbb5f79c78a3091c
|
|
44 |
}
|
45 |
}
|
46 |
|
47 |
-
function
|
48 |
{
|
49 |
require $file;
|
50 |
}
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInit199d9156deb42fe5ced1eb374cb0acd0
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit199d9156deb42fe5ced1eb374cb0acd0', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit199d9156deb42fe5ced1eb374cb0acd0', 'loadClassLoader'));
|
25 |
|
26 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
27 |
foreach ($map as $namespace => $path) {
|
44 |
}
|
45 |
}
|
46 |
|
47 |
+
function composerRequire199d9156deb42fe5ced1eb374cb0acd0($file)
|
48 |
{
|
49 |
require $file;
|
50 |
}
|
app/code/community/Expressly/Expressly/vendor/composer/installed.json
CHANGED
@@ -337,34 +337,51 @@
|
|
337 |
"homepage": "https://symfony.com"
|
338 |
},
|
339 |
{
|
340 |
-
"name": "
|
341 |
-
"version": "
|
342 |
-
"version_normalized": "
|
|
|
343 |
"source": {
|
344 |
"type": "git",
|
345 |
-
"url": "https://github.com/
|
346 |
-
"reference": "
|
347 |
},
|
348 |
"dist": {
|
349 |
"type": "zip",
|
350 |
-
"url": "https://api.github.com/repos/
|
351 |
-
"reference": "
|
352 |
"shasum": ""
|
353 |
},
|
354 |
"require": {
|
355 |
-
"php": ">=5.3.
|
356 |
},
|
357 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
358 |
"type": "library",
|
359 |
"extra": {
|
360 |
"branch-alias": {
|
361 |
-
"dev-master": "
|
362 |
}
|
363 |
},
|
364 |
"installation-source": "dist",
|
365 |
"autoload": {
|
366 |
"psr-0": {
|
367 |
-
"
|
368 |
}
|
369 |
},
|
370 |
"notification-url": "https://packagist.org/downloads/",
|
@@ -375,78 +392,62 @@
|
|
375 |
{
|
376 |
"name": "Fabien Potencier",
|
377 |
"email": "fabien@symfony.com"
|
|
|
|
|
|
|
|
|
378 |
}
|
379 |
],
|
380 |
-
"description": "
|
381 |
-
"homepage": "
|
382 |
"keywords": [
|
383 |
-
"
|
384 |
-
"
|
|
|
|
|
385 |
]
|
386 |
},
|
387 |
{
|
388 |
-
"name": "
|
389 |
-
"version": "
|
390 |
-
"version_normalized": "
|
391 |
"source": {
|
392 |
"type": "git",
|
393 |
-
"url": "https://github.com/
|
394 |
-
"reference": "
|
395 |
},
|
396 |
"dist": {
|
397 |
"type": "zip",
|
398 |
-
"url": "https://api.github.com/repos/
|
399 |
-
"reference": "
|
400 |
"shasum": ""
|
401 |
},
|
402 |
"require": {
|
403 |
-
"php": ">=5.3.
|
404 |
-
"
|
405 |
-
"symfony/event-dispatcher": "~2.3,<2.7",
|
406 |
-
"symfony/http-foundation": "~2.3,<2.7",
|
407 |
-
"symfony/http-kernel": "~2.3,<2.7",
|
408 |
-
"symfony/routing": "~2.3,<2.7"
|
409 |
},
|
410 |
-
"
|
411 |
-
"
|
412 |
-
"monolog/monolog": "~1.4,>=1.4.1",
|
413 |
-
"swiftmailer/swiftmailer": "5.*",
|
414 |
-
"symfony/browser-kit": "~2.3,<2.7",
|
415 |
-
"symfony/config": "~2.3,<2.7",
|
416 |
-
"symfony/css-selector": "~2.3,<2.7",
|
417 |
-
"symfony/debug": "~2.3,<2.7",
|
418 |
-
"symfony/dom-crawler": "~2.3,<2.7",
|
419 |
-
"symfony/finder": "~2.3,<2.7",
|
420 |
-
"symfony/form": "~2.3,<2.7",
|
421 |
-
"symfony/locale": "~2.3,<2.7",
|
422 |
-
"symfony/monolog-bridge": "~2.3,<2.7",
|
423 |
-
"symfony/options-resolver": "~2.3,<2.7",
|
424 |
-
"symfony/process": "~2.3,<2.7",
|
425 |
-
"symfony/security": "~2.3,<2.7",
|
426 |
-
"symfony/serializer": "~2.3,<2.7",
|
427 |
-
"symfony/translation": "~2.3,<2.7",
|
428 |
-
"symfony/twig-bridge": "~2.3,<2.7",
|
429 |
-
"symfony/validator": "~2.3,<2.7",
|
430 |
-
"twig/twig": ">=1.8.0,<2.0-dev"
|
431 |
},
|
432 |
-
"
|
433 |
-
"symfony/
|
434 |
-
"symfony/
|
435 |
-
"symfony/dom-crawler": "~2.3",
|
436 |
-
"symfony/form": "~2.3"
|
437 |
},
|
438 |
-
"time": "
|
439 |
"type": "library",
|
440 |
"extra": {
|
441 |
"branch-alias": {
|
442 |
-
"dev-master": "
|
443 |
}
|
444 |
},
|
445 |
"installation-source": "dist",
|
446 |
"autoload": {
|
447 |
-
"psr-
|
448 |
-
"
|
449 |
-
}
|
|
|
|
|
|
|
450 |
},
|
451 |
"notification-url": "https://packagist.org/downloads/",
|
452 |
"license": [
|
@@ -458,53 +459,51 @@
|
|
458 |
"email": "fabien@symfony.com"
|
459 |
},
|
460 |
{
|
461 |
-
"name": "
|
462 |
-
"
|
463 |
}
|
464 |
],
|
465 |
-
"description": "
|
466 |
-
"homepage": "
|
467 |
-
"keywords": [
|
468 |
-
"microframework"
|
469 |
-
]
|
470 |
},
|
471 |
{
|
472 |
-
"name": "
|
473 |
-
"version": "
|
474 |
-
"version_normalized": "
|
|
|
475 |
"source": {
|
476 |
"type": "git",
|
477 |
-
"url": "https://github.com/
|
478 |
-
"reference": "
|
479 |
},
|
480 |
"dist": {
|
481 |
"type": "zip",
|
482 |
-
"url": "https://api.github.com/repos/
|
483 |
-
"reference": "
|
484 |
"shasum": ""
|
485 |
},
|
486 |
"require": {
|
487 |
-
"
|
488 |
-
"symfony/yaml": "~2.4"
|
489 |
},
|
490 |
"require-dev": {
|
491 |
-
"
|
492 |
-
|
493 |
-
"suggest": {
|
494 |
-
"symfony/yaml": "~2.4"
|
495 |
},
|
496 |
-
"time": "2015-
|
497 |
"type": "library",
|
498 |
"extra": {
|
499 |
"branch-alias": {
|
500 |
-
"dev-master": "
|
501 |
}
|
502 |
},
|
503 |
"installation-source": "dist",
|
504 |
"autoload": {
|
505 |
"psr-0": {
|
506 |
-
"
|
507 |
-
}
|
|
|
|
|
|
|
508 |
},
|
509 |
"notification-url": "https://packagist.org/downloads/",
|
510 |
"license": [
|
@@ -512,37 +511,47 @@
|
|
512 |
],
|
513 |
"authors": [
|
514 |
{
|
515 |
-
"name": "
|
516 |
-
"email": "
|
|
|
|
|
|
|
|
|
517 |
}
|
518 |
],
|
519 |
-
"description": "
|
520 |
-
"
|
521 |
-
"silex"
|
522 |
-
]
|
523 |
},
|
524 |
{
|
525 |
-
"name": "symfony/
|
526 |
-
"version": "v2.6.
|
527 |
-
"version_normalized": "2.6.
|
528 |
-
"target-dir": "Symfony/Component/
|
529 |
"source": {
|
530 |
"type": "git",
|
531 |
-
"url": "https://github.com/symfony/
|
532 |
-
"reference": "
|
533 |
},
|
534 |
"dist": {
|
535 |
"type": "zip",
|
536 |
-
"url": "https://api.github.com/repos/symfony/
|
537 |
-
"reference": "
|
538 |
"shasum": ""
|
539 |
},
|
540 |
"require": {
|
541 |
-
"php": ">=5.3.3"
|
542 |
-
"symfony/filesystem": "~2.3"
|
543 |
},
|
544 |
"require-dev": {
|
545 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
546 |
},
|
547 |
"time": "2015-05-02 15:18:45",
|
548 |
"type": "library",
|
@@ -554,7 +563,7 @@
|
|
554 |
"installation-source": "dist",
|
555 |
"autoload": {
|
556 |
"psr-0": {
|
557 |
-
"Symfony\\Component\\
|
558 |
}
|
559 |
},
|
560 |
"notification-url": "https://packagist.org/downloads/",
|
@@ -571,45 +580,60 @@
|
|
571 |
"homepage": "https://symfony.com/contributors"
|
572 |
}
|
573 |
],
|
574 |
-
"description": "Symfony
|
575 |
"homepage": "https://symfony.com"
|
576 |
},
|
577 |
{
|
578 |
-
"name": "symfony/
|
579 |
-
"version": "v2.6.
|
580 |
-
"version_normalized": "2.6.
|
581 |
-
"target-dir": "Symfony/Component/
|
582 |
"source": {
|
583 |
"type": "git",
|
584 |
-
"url": "https://github.com/symfony/
|
585 |
-
"reference": "
|
586 |
},
|
587 |
"dist": {
|
588 |
"type": "zip",
|
589 |
-
"url": "https://api.github.com/repos/symfony/
|
590 |
-
"reference": "
|
591 |
"shasum": ""
|
592 |
},
|
593 |
"require": {
|
594 |
-
"php": ">=5.3.3"
|
|
|
|
|
|
|
|
|
595 |
},
|
596 |
"require-dev": {
|
597 |
-
"
|
598 |
-
"
|
599 |
-
"
|
600 |
-
"symfony/
|
|
|
|
|
|
|
601 |
"symfony/expression-language": "~2.4",
|
602 |
-
"symfony/
|
603 |
"symfony/phpunit-bridge": "~2.7",
|
604 |
-
"symfony/
|
|
|
|
|
|
|
|
|
|
|
605 |
},
|
606 |
"suggest": {
|
607 |
-
"
|
608 |
-
"symfony/
|
609 |
-
"symfony/
|
610 |
-
"symfony/
|
|
|
|
|
|
|
611 |
},
|
612 |
-
"time": "
|
613 |
"type": "library",
|
614 |
"extra": {
|
615 |
"branch-alias": {
|
@@ -619,7 +643,7 @@
|
|
619 |
"installation-source": "dist",
|
620 |
"autoload": {
|
621 |
"psr-0": {
|
622 |
-
"Symfony\\Component\\
|
623 |
}
|
624 |
},
|
625 |
"notification-url": "https://packagist.org/downloads/",
|
@@ -636,53 +660,39 @@
|
|
636 |
"homepage": "https://symfony.com/contributors"
|
637 |
}
|
638 |
],
|
639 |
-
"description": "Symfony
|
640 |
-
"homepage": "https://symfony.com"
|
641 |
-
"keywords": [
|
642 |
-
"router",
|
643 |
-
"routing",
|
644 |
-
"uri",
|
645 |
-
"url"
|
646 |
-
]
|
647 |
},
|
648 |
{
|
649 |
-
"name": "
|
650 |
-
"version": "
|
651 |
-
"version_normalized": "
|
652 |
-
"target-dir": "Symfony/Component/HttpFoundation",
|
653 |
"source": {
|
654 |
"type": "git",
|
655 |
-
"url": "https://github.com/
|
656 |
-
"reference": "
|
657 |
},
|
658 |
"dist": {
|
659 |
"type": "zip",
|
660 |
-
"url": "https://api.github.com/repos/
|
661 |
-
"reference": "
|
662 |
"shasum": ""
|
663 |
},
|
664 |
"require": {
|
665 |
-
"php": ">=5.3.
|
666 |
-
},
|
667 |
-
"require-dev": {
|
668 |
-
"symfony/expression-language": "~2.4",
|
669 |
-
"symfony/phpunit-bridge": "~2.7"
|
670 |
},
|
671 |
-
"time": "
|
672 |
"type": "library",
|
673 |
"extra": {
|
674 |
"branch-alias": {
|
675 |
-
"dev-master": "
|
676 |
}
|
677 |
},
|
678 |
"installation-source": "dist",
|
679 |
"autoload": {
|
680 |
"psr-0": {
|
681 |
-
"
|
682 |
-
}
|
683 |
-
"classmap": [
|
684 |
-
"Symfony/Component/HttpFoundation/Resources/stubs"
|
685 |
-
]
|
686 |
},
|
687 |
"notification-url": "https://packagist.org/downloads/",
|
688 |
"license": [
|
@@ -692,57 +702,77 @@
|
|
692 |
{
|
693 |
"name": "Fabien Potencier",
|
694 |
"email": "fabien@symfony.com"
|
695 |
-
},
|
696 |
-
{
|
697 |
-
"name": "Symfony Community",
|
698 |
-
"homepage": "https://symfony.com/contributors"
|
699 |
}
|
700 |
],
|
701 |
-
"description": "
|
702 |
-
"homepage": "
|
|
|
|
|
|
|
|
|
703 |
},
|
704 |
{
|
705 |
-
"name": "
|
706 |
-
"version": "
|
707 |
-
"version_normalized": "2.
|
708 |
-
"target-dir": "Symfony/Component/EventDispatcher",
|
709 |
"source": {
|
710 |
"type": "git",
|
711 |
-
"url": "https://github.com/
|
712 |
-
"reference": "
|
713 |
},
|
714 |
"dist": {
|
715 |
"type": "zip",
|
716 |
-
"url": "https://api.github.com/repos/
|
717 |
-
"reference": "
|
718 |
"shasum": ""
|
719 |
},
|
720 |
"require": {
|
721 |
-
"php": ">=5.3.3"
|
|
|
|
|
|
|
|
|
|
|
722 |
},
|
723 |
"require-dev": {
|
724 |
-
"
|
725 |
-
"
|
726 |
-
"
|
727 |
-
"symfony/
|
728 |
-
"symfony/
|
729 |
-
"symfony/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
730 |
},
|
731 |
"suggest": {
|
732 |
-
"symfony/
|
733 |
-
"symfony/
|
|
|
|
|
734 |
},
|
735 |
-
"time": "2015-
|
736 |
"type": "library",
|
737 |
"extra": {
|
738 |
"branch-alias": {
|
739 |
-
"dev-master": "2.
|
740 |
}
|
741 |
},
|
742 |
"installation-source": "dist",
|
743 |
"autoload": {
|
744 |
"psr-0": {
|
745 |
-
"
|
746 |
}
|
747 |
},
|
748 |
"notification-url": "https://packagist.org/downloads/",
|
@@ -755,51 +785,52 @@
|
|
755 |
"email": "fabien@symfony.com"
|
756 |
},
|
757 |
{
|
758 |
-
"name": "
|
759 |
-
"
|
760 |
}
|
761 |
],
|
762 |
-
"description": "
|
763 |
-
"homepage": "
|
|
|
|
|
|
|
764 |
},
|
765 |
{
|
766 |
-
"name": "
|
767 |
-
"version": "
|
768 |
-
"version_normalized": "
|
769 |
"source": {
|
770 |
"type": "git",
|
771 |
-
"url": "https://github.com/
|
772 |
-
"reference": "
|
773 |
},
|
774 |
"dist": {
|
775 |
"type": "zip",
|
776 |
-
"url": "https://api.github.com/repos/
|
777 |
-
"reference": "
|
778 |
"shasum": ""
|
779 |
},
|
780 |
"require": {
|
781 |
-
"
|
782 |
-
"
|
783 |
-
},
|
784 |
-
"conflict": {
|
785 |
-
"symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
|
786 |
},
|
787 |
"require-dev": {
|
788 |
-
"
|
789 |
-
"symfony/http-kernel": "~2.3.24|~2.5.9|~2.6,>=2.6.2",
|
790 |
-
"symfony/phpunit-bridge": "~2.7"
|
791 |
},
|
792 |
-
"
|
|
|
|
|
|
|
793 |
"type": "library",
|
794 |
"extra": {
|
795 |
"branch-alias": {
|
796 |
-
"dev-master": "
|
797 |
}
|
798 |
},
|
799 |
"installation-source": "dist",
|
800 |
"autoload": {
|
801 |
-
"psr-
|
802 |
-
"
|
803 |
}
|
804 |
},
|
805 |
"notification-url": "https://packagist.org/downloads/",
|
@@ -808,79 +839,48 @@
|
|
808 |
],
|
809 |
"authors": [
|
810 |
{
|
811 |
-
"name": "
|
812 |
-
"email": "
|
813 |
-
},
|
814 |
-
{
|
815 |
-
"name": "Symfony Community",
|
816 |
-
"homepage": "https://symfony.com/contributors"
|
817 |
}
|
818 |
],
|
819 |
-
"description": "
|
820 |
-
"
|
|
|
|
|
821 |
},
|
822 |
{
|
823 |
-
"name": "symfony/
|
824 |
-
"version": "v2.
|
825 |
-
"version_normalized": "2.
|
826 |
-
"target-dir": "Symfony/Component/HttpKernel",
|
827 |
"source": {
|
828 |
"type": "git",
|
829 |
-
"url": "https://github.com/symfony/
|
830 |
-
"reference": "
|
831 |
},
|
832 |
"dist": {
|
833 |
"type": "zip",
|
834 |
-
"url": "https://api.github.com/repos/symfony/
|
835 |
-
"reference": "
|
836 |
"shasum": ""
|
837 |
},
|
838 |
"require": {
|
839 |
-
"php": ">=5.3.
|
840 |
-
"psr/log": "~1.0",
|
841 |
-
"symfony/debug": "~2.6,>=2.6.2",
|
842 |
-
"symfony/event-dispatcher": "~2.6,>=2.6.7",
|
843 |
-
"symfony/http-foundation": "~2.5,>=2.5.4"
|
844 |
-
},
|
845 |
-
"require-dev": {
|
846 |
-
"symfony/browser-kit": "~2.3",
|
847 |
-
"symfony/class-loader": "~2.1",
|
848 |
-
"symfony/config": "~2.0,>=2.0.5",
|
849 |
-
"symfony/console": "~2.3",
|
850 |
-
"symfony/css-selector": "~2.0,>=2.0.5",
|
851 |
-
"symfony/dependency-injection": "~2.2",
|
852 |
-
"symfony/dom-crawler": "~2.0,>=2.0.5",
|
853 |
-
"symfony/expression-language": "~2.4",
|
854 |
-
"symfony/finder": "~2.0,>=2.0.5",
|
855 |
-
"symfony/phpunit-bridge": "~2.7",
|
856 |
-
"symfony/process": "~2.0,>=2.0.5",
|
857 |
-
"symfony/routing": "~2.2",
|
858 |
-
"symfony/stopwatch": "~2.3",
|
859 |
-
"symfony/templating": "~2.2",
|
860 |
-
"symfony/translation": "~2.0,>=2.0.5",
|
861 |
-
"symfony/var-dumper": "~2.6"
|
862 |
-
},
|
863 |
-
"suggest": {
|
864 |
-
"symfony/browser-kit": "",
|
865 |
-
"symfony/class-loader": "",
|
866 |
-
"symfony/config": "",
|
867 |
-
"symfony/console": "",
|
868 |
-
"symfony/dependency-injection": "",
|
869 |
-
"symfony/finder": "",
|
870 |
-
"symfony/var-dumper": ""
|
871 |
},
|
872 |
-
"time": "
|
873 |
"type": "library",
|
874 |
"extra": {
|
875 |
"branch-alias": {
|
876 |
-
"dev-master": "2.
|
877 |
}
|
878 |
},
|
879 |
"installation-source": "dist",
|
880 |
"autoload": {
|
881 |
-
"psr-
|
882 |
-
"Symfony\\Component\\
|
883 |
-
}
|
|
|
|
|
|
|
884 |
},
|
885 |
"notification-url": "https://packagist.org/downloads/",
|
886 |
"license": [
|
@@ -896,41 +896,43 @@
|
|
896 |
"homepage": "https://symfony.com/contributors"
|
897 |
}
|
898 |
],
|
899 |
-
"description": "Symfony
|
900 |
"homepage": "https://symfony.com"
|
901 |
},
|
902 |
{
|
903 |
-
"name": "symfony/
|
904 |
-
"version": "v2.7
|
905 |
-
"version_normalized": "2.7.
|
|
|
906 |
"source": {
|
907 |
"type": "git",
|
908 |
-
"url": "https://github.com/symfony/
|
909 |
-
"reference": "
|
910 |
},
|
911 |
"dist": {
|
912 |
"type": "zip",
|
913 |
-
"url": "https://api.github.com/repos/symfony/
|
914 |
-
"reference": "
|
915 |
"shasum": ""
|
916 |
},
|
917 |
"require": {
|
918 |
-
"php": ">=5.3.
|
|
|
919 |
},
|
920 |
"require-dev": {
|
921 |
"symfony/phpunit-bridge": "~2.7"
|
922 |
},
|
923 |
-
"time": "2015-
|
924 |
"type": "library",
|
925 |
"extra": {
|
926 |
"branch-alias": {
|
927 |
-
"dev-master": "2.
|
928 |
}
|
929 |
},
|
930 |
"installation-source": "dist",
|
931 |
"autoload": {
|
932 |
-
"psr-
|
933 |
-
"Symfony\\Component\\
|
934 |
}
|
935 |
},
|
936 |
"notification-url": "https://packagist.org/downloads/",
|
@@ -947,22 +949,22 @@
|
|
947 |
"homepage": "https://symfony.com/contributors"
|
948 |
}
|
949 |
],
|
950 |
-
"description": "Symfony
|
951 |
"homepage": "https://symfony.com"
|
952 |
},
|
953 |
{
|
954 |
"name": "expressly/php-common",
|
955 |
-
"version": "
|
956 |
-
"version_normalized": "
|
957 |
"source": {
|
958 |
"type": "git",
|
959 |
"url": "https://github.com/expressly/php-common.git",
|
960 |
-
"reference": "
|
961 |
},
|
962 |
"dist": {
|
963 |
"type": "zip",
|
964 |
-
"url": "https://api.github.com/repos/expressly/php-common/zipball/
|
965 |
-
"reference": "
|
966 |
"shasum": ""
|
967 |
},
|
968 |
"require": {
|
@@ -979,7 +981,7 @@
|
|
979 |
"require-dev": {
|
980 |
"phpunit/phpunit": "4.6.6"
|
981 |
},
|
982 |
-
"time": "2015-
|
983 |
"type": "library",
|
984 |
"installation-source": "dist",
|
985 |
"autoload": {
|
@@ -998,7 +1000,7 @@
|
|
998 |
],
|
999 |
"description": "Expressly common PHP library",
|
1000 |
"support": {
|
1001 |
-
"source": "https://github.com/expressly/php-common/tree/
|
1002 |
"issues": "https://github.com/expressly/php-common/issues"
|
1003 |
}
|
1004 |
}
|
337 |
"homepage": "https://symfony.com"
|
338 |
},
|
339 |
{
|
340 |
+
"name": "symfony/routing",
|
341 |
+
"version": "v2.6.13",
|
342 |
+
"version_normalized": "2.6.13.0",
|
343 |
+
"target-dir": "Symfony/Component/Routing",
|
344 |
"source": {
|
345 |
"type": "git",
|
346 |
+
"url": "https://github.com/symfony/routing.git",
|
347 |
+
"reference": "0a1764d41bbb54f3864808c50569ac382b44d128"
|
348 |
},
|
349 |
"dist": {
|
350 |
"type": "zip",
|
351 |
+
"url": "https://api.github.com/repos/symfony/routing/zipball/0a1764d41bbb54f3864808c50569ac382b44d128",
|
352 |
+
"reference": "0a1764d41bbb54f3864808c50569ac382b44d128",
|
353 |
"shasum": ""
|
354 |
},
|
355 |
"require": {
|
356 |
+
"php": ">=5.3.3"
|
357 |
},
|
358 |
+
"require-dev": {
|
359 |
+
"doctrine/annotations": "~1.0",
|
360 |
+
"doctrine/common": "~2.2",
|
361 |
+
"psr/log": "~1.0",
|
362 |
+
"symfony/config": "~2.2",
|
363 |
+
"symfony/expression-language": "~2.4",
|
364 |
+
"symfony/http-foundation": "~2.3",
|
365 |
+
"symfony/phpunit-bridge": "~2.7",
|
366 |
+
"symfony/yaml": "~2.0,>=2.0.5"
|
367 |
+
},
|
368 |
+
"suggest": {
|
369 |
+
"doctrine/annotations": "For using the annotation loader",
|
370 |
+
"symfony/config": "For using the all-in-one router or any loader",
|
371 |
+
"symfony/expression-language": "For using expression matching",
|
372 |
+
"symfony/yaml": "For using the YAML loader"
|
373 |
+
},
|
374 |
+
"time": "2015-07-09 16:02:48",
|
375 |
"type": "library",
|
376 |
"extra": {
|
377 |
"branch-alias": {
|
378 |
+
"dev-master": "2.6-dev"
|
379 |
}
|
380 |
},
|
381 |
"installation-source": "dist",
|
382 |
"autoload": {
|
383 |
"psr-0": {
|
384 |
+
"Symfony\\Component\\Routing\\": ""
|
385 |
}
|
386 |
},
|
387 |
"notification-url": "https://packagist.org/downloads/",
|
392 |
{
|
393 |
"name": "Fabien Potencier",
|
394 |
"email": "fabien@symfony.com"
|
395 |
+
},
|
396 |
+
{
|
397 |
+
"name": "Symfony Community",
|
398 |
+
"homepage": "https://symfony.com/contributors"
|
399 |
}
|
400 |
],
|
401 |
+
"description": "Symfony Routing Component",
|
402 |
+
"homepage": "https://symfony.com",
|
403 |
"keywords": [
|
404 |
+
"router",
|
405 |
+
"routing",
|
406 |
+
"uri",
|
407 |
+
"url"
|
408 |
]
|
409 |
},
|
410 |
{
|
411 |
+
"name": "symfony/debug",
|
412 |
+
"version": "v2.8.2",
|
413 |
+
"version_normalized": "2.8.2.0",
|
414 |
"source": {
|
415 |
"type": "git",
|
416 |
+
"url": "https://github.com/symfony/debug.git",
|
417 |
+
"reference": "386364a0e71158615ab9ae76b74bf84efc0bac7e"
|
418 |
},
|
419 |
"dist": {
|
420 |
"type": "zip",
|
421 |
+
"url": "https://api.github.com/repos/symfony/debug/zipball/386364a0e71158615ab9ae76b74bf84efc0bac7e",
|
422 |
+
"reference": "386364a0e71158615ab9ae76b74bf84efc0bac7e",
|
423 |
"shasum": ""
|
424 |
},
|
425 |
"require": {
|
426 |
+
"php": ">=5.3.9",
|
427 |
+
"psr/log": "~1.0"
|
|
|
|
|
|
|
|
|
428 |
},
|
429 |
+
"conflict": {
|
430 |
+
"symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
431 |
},
|
432 |
+
"require-dev": {
|
433 |
+
"symfony/class-loader": "~2.2|~3.0.0",
|
434 |
+
"symfony/http-kernel": "~2.3.24|~2.5.9|~2.6,>=2.6.2|~3.0.0"
|
|
|
|
|
435 |
},
|
436 |
+
"time": "2016-01-13 10:28:07",
|
437 |
"type": "library",
|
438 |
"extra": {
|
439 |
"branch-alias": {
|
440 |
+
"dev-master": "2.8-dev"
|
441 |
}
|
442 |
},
|
443 |
"installation-source": "dist",
|
444 |
"autoload": {
|
445 |
+
"psr-4": {
|
446 |
+
"Symfony\\Component\\Debug\\": ""
|
447 |
+
},
|
448 |
+
"exclude-from-classmap": [
|
449 |
+
"/Tests/"
|
450 |
+
]
|
451 |
},
|
452 |
"notification-url": "https://packagist.org/downloads/",
|
453 |
"license": [
|
459 |
"email": "fabien@symfony.com"
|
460 |
},
|
461 |
{
|
462 |
+
"name": "Symfony Community",
|
463 |
+
"homepage": "https://symfony.com/contributors"
|
464 |
}
|
465 |
],
|
466 |
+
"description": "Symfony Debug Component",
|
467 |
+
"homepage": "https://symfony.com"
|
|
|
|
|
|
|
468 |
},
|
469 |
{
|
470 |
+
"name": "symfony/http-foundation",
|
471 |
+
"version": "v2.6.13",
|
472 |
+
"version_normalized": "2.6.13.0",
|
473 |
+
"target-dir": "Symfony/Component/HttpFoundation",
|
474 |
"source": {
|
475 |
"type": "git",
|
476 |
+
"url": "https://github.com/symfony/http-foundation.git",
|
477 |
+
"reference": "e8fd1b73ac1c3de1f76c73801ddf1a8ecb1c1c9c"
|
478 |
},
|
479 |
"dist": {
|
480 |
"type": "zip",
|
481 |
+
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/e8fd1b73ac1c3de1f76c73801ddf1a8ecb1c1c9c",
|
482 |
+
"reference": "e8fd1b73ac1c3de1f76c73801ddf1a8ecb1c1c9c",
|
483 |
"shasum": ""
|
484 |
},
|
485 |
"require": {
|
486 |
+
"php": ">=5.3.3"
|
|
|
487 |
},
|
488 |
"require-dev": {
|
489 |
+
"symfony/expression-language": "~2.4",
|
490 |
+
"symfony/phpunit-bridge": "~2.7"
|
|
|
|
|
491 |
},
|
492 |
+
"time": "2015-07-22 10:08:40",
|
493 |
"type": "library",
|
494 |
"extra": {
|
495 |
"branch-alias": {
|
496 |
+
"dev-master": "2.6-dev"
|
497 |
}
|
498 |
},
|
499 |
"installation-source": "dist",
|
500 |
"autoload": {
|
501 |
"psr-0": {
|
502 |
+
"Symfony\\Component\\HttpFoundation\\": ""
|
503 |
+
},
|
504 |
+
"classmap": [
|
505 |
+
"Symfony/Component/HttpFoundation/Resources/stubs"
|
506 |
+
]
|
507 |
},
|
508 |
"notification-url": "https://packagist.org/downloads/",
|
509 |
"license": [
|
511 |
],
|
512 |
"authors": [
|
513 |
{
|
514 |
+
"name": "Fabien Potencier",
|
515 |
+
"email": "fabien@symfony.com"
|
516 |
+
},
|
517 |
+
{
|
518 |
+
"name": "Symfony Community",
|
519 |
+
"homepage": "https://symfony.com/contributors"
|
520 |
}
|
521 |
],
|
522 |
+
"description": "Symfony HttpFoundation Component",
|
523 |
+
"homepage": "https://symfony.com"
|
|
|
|
|
524 |
},
|
525 |
{
|
526 |
+
"name": "symfony/event-dispatcher",
|
527 |
+
"version": "v2.6.13",
|
528 |
+
"version_normalized": "2.6.13.0",
|
529 |
+
"target-dir": "Symfony/Component/EventDispatcher",
|
530 |
"source": {
|
531 |
"type": "git",
|
532 |
+
"url": "https://github.com/symfony/event-dispatcher.git",
|
533 |
+
"reference": "672593bc4b0043a0acf91903bb75a1c82d8f2e02"
|
534 |
},
|
535 |
"dist": {
|
536 |
"type": "zip",
|
537 |
+
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/672593bc4b0043a0acf91903bb75a1c82d8f2e02",
|
538 |
+
"reference": "672593bc4b0043a0acf91903bb75a1c82d8f2e02",
|
539 |
"shasum": ""
|
540 |
},
|
541 |
"require": {
|
542 |
+
"php": ">=5.3.3"
|
|
|
543 |
},
|
544 |
"require-dev": {
|
545 |
+
"psr/log": "~1.0",
|
546 |
+
"symfony/config": "~2.0,>=2.0.5",
|
547 |
+
"symfony/dependency-injection": "~2.6",
|
548 |
+
"symfony/expression-language": "~2.6",
|
549 |
+
"symfony/phpunit-bridge": "~2.7",
|
550 |
+
"symfony/stopwatch": "~2.3"
|
551 |
+
},
|
552 |
+
"suggest": {
|
553 |
+
"symfony/dependency-injection": "",
|
554 |
+
"symfony/http-kernel": ""
|
555 |
},
|
556 |
"time": "2015-05-02 15:18:45",
|
557 |
"type": "library",
|
563 |
"installation-source": "dist",
|
564 |
"autoload": {
|
565 |
"psr-0": {
|
566 |
+
"Symfony\\Component\\EventDispatcher\\": ""
|
567 |
}
|
568 |
},
|
569 |
"notification-url": "https://packagist.org/downloads/",
|
580 |
"homepage": "https://symfony.com/contributors"
|
581 |
}
|
582 |
],
|
583 |
+
"description": "Symfony EventDispatcher Component",
|
584 |
"homepage": "https://symfony.com"
|
585 |
},
|
586 |
{
|
587 |
+
"name": "symfony/http-kernel",
|
588 |
+
"version": "v2.6.13",
|
589 |
+
"version_normalized": "2.6.13.0",
|
590 |
+
"target-dir": "Symfony/Component/HttpKernel",
|
591 |
"source": {
|
592 |
"type": "git",
|
593 |
+
"url": "https://github.com/symfony/http-kernel.git",
|
594 |
+
"reference": "cdd991d304fed833514dc44d6aafcf19397c26cb"
|
595 |
},
|
596 |
"dist": {
|
597 |
"type": "zip",
|
598 |
+
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/cdd991d304fed833514dc44d6aafcf19397c26cb",
|
599 |
+
"reference": "cdd991d304fed833514dc44d6aafcf19397c26cb",
|
600 |
"shasum": ""
|
601 |
},
|
602 |
"require": {
|
603 |
+
"php": ">=5.3.3",
|
604 |
+
"psr/log": "~1.0",
|
605 |
+
"symfony/debug": "~2.6,>=2.6.2",
|
606 |
+
"symfony/event-dispatcher": "~2.6,>=2.6.7",
|
607 |
+
"symfony/http-foundation": "~2.5,>=2.5.4"
|
608 |
},
|
609 |
"require-dev": {
|
610 |
+
"symfony/browser-kit": "~2.3",
|
611 |
+
"symfony/class-loader": "~2.1",
|
612 |
+
"symfony/config": "~2.0,>=2.0.5",
|
613 |
+
"symfony/console": "~2.3",
|
614 |
+
"symfony/css-selector": "~2.0,>=2.0.5",
|
615 |
+
"symfony/dependency-injection": "~2.2",
|
616 |
+
"symfony/dom-crawler": "~2.0,>=2.0.5",
|
617 |
"symfony/expression-language": "~2.4",
|
618 |
+
"symfony/finder": "~2.0,>=2.0.5",
|
619 |
"symfony/phpunit-bridge": "~2.7",
|
620 |
+
"symfony/process": "~2.0,>=2.0.5",
|
621 |
+
"symfony/routing": "~2.2",
|
622 |
+
"symfony/stopwatch": "~2.3",
|
623 |
+
"symfony/templating": "~2.2",
|
624 |
+
"symfony/translation": "~2.0,>=2.0.5",
|
625 |
+
"symfony/var-dumper": "~2.6"
|
626 |
},
|
627 |
"suggest": {
|
628 |
+
"symfony/browser-kit": "",
|
629 |
+
"symfony/class-loader": "",
|
630 |
+
"symfony/config": "",
|
631 |
+
"symfony/console": "",
|
632 |
+
"symfony/dependency-injection": "",
|
633 |
+
"symfony/finder": "",
|
634 |
+
"symfony/var-dumper": ""
|
635 |
},
|
636 |
+
"time": "2016-01-14 10:11:16",
|
637 |
"type": "library",
|
638 |
"extra": {
|
639 |
"branch-alias": {
|
643 |
"installation-source": "dist",
|
644 |
"autoload": {
|
645 |
"psr-0": {
|
646 |
+
"Symfony\\Component\\HttpKernel\\": ""
|
647 |
}
|
648 |
},
|
649 |
"notification-url": "https://packagist.org/downloads/",
|
660 |
"homepage": "https://symfony.com/contributors"
|
661 |
}
|
662 |
],
|
663 |
+
"description": "Symfony HttpKernel Component",
|
664 |
+
"homepage": "https://symfony.com"
|
|
|
|
|
|
|
|
|
|
|
|
|
665 |
},
|
666 |
{
|
667 |
+
"name": "pimple/pimple",
|
668 |
+
"version": "v1.1.1",
|
669 |
+
"version_normalized": "1.1.1.0",
|
|
|
670 |
"source": {
|
671 |
"type": "git",
|
672 |
+
"url": "https://github.com/silexphp/Pimple.git",
|
673 |
+
"reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d"
|
674 |
},
|
675 |
"dist": {
|
676 |
"type": "zip",
|
677 |
+
"url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d",
|
678 |
+
"reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d",
|
679 |
"shasum": ""
|
680 |
},
|
681 |
"require": {
|
682 |
+
"php": ">=5.3.0"
|
|
|
|
|
|
|
|
|
683 |
},
|
684 |
+
"time": "2013-11-22 08:30:29",
|
685 |
"type": "library",
|
686 |
"extra": {
|
687 |
"branch-alias": {
|
688 |
+
"dev-master": "1.1.x-dev"
|
689 |
}
|
690 |
},
|
691 |
"installation-source": "dist",
|
692 |
"autoload": {
|
693 |
"psr-0": {
|
694 |
+
"Pimple": "lib/"
|
695 |
+
}
|
|
|
|
|
|
|
696 |
},
|
697 |
"notification-url": "https://packagist.org/downloads/",
|
698 |
"license": [
|
702 |
{
|
703 |
"name": "Fabien Potencier",
|
704 |
"email": "fabien@symfony.com"
|
|
|
|
|
|
|
|
|
705 |
}
|
706 |
],
|
707 |
+
"description": "Pimple is a simple Dependency Injection Container for PHP 5.3",
|
708 |
+
"homepage": "http://pimple.sensiolabs.org",
|
709 |
+
"keywords": [
|
710 |
+
"container",
|
711 |
+
"dependency injection"
|
712 |
+
]
|
713 |
},
|
714 |
{
|
715 |
+
"name": "silex/silex",
|
716 |
+
"version": "v1.2.4",
|
717 |
+
"version_normalized": "1.2.4.0",
|
|
|
718 |
"source": {
|
719 |
"type": "git",
|
720 |
+
"url": "https://github.com/silexphp/Silex.git",
|
721 |
+
"reference": "417deb440eecf776df868d8760d0b7d8e2c4e6d1"
|
722 |
},
|
723 |
"dist": {
|
724 |
"type": "zip",
|
725 |
+
"url": "https://api.github.com/repos/silexphp/Silex/zipball/417deb440eecf776df868d8760d0b7d8e2c4e6d1",
|
726 |
+
"reference": "417deb440eecf776df868d8760d0b7d8e2c4e6d1",
|
727 |
"shasum": ""
|
728 |
},
|
729 |
"require": {
|
730 |
+
"php": ">=5.3.3",
|
731 |
+
"pimple/pimple": "~1.0",
|
732 |
+
"symfony/event-dispatcher": "~2.3,<2.7",
|
733 |
+
"symfony/http-foundation": "~2.3,<2.7",
|
734 |
+
"symfony/http-kernel": "~2.3,<2.7",
|
735 |
+
"symfony/routing": "~2.3,<2.7"
|
736 |
},
|
737 |
"require-dev": {
|
738 |
+
"doctrine/dbal": "~2.2",
|
739 |
+
"monolog/monolog": "~1.4,>=1.4.1",
|
740 |
+
"swiftmailer/swiftmailer": "5.*",
|
741 |
+
"symfony/browser-kit": "~2.3,<2.7",
|
742 |
+
"symfony/config": "~2.3,<2.7",
|
743 |
+
"symfony/css-selector": "~2.3,<2.7",
|
744 |
+
"symfony/debug": "~2.3,<2.7",
|
745 |
+
"symfony/dom-crawler": "~2.3,<2.7",
|
746 |
+
"symfony/finder": "~2.3,<2.7",
|
747 |
+
"symfony/form": "~2.3,<2.7",
|
748 |
+
"symfony/locale": "~2.3,<2.7",
|
749 |
+
"symfony/monolog-bridge": "~2.3,<2.7",
|
750 |
+
"symfony/options-resolver": "~2.3,<2.7",
|
751 |
+
"symfony/process": "~2.3,<2.7",
|
752 |
+
"symfony/security": "~2.3,<2.7",
|
753 |
+
"symfony/serializer": "~2.3,<2.7",
|
754 |
+
"symfony/translation": "~2.3,<2.7",
|
755 |
+
"symfony/twig-bridge": "~2.3,<2.7",
|
756 |
+
"symfony/validator": "~2.3,<2.7",
|
757 |
+
"twig/twig": ">=1.8.0,<2.0-dev"
|
758 |
},
|
759 |
"suggest": {
|
760 |
+
"symfony/browser-kit": "~2.3",
|
761 |
+
"symfony/css-selector": "~2.3",
|
762 |
+
"symfony/dom-crawler": "~2.3",
|
763 |
+
"symfony/form": "~2.3"
|
764 |
},
|
765 |
+
"time": "2015-04-11 12:43:27",
|
766 |
"type": "library",
|
767 |
"extra": {
|
768 |
"branch-alias": {
|
769 |
+
"dev-master": "1.2.x-dev"
|
770 |
}
|
771 |
},
|
772 |
"installation-source": "dist",
|
773 |
"autoload": {
|
774 |
"psr-0": {
|
775 |
+
"Silex": "src/"
|
776 |
}
|
777 |
},
|
778 |
"notification-url": "https://packagist.org/downloads/",
|
785 |
"email": "fabien@symfony.com"
|
786 |
},
|
787 |
{
|
788 |
+
"name": "Igor Wiedler",
|
789 |
+
"email": "igor@wiedler.ch"
|
790 |
}
|
791 |
],
|
792 |
+
"description": "The PHP micro-framework based on the Symfony2 Components",
|
793 |
+
"homepage": "http://silex.sensiolabs.org",
|
794 |
+
"keywords": [
|
795 |
+
"microframework"
|
796 |
+
]
|
797 |
},
|
798 |
{
|
799 |
+
"name": "deralex/yaml-config-service-provider",
|
800 |
+
"version": "1.0.1",
|
801 |
+
"version_normalized": "1.0.1.0",
|
802 |
"source": {
|
803 |
"type": "git",
|
804 |
+
"url": "https://github.com/deralex/YamlConfigServiceProvider.git",
|
805 |
+
"reference": "5923f60e6fbb16432e47310cf9680fe658c8dc0e"
|
806 |
},
|
807 |
"dist": {
|
808 |
"type": "zip",
|
809 |
+
"url": "https://api.github.com/repos/deralex/YamlConfigServiceProvider/zipball/5923f60e6fbb16432e47310cf9680fe658c8dc0e",
|
810 |
+
"reference": "5923f60e6fbb16432e47310cf9680fe658c8dc0e",
|
811 |
"shasum": ""
|
812 |
},
|
813 |
"require": {
|
814 |
+
"silex/silex": ">=1.0 <=1.3",
|
815 |
+
"symfony/yaml": "~2.4"
|
|
|
|
|
|
|
816 |
},
|
817 |
"require-dev": {
|
818 |
+
"phpspec/phpspec": "2.0.*@dev"
|
|
|
|
|
819 |
},
|
820 |
+
"suggest": {
|
821 |
+
"symfony/yaml": "~2.4"
|
822 |
+
},
|
823 |
+
"time": "2015-03-10 12:58:27",
|
824 |
"type": "library",
|
825 |
"extra": {
|
826 |
"branch-alias": {
|
827 |
+
"dev-master": "1.0-dev"
|
828 |
}
|
829 |
},
|
830 |
"installation-source": "dist",
|
831 |
"autoload": {
|
832 |
+
"psr-0": {
|
833 |
+
"DerAlex\\Silex": "src"
|
834 |
}
|
835 |
},
|
836 |
"notification-url": "https://packagist.org/downloads/",
|
839 |
],
|
840 |
"authors": [
|
841 |
{
|
842 |
+
"name": "Alexander Kluth",
|
843 |
+
"email": "contact@alexanderkluth.com"
|
|
|
|
|
|
|
|
|
844 |
}
|
845 |
],
|
846 |
+
"description": "Silex ServiceProvider for using YAML configuration files",
|
847 |
+
"keywords": [
|
848 |
+
"silex"
|
849 |
+
]
|
850 |
},
|
851 |
{
|
852 |
+
"name": "symfony/filesystem",
|
853 |
+
"version": "v2.8.2",
|
854 |
+
"version_normalized": "2.8.2.0",
|
|
|
855 |
"source": {
|
856 |
"type": "git",
|
857 |
+
"url": "https://github.com/symfony/filesystem.git",
|
858 |
+
"reference": "637b64d0ee10f44ae98dbad651b1ecdf35a11e8c"
|
859 |
},
|
860 |
"dist": {
|
861 |
"type": "zip",
|
862 |
+
"url": "https://api.github.com/repos/symfony/filesystem/zipball/637b64d0ee10f44ae98dbad651b1ecdf35a11e8c",
|
863 |
+
"reference": "637b64d0ee10f44ae98dbad651b1ecdf35a11e8c",
|
864 |
"shasum": ""
|
865 |
},
|
866 |
"require": {
|
867 |
+
"php": ">=5.3.9"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
868 |
},
|
869 |
+
"time": "2016-01-13 10:28:07",
|
870 |
"type": "library",
|
871 |
"extra": {
|
872 |
"branch-alias": {
|
873 |
+
"dev-master": "2.8-dev"
|
874 |
}
|
875 |
},
|
876 |
"installation-source": "dist",
|
877 |
"autoload": {
|
878 |
+
"psr-4": {
|
879 |
+
"Symfony\\Component\\Filesystem\\": ""
|
880 |
+
},
|
881 |
+
"exclude-from-classmap": [
|
882 |
+
"/Tests/"
|
883 |
+
]
|
884 |
},
|
885 |
"notification-url": "https://packagist.org/downloads/",
|
886 |
"license": [
|
896 |
"homepage": "https://symfony.com/contributors"
|
897 |
}
|
898 |
],
|
899 |
+
"description": "Symfony Filesystem Component",
|
900 |
"homepage": "https://symfony.com"
|
901 |
},
|
902 |
{
|
903 |
+
"name": "symfony/config",
|
904 |
+
"version": "v2.6.7",
|
905 |
+
"version_normalized": "2.6.7.0",
|
906 |
+
"target-dir": "Symfony/Component/Config",
|
907 |
"source": {
|
908 |
"type": "git",
|
909 |
+
"url": "https://github.com/symfony/config.git",
|
910 |
+
"reference": "b6fddb4aa2daaa2b06f0040071ac131b4a1ecf25"
|
911 |
},
|
912 |
"dist": {
|
913 |
"type": "zip",
|
914 |
+
"url": "https://api.github.com/repos/symfony/config/zipball/b6fddb4aa2daaa2b06f0040071ac131b4a1ecf25",
|
915 |
+
"reference": "b6fddb4aa2daaa2b06f0040071ac131b4a1ecf25",
|
916 |
"shasum": ""
|
917 |
},
|
918 |
"require": {
|
919 |
+
"php": ">=5.3.3",
|
920 |
+
"symfony/filesystem": "~2.3"
|
921 |
},
|
922 |
"require-dev": {
|
923 |
"symfony/phpunit-bridge": "~2.7"
|
924 |
},
|
925 |
+
"time": "2015-05-02 15:18:45",
|
926 |
"type": "library",
|
927 |
"extra": {
|
928 |
"branch-alias": {
|
929 |
+
"dev-master": "2.6-dev"
|
930 |
}
|
931 |
},
|
932 |
"installation-source": "dist",
|
933 |
"autoload": {
|
934 |
+
"psr-0": {
|
935 |
+
"Symfony\\Component\\Config\\": ""
|
936 |
}
|
937 |
},
|
938 |
"notification-url": "https://packagist.org/downloads/",
|
949 |
"homepage": "https://symfony.com/contributors"
|
950 |
}
|
951 |
],
|
952 |
+
"description": "Symfony Config Component",
|
953 |
"homepage": "https://symfony.com"
|
954 |
},
|
955 |
{
|
956 |
"name": "expressly/php-common",
|
957 |
+
"version": "2.3.2",
|
958 |
+
"version_normalized": "2.3.2.0",
|
959 |
"source": {
|
960 |
"type": "git",
|
961 |
"url": "https://github.com/expressly/php-common.git",
|
962 |
+
"reference": "32ec030ac5186adc6dca4bb679633b2a627e8e70"
|
963 |
},
|
964 |
"dist": {
|
965 |
"type": "zip",
|
966 |
+
"url": "https://api.github.com/repos/expressly/php-common/zipball/32ec030ac5186adc6dca4bb679633b2a627e8e70",
|
967 |
+
"reference": "32ec030ac5186adc6dca4bb679633b2a627e8e70",
|
968 |
"shasum": ""
|
969 |
},
|
970 |
"require": {
|
981 |
"require-dev": {
|
982 |
"phpunit/phpunit": "4.6.6"
|
983 |
},
|
984 |
+
"time": "2015-11-25 17:35:18",
|
985 |
"type": "library",
|
986 |
"installation-source": "dist",
|
987 |
"autoload": {
|
1000 |
],
|
1001 |
"description": "Expressly common PHP library",
|
1002 |
"support": {
|
1003 |
+
"source": "https://github.com/expressly/php-common/tree/2.3.2",
|
1004 |
"issues": "https://github.com/expressly/php-common/issues"
|
1005 |
}
|
1006 |
}
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/.gitignore
CHANGED
@@ -10,4 +10,5 @@ node_modules
|
|
10 |
.Trashes
|
11 |
ehthumbs.db
|
12 |
Thumbs.db
|
13 |
-
composer.lock
|
|
10 |
.Trashes
|
11 |
ehthumbs.db
|
12 |
Thumbs.db
|
13 |
+
composer.lock
|
14 |
+
index.php
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/bootstrap/bootstrap.php
CHANGED
@@ -37,7 +37,6 @@ try {
|
|
37 |
});
|
38 |
}
|
39 |
|
40 |
-
require_once __DIR__ . '/database.php';
|
41 |
require_once __DIR__ . '/services.php';
|
42 |
|
43 |
return $app;
|
37 |
});
|
38 |
}
|
39 |
|
|
|
40 |
require_once __DIR__ . '/services.php';
|
41 |
|
42 |
return $app;
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/bootstrap/database.php
DELETED
@@ -1,12 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
use Dflydev\Silex\Provider\DoctrineOrm\DoctrineOrmServiceProvider;
|
4 |
-
use Doctrine\Common\Annotations\AnnotationRegistry;
|
5 |
-
use Silex\Provider\DoctrineServiceProvider;
|
6 |
-
|
7 |
-
// DBAL
|
8 |
-
//$app->register(new DoctrineServiceProvider(), array(
|
9 |
-
// 'db.options' => $app['config']['database']
|
10 |
-
//));
|
11 |
-
|
12 |
-
$app->register(new \Expressly\ServiceProvider\DatabaseServiceProvider());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/bootstrap/services.php
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
<?php
|
2 |
|
3 |
// Register ServiceProviders
|
4 |
-
$app->register(new Expressly\ServiceProvider\VersionServiceProvider());
|
5 |
$app->register(new Expressly\ServiceProvider\ValidatorServiceProvider());
|
6 |
$app->register(new Expressly\ServiceProvider\ExternalRouteServiceProvider());
|
7 |
$app->register(new Expressly\ServiceProvider\MerchantServiceProvider());
|
8 |
$app->register(new Expressly\ServiceProvider\JavaScriptServiceProvider());
|
9 |
$app->register(new Expressly\ServiceProvider\CountryCodeServiceProvider());
|
|
|
10 |
|
11 |
// Register events
|
12 |
$app['dispatcher']->addSubscriber(new Expressly\Subscriber\CustomerMigrationSubscriber($app));
|
1 |
<?php
|
2 |
|
3 |
// Register ServiceProviders
|
|
|
4 |
$app->register(new Expressly\ServiceProvider\ValidatorServiceProvider());
|
5 |
$app->register(new Expressly\ServiceProvider\ExternalRouteServiceProvider());
|
6 |
$app->register(new Expressly\ServiceProvider\MerchantServiceProvider());
|
7 |
$app->register(new Expressly\ServiceProvider\JavaScriptServiceProvider());
|
8 |
$app->register(new Expressly\ServiceProvider\CountryCodeServiceProvider());
|
9 |
+
$app->register(new Expressly\ServiceProvider\RouteResolverServiceProvider());
|
10 |
|
11 |
// Register events
|
12 |
$app['dispatcher']->addSubscriber(new Expressly\Subscriber\CustomerMigrationSubscriber($app));
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/composer.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
{
|
2 |
"name": "expressly/php-common",
|
3 |
-
"version": "
|
4 |
"type": "library",
|
5 |
"description": "Expressly common PHP library",
|
6 |
"require": {
|
1 |
{
|
2 |
"name": "expressly/php-common",
|
3 |
+
"version": "2.3.2",
|
4 |
"type": "library",
|
5 |
"description": "Expressly common PHP library",
|
6 |
"require": {
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/Makefile
ADDED
@@ -0,0 +1,192 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Makefile for Sphinx documentation
|
2 |
+
#
|
3 |
+
|
4 |
+
# You can set these variables from the command line.
|
5 |
+
SPHINXOPTS =
|
6 |
+
SPHINXBUILD = sphinx-build
|
7 |
+
PAPER =
|
8 |
+
BUILDDIR = build
|
9 |
+
|
10 |
+
# User-friendly check for sphinx-build
|
11 |
+
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
|
12 |
+
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
|
13 |
+
endif
|
14 |
+
|
15 |
+
# Internal variables.
|
16 |
+
PAPEROPT_a4 = -D latex_paper_size=a4
|
17 |
+
PAPEROPT_letter = -D latex_paper_size=letter
|
18 |
+
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
|
19 |
+
# the i18n builder cannot share the environment and doctrees with the others
|
20 |
+
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
|
21 |
+
|
22 |
+
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext
|
23 |
+
|
24 |
+
help:
|
25 |
+
@echo "Please use \`make <target>' where <target> is one of"
|
26 |
+
@echo " html to make standalone HTML files"
|
27 |
+
@echo " dirhtml to make HTML files named index.html in directories"
|
28 |
+
@echo " singlehtml to make a single large HTML file"
|
29 |
+
@echo " pickle to make pickle files"
|
30 |
+
@echo " json to make JSON files"
|
31 |
+
@echo " htmlhelp to make HTML files and a HTML help project"
|
32 |
+
@echo " qthelp to make HTML files and a qthelp project"
|
33 |
+
@echo " applehelp to make an Apple Help Book"
|
34 |
+
@echo " devhelp to make HTML files and a Devhelp project"
|
35 |
+
@echo " epub to make an epub"
|
36 |
+
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
|
37 |
+
@echo " latexpdf to make LaTeX files and run them through pdflatex"
|
38 |
+
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
|
39 |
+
@echo " text to make text files"
|
40 |
+
@echo " man to make manual pages"
|
41 |
+
@echo " texinfo to make Texinfo files"
|
42 |
+
@echo " info to make Texinfo files and run them through makeinfo"
|
43 |
+
@echo " gettext to make PO message catalogs"
|
44 |
+
@echo " changes to make an overview of all changed/added/deprecated items"
|
45 |
+
@echo " xml to make Docutils-native XML files"
|
46 |
+
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
|
47 |
+
@echo " linkcheck to check all external links for integrity"
|
48 |
+
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
49 |
+
@echo " coverage to run coverage check of the documentation (if enabled)"
|
50 |
+
|
51 |
+
clean:
|
52 |
+
rm -rf $(BUILDDIR)/*
|
53 |
+
|
54 |
+
html:
|
55 |
+
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
56 |
+
@echo
|
57 |
+
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
58 |
+
|
59 |
+
dirhtml:
|
60 |
+
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
|
61 |
+
@echo
|
62 |
+
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
|
63 |
+
|
64 |
+
singlehtml:
|
65 |
+
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
|
66 |
+
@echo
|
67 |
+
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
|
68 |
+
|
69 |
+
pickle:
|
70 |
+
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
|
71 |
+
@echo
|
72 |
+
@echo "Build finished; now you can process the pickle files."
|
73 |
+
|
74 |
+
json:
|
75 |
+
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
|
76 |
+
@echo
|
77 |
+
@echo "Build finished; now you can process the JSON files."
|
78 |
+
|
79 |
+
htmlhelp:
|
80 |
+
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
|
81 |
+
@echo
|
82 |
+
@echo "Build finished; now you can run HTML Help Workshop with the" \
|
83 |
+
".hhp project file in $(BUILDDIR)/htmlhelp."
|
84 |
+
|
85 |
+
qthelp:
|
86 |
+
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
|
87 |
+
@echo
|
88 |
+
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
89 |
+
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
|
90 |
+
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/php-common.qhcp"
|
91 |
+
@echo "To view the help file:"
|
92 |
+
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/php-common.qhc"
|
93 |
+
|
94 |
+
applehelp:
|
95 |
+
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
|
96 |
+
@echo
|
97 |
+
@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
|
98 |
+
@echo "N.B. You won't be able to view it unless you put it in" \
|
99 |
+
"~/Library/Documentation/Help or install it in your application" \
|
100 |
+
"bundle."
|
101 |
+
|
102 |
+
devhelp:
|
103 |
+
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
|
104 |
+
@echo
|
105 |
+
@echo "Build finished."
|
106 |
+
@echo "To view the help file:"
|
107 |
+
@echo "# mkdir -p $$HOME/.local/share/devhelp/php-common"
|
108 |
+
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/php-common"
|
109 |
+
@echo "# devhelp"
|
110 |
+
|
111 |
+
epub:
|
112 |
+
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
|
113 |
+
@echo
|
114 |
+
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
|
115 |
+
|
116 |
+
latex:
|
117 |
+
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
118 |
+
@echo
|
119 |
+
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
|
120 |
+
@echo "Run \`make' in that directory to run these through (pdf)latex" \
|
121 |
+
"(use \`make latexpdf' here to do that automatically)."
|
122 |
+
|
123 |
+
latexpdf:
|
124 |
+
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
125 |
+
@echo "Running LaTeX files through pdflatex..."
|
126 |
+
$(MAKE) -C $(BUILDDIR)/latex all-pdf
|
127 |
+
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
128 |
+
|
129 |
+
latexpdfja:
|
130 |
+
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
131 |
+
@echo "Running LaTeX files through platex and dvipdfmx..."
|
132 |
+
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
|
133 |
+
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
134 |
+
|
135 |
+
text:
|
136 |
+
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
|
137 |
+
@echo
|
138 |
+
@echo "Build finished. The text files are in $(BUILDDIR)/text."
|
139 |
+
|
140 |
+
man:
|
141 |
+
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
|
142 |
+
@echo
|
143 |
+
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
|
144 |
+
|
145 |
+
texinfo:
|
146 |
+
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
147 |
+
@echo
|
148 |
+
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
|
149 |
+
@echo "Run \`make' in that directory to run these through makeinfo" \
|
150 |
+
"(use \`make info' here to do that automatically)."
|
151 |
+
|
152 |
+
info:
|
153 |
+
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
154 |
+
@echo "Running Texinfo files through makeinfo..."
|
155 |
+
make -C $(BUILDDIR)/texinfo info
|
156 |
+
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
|
157 |
+
|
158 |
+
gettext:
|
159 |
+
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
|
160 |
+
@echo
|
161 |
+
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
|
162 |
+
|
163 |
+
changes:
|
164 |
+
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
|
165 |
+
@echo
|
166 |
+
@echo "The overview file is in $(BUILDDIR)/changes."
|
167 |
+
|
168 |
+
linkcheck:
|
169 |
+
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
|
170 |
+
@echo
|
171 |
+
@echo "Link check complete; look for any errors in the above output " \
|
172 |
+
"or in $(BUILDDIR)/linkcheck/output.txt."
|
173 |
+
|
174 |
+
doctest:
|
175 |
+
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
|
176 |
+
@echo "Testing of doctests in the sources finished, look at the " \
|
177 |
+
"results in $(BUILDDIR)/doctest/output.txt."
|
178 |
+
|
179 |
+
coverage:
|
180 |
+
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
|
181 |
+
@echo "Testing of coverage in the sources finished, look at the " \
|
182 |
+
"results in $(BUILDDIR)/coverage/python.txt."
|
183 |
+
|
184 |
+
xml:
|
185 |
+
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
|
186 |
+
@echo
|
187 |
+
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
|
188 |
+
|
189 |
+
pseudoxml:
|
190 |
+
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
|
191 |
+
@echo
|
192 |
+
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/environment.pickle
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/exceptions.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/flows.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/help.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/index.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/integration.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/integrations.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/license.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/overview.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/overview/index.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/project.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/project/index.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/requests.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/responses.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/routes.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/setup.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/setup/configuration.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/setup/index.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/setup/installation.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/doctrees/setup/requirements.doctree
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/.buildinfo
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
# Sphinx build info version 1
|
2 |
+
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
3 |
+
config: 8b4b72a2c1d1d6a75296ed9bd4277c10
|
4 |
+
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/exceptions.txt
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Exceptions
|
2 |
+
==========
|
3 |
+
|
4 |
+
All exceptions caught within our code are logged to a redis_ server hosted by us.
|
5 |
+
|
6 |
+
GenericException
|
7 |
+
----------------
|
8 |
+
src/Exception/GenericException.php (Expressly\Exception\GenericException)
|
9 |
+
|
10 |
+
.. [redis] NoSQL data store: http://redis.io/
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/flows.txt
ADDED
@@ -0,0 +1,129 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Flows
|
2 |
+
=====
|
3 |
+
|
4 |
+
For all flows, the following Actors have been used:
|
5 |
+
|
6 |
+
SERVER
|
7 |
+
Expressly API server;
|
8 |
+
STORE
|
9 |
+
The store Expressly is being configured with;
|
10 |
+
CUSTOMER
|
11 |
+
The customer interacting with the store.
|
12 |
+
|
13 |
+
.. _flow-merchant-registration:
|
14 |
+
|
15 |
+
Merchant Registration
|
16 |
+
---------------------
|
17 |
+
|
18 |
+
**Pre-conditions:**
|
19 |
+
|
20 |
+
- Expressly plugin has been integrated, ticking all boxes of :ref:`overview-checklist`.
|
21 |
+
- API key exists, and has been created on the Portal_ (see <https://buyexpressly.com/#/install>).
|
22 |
+
|
23 |
+
**Main Flow:**
|
24 |
+
|
25 |
+
1. STORE calls :ref:`request-merchant-register` with appropriate body, and header.
|
26 |
+
2. SERVER pings store to make sure you have the plugin installed correctly.
|
27 |
+
3. SERVER returns successfully to STORE
|
28 |
+
|
29 |
+
**Alternate Flows:**
|
30 |
+
|
31 |
+
3-1. SERVER cannot ping STORE, returns error message.
|
32 |
+
|
33 |
+
.. _flow-merchant-update:
|
34 |
+
|
35 |
+
Merchant Update
|
36 |
+
---------------
|
37 |
+
|
38 |
+
**Pre-conditions:**
|
39 |
+
|
40 |
+
- :ref:`flow-merchant-registration`.
|
41 |
+
|
42 |
+
**Main Flow:**
|
43 |
+
|
44 |
+
1. STORE calls :ref:`request-merchant-update` with appropriate body.
|
45 |
+
2. SERVER stores updated values, and returns success body.
|
46 |
+
|
47 |
+
**Alternate Flows:**
|
48 |
+
|
49 |
+
2-1. Data does not conform to validation, SERVER returns appropriate error body.
|
50 |
+
|
51 |
+
.. _flow-migration:
|
52 |
+
|
53 |
+
User Campaign Migration
|
54 |
+
-----------------------
|
55 |
+
|
56 |
+
**Pre-conditions:**
|
57 |
+
|
58 |
+
- :ref:`flow-merchant-registration`.
|
59 |
+
- Campaign has been created on the Portal_.
|
60 |
+
|
61 |
+
**Main Flow:**
|
62 |
+
|
63 |
+
1. CUSTOMER navigates to provided link with unique uuid attached (:ref:`response-popup`).
|
64 |
+
2. STORE requests popup for unique uuid (:ref:`request-migration-popup`).
|
65 |
+
3. SERVER returns popup html rendered for the given campaign, and CUSTOMER.
|
66 |
+
4. STORE renders html atop any given store page (e.g. homepage).
|
67 |
+
5. CUSTOMER accepts terms & conditions, and privacy policy provided by pressing 'ok'.
|
68 |
+
6. STORE navigates to :ref:`response-migrate`, and requests information.
|
69 |
+
7. SERVER returns information associated with CUSTOMER.
|
70 |
+
8. STORE adds customer to their store; adds product, and coupon (if provided, and supported) to cart.
|
71 |
+
9. STORE tells SERVER that CUSTOMER has been migrated correctly (:ref:`request-migration-success`).
|
72 |
+
10. STORE logs user in, and navigates to homepage.
|
73 |
+
|
74 |
+
**Alternate Flows:**
|
75 |
+
|
76 |
+
7-1. CUSTOMER already exists, STORE tells SERVER that customer has been migrated previously (:ref:`request-migration-success`).
|
77 |
+
8-1. STORE adds product, and coupon (if provided, and supported) to cart.
|
78 |
+
9-1. STORE shows CUSTOMER message that they already exist, asking if they want to go to the login page.
|
79 |
+
|
80 |
+
.. _flow-bulk-invoice:
|
81 |
+
|
82 |
+
Check Purchases
|
83 |
+
---------------
|
84 |
+
|
85 |
+
**Pre-conditions:**
|
86 |
+
|
87 |
+
- :ref:`flow-merchant-registration`.
|
88 |
+
|
89 |
+
**Main Flow:**
|
90 |
+
|
91 |
+
1. SERVER requests endpoint (:ref:`response-batch-invoice`) with JSON of emails, and date period to STORE.
|
92 |
+
2. STORE compares emails, and period to gather purchase information for given CUSTOMERs'.
|
93 |
+
3. STORE returns compiled data to SERVER.
|
94 |
+
|
95 |
+
.. _flow-bulk-customers:
|
96 |
+
|
97 |
+
Check Customer Migration
|
98 |
+
------------------------
|
99 |
+
|
100 |
+
**Pre-conditions:**
|
101 |
+
|
102 |
+
- :ref:`flow-merchant-registration`.
|
103 |
+
|
104 |
+
**Main Flow:**
|
105 |
+
|
106 |
+
1. SERVER requests endpoint (:ref:`response-batch-customer`) with JSON of emails to STORE.
|
107 |
+
2. STORE compares emails to determine whether CUSTOMER has been migrated.
|
108 |
+
3. STORE returns compiled data to SERVER.
|
109 |
+
|
110 |
+
.. _flow-banner:
|
111 |
+
|
112 |
+
Campaign Banner
|
113 |
+
---------------
|
114 |
+
|
115 |
+
**Pre-conditions:**
|
116 |
+
|
117 |
+
- :ref:`flow-merchant-registration`.
|
118 |
+
- Campaign for serving banners has been created on the Portal_.
|
119 |
+
- CUSTOMER is logged in.
|
120 |
+
|
121 |
+
**Main Flow:**
|
122 |
+
|
123 |
+
1. STORE requests banner from SERVER (:ref:`request-banner-get`).
|
124 |
+
2. SERVER returns image, and url.
|
125 |
+
3. STORE displays banner on page (in the location it was called from) on page render.
|
126 |
+
4. Banner clicked on, redirecting to associated route starting :ref:`flow-migration` off-site.
|
127 |
+
|
128 |
+
|
129 |
+
.. [Portal] Expressly management Portal: https://buyexpressly.com/#/portal/login
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/help.txt
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
Need Help?
|
2 |
+
==========
|
3 |
+
|
4 |
+
For any help with integration, questions, or bugs please contact info@buyexpressly.com
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/index.txt
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Expressly PHP Common documentation:
|
2 |
+
===================================
|
3 |
+
|
4 |
+
Contents:
|
5 |
+
|
6 |
+
.. toctree::
|
7 |
+
:maxdepth: 2
|
8 |
+
|
9 |
+
overview
|
10 |
+
requests
|
11 |
+
routes
|
12 |
+
exceptions
|
13 |
+
flows
|
14 |
+
integrations
|
15 |
+
help
|
16 |
+
license
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/integration.txt
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Integrations
|
2 |
+
============
|
3 |
+
|
4 |
+
How to integrate
|
5 |
+
----------------
|
6 |
+
|
7 |
+
WooCommerce
|
8 |
+
-----------
|
9 |
+
`WooCommerce repository <https://github.com/expressly/woocommerce>`_
|
10 |
+
|
11 |
+
PrestaShop
|
12 |
+
----------
|
13 |
+
`PrestaShop repository <https://github.com/expressly/prestashop16>`_
|
14 |
+
|
15 |
+
Magento
|
16 |
+
-------
|
17 |
+
`Magento repository <https://github.com/expressly/magento>`_
|
18 |
+
|
19 |
+
OpenCart 1.5
|
20 |
+
------------
|
21 |
+
`OpenCart 1.5 repository <https://github.com/expressly/opencart15>`_
|
22 |
+
|
23 |
+
osCommerce 2.3
|
24 |
+
--------------
|
25 |
+
`osCommerce 2.3 repository <https://github.com/expressly/oscommerce>`_
|
26 |
+
|
27 |
+
VirtueMart
|
28 |
+
----------
|
29 |
+
`VirtueMart repository <https://github.com/expressly/virtuemart>`_
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/integrations.txt
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Integrations
|
2 |
+
============
|
3 |
+
|
4 |
+
WooCommerce
|
5 |
+
-----------
|
6 |
+
`WooCommerce repository <https://github.com/expressly/woocommerce>`_
|
7 |
+
|
8 |
+
PrestaShop
|
9 |
+
----------
|
10 |
+
`PrestaShop repository <https://github.com/expressly/prestashop16>`_
|
11 |
+
|
12 |
+
Magento
|
13 |
+
-------
|
14 |
+
`Magento repository <https://github.com/expressly/magento>`_
|
15 |
+
|
16 |
+
OpenCart 1.5
|
17 |
+
------------
|
18 |
+
`OpenCart 1.5 repository <https://github.com/expressly/opencart15>`_
|
19 |
+
|
20 |
+
osCommerce 2.3
|
21 |
+
--------------
|
22 |
+
`osCommerce 2.3 repository <https://github.com/expressly/oscommerce>`_
|
23 |
+
|
24 |
+
VirtueMart
|
25 |
+
----------
|
26 |
+
`VirtueMart repository <https://github.com/expressly/virtuemart>`_
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/license.txt
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
License
|
2 |
+
=======
|
3 |
+
|
4 |
+
The MIT License (MIT)
|
5 |
+
|
6 |
+
Copyright (c) 2015 expressly
|
7 |
+
|
8 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
9 |
+
of this software and associated documentation files (the "Software"), to deal
|
10 |
+
in the Software without restriction, including without limitation the rights
|
11 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
12 |
+
copies of the Software, and to permit persons to whom the Software is
|
13 |
+
furnished to do so, subject to the following conditions:
|
14 |
+
|
15 |
+
The above copyright notice and this permission notice shall be included in all
|
16 |
+
copies or substantial portions of the Software.
|
17 |
+
|
18 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
21 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
24 |
+
SOFTWARE.
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/overview.txt
ADDED
@@ -0,0 +1,105 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Overview
|
2 |
+
========
|
3 |
+
|
4 |
+
.. _overview-requirements:
|
5 |
+
|
6 |
+
Requirements
|
7 |
+
------------
|
8 |
+
* PHP 5.3+
|
9 |
+
* composer_
|
10 |
+
|
11 |
+
All composer dependencies are included in the Expressly provided integration releases on GitHub.
|
12 |
+
|
13 |
+
.. _overview-include:
|
14 |
+
|
15 |
+
Include
|
16 |
+
-------
|
17 |
+
Inside your composer.json, you need to include:
|
18 |
+
|
19 |
+
.. code-block:: javascript
|
20 |
+
|
21 |
+
"require": {
|
22 |
+
"expressly/php-common": "1.1.6"
|
23 |
+
},
|
24 |
+
"repositories": [
|
25 |
+
{
|
26 |
+
"type": "vcs",
|
27 |
+
"url": "https://github.com/expressly/php-common"
|
28 |
+
}
|
29 |
+
]
|
30 |
+
|
31 |
+
.. _overview-configuration:
|
32 |
+
|
33 |
+
Configuration
|
34 |
+
-------------
|
35 |
+
All configuration values associated with the repository are contained within config.yml_.
|
36 |
+
|
37 |
+
To act in development mode, the following block inside the config.yml_ should be changed from:
|
38 |
+
|
39 |
+
.. code-block:: yaml
|
40 |
+
|
41 |
+
external:
|
42 |
+
hosts:
|
43 |
+
default: http://prod.expresslyapp.com/api/v1
|
44 |
+
admin: http://prod.expresslyapp.com/api/admin
|
45 |
+
|
46 |
+
to
|
47 |
+
|
48 |
+
.. code-block:: yaml
|
49 |
+
|
50 |
+
external:
|
51 |
+
hosts:
|
52 |
+
default: http://dev.expresslyapp.com/api/v1
|
53 |
+
admin: http://dev.expresslyapp.com/api/admin
|
54 |
+
|
55 |
+
.. _overview-client:
|
56 |
+
|
57 |
+
Create a Client
|
58 |
+
---------------
|
59 |
+
In order to make use of the DI_ container, to include, override, or extend any code we provide, a new instance of the Expressly Client is required.
|
60 |
+
|
61 |
+
.. code-block:: php
|
62 |
+
|
63 |
+
use Expressly;
|
64 |
+
|
65 |
+
/*
|
66 |
+
* $merchantType is a string to help us identify your system type in logs.
|
67 |
+
* Example constants in: Expressly\Entity\MerchantType
|
68 |
+
*/
|
69 |
+
$client = new Client($merchantType, array());
|
70 |
+
$app = $client->getApp();
|
71 |
+
|
72 |
+
.. _overview-checklist:
|
73 |
+
|
74 |
+
Checklist
|
75 |
+
---------
|
76 |
+
For a working Expressly integration, using this library, the following need to be checked off:
|
77 |
+
|
78 |
+
- :ref:`overview-include` the project via composer (or alternative).
|
79 |
+
- Change :ref:`overview-configuration` if needed (for development purposes).
|
80 |
+
- :ref:`overview-client`.
|
81 |
+
- Create a localized MerchantProvider: must extend MerchantProviderInterface_, and register it with the application:
|
82 |
+
|
83 |
+
.. code-block:: php
|
84 |
+
|
85 |
+
use Expressly\Provider\MerchantProviderInterface;
|
86 |
+
|
87 |
+
class MyMerchantProvider implements MerchantProviderInterface {
|
88 |
+
// your implementation
|
89 |
+
}
|
90 |
+
|
91 |
+
$app['merchant.provider'] = $app->share(function ($app) {
|
92 |
+
return new MyMerchantProvider();
|
93 |
+
});
|
94 |
+
|
95 |
+
Roadmap
|
96 |
+
-------
|
97 |
+
- Dependency drill down: restructure so Pimple_ is the base product instead of Silex_.
|
98 |
+
- Offer resolver data handling as a closure pass-through.
|
99 |
+
|
100 |
+
.. [composer] PHP package manager: https://getcomposer.org/
|
101 |
+
.. [config.yml] src/Resources/config/config.yml
|
102 |
+
.. [Silex] Silex PHP Microframework: http://silex.sensiolabs.org/
|
103 |
+
.. [Pimple] DI_ implementation: http://pimple.sensiolabs.org/
|
104 |
+
.. [DI] Dependency Injection
|
105 |
+
.. [MerchantProviderInterface] src/Provider/MerchantProviderInterface.php (Expressly\Provider\MerchantProviderInterface)
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/overview/index.txt
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _overview-index:
|
2 |
+
|
3 |
+
########
|
4 |
+
Overview
|
5 |
+
########
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/project.txt
ADDED
@@ -0,0 +1,270 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=======
|
2 |
+
Project
|
3 |
+
=======
|
4 |
+
|
5 |
+
Dispatchable Requests
|
6 |
+
---------------------
|
7 |
+
|
8 |
+
All dispatchable requests will use one of the following external hosts.
|
9 |
+
Routing, and host definitions are defined in config.yml_.
|
10 |
+
|
11 |
+
.. code-block:: yaml
|
12 |
+
|
13 |
+
external:
|
14 |
+
hosts:
|
15 |
+
default: http://prod.expresslyapp.com/api/v1
|
16 |
+
admin: http://prod.expresslyapp.com/api/admin
|
17 |
+
|
18 |
+
.. http:get:: /api/admin/ping
|
19 |
+
|
20 |
+
Ping the API to see if the server is currently running.
|
21 |
+
|
22 |
+
.. code-block:: php
|
23 |
+
|
24 |
+
use Expressly\Event\ResponseEvent;
|
25 |
+
use Expressly\Subscriber\UtilitySubscriber;
|
26 |
+
|
27 |
+
$event = new ResponseEvent();
|
28 |
+
$app['dispatcher']->dispatch(UtilitySubscriber::UTILITY_PING, $event);
|
29 |
+
|
30 |
+
if ($event->isSuccessful()) {
|
31 |
+
|
32 |
+
}
|
33 |
+
|
34 |
+
:reqheader Content-Type: application/json
|
35 |
+
:resheader Content-Type: application/json
|
36 |
+
|
37 |
+
.. http:post:: /api/v1/register
|
38 |
+
|
39 |
+
Register a store with the server.
|
40 |
+
|
41 |
+
.. code-block:: php
|
42 |
+
|
43 |
+
use Expressly\Event\MerchantEvent;
|
44 |
+
use Expressly\Subscriber\MerchantSubscriber;
|
45 |
+
|
46 |
+
$event = new MerchantEvent(...);
|
47 |
+
$app['dispatcher']->dispatch(MerchantSubscriber::MERCHANT_REGISTER, $event);
|
48 |
+
|
49 |
+
if ($event->isSuccessful()) {
|
50 |
+
|
51 |
+
}
|
52 |
+
|
53 |
+
:reqjson string shopName: shop name
|
54 |
+
:reqjson string shopUrl: shop url (https://www.example.com)
|
55 |
+
:reqjson string apiBaseUrl: see [merchant_url]_; if there isn't any special base routing the value should be the exact same as the shop url
|
56 |
+
:reqjson string shopImageUrl: logo url
|
57 |
+
:reqjson string termsAndConditionsUrl: url to terms, and conditions page
|
58 |
+
:reqjson string policyUrl: url to privacy policy page
|
59 |
+
:reqjson string pluginVersion: plugin version (current: v1)
|
60 |
+
:reqheader Content-Type: application/json
|
61 |
+
:status 200:
|
62 |
+
:status 400:
|
63 |
+
|
64 |
+
.. http:post:: /api/v1/merchant/(string:uuid)/update
|
65 |
+
|
66 |
+
Update details for an existing store.
|
67 |
+
|
68 |
+
.. code-block:: php
|
69 |
+
|
70 |
+
use Expressly\Event\PasswordedEvent;
|
71 |
+
use Expressly\Subscriber\MerchantSubscriber;
|
72 |
+
|
73 |
+
$event = new PasswordedEvent(...);
|
74 |
+
$app['dispatcher']->dispatch(MerchantSubscriber::MERCHANT_UPDATE, $event);
|
75 |
+
|
76 |
+
if ($event->isSuccessful()) {
|
77 |
+
|
78 |
+
}
|
79 |
+
|
80 |
+
:param uuid: Unique merchant uuid
|
81 |
+
:reqjson string shopName: shop name
|
82 |
+
:reqjson string shopUrl: shop url (https://www.example.com)
|
83 |
+
:reqjson string apiBaseUrl: see [merchant_url]_; if there isn't any special base routing the value should be the exact same as the shop url
|
84 |
+
:reqjson string shopImageUrl: logo url
|
85 |
+
:reqjson string termsAndConditionsUrl: url to terms, and conditions page
|
86 |
+
:reqjson string policyUrl: url to privacy policy page
|
87 |
+
:reqjson string pluginVersion: plugin version (current: v1)
|
88 |
+
:reqheader Content-Type: application/json
|
89 |
+
:reqheader Authorization: Basic token
|
90 |
+
:status 200:
|
91 |
+
:status 400:
|
92 |
+
|
93 |
+
.. http:post:: /api/v1/merchant/(string:uuid)/uninstall
|
94 |
+
|
95 |
+
Remove shop from the expressly system.
|
96 |
+
|
97 |
+
.. code-block:: php
|
98 |
+
|
99 |
+
use Expressly\Event\PasswordedEvent;
|
100 |
+
use Expressly\Subscriber\MerchantSubscriber;
|
101 |
+
|
102 |
+
$event = new PasswordedEvent(...);
|
103 |
+
$app['dispatcher']->dispatch(MerchantSubscriber::MERCHANT_DELETE, $event);
|
104 |
+
|
105 |
+
if ($event->isSuccessful()) {
|
106 |
+
|
107 |
+
}
|
108 |
+
|
109 |
+
:param uuid: Unique merchant uuid
|
110 |
+
:reqheader Content-Type: application/json
|
111 |
+
:reqheader Authorization: Basic token
|
112 |
+
:status 200:
|
113 |
+
:status 400:
|
114 |
+
|
115 |
+
.. _`get customer migration popup`:
|
116 |
+
.. http:get:: /api/v1/migration/(string:uuid)
|
117 |
+
|
118 |
+
Request the popup to start a campaign migration for the unique user.
|
119 |
+
|
120 |
+
.. code-block:: php
|
121 |
+
|
122 |
+
use Expressly\Event\CustomerMigrateEvent;
|
123 |
+
use Expressly\Subscriber\CustomerMigrationSubscriber;
|
124 |
+
|
125 |
+
$event = new CustomerMigrateEvent(...);
|
126 |
+
$app['dispatcher']->dispatch(CustomerMigrationSubscriber::CUSTOMER_MIGRATE_POPUP, $event);
|
127 |
+
|
128 |
+
if ($event->isSuccessful()) {
|
129 |
+
|
130 |
+
}
|
131 |
+
|
132 |
+
:param uuid: Unique campaign migration uuid
|
133 |
+
:reqheader Content-Type: application/json
|
134 |
+
:reqheader Authorization: Basic token
|
135 |
+
:resheader Content-Type: text/html
|
136 |
+
:status 200: campaign migration found, html for popup returned
|
137 |
+
:status 400:
|
138 |
+
|
139 |
+
.. _`get customer migration data`:
|
140 |
+
.. http:get:: /api/v1/migration/(string:uuid)/user
|
141 |
+
|
142 |
+
User has accepted popup, or been forced here directly; request, and start data migration.
|
143 |
+
|
144 |
+
.. code-block:: php
|
145 |
+
|
146 |
+
use Expressly\Event\CustomerMigrateEvent;
|
147 |
+
use Expressly\Subscriber\CustomerMigrationSubscriber;
|
148 |
+
|
149 |
+
$event = new CustomerMigrateEvent(...);
|
150 |
+
$app['dispatcher']->dispatch(CustomerMigrationSubscriber::CUSTOMER_MIGRATE_DATA, $event);
|
151 |
+
|
152 |
+
if ($event->isSuccessful()) {
|
153 |
+
|
154 |
+
}
|
155 |
+
|
156 |
+
:param uuid: Unique campaign migration uuid
|
157 |
+
:reqheader Content-Type: application/json
|
158 |
+
:reqheader Authorization: Basic token
|
159 |
+
:resheader Content-Type: application/json
|
160 |
+
:status 200:
|
161 |
+
:status 400:
|
162 |
+
|
163 |
+
.. http:post:: /api/v1/migration/(string:uuid)/success
|
164 |
+
|
165 |
+
Tells the server if the migration was successful, or if the user already existed on this store.
|
166 |
+
|
167 |
+
.. code-block:: php
|
168 |
+
|
169 |
+
use Expressly\Event\CustomerMigrateEvent;
|
170 |
+
use Expressly\Subscriber\CustomerMigrationSubscriber;
|
171 |
+
|
172 |
+
$event = new CustomerMigrateEvent(...);
|
173 |
+
$app['dispatcher']->dispatch(CustomerMigrationSubscriber::CUSTOMER_MIGRATE_SUCCESS, $event);
|
174 |
+
|
175 |
+
if ($event->isSuccessful()) {
|
176 |
+
|
177 |
+
}
|
178 |
+
|
179 |
+
:param uuid: Unique campaign migration uuid
|
180 |
+
:reqjson enum status: enum to tell server is migration was successful; can be: 'migrated', 'existing_customer'
|
181 |
+
:reqheader Content-Type: application/json
|
182 |
+
:reqheader Authorization: Basic token
|
183 |
+
:status 200:
|
184 |
+
:status 400:
|
185 |
+
|
186 |
+
.. http:get:: /api/v1/banner/(string:uuid)?email=(string:email)
|
187 |
+
|
188 |
+
If banner campaign is setup, get banner for a specified store, and email combination.
|
189 |
+
|
190 |
+
.. code-block:: php
|
191 |
+
|
192 |
+
use Expressly\Event\BannerEvent;
|
193 |
+
use Expressly\Subscriber\BannerSubscriber;
|
194 |
+
|
195 |
+
$event = new BannerEvent(...);
|
196 |
+
$app['dispatcher']->dispatch(BannerSubscriber::BANNER_REQUEST, $event);
|
197 |
+
|
198 |
+
if ($event->isSuccessful()) {
|
199 |
+
|
200 |
+
}
|
201 |
+
|
202 |
+
:param uuid: Unique banner uuid
|
203 |
+
:param email: Email for the currently logged in user
|
204 |
+
:reqheader Content-Type: application/json
|
205 |
+
:reqheader Authorization: Basic token
|
206 |
+
:status 200:
|
207 |
+
:status 400:
|
208 |
+
|
209 |
+
Expected Endpoints
|
210 |
+
------------------
|
211 |
+
Every single expected endpoint will be prefixed with the registered merchant_url_.
|
212 |
+
All Endpoints that must have hooks created in the mother system have a corresponding Presenter_.
|
213 |
+
|
214 |
+
.. http:get:: /expressly/api/ping
|
215 |
+
|
216 |
+
:resjson expressly: Simple response message to note that the plugin has been installed: 'Stuff is happening!'
|
217 |
+
:resheader Content-Type: application/json
|
218 |
+
|
219 |
+
.. http:get:: /expressly/api/(string:uuid)
|
220 |
+
|
221 |
+
Route called to start the migration process. This uri should invoke the `get customer migration popup`_.
|
222 |
+
|
223 |
+
|
224 |
+
.. http:get:: /expressly/api/(string:uuid)/migrate
|
225 |
+
|
226 |
+
|
227 |
+
|
228 |
+
.. http:get:: /expressly/api/user/(string:email)
|
229 |
+
|
230 |
+
Returns user, via your application facilities, conforming to our defined entities_.
|
231 |
+
|
232 |
+
.. code-block:: php
|
233 |
+
|
234 |
+
$customer = new Customer();
|
235 |
+
/*
|
236 |
+
* fill in as many applicable setters as possible
|
237 |
+
* $customer
|
238 |
+
* ->setFirstName('John')
|
239 |
+
* ->setLastName('Smith');
|
240 |
+
*/
|
241 |
+
$response = new CustomerMigratePresenter($merchant, $customer, $email, $id);
|
242 |
+
// display content however your application prefers
|
243 |
+
echo json_encode($response->toArray());
|
244 |
+
|
245 |
+
:resheader Content-Type: application/json
|
246 |
+
|
247 |
+
.. http:get:: /expressly/api/batch/invoice
|
248 |
+
|
249 |
+
.. code-block:: php
|
250 |
+
|
251 |
+
$response
|
252 |
+
|
253 |
+
:resheader Content-Type: application/json
|
254 |
+
|
255 |
+
.. http:get:: /expressly/api/batch/customer
|
256 |
+
|
257 |
+
:resheader Content-Type: application/json
|
258 |
+
|
259 |
+
|
260 |
+
Exceptions
|
261 |
+
----------
|
262 |
+
|
263 |
+
.. [config.yml] src/Resources/config/config.yml
|
264 |
+
|
265 |
+
.. [merchant_url] the location to execute/catch our paths;
|
266 |
+
example: https://www.example.com/route?action=/expressly/api/ping
|
267 |
+
|
268 |
+
.. [Presenter] src/Presenter (namespace Expressly\Presenter)
|
269 |
+
|
270 |
+
.. [entities] src/Entity (namespace Expressly\Entity)
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/project/index.txt
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _project-index:
|
2 |
+
|
3 |
+
#######
|
4 |
+
Project
|
5 |
+
#######
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/requests.txt
ADDED
@@ -0,0 +1,297 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Requests
|
2 |
+
========
|
3 |
+
|
4 |
+
All dispatchable requests will use one of the following external hosts.
|
5 |
+
Routing, and host definitions are defined in config.yml_.
|
6 |
+
|
7 |
+
.. code-block:: yaml
|
8 |
+
|
9 |
+
external:
|
10 |
+
hosts:
|
11 |
+
default: http://prod.expresslyapp.com/api/v1
|
12 |
+
admin: http://prod.expresslyapp.com/api/admin
|
13 |
+
|
14 |
+
.. _request-ping:
|
15 |
+
|
16 |
+
Ping
|
17 |
+
----
|
18 |
+
.. http:get:: /api/admin/ping
|
19 |
+
|
20 |
+
Ping the API to see if the server is currently running.
|
21 |
+
|
22 |
+
.. code-block:: php
|
23 |
+
|
24 |
+
use Expressly\Event\ResponseEvent;
|
25 |
+
use Expressly\Subscriber\UtilitySubscriber;
|
26 |
+
|
27 |
+
$event = new ResponseEvent();
|
28 |
+
$app['dispatcher']->dispatch(UtilitySubscriber::UTILITY_PING, $event);
|
29 |
+
|
30 |
+
if ($event->isSuccessful()) {
|
31 |
+
|
32 |
+
}
|
33 |
+
|
34 |
+
:reqheader Content-Type: application/json
|
35 |
+
:resheader Content-Type: application/json
|
36 |
+
:resjson string Server: If server is running, or not.
|
37 |
+
:resjson string DB Status: Status of the current state of the database.
|
38 |
+
|
39 |
+
.. _request-merchant-register:
|
40 |
+
|
41 |
+
Register Merchant
|
42 |
+
-----------------
|
43 |
+
.. http:post:: /api/v2/plugin/merchant
|
44 |
+
|
45 |
+
Register a store with the server.
|
46 |
+
|
47 |
+
.. code-block:: php
|
48 |
+
|
49 |
+
use Expressly\Event\MerchantEvent;
|
50 |
+
use Expressly\Subscriber\MerchantSubscriber;
|
51 |
+
|
52 |
+
$event = new MerchantEvent(...);
|
53 |
+
$app['dispatcher']->dispatch(MerchantSubscriber::MERCHANT_REGISTER, $event);
|
54 |
+
|
55 |
+
if ($event->isSuccessful()) {
|
56 |
+
|
57 |
+
}
|
58 |
+
|
59 |
+
:reqjson string apiBaseUrl: see merchant_url_; if there isn't any special base routing the value should be the exact same as the shop url
|
60 |
+
:reqjson string apiKey: api key retrieved from the Portal_ (see <https://buyexpressly.com/#/install>)
|
61 |
+
:reqheader Content-Type: application/json
|
62 |
+
:resheader Content-Type: application/json
|
63 |
+
:resjson string merchantUuid: the unique identifier for your installation
|
64 |
+
:resjson string secretKey: the token associated with your installation
|
65 |
+
:status 200:
|
66 |
+
:status 400:
|
67 |
+
|
68 |
+
.. _request-merchant-remove:
|
69 |
+
|
70 |
+
Remove Merchant
|
71 |
+
---------------
|
72 |
+
.. http:delete:: /api/v2/plugin/merchant/(string:uuid)
|
73 |
+
|
74 |
+
Remove store from the expressly system.
|
75 |
+
|
76 |
+
.. code-block:: php
|
77 |
+
|
78 |
+
use Expressly\Event\PasswordedEvent;
|
79 |
+
use Expressly\Subscriber\MerchantSubscriber;
|
80 |
+
|
81 |
+
$event = new PasswordedEvent(...);
|
82 |
+
$app['dispatcher']->dispatch(MerchantSubscriber::MERCHANT_DELETE, $event);
|
83 |
+
|
84 |
+
if ($event->isSuccessful()) {
|
85 |
+
|
86 |
+
}
|
87 |
+
|
88 |
+
:param uuid: Unique merchant uuid
|
89 |
+
:reqheader Content-Type: application/json
|
90 |
+
:reqheader Authorization: Basic token
|
91 |
+
:resjson boolean success:
|
92 |
+
:resjson string msg: Associated message
|
93 |
+
:status 200:
|
94 |
+
:status 400:
|
95 |
+
|
96 |
+
.. _request-migration-popup:
|
97 |
+
|
98 |
+
Get Campaign Migration Popup
|
99 |
+
----------------------------
|
100 |
+
.. http:get:: /api/v2/migration/(string:uuid)
|
101 |
+
|
102 |
+
Request the popup to start a campaign migration for the unique user.
|
103 |
+
|
104 |
+
.. code-block:: php
|
105 |
+
|
106 |
+
use Expressly\Event\CustomerMigrateEvent;
|
107 |
+
use Expressly\Subscriber\CustomerMigrationSubscriber;
|
108 |
+
|
109 |
+
$event = new CustomerMigrateEvent(...);
|
110 |
+
$app['dispatcher']->dispatch(CustomerMigrationSubscriber::CUSTOMER_MIGRATE_POPUP, $event);
|
111 |
+
|
112 |
+
if ($event->isSuccessful()) {
|
113 |
+
|
114 |
+
}
|
115 |
+
|
116 |
+
:param uuid: Unique campaign migration uuid
|
117 |
+
:reqheader Content-Type: application/json
|
118 |
+
:reqheader Authorization: Basic token
|
119 |
+
:resheader Content-Type: text/html
|
120 |
+
:status 200: campaign migration found, html for popup returned
|
121 |
+
:status 400:
|
122 |
+
|
123 |
+
.. _request-migration-data:
|
124 |
+
|
125 |
+
Get Campaign Migration Data
|
126 |
+
---------------------------
|
127 |
+
.. http:get:: /api/v2/migration/(string:uuid)/user
|
128 |
+
|
129 |
+
User has accepted popup, or been forced here directly; request, and start data migration.
|
130 |
+
|
131 |
+
.. code-block:: php
|
132 |
+
|
133 |
+
use Expressly\Event\CustomerMigrateEvent;
|
134 |
+
use Expressly\Subscriber\CustomerMigrationSubscriber;
|
135 |
+
|
136 |
+
$event = new CustomerMigrateEvent(...);
|
137 |
+
$app['dispatcher']->dispatch(CustomerMigrationSubscriber::CUSTOMER_MIGRATE_DATA, $event);
|
138 |
+
|
139 |
+
if ($event->isSuccessful()) {
|
140 |
+
|
141 |
+
}
|
142 |
+
|
143 |
+
**Example Response:**
|
144 |
+
|
145 |
+
.. sourcecode:: http
|
146 |
+
|
147 |
+
HTTP/1.1 200 OK
|
148 |
+
Content-Type: application/json
|
149 |
+
|
150 |
+
{
|
151 |
+
"meta": {
|
152 |
+
"locale": "UKR",
|
153 |
+
"sender": "https://expresslyapp.com/api/v1/migration/{uuid}"
|
154 |
+
},
|
155 |
+
"data": {
|
156 |
+
"email": "john.smith@gmail.com",
|
157 |
+
"customerData": {
|
158 |
+
"firstName": "John",
|
159 |
+
"lastName": "Smith",
|
160 |
+
"gender": "M",
|
161 |
+
"billingAddress": 0,
|
162 |
+
"shippingAddress": 1,
|
163 |
+
"company": "Expressly",
|
164 |
+
"dob": "1987-08-07",
|
165 |
+
"taxNumber": "GB0249894821",
|
166 |
+
"onlinePresence": [
|
167 |
+
{
|
168 |
+
"field": "website",
|
169 |
+
"value": "http://www.myblog.com"
|
170 |
+
}
|
171 |
+
],
|
172 |
+
"dateUpdated": "2015-07-10T11:42:00+01:00",
|
173 |
+
"emails": [
|
174 |
+
{
|
175 |
+
"email": "john.smith@gmail.com",
|
176 |
+
"alias": "default"
|
177 |
+
},
|
178 |
+
{
|
179 |
+
"email": "john@smithcorp.com",
|
180 |
+
"alias": "work"
|
181 |
+
}
|
182 |
+
],
|
183 |
+
"phones": [
|
184 |
+
{
|
185 |
+
"type": "M",
|
186 |
+
"number": "020734581250",
|
187 |
+
"countryCode": 44
|
188 |
+
},
|
189 |
+
{
|
190 |
+
"type": "L",
|
191 |
+
"number": "020731443250",
|
192 |
+
"countryCode": 44
|
193 |
+
}
|
194 |
+
],
|
195 |
+
"addresses": [
|
196 |
+
{
|
197 |
+
"firstName": "John",
|
198 |
+
"lastName": "Smith",
|
199 |
+
"address1": "12 Piccadilly",
|
200 |
+
"address2": "Room 14",
|
201 |
+
"city": "London",
|
202 |
+
"companyName": "WorkHard Ltd",
|
203 |
+
"zip": "W1C 34U",
|
204 |
+
"phone": 1,
|
205 |
+
"addressAlias": "Work address",
|
206 |
+
"stateProvinceID": "LND",
|
207 |
+
"countryID": "GBR"
|
208 |
+
},
|
209 |
+
{
|
210 |
+
"firstName": "John C.",
|
211 |
+
"lastName": "Smith",
|
212 |
+
"address1": "23 Sallsberry Ave",
|
213 |
+
"address2": "Flat 3",
|
214 |
+
"city": "London",
|
215 |
+
"companyName": "",
|
216 |
+
"zip": "NW3 4HG",
|
217 |
+
"phone": 0,
|
218 |
+
"alias": "Home address",
|
219 |
+
"stateProvinceID": "LND",
|
220 |
+
"countryID": "GBR"
|
221 |
+
}
|
222 |
+
]
|
223 |
+
}
|
224 |
+
}
|
225 |
+
}
|
226 |
+
|
227 |
+
:param uuid: Unique campaign migration uuid
|
228 |
+
:reqheader Content-Type: application/json
|
229 |
+
:reqheader Authorization: Basic token
|
230 |
+
:resheader Content-Type: application/json
|
231 |
+
:status 200:
|
232 |
+
:status 400:
|
233 |
+
|
234 |
+
.. _request-migration-success:
|
235 |
+
|
236 |
+
Migration Success
|
237 |
+
-----------------
|
238 |
+
.. http:post:: /api/v2/migration/(string:uuid)/success
|
239 |
+
|
240 |
+
Tells the server if the migration was successful, or if the user already existed on this store.
|
241 |
+
|
242 |
+
.. code-block:: php
|
243 |
+
|
244 |
+
use Expressly\Event\CustomerMigrateEvent;
|
245 |
+
use Expressly\Subscriber\CustomerMigrationSubscriber;
|
246 |
+
|
247 |
+
$event = new CustomerMigrateEvent(...);
|
248 |
+
$app['dispatcher']->dispatch(CustomerMigrationSubscriber::CUSTOMER_MIGRATE_SUCCESS, $event);
|
249 |
+
|
250 |
+
if ($event->isSuccessful()) {
|
251 |
+
|
252 |
+
}
|
253 |
+
|
254 |
+
:param uuid: Unique campaign migration uuid
|
255 |
+
:reqjson enum status: enum to tell server is migration was successful; can be: 'migrated', 'existing_customer'
|
256 |
+
:reqheader Content-Type: application/json
|
257 |
+
:reqheader Authorization: Basic token
|
258 |
+
:resheader Content-Type: application/json
|
259 |
+
:resjson boolean success:
|
260 |
+
:resjson string msg: Associated message
|
261 |
+
:status 200:
|
262 |
+
:status 400:
|
263 |
+
|
264 |
+
.. _request-banner-get:
|
265 |
+
|
266 |
+
Get Campaign Banner
|
267 |
+
-------------------
|
268 |
+
.. http:get:: /api/v2/banner/(string:uuid)?email=(string:email)
|
269 |
+
|
270 |
+
If banner campaign is setup, get banner for a specified store, and email combination.
|
271 |
+
|
272 |
+
.. code-block:: php
|
273 |
+
|
274 |
+
use Expressly\Event\BannerEvent;
|
275 |
+
use Expressly\Subscriber\BannerSubscriber;
|
276 |
+
|
277 |
+
$event = new BannerEvent(...);
|
278 |
+
$app['dispatcher']->dispatch(BannerSubscriber::BANNER_REQUEST, $event);
|
279 |
+
|
280 |
+
if ($event->isSuccessful()) {
|
281 |
+
|
282 |
+
}
|
283 |
+
|
284 |
+
:param uuid: Unique banner uuid
|
285 |
+
:param email: Email for the currently logged in user
|
286 |
+
:reqheader Content-Type: application/json
|
287 |
+
:reqheader Authorization: Basic token
|
288 |
+
:resheader Content-Type: application/json
|
289 |
+
:resjson string bannerImageUrl: url of the image; set in the Portal_
|
290 |
+
:resjson string migrationLink: url to populate the banner
|
291 |
+
:status 200:
|
292 |
+
:status 400:
|
293 |
+
|
294 |
+
.. [config.yml] src/Resources/config/config.yml
|
295 |
+
.. [merchant_url] the location to execute/catch our paths;
|
296 |
+
example: https://www.example.com/route?action=/expressly/api/ping
|
297 |
+
.. [Portal] Expressly Portal: https://buyexpressly.com/#/portal/login
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/responses.txt
ADDED
@@ -0,0 +1,309 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Resolver
|
2 |
+
========
|
3 |
+
|
4 |
+
Every single expected endpoint will be prefixed with the registered merchant_url_.
|
5 |
+
All Endpoints that must have hooks created in the mother system have a corresponding Presenter_.
|
6 |
+
|
7 |
+
.. _response-ping:
|
8 |
+
|
9 |
+
Ping Store
|
10 |
+
----------
|
11 |
+
.. http:get:: /expressly/api/ping
|
12 |
+
|
13 |
+
Simple response message to note that the plugin has been installed.
|
14 |
+
|
15 |
+
:reqheader Content-Type: application/json
|
16 |
+
:resjson expressly: Stuff is happening!
|
17 |
+
:resheader Content-Type: application/json
|
18 |
+
|
19 |
+
.. _response-popup:
|
20 |
+
|
21 |
+
Show Popup
|
22 |
+
----------
|
23 |
+
.. http:get:: /expressly/api/(string:uuid)
|
24 |
+
|
25 |
+
Start the user migration process. This uri should invoke the :ref:`request-migration-popup` request.
|
26 |
+
The Popup can be shown over any page you wish, we recommend appending the html to your homepage.
|
27 |
+
|
28 |
+
:reqheader Authorization: Basic token
|
29 |
+
:resheader Content-Type: text/html
|
30 |
+
|
31 |
+
.. _response-migrate:
|
32 |
+
|
33 |
+
Migrate User
|
34 |
+
------------
|
35 |
+
.. http:get:: /expressly/api/(string:uuid)/migrate
|
36 |
+
|
37 |
+
End of the user migration process. This uri should invoke the :ref:`request-migration-data` request.
|
38 |
+
The method should add all data for the provided user to the store, and if provided, add a product and/or coupon to the users' cart.
|
39 |
+
The user should be logged in directly after this migration, and a welcome email (if not part of your stores' initial flow) should be dispatched.
|
40 |
+
|
41 |
+
:reqheader Authorization: Basic token
|
42 |
+
:resheader Content-Type: text/html
|
43 |
+
|
44 |
+
.. _response-user:
|
45 |
+
|
46 |
+
Get User
|
47 |
+
--------
|
48 |
+
.. http:get:: /expressly/api/user/(string:email)
|
49 |
+
|
50 |
+
Returns user, via your application facilities, conforming to our defined entities_.
|
51 |
+
|
52 |
+
.. code-block:: php
|
53 |
+
|
54 |
+
$customer = new Customer();
|
55 |
+
/*
|
56 |
+
* fill in as many applicable setters as possible
|
57 |
+
* $customer
|
58 |
+
* ->setFirstName('John')
|
59 |
+
* ->setLastName('Smith');
|
60 |
+
*/
|
61 |
+
$response = new CustomerMigratePresenter($merchant, $customer, $email, $id);
|
62 |
+
// display content however your application prefers
|
63 |
+
echo json_encode($response->toArray());
|
64 |
+
|
65 |
+
**Example Response:**
|
66 |
+
|
67 |
+
.. sourcecode:: http
|
68 |
+
|
69 |
+
HTTP/1.1 200 OK
|
70 |
+
Content-Type: application/json
|
71 |
+
|
72 |
+
{
|
73 |
+
"meta": {
|
74 |
+
"locale": "UKR",
|
75 |
+
"sender": "https://yourstore.com/",
|
76 |
+
"issuerData": []
|
77 |
+
},
|
78 |
+
"data": {
|
79 |
+
"email": "john.smith@gmail.com",
|
80 |
+
"customerData": {
|
81 |
+
"firstName": "John",
|
82 |
+
"lastName": "Smith",
|
83 |
+
"gender": "M",
|
84 |
+
"billingAddress": 0,
|
85 |
+
"shippingAddress": 1,
|
86 |
+
"company": "Expressly",
|
87 |
+
"dob": "1987-08-07",
|
88 |
+
"taxNumber": "GB0249894821",
|
89 |
+
"onlinePresence": [
|
90 |
+
{
|
91 |
+
"field": "website",
|
92 |
+
"value": "www.myblog.com"
|
93 |
+
}
|
94 |
+
],
|
95 |
+
"dateUpdated": "2015-07-10T11:42:00+01:00",
|
96 |
+
"dateLastOrder": "2015-07-10T11:42:00+01:00",
|
97 |
+
"numberOrdered": 5,
|
98 |
+
"emails": [
|
99 |
+
{
|
100 |
+
"email": "john.smith@gmail.com",
|
101 |
+
"alias": "default"
|
102 |
+
},
|
103 |
+
{
|
104 |
+
"email": "john@smithcorp.com",
|
105 |
+
"alias": "work"
|
106 |
+
}
|
107 |
+
],
|
108 |
+
"phones": [
|
109 |
+
{
|
110 |
+
"type": "M",
|
111 |
+
"number": "020734581250",
|
112 |
+
"countryCode": 44
|
113 |
+
},
|
114 |
+
{
|
115 |
+
"type": "L",
|
116 |
+
"number": "020731443250",
|
117 |
+
"countryCode": 44
|
118 |
+
}
|
119 |
+
],
|
120 |
+
"addresses": [
|
121 |
+
{
|
122 |
+
"firstName": "John",
|
123 |
+
"lastName": "Smith",
|
124 |
+
"address1": "12 Piccadilly",
|
125 |
+
"address2": "Room 14",
|
126 |
+
"city": "London",
|
127 |
+
"companyName": "WorkHard Ltd",
|
128 |
+
"zip": "W1C 34U",
|
129 |
+
"phone": 1,
|
130 |
+
"alias": "Work address",
|
131 |
+
"stateProvince": "LND",
|
132 |
+
"country": "GBR"
|
133 |
+
},
|
134 |
+
{
|
135 |
+
"firstName": "John C.",
|
136 |
+
"lastName": "Smith",
|
137 |
+
"address1": "23 Sallsberry Ave",
|
138 |
+
"address2": "Flat 3",
|
139 |
+
"city": "London",
|
140 |
+
"companyName": "",
|
141 |
+
"zip": "NW3 4HG",
|
142 |
+
"phone": 0,
|
143 |
+
"alias": "Home address",
|
144 |
+
"stateProvince": "LND",
|
145 |
+
"country": "GBR"
|
146 |
+
}
|
147 |
+
]
|
148 |
+
}
|
149 |
+
}
|
150 |
+
}
|
151 |
+
|
152 |
+
:reqheader Authorization: Basic token
|
153 |
+
:reqheader Content-Type: application/json
|
154 |
+
:resheader Content-Type: application/json
|
155 |
+
|
156 |
+
.. _response-batch-invoice:
|
157 |
+
|
158 |
+
Invoices for Customer Purchases
|
159 |
+
-------------------------------
|
160 |
+
.. http:post:: /expressly/api/batch/invoice
|
161 |
+
|
162 |
+
Given a list of date ranges, and emails checks to see if the associated campaign users have had any transactions during the specified period.
|
163 |
+
|
164 |
+
.. code-block:: php
|
165 |
+
|
166 |
+
use Expressly\Entity\Invoice;
|
167 |
+
use Expressly\Entity\Order;
|
168 |
+
use Expressly\Presenter\BatchInvoicePresenter;
|
169 |
+
|
170 |
+
$invoices = array();
|
171 |
+
|
172 |
+
foreach ($json->customers as $customer) {
|
173 |
+
$invoice = new Invoice();
|
174 |
+
$invoice->setEmail($customer->email);
|
175 |
+
|
176 |
+
foreach ($userOrders as $userOrder) {
|
177 |
+
$order = new Order();
|
178 |
+
$order
|
179 |
+
->setId($userOrder->getId())
|
180 |
+
->setDate(new \DateTime($userOrder->getOrderDate())
|
181 |
+
->setItemCount($userOrder->getQuantity())
|
182 |
+
->setTotal($userOrder->getTotalPreTax(), $userOrder->getTax())
|
183 |
+
->setCoupon($userOrder->getCoupon());
|
184 |
+
|
185 |
+
$invoice->addOrder($order);
|
186 |
+
}
|
187 |
+
|
188 |
+
$invoices[] = $invoice;
|
189 |
+
}
|
190 |
+
|
191 |
+
$presenter = new BatchInvoicePresenter($invoices);
|
192 |
+
// display content however your application prefers
|
193 |
+
echo json_encode($presenter->toArray());
|
194 |
+
|
195 |
+
**Example Request:**
|
196 |
+
|
197 |
+
.. sourcecode:: http
|
198 |
+
|
199 |
+
POST /expressly/api/batch/invoice
|
200 |
+
Host: prod.expresslyapp.com
|
201 |
+
Authorization: Basic token
|
202 |
+
|
203 |
+
{
|
204 |
+
"customers": [
|
205 |
+
{
|
206 |
+
"email": "john.smith@gmail.com",
|
207 |
+
"from": "2015-07-01T00:00:00+00:00",
|
208 |
+
"to": "2015-08-01T00:00:00+00:00"
|
209 |
+
}
|
210 |
+
]
|
211 |
+
}
|
212 |
+
|
213 |
+
**Example Response:**
|
214 |
+
|
215 |
+
.. sourcecode:: http
|
216 |
+
|
217 |
+
HTTP/1.1 200 OK
|
218 |
+
Content-Type: application/json
|
219 |
+
|
220 |
+
{
|
221 |
+
"invoices": [
|
222 |
+
{
|
223 |
+
"email": "john.smith@gmail.com",
|
224 |
+
"orderCount": 1,
|
225 |
+
"preTaxTotal": 100.00,
|
226 |
+
"tax": 10.00,
|
227 |
+
"orders": [
|
228 |
+
{
|
229 |
+
"id": "ORDER-5321311",
|
230 |
+
"date": "2015-07-10T11:42:00+01:00",
|
231 |
+
"itemCount": 2,
|
232 |
+
"coupon": "",
|
233 |
+
"currency": "GBP",
|
234 |
+
"preTaxTotal": 100.00,
|
235 |
+
"postTaxTotal": 110.00,
|
236 |
+
"tax": 10.00
|
237 |
+
}
|
238 |
+
]
|
239 |
+
}
|
240 |
+
]
|
241 |
+
}
|
242 |
+
|
243 |
+
:reqheader Authorization: Basic token
|
244 |
+
:reqheader Content-Type: application/json
|
245 |
+
:resheader Content-Type: application/json
|
246 |
+
|
247 |
+
.. _response-batch-customer:
|
248 |
+
|
249 |
+
Customers on Store
|
250 |
+
------------------
|
251 |
+
.. http:post:: /expressly/api/batch/customer
|
252 |
+
|
253 |
+
Given a list of emails, checks to see if a user has completed the migration process.
|
254 |
+
|
255 |
+
.. code-block:: php
|
256 |
+
|
257 |
+
use Expressly\Presenter\BatchCustomerPresenter;
|
258 |
+
|
259 |
+
$users = array(
|
260 |
+
'existing' => array(),
|
261 |
+
'deleted' => array(),
|
262 |
+
'pending' => array()
|
263 |
+
);
|
264 |
+
|
265 |
+
foreach ($json->emails as $email) {
|
266 |
+
// add user to certain sector of array, depending on state
|
267 |
+
}
|
268 |
+
|
269 |
+
$presenter = new BatchCustomerPresenter($users);
|
270 |
+
// display content however your application prefers
|
271 |
+
echo json_encode($presenter->toArray());
|
272 |
+
|
273 |
+
**Example Request:**
|
274 |
+
|
275 |
+
.. sourcecode:: http
|
276 |
+
|
277 |
+
POST /expressly/api/batch/customer
|
278 |
+
Host: prod.expresslyapp.com
|
279 |
+
Authorization: Basic token
|
280 |
+
|
281 |
+
{
|
282 |
+
"emails": [
|
283 |
+
"john.smith@gmail.com"
|
284 |
+
]
|
285 |
+
}
|
286 |
+
|
287 |
+
**Example Response:**
|
288 |
+
|
289 |
+
.. sourcecode:: http
|
290 |
+
|
291 |
+
HTTP/1.1 200 OK
|
292 |
+
Content-Type: application/json
|
293 |
+
|
294 |
+
{
|
295 |
+
"existing": [
|
296 |
+
"john.smith@gmail.com"
|
297 |
+
],
|
298 |
+
"deleted": [],
|
299 |
+
"pending": []
|
300 |
+
}
|
301 |
+
|
302 |
+
:reqheader Authorization: Basic token
|
303 |
+
:reqheader Content-Type: application/json
|
304 |
+
:resheader Content-Type: application/json
|
305 |
+
|
306 |
+
.. [merchant_url] the location to execute/catch our paths;
|
307 |
+
example: https://www.example.com/route?action=/expressly/api/ping
|
308 |
+
.. [Presenter] src/Presenter (namespace Expressly\Presenter)
|
309 |
+
.. [entities] src/Entity (namespace Expressly\Entity)
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/routes.txt
ADDED
@@ -0,0 +1,337 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Routes
|
2 |
+
======
|
3 |
+
|
4 |
+
All routes are dispatched using the included RouteResolver_. If you platform has a built in parser, the associated regex is attached (statically) to each route in the Expressly\\Routes namespace.
|
5 |
+
The RouteResolver_ will check if the required header(s), method, and route were passed through, and return the valid data (if any) inside a matched Route_ object, or null.
|
6 |
+
|
7 |
+
.. code-block:: php
|
8 |
+
|
9 |
+
$query = '/expressly/api/*';
|
10 |
+
$route = $app['route.resolver']->process($query);
|
11 |
+
|
12 |
+
Every single expected endpoint will be prefixed with the registered merchant_url_.
|
13 |
+
All Endpoints that must have hooks created in the mother system have a corresponding Presenter_.
|
14 |
+
|
15 |
+
.. _response-ping:
|
16 |
+
|
17 |
+
Ping Store
|
18 |
+
----------
|
19 |
+
.. http:get:: /expressly/api/ping
|
20 |
+
|
21 |
+
:Route class:
|
22 |
+
Expressly\\Route\\Ping
|
23 |
+
|
24 |
+
Simple response message to note that the plugin has been installed.
|
25 |
+
|
26 |
+
:reqheader Content-Type: application/json
|
27 |
+
:resjson expressly: Stuff is happening!
|
28 |
+
:resheader Content-Type: application/json
|
29 |
+
|
30 |
+
.. _response-popup:
|
31 |
+
|
32 |
+
Show Popup
|
33 |
+
----------
|
34 |
+
.. http:get:: /expressly/api/(string:uuid)
|
35 |
+
|
36 |
+
:Route class:
|
37 |
+
Expressly\\Route\\CampaignPopup
|
38 |
+
|
39 |
+
Start the user migration process. This uri should invoke the :ref:`request-migration-popup` request.
|
40 |
+
The Popup can be shown over any page you wish, we recommend appending the html to your homepage.
|
41 |
+
|
42 |
+
:reqheader Authorization: Basic token
|
43 |
+
:resheader Content-Type: text/html
|
44 |
+
|
45 |
+
.. _response-migrate:
|
46 |
+
|
47 |
+
Migrate User
|
48 |
+
------------
|
49 |
+
.. http:get:: /expressly/api/(string:uuid)/migrate
|
50 |
+
|
51 |
+
:Route class:
|
52 |
+
Expressly\\Route\\CampaignMigration
|
53 |
+
|
54 |
+
End of the user migration process. This uri should invoke the :ref:`request-migration-data` request.
|
55 |
+
The method should add all data for the provided user to the store, and if provided, add a product and/or coupon to the users' cart.
|
56 |
+
The user should be logged in directly after this migration, and a welcome email (if not part of your stores' initial flow) should be dispatched.
|
57 |
+
|
58 |
+
:reqheader Authorization: Basic token
|
59 |
+
:resheader Content-Type: text/html
|
60 |
+
|
61 |
+
.. _response-user:
|
62 |
+
|
63 |
+
Get User
|
64 |
+
--------
|
65 |
+
.. http:get:: /expressly/api/user/(string:email)
|
66 |
+
|
67 |
+
:Route class:
|
68 |
+
Expressly\\Route\\UserData
|
69 |
+
|
70 |
+
Returns user, via your application facilities, conforming to our defined entities_.
|
71 |
+
|
72 |
+
.. code-block:: php
|
73 |
+
|
74 |
+
$customer = new Customer();
|
75 |
+
/*
|
76 |
+
* fill in as many applicable setters as possible
|
77 |
+
* $customer
|
78 |
+
* ->setFirstName('John')
|
79 |
+
* ->setLastName('Smith');
|
80 |
+
*/
|
81 |
+
$response = new CustomerMigratePresenter($merchant, $customer, $email, $id);
|
82 |
+
// display content however your application prefers
|
83 |
+
echo json_encode($response->toArray());
|
84 |
+
|
85 |
+
**Example Response:**
|
86 |
+
|
87 |
+
.. sourcecode:: http
|
88 |
+
|
89 |
+
HTTP/1.1 200 OK
|
90 |
+
Content-Type: application/json
|
91 |
+
|
92 |
+
{
|
93 |
+
"meta": {
|
94 |
+
"locale": "UKR",
|
95 |
+
"sender": "https://yourstore.com/",
|
96 |
+
"issuerData": []
|
97 |
+
},
|
98 |
+
"data": {
|
99 |
+
"email": "john.smith@gmail.com",
|
100 |
+
"customerData": {
|
101 |
+
"firstName": "John",
|
102 |
+
"lastName": "Smith",
|
103 |
+
"gender": "M",
|
104 |
+
"billingAddress": 0,
|
105 |
+
"shippingAddress": 1,
|
106 |
+
"company": "Expressly",
|
107 |
+
"dob": "1987-08-07",
|
108 |
+
"taxNumber": "GB0249894821",
|
109 |
+
"onlinePresence": [
|
110 |
+
{
|
111 |
+
"field": "website",
|
112 |
+
"value": "www.myblog.com"
|
113 |
+
}
|
114 |
+
],
|
115 |
+
"dateUpdated": "2015-07-10T11:42:00+01:00",
|
116 |
+
"dateLastOrder": "2015-07-10T11:42:00+01:00",
|
117 |
+
"numberOrdered": 5,
|
118 |
+
"emails": [
|
119 |
+
{
|
120 |
+
"email": "john.smith@gmail.com",
|
121 |
+
"alias": "default"
|
122 |
+
},
|
123 |
+
{
|
124 |
+
"email": "john@smithcorp.com",
|
125 |
+
"alias": "work"
|
126 |
+
}
|
127 |
+
],
|
128 |
+
"phones": [
|
129 |
+
{
|
130 |
+
"type": "M",
|
131 |
+
"number": "020734581250",
|
132 |
+
"countryCode": 44
|
133 |
+
},
|
134 |
+
{
|
135 |
+
"type": "L",
|
136 |
+
"number": "020731443250",
|
137 |
+
"countryCode": 44
|
138 |
+
}
|
139 |
+
],
|
140 |
+
"addresses": [
|
141 |
+
{
|
142 |
+
"firstName": "John",
|
143 |
+
"lastName": "Smith",
|
144 |
+
"address1": "12 Piccadilly",
|
145 |
+
"address2": "Room 14",
|
146 |
+
"city": "London",
|
147 |
+
"companyName": "WorkHard Ltd",
|
148 |
+
"zip": "W1C 34U",
|
149 |
+
"phone": 1,
|
150 |
+
"alias": "Work address",
|
151 |
+
"stateProvince": "LND",
|
152 |
+
"country": "GBR"
|
153 |
+
},
|
154 |
+
{
|
155 |
+
"firstName": "John C.",
|
156 |
+
"lastName": "Smith",
|
157 |
+
"address1": "23 Sallsberry Ave",
|
158 |
+
"address2": "Flat 3",
|
159 |
+
"city": "London",
|
160 |
+
"companyName": "",
|
161 |
+
"zip": "NW3 4HG",
|
162 |
+
"phone": 0,
|
163 |
+
"alias": "Home address",
|
164 |
+
"stateProvince": "LND",
|
165 |
+
"country": "GBR"
|
166 |
+
}
|
167 |
+
]
|
168 |
+
}
|
169 |
+
}
|
170 |
+
}
|
171 |
+
|
172 |
+
:reqheader Authorization: Basic token
|
173 |
+
:reqheader Content-Type: application/json
|
174 |
+
:resheader Content-Type: application/json
|
175 |
+
|
176 |
+
.. _response-batch-invoice:
|
177 |
+
|
178 |
+
Invoices for Customer Purchases
|
179 |
+
-------------------------------
|
180 |
+
.. http:post:: /expressly/api/batch/invoice
|
181 |
+
|
182 |
+
:Route class:
|
183 |
+
Expressly\\Route\\BatchInvoice
|
184 |
+
|
185 |
+
Given a list of date ranges, and emails checks to see if the associated campaign users have had any transactions during the specified period.
|
186 |
+
|
187 |
+
.. code-block:: php
|
188 |
+
|
189 |
+
use Expressly\Entity\Invoice;
|
190 |
+
use Expressly\Entity\Order;
|
191 |
+
use Expressly\Presenter\BatchInvoicePresenter;
|
192 |
+
|
193 |
+
$invoices = array();
|
194 |
+
|
195 |
+
foreach ($json->customers as $customer) {
|
196 |
+
$invoice = new Invoice();
|
197 |
+
$invoice->setEmail($customer->email);
|
198 |
+
|
199 |
+
foreach ($userOrders as $userOrder) {
|
200 |
+
$order = new Order();
|
201 |
+
$order
|
202 |
+
->setId($userOrder->getId())
|
203 |
+
->setDate(new \DateTime($userOrder->getOrderDate())
|
204 |
+
->setItemCount($userOrder->getQuantity())
|
205 |
+
->setTotal($userOrder->getTotalPreTax(), $userOrder->getTax())
|
206 |
+
->setCoupon($userOrder->getCoupon());
|
207 |
+
|
208 |
+
$invoice->addOrder($order);
|
209 |
+
}
|
210 |
+
|
211 |
+
$invoices[] = $invoice;
|
212 |
+
}
|
213 |
+
|
214 |
+
$presenter = new BatchInvoicePresenter($invoices);
|
215 |
+
// display content however your application prefers
|
216 |
+
echo json_encode($presenter->toArray());
|
217 |
+
|
218 |
+
**Example Request:**
|
219 |
+
|
220 |
+
.. sourcecode:: http
|
221 |
+
|
222 |
+
POST /expressly/api/batch/invoice
|
223 |
+
Host: prod.expresslyapp.com
|
224 |
+
Authorization: Basic token
|
225 |
+
|
226 |
+
{
|
227 |
+
"customers": [
|
228 |
+
{
|
229 |
+
"email": "john.smith@gmail.com",
|
230 |
+
"from": "2015-07-01T00:00:00+00:00",
|
231 |
+
"to": "2015-08-01T00:00:00+00:00"
|
232 |
+
}
|
233 |
+
]
|
234 |
+
}
|
235 |
+
|
236 |
+
**Example Response:**
|
237 |
+
|
238 |
+
.. sourcecode:: http
|
239 |
+
|
240 |
+
HTTP/1.1 200 OK
|
241 |
+
Content-Type: application/json
|
242 |
+
|
243 |
+
{
|
244 |
+
"invoices": [
|
245 |
+
{
|
246 |
+
"email": "john.smith@gmail.com",
|
247 |
+
"orderCount": 1,
|
248 |
+
"preTaxTotal": 100.00,
|
249 |
+
"tax": 10.00,
|
250 |
+
"orders": [
|
251 |
+
{
|
252 |
+
"id": "ORDER-5321311",
|
253 |
+
"date": "2015-07-10T11:42:00+01:00",
|
254 |
+
"itemCount": 2,
|
255 |
+
"coupon": "",
|
256 |
+
"currency": "GBP",
|
257 |
+
"preTaxTotal": 100.00,
|
258 |
+
"postTaxTotal": 110.00,
|
259 |
+
"tax": 10.00
|
260 |
+
}
|
261 |
+
]
|
262 |
+
}
|
263 |
+
]
|
264 |
+
}
|
265 |
+
|
266 |
+
:reqheader Authorization: Basic token
|
267 |
+
:reqheader Content-Type: application/json
|
268 |
+
:resheader Content-Type: application/json
|
269 |
+
|
270 |
+
.. _response-batch-customer:
|
271 |
+
|
272 |
+
Customers on Store
|
273 |
+
------------------
|
274 |
+
.. http:post:: /expressly/api/batch/customer
|
275 |
+
|
276 |
+
:Route class:
|
277 |
+
Expressly\\Route\\BatchCustomer
|
278 |
+
|
279 |
+
Given a list of emails, checks to see if a user has completed the migration process.
|
280 |
+
|
281 |
+
.. code-block:: php
|
282 |
+
|
283 |
+
use Expressly\Presenter\BatchCustomerPresenter;
|
284 |
+
|
285 |
+
$users = array(
|
286 |
+
'existing' => array(),
|
287 |
+
'deleted' => array(),
|
288 |
+
'pending' => array()
|
289 |
+
);
|
290 |
+
|
291 |
+
foreach ($json->emails as $email) {
|
292 |
+
// add user to certain sector of array, depending on state
|
293 |
+
}
|
294 |
+
|
295 |
+
$presenter = new BatchCustomerPresenter($users);
|
296 |
+
// display content however your application prefers
|
297 |
+
echo json_encode($presenter->toArray());
|
298 |
+
|
299 |
+
**Example Request:**
|
300 |
+
|
301 |
+
.. sourcecode:: http
|
302 |
+
|
303 |
+
POST /expressly/api/batch/customer
|
304 |
+
Host: prod.expresslyapp.com
|
305 |
+
Authorization: Basic token
|
306 |
+
|
307 |
+
{
|
308 |
+
"emails": [
|
309 |
+
"john.smith@gmail.com"
|
310 |
+
]
|
311 |
+
}
|
312 |
+
|
313 |
+
**Example Response:**
|
314 |
+
|
315 |
+
.. sourcecode:: http
|
316 |
+
|
317 |
+
HTTP/1.1 200 OK
|
318 |
+
Content-Type: application/json
|
319 |
+
|
320 |
+
{
|
321 |
+
"existing": [
|
322 |
+
"john.smith@gmail.com"
|
323 |
+
],
|
324 |
+
"deleted": [],
|
325 |
+
"pending": []
|
326 |
+
}
|
327 |
+
|
328 |
+
:reqheader Authorization: Basic token
|
329 |
+
:reqheader Content-Type: application/json
|
330 |
+
:resheader Content-Type: application/json
|
331 |
+
|
332 |
+
.. [RouteResolver] src/Resolver/RouteResolver (namespace Expressly\Resolver\RouteResolver)
|
333 |
+
.. [merchant_url] the location to execute/catch our paths;
|
334 |
+
example: https://www.example.com/route?action=/expressly/api/ping
|
335 |
+
.. [Route] src/Entity/Route (namespace Expressly\Entity\Route)
|
336 |
+
.. [Presenter] src/Presenter (namespace Expressly\Presenter)
|
337 |
+
.. [entities] src/Entity (namespace Expressly\Entity)
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/setup.txt
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=====
|
2 |
+
Setup
|
3 |
+
=====
|
4 |
+
|
5 |
+
Requirements
|
6 |
+
------------
|
7 |
+
* PHP 5.3+
|
8 |
+
* composer
|
9 |
+
|
10 |
+
Include
|
11 |
+
-------
|
12 |
+
Inside your composer.json, you need to include:
|
13 |
+
|
14 |
+
.. code-block:: javascript
|
15 |
+
|
16 |
+
"require": {
|
17 |
+
"expressly/php-common": "1.1.6"
|
18 |
+
},
|
19 |
+
"repositories": [
|
20 |
+
{
|
21 |
+
"type": "vcs",
|
22 |
+
"url": "https://github.com/expressly/php-common"
|
23 |
+
}
|
24 |
+
]
|
25 |
+
|
26 |
+
Configuration
|
27 |
+
-------------
|
28 |
+
All configuration values associated with the repository are contained within config.yml_.
|
29 |
+
|
30 |
+
To act in development mode, the following block inside the config.yml_ should be changed from:
|
31 |
+
|
32 |
+
.. code-block:: yaml
|
33 |
+
|
34 |
+
external:
|
35 |
+
hosts:
|
36 |
+
default: http://prod.expresslyapp.com/api/v1
|
37 |
+
admin: http://prod.expresslyapp.com/api/admin
|
38 |
+
|
39 |
+
to
|
40 |
+
|
41 |
+
.. code-block:: yaml
|
42 |
+
|
43 |
+
external:
|
44 |
+
hosts:
|
45 |
+
default: http://dev.expresslyapp.com/api/v1
|
46 |
+
admin: http://dev.expresslyapp.com/api/admin
|
47 |
+
|
48 |
+
.. [config.yml] src/Resources/config/config.yml
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/{src/Proxy/.gitkeep → docs/build/html/_sources/setup/configuration.txt}
RENAMED
File without changes
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/setup/index.txt
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _setup-index:
|
2 |
+
|
3 |
+
#####
|
4 |
+
Setup
|
5 |
+
#####
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/setup/installation.txt
ADDED
File without changes
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_sources/setup/requirements.txt
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _setup-requirements:
|
2 |
+
|
3 |
+
############
|
4 |
+
Requirements
|
5 |
+
############
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/ajax-loader.gif
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/alabaster.css
ADDED
@@ -0,0 +1,585 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
|
3 |
+
|
4 |
+
|
5 |
+
|
6 |
+
|
7 |
+
|
8 |
+
|
9 |
+
|
10 |
+
|
11 |
+
|
12 |
+
|
13 |
+
|
14 |
+
|
15 |
+
|
16 |
+
|
17 |
+
|
18 |
+
@import url("basic.css");
|
19 |
+
|
20 |
+
/* -- page layout ----------------------------------------------------------- */
|
21 |
+
|
22 |
+
body {
|
23 |
+
font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro', serif;
|
24 |
+
font-size: 17px;
|
25 |
+
background-color: white;
|
26 |
+
color: #000;
|
27 |
+
margin: 0;
|
28 |
+
padding: 0;
|
29 |
+
}
|
30 |
+
|
31 |
+
div.document {
|
32 |
+
width: 940px;
|
33 |
+
margin: 30px auto 0 auto;
|
34 |
+
}
|
35 |
+
|
36 |
+
div.documentwrapper {
|
37 |
+
float: left;
|
38 |
+
width: 100%;
|
39 |
+
}
|
40 |
+
|
41 |
+
div.bodywrapper {
|
42 |
+
margin: 0 0 0 220px;
|
43 |
+
}
|
44 |
+
|
45 |
+
div.sphinxsidebar {
|
46 |
+
width: 220px;
|
47 |
+
}
|
48 |
+
|
49 |
+
hr {
|
50 |
+
border: 1px solid #B1B4B6;
|
51 |
+
}
|
52 |
+
|
53 |
+
div.body {
|
54 |
+
background-color: #ffffff;
|
55 |
+
color: #3E4349;
|
56 |
+
padding: 0 30px 0 30px;
|
57 |
+
}
|
58 |
+
|
59 |
+
div.footer {
|
60 |
+
width: 940px;
|
61 |
+
margin: 20px auto 30px auto;
|
62 |
+
font-size: 14px;
|
63 |
+
color: #888;
|
64 |
+
text-align: right;
|
65 |
+
}
|
66 |
+
|
67 |
+
div.footer a {
|
68 |
+
color: #888;
|
69 |
+
}
|
70 |
+
|
71 |
+
|
72 |
+
div.relations {
|
73 |
+
display: none;
|
74 |
+
}
|
75 |
+
|
76 |
+
|
77 |
+
div.sphinxsidebar a {
|
78 |
+
color: #444;
|
79 |
+
text-decoration: none;
|
80 |
+
border-bottom: 1px dotted #999;
|
81 |
+
}
|
82 |
+
|
83 |
+
div.sphinxsidebar a:hover {
|
84 |
+
border-bottom: 1px solid #999;
|
85 |
+
}
|
86 |
+
|
87 |
+
div.sphinxsidebar {
|
88 |
+
font-size: 14px;
|
89 |
+
line-height: 1.5;
|
90 |
+
}
|
91 |
+
|
92 |
+
div.sphinxsidebarwrapper {
|
93 |
+
padding: 18px 10px;
|
94 |
+
}
|
95 |
+
|
96 |
+
div.sphinxsidebarwrapper p.logo {
|
97 |
+
padding: 0;
|
98 |
+
margin: -10px 0 0 0px;
|
99 |
+
text-align: center;
|
100 |
+
}
|
101 |
+
|
102 |
+
div.sphinxsidebarwrapper h1.logo {
|
103 |
+
margin-top: -10px;
|
104 |
+
text-align: center;
|
105 |
+
margin-bottom: 5px;
|
106 |
+
text-align: left;
|
107 |
+
}
|
108 |
+
|
109 |
+
div.sphinxsidebarwrapper h1.logo-name {
|
110 |
+
margin-top: 0px;
|
111 |
+
}
|
112 |
+
|
113 |
+
div.sphinxsidebarwrapper p.blurb {
|
114 |
+
margin-top: 0;
|
115 |
+
font-style: normal;
|
116 |
+
}
|
117 |
+
|
118 |
+
div.sphinxsidebar h3,
|
119 |
+
div.sphinxsidebar h4 {
|
120 |
+
font-family: 'Garamond', 'Georgia', serif;
|
121 |
+
color: #444;
|
122 |
+
font-size: 24px;
|
123 |
+
font-weight: normal;
|
124 |
+
margin: 0 0 5px 0;
|
125 |
+
padding: 0;
|
126 |
+
}
|
127 |
+
|
128 |
+
div.sphinxsidebar h4 {
|
129 |
+
font-size: 20px;
|
130 |
+
}
|
131 |
+
|
132 |
+
div.sphinxsidebar h3 a {
|
133 |
+
color: #444;
|
134 |
+
}
|
135 |
+
|
136 |
+
div.sphinxsidebar p.logo a,
|
137 |
+
div.sphinxsidebar h3 a,
|
138 |
+
div.sphinxsidebar p.logo a:hover,
|
139 |
+
div.sphinxsidebar h3 a:hover {
|
140 |
+
border: none;
|
141 |
+
}
|
142 |
+
|
143 |
+
div.sphinxsidebar p {
|
144 |
+
color: #555;
|
145 |
+
margin: 10px 0;
|
146 |
+
}
|
147 |
+
|
148 |
+
div.sphinxsidebar ul {
|
149 |
+
margin: 10px 0;
|
150 |
+
padding: 0;
|
151 |
+
color: #000;
|
152 |
+
}
|
153 |
+
|
154 |
+
div.sphinxsidebar ul li.toctree-l1 > a {
|
155 |
+
font-size: 120%;
|
156 |
+
}
|
157 |
+
|
158 |
+
div.sphinxsidebar ul li.toctree-l2 > a {
|
159 |
+
font-size: 110%;
|
160 |
+
}
|
161 |
+
|
162 |
+
div.sphinxsidebar input {
|
163 |
+
border: 1px solid #CCC;
|
164 |
+
font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro', serif;
|
165 |
+
font-size: 1em;
|
166 |
+
}
|
167 |
+
|
168 |
+
div.sphinxsidebar hr {
|
169 |
+
border: none;
|
170 |
+
height: 1px;
|
171 |
+
color: #999;
|
172 |
+
background: #999;
|
173 |
+
|
174 |
+
text-align: left;
|
175 |
+
margin-left: 0;
|
176 |
+
width: 50%;
|
177 |
+
}
|
178 |
+
|
179 |
+
/* -- body styles ----------------------------------------------------------- */
|
180 |
+
|
181 |
+
a {
|
182 |
+
color: #004B6B;
|
183 |
+
text-decoration: underline;
|
184 |
+
}
|
185 |
+
|
186 |
+
a:hover {
|
187 |
+
color: #6D4100;
|
188 |
+
text-decoration: underline;
|
189 |
+
}
|
190 |
+
|
191 |
+
div.body h1,
|
192 |
+
div.body h2,
|
193 |
+
div.body h3,
|
194 |
+
div.body h4,
|
195 |
+
div.body h5,
|
196 |
+
div.body h6 {
|
197 |
+
font-family: 'Garamond', 'Georgia', serif;
|
198 |
+
font-weight: normal;
|
199 |
+
margin: 30px 0px 10px 0px;
|
200 |
+
padding: 0;
|
201 |
+
}
|
202 |
+
|
203 |
+
div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; }
|
204 |
+
div.body h2 { font-size: 180%; }
|
205 |
+
div.body h3 { font-size: 150%; }
|
206 |
+
div.body h4 { font-size: 130%; }
|
207 |
+
div.body h5 { font-size: 100%; }
|
208 |
+
div.body h6 { font-size: 100%; }
|
209 |
+
|
210 |
+
a.headerlink {
|
211 |
+
color: #DDD;
|
212 |
+
padding: 0 4px;
|
213 |
+
text-decoration: none;
|
214 |
+
}
|
215 |
+
|
216 |
+
a.headerlink:hover {
|
217 |
+
color: #444;
|
218 |
+
background: #EAEAEA;
|
219 |
+
}
|
220 |
+
|
221 |
+
div.body p, div.body dd, div.body li {
|
222 |
+
line-height: 1.4em;
|
223 |
+
}
|
224 |
+
|
225 |
+
div.admonition {
|
226 |
+
margin: 20px 0px;
|
227 |
+
padding: 10px 30px;
|
228 |
+
background-color: #FCC;
|
229 |
+
border: 1px solid #FAA;
|
230 |
+
}
|
231 |
+
|
232 |
+
div.admonition tt.xref, div.admonition a tt {
|
233 |
+
border-bottom: 1px solid #fafafa;
|
234 |
+
}
|
235 |
+
|
236 |
+
dd div.admonition {
|
237 |
+
margin-left: -60px;
|
238 |
+
padding-left: 60px;
|
239 |
+
}
|
240 |
+
|
241 |
+
div.admonition p.admonition-title {
|
242 |
+
font-family: 'Garamond', 'Georgia', serif;
|
243 |
+
font-weight: normal;
|
244 |
+
font-size: 24px;
|
245 |
+
margin: 0 0 10px 0;
|
246 |
+
padding: 0;
|
247 |
+
line-height: 1;
|
248 |
+
}
|
249 |
+
|
250 |
+
div.admonition p.last {
|
251 |
+
margin-bottom: 0;
|
252 |
+
}
|
253 |
+
|
254 |
+
div.highlight {
|
255 |
+
background-color: white;
|
256 |
+
}
|
257 |
+
|
258 |
+
dt:target, .highlight {
|
259 |
+
background: #FAF3E8;
|
260 |
+
}
|
261 |
+
|
262 |
+
div.note {
|
263 |
+
background-color: #EEE;
|
264 |
+
border: 1px solid #CCC;
|
265 |
+
}
|
266 |
+
|
267 |
+
div.seealso {
|
268 |
+
background-color: #EEE;
|
269 |
+
border: 1px solid #CCC;
|
270 |
+
}
|
271 |
+
|
272 |
+
div.topic {
|
273 |
+
background-color: #eee;
|
274 |
+
}
|
275 |
+
|
276 |
+
p.admonition-title {
|
277 |
+
display: inline;
|
278 |
+
}
|
279 |
+
|
280 |
+
p.admonition-title:after {
|
281 |
+
content: ":";
|
282 |
+
}
|
283 |
+
|
284 |
+
pre, tt, code {
|
285 |
+
font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
286 |
+
font-size: 0.9em;
|
287 |
+
}
|
288 |
+
|
289 |
+
.hll {
|
290 |
+
background-color: #FFC;
|
291 |
+
margin: 0 -12px;
|
292 |
+
padding: 0 12px;
|
293 |
+
display: block;
|
294 |
+
}
|
295 |
+
|
296 |
+
img.screenshot {
|
297 |
+
}
|
298 |
+
|
299 |
+
tt.descname, tt.descclassname, code.descname, code.descclassname {
|
300 |
+
font-size: 0.95em;
|
301 |
+
}
|
302 |
+
|
303 |
+
tt.descname, code.descname {
|
304 |
+
padding-right: 0.08em;
|
305 |
+
}
|
306 |
+
|
307 |
+
img.screenshot {
|
308 |
+
-moz-box-shadow: 2px 2px 4px #eee;
|
309 |
+
-webkit-box-shadow: 2px 2px 4px #eee;
|
310 |
+
box-shadow: 2px 2px 4px #eee;
|
311 |
+
}
|
312 |
+
|
313 |
+
table.docutils {
|
314 |
+
border: 1px solid #888;
|
315 |
+
-moz-box-shadow: 2px 2px 4px #eee;
|
316 |
+
-webkit-box-shadow: 2px 2px 4px #eee;
|
317 |
+
box-shadow: 2px 2px 4px #eee;
|
318 |
+
}
|
319 |
+
|
320 |
+
table.docutils td, table.docutils th {
|
321 |
+
border: 1px solid #888;
|
322 |
+
padding: 0.25em 0.7em;
|
323 |
+
}
|
324 |
+
|
325 |
+
table.field-list, table.footnote {
|
326 |
+
border: none;
|
327 |
+
-moz-box-shadow: none;
|
328 |
+
-webkit-box-shadow: none;
|
329 |
+
box-shadow: none;
|
330 |
+
}
|
331 |
+
|
332 |
+
table.footnote {
|
333 |
+
margin: 15px 0;
|
334 |
+
width: 100%;
|
335 |
+
border: 1px solid #EEE;
|
336 |
+
background: #FDFDFD;
|
337 |
+
font-size: 0.9em;
|
338 |
+
}
|
339 |
+
|
340 |
+
table.footnote + table.footnote {
|
341 |
+
margin-top: -15px;
|
342 |
+
border-top: none;
|
343 |
+
}
|
344 |
+
|
345 |
+
table.field-list th {
|
346 |
+
padding: 0 0.8em 0 0;
|
347 |
+
}
|
348 |
+
|
349 |
+
table.field-list td {
|
350 |
+
padding: 0;
|
351 |
+
}
|
352 |
+
|
353 |
+
table.footnote td.label {
|
354 |
+
width: 0px;
|
355 |
+
padding: 0.3em 0 0.3em 0.5em;
|
356 |
+
}
|
357 |
+
|
358 |
+
table.footnote td {
|
359 |
+
padding: 0.3em 0.5em;
|
360 |
+
}
|
361 |
+
|
362 |
+
dl {
|
363 |
+
margin: 0;
|
364 |
+
padding: 0;
|
365 |
+
}
|
366 |
+
|
367 |
+
dl dd {
|
368 |
+
margin-left: 30px;
|
369 |
+
}
|
370 |
+
|
371 |
+
blockquote {
|
372 |
+
margin: 0 0 0 30px;
|
373 |
+
padding: 0;
|
374 |
+
}
|
375 |
+
|
376 |
+
ul, ol {
|
377 |
+
margin: 10px 0 10px 30px;
|
378 |
+
padding: 0;
|
379 |
+
}
|
380 |
+
|
381 |
+
pre {
|
382 |
+
background: #EEE;
|
383 |
+
padding: 7px 30px;
|
384 |
+
margin: 15px 0px;
|
385 |
+
line-height: 1.3em;
|
386 |
+
}
|
387 |
+
|
388 |
+
dl pre, blockquote pre, li pre {
|
389 |
+
margin-left: 0;
|
390 |
+
padding-left: 30px;
|
391 |
+
}
|
392 |
+
|
393 |
+
dl dl pre {
|
394 |
+
margin-left: -90px;
|
395 |
+
padding-left: 90px;
|
396 |
+
}
|
397 |
+
|
398 |
+
tt, code {
|
399 |
+
background-color: #ecf0f3;
|
400 |
+
color: #222;
|
401 |
+
/* padding: 1px 2px; */
|
402 |
+
}
|
403 |
+
|
404 |
+
tt.xref, code.xref, a tt {
|
405 |
+
background-color: #FBFBFB;
|
406 |
+
border-bottom: 1px solid white;
|
407 |
+
}
|
408 |
+
|
409 |
+
a.reference {
|
410 |
+
text-decoration: none;
|
411 |
+
border-bottom: 1px dotted #004B6B;
|
412 |
+
}
|
413 |
+
|
414 |
+
a.reference:hover {
|
415 |
+
border-bottom: 1px solid #6D4100;
|
416 |
+
}
|
417 |
+
|
418 |
+
a.footnote-reference {
|
419 |
+
text-decoration: none;
|
420 |
+
font-size: 0.7em;
|
421 |
+
vertical-align: top;
|
422 |
+
border-bottom: 1px dotted #004B6B;
|
423 |
+
}
|
424 |
+
|
425 |
+
a.footnote-reference:hover {
|
426 |
+
border-bottom: 1px solid #6D4100;
|
427 |
+
}
|
428 |
+
|
429 |
+
a:hover tt, a:hover code {
|
430 |
+
background: #EEE;
|
431 |
+
}
|
432 |
+
|
433 |
+
|
434 |
+
@media screen and (max-width: 870px) {
|
435 |
+
|
436 |
+
div.sphinxsidebar {
|
437 |
+
display: none;
|
438 |
+
}
|
439 |
+
|
440 |
+
div.document {
|
441 |
+
width: 100%;
|
442 |
+
|
443 |
+
}
|
444 |
+
|
445 |
+
div.documentwrapper {
|
446 |
+
margin-left: 0;
|
447 |
+
margin-top: 0;
|
448 |
+
margin-right: 0;
|
449 |
+
margin-bottom: 0;
|
450 |
+
}
|
451 |
+
|
452 |
+
div.bodywrapper {
|
453 |
+
margin-top: 0;
|
454 |
+
margin-right: 0;
|
455 |
+
margin-bottom: 0;
|
456 |
+
margin-left: 0;
|
457 |
+
}
|
458 |
+
|
459 |
+
ul {
|
460 |
+
margin-left: 0;
|
461 |
+
}
|
462 |
+
|
463 |
+
.document {
|
464 |
+
width: auto;
|
465 |
+
}
|
466 |
+
|
467 |
+
.footer {
|
468 |
+
width: auto;
|
469 |
+
}
|
470 |
+
|
471 |
+
.bodywrapper {
|
472 |
+
margin: 0;
|
473 |
+
}
|
474 |
+
|
475 |
+
.footer {
|
476 |
+
width: auto;
|
477 |
+
}
|
478 |
+
|
479 |
+
.github {
|
480 |
+
display: none;
|
481 |
+
}
|
482 |
+
|
483 |
+
|
484 |
+
|
485 |
+
}
|
486 |
+
|
487 |
+
|
488 |
+
|
489 |
+
@media screen and (max-width: 875px) {
|
490 |
+
|
491 |
+
body {
|
492 |
+
margin: 0;
|
493 |
+
padding: 20px 30px;
|
494 |
+
}
|
495 |
+
|
496 |
+
div.documentwrapper {
|
497 |
+
float: none;
|
498 |
+
background: white;
|
499 |
+
}
|
500 |
+
|
501 |
+
div.sphinxsidebar {
|
502 |
+
display: block;
|
503 |
+
float: none;
|
504 |
+
width: 102.5%;
|
505 |
+
margin: 50px -30px -20px -30px;
|
506 |
+
padding: 10px 20px;
|
507 |
+
background: #333;
|
508 |
+
color: #FFF;
|
509 |
+
}
|
510 |
+
|
511 |
+
div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p,
|
512 |
+
div.sphinxsidebar h3 a {
|
513 |
+
color: white;
|
514 |
+
}
|
515 |
+
|
516 |
+
div.sphinxsidebar a {
|
517 |
+
color: #AAA;
|
518 |
+
}
|
519 |
+
|
520 |
+
div.sphinxsidebar p.logo {
|
521 |
+
display: none;
|
522 |
+
}
|
523 |
+
|
524 |
+
div.document {
|
525 |
+
width: 100%;
|
526 |
+
margin: 0;
|
527 |
+
}
|
528 |
+
|
529 |
+
div.footer {
|
530 |
+
display: none;
|
531 |
+
}
|
532 |
+
|
533 |
+
div.bodywrapper {
|
534 |
+
margin: 0;
|
535 |
+
}
|
536 |
+
|
537 |
+
div.body {
|
538 |
+
min-height: 0;
|
539 |
+
padding: 0;
|
540 |
+
}
|
541 |
+
|
542 |
+
.rtd_doc_footer {
|
543 |
+
display: none;
|
544 |
+
}
|
545 |
+
|
546 |
+
.document {
|
547 |
+
width: auto;
|
548 |
+
}
|
549 |
+
|
550 |
+
.footer {
|
551 |
+
width: auto;
|
552 |
+
}
|
553 |
+
|
554 |
+
.footer {
|
555 |
+
width: auto;
|
556 |
+
}
|
557 |
+
|
558 |
+
.github {
|
559 |
+
display: none;
|
560 |
+
}
|
561 |
+
}
|
562 |
+
|
563 |
+
|
564 |
+
/* misc. */
|
565 |
+
|
566 |
+
.revsys-inline {
|
567 |
+
display: none!important;
|
568 |
+
}
|
569 |
+
|
570 |
+
/* Make nested-list/multi-paragraph items look better in Releases changelog
|
571 |
+
* pages. Without this, docutils' magical list fuckery causes inconsistent
|
572 |
+
* formatting between different release sub-lists.
|
573 |
+
*/
|
574 |
+
div#changelog > div.section > ul > li > p:only-child {
|
575 |
+
margin-bottom: 0;
|
576 |
+
}
|
577 |
+
|
578 |
+
/* Hide fugly table cell borders in ..bibliography:: directive output */
|
579 |
+
table.docutils.citation, table.docutils.citation td, table.docutils.citation th {
|
580 |
+
border: none;
|
581 |
+
/* Below needed in some edge cases; if not applied, bottom shadows appear */
|
582 |
+
-moz-box-shadow: none;
|
583 |
+
-webkit-box-shadow: none;
|
584 |
+
box-shadow: none;
|
585 |
+
}
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/basic.css
ADDED
@@ -0,0 +1,599 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* basic.css
|
3 |
+
* ~~~~~~~~~
|
4 |
+
*
|
5 |
+
* Sphinx stylesheet -- basic theme.
|
6 |
+
*
|
7 |
+
* :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
|
8 |
+
* :license: BSD, see LICENSE for details.
|
9 |
+
*
|
10 |
+
*/
|
11 |
+
|
12 |
+
/* -- main layout ----------------------------------------------------------- */
|
13 |
+
|
14 |
+
div.clearer {
|
15 |
+
clear: both;
|
16 |
+
}
|
17 |
+
|
18 |
+
/* -- relbar ---------------------------------------------------------------- */
|
19 |
+
|
20 |
+
div.related {
|
21 |
+
width: 100%;
|
22 |
+
font-size: 90%;
|
23 |
+
}
|
24 |
+
|
25 |
+
div.related h3 {
|
26 |
+
display: none;
|
27 |
+
}
|
28 |
+
|
29 |
+
div.related ul {
|
30 |
+
margin: 0;
|
31 |
+
padding: 0 0 0 10px;
|
32 |
+
list-style: none;
|
33 |
+
}
|
34 |
+
|
35 |
+
div.related li {
|
36 |
+
display: inline;
|
37 |
+
}
|
38 |
+
|
39 |
+
div.related li.right {
|
40 |
+
float: right;
|
41 |
+
margin-right: 5px;
|
42 |
+
}
|
43 |
+
|
44 |
+
/* -- sidebar --------------------------------------------------------------- */
|
45 |
+
|
46 |
+
div.sphinxsidebarwrapper {
|
47 |
+
padding: 10px 5px 0 10px;
|
48 |
+
}
|
49 |
+
|
50 |
+
div.sphinxsidebar {
|
51 |
+
float: left;
|
52 |
+
width: 230px;
|
53 |
+
margin-left: -100%;
|
54 |
+
font-size: 90%;
|
55 |
+
}
|
56 |
+
|
57 |
+
div.sphinxsidebar ul {
|
58 |
+
list-style: none;
|
59 |
+
}
|
60 |
+
|
61 |
+
div.sphinxsidebar ul ul,
|
62 |
+
div.sphinxsidebar ul.want-points {
|
63 |
+
margin-left: 20px;
|
64 |
+
list-style: square;
|
65 |
+
}
|
66 |
+
|
67 |
+
div.sphinxsidebar ul ul {
|
68 |
+
margin-top: 0;
|
69 |
+
margin-bottom: 0;
|
70 |
+
}
|
71 |
+
|
72 |
+
div.sphinxsidebar form {
|
73 |
+
margin-top: 10px;
|
74 |
+
}
|
75 |
+
|
76 |
+
div.sphinxsidebar input {
|
77 |
+
border: 1px solid #98dbcc;
|
78 |
+
font-family: sans-serif;
|
79 |
+
font-size: 1em;
|
80 |
+
}
|
81 |
+
|
82 |
+
div.sphinxsidebar #searchbox input[type="text"] {
|
83 |
+
width: 170px;
|
84 |
+
}
|
85 |
+
|
86 |
+
div.sphinxsidebar #searchbox input[type="submit"] {
|
87 |
+
width: 30px;
|
88 |
+
}
|
89 |
+
|
90 |
+
img {
|
91 |
+
border: 0;
|
92 |
+
max-width: 100%;
|
93 |
+
}
|
94 |
+
|
95 |
+
/* -- search page ----------------------------------------------------------- */
|
96 |
+
|
97 |
+
ul.search {
|
98 |
+
margin: 10px 0 0 20px;
|
99 |
+
padding: 0;
|
100 |
+
}
|
101 |
+
|
102 |
+
ul.search li {
|
103 |
+
padding: 5px 0 5px 20px;
|
104 |
+
background-image: url(file.png);
|
105 |
+
background-repeat: no-repeat;
|
106 |
+
background-position: 0 7px;
|
107 |
+
}
|
108 |
+
|
109 |
+
ul.search li a {
|
110 |
+
font-weight: bold;
|
111 |
+
}
|
112 |
+
|
113 |
+
ul.search li div.context {
|
114 |
+
color: #888;
|
115 |
+
margin: 2px 0 0 30px;
|
116 |
+
text-align: left;
|
117 |
+
}
|
118 |
+
|
119 |
+
ul.keywordmatches li.goodmatch a {
|
120 |
+
font-weight: bold;
|
121 |
+
}
|
122 |
+
|
123 |
+
/* -- index page ------------------------------------------------------------ */
|
124 |
+
|
125 |
+
table.contentstable {
|
126 |
+
width: 90%;
|
127 |
+
}
|
128 |
+
|
129 |
+
table.contentstable p.biglink {
|
130 |
+
line-height: 150%;
|
131 |
+
}
|
132 |
+
|
133 |
+
a.biglink {
|
134 |
+
font-size: 1.3em;
|
135 |
+
}
|
136 |
+
|
137 |
+
span.linkdescr {
|
138 |
+
font-style: italic;
|
139 |
+
padding-top: 5px;
|
140 |
+
font-size: 90%;
|
141 |
+
}
|
142 |
+
|
143 |
+
/* -- general index --------------------------------------------------------- */
|
144 |
+
|
145 |
+
table.indextable {
|
146 |
+
width: 100%;
|
147 |
+
}
|
148 |
+
|
149 |
+
table.indextable td {
|
150 |
+
text-align: left;
|
151 |
+
vertical-align: top;
|
152 |
+
}
|
153 |
+
|
154 |
+
table.indextable dl, table.indextable dd {
|
155 |
+
margin-top: 0;
|
156 |
+
margin-bottom: 0;
|
157 |
+
}
|
158 |
+
|
159 |
+
table.indextable tr.pcap {
|
160 |
+
height: 10px;
|
161 |
+
}
|
162 |
+
|
163 |
+
table.indextable tr.cap {
|
164 |
+
margin-top: 10px;
|
165 |
+
background-color: #f2f2f2;
|
166 |
+
}
|
167 |
+
|
168 |
+
img.toggler {
|
169 |
+
margin-right: 3px;
|
170 |
+
margin-top: 3px;
|
171 |
+
cursor: pointer;
|
172 |
+
}
|
173 |
+
|
174 |
+
div.modindex-jumpbox {
|
175 |
+
border-top: 1px solid #ddd;
|
176 |
+
border-bottom: 1px solid #ddd;
|
177 |
+
margin: 1em 0 1em 0;
|
178 |
+
padding: 0.4em;
|
179 |
+
}
|
180 |
+
|
181 |
+
div.genindex-jumpbox {
|
182 |
+
border-top: 1px solid #ddd;
|
183 |
+
border-bottom: 1px solid #ddd;
|
184 |
+
margin: 1em 0 1em 0;
|
185 |
+
padding: 0.4em;
|
186 |
+
}
|
187 |
+
|
188 |
+
/* -- general body styles --------------------------------------------------- */
|
189 |
+
|
190 |
+
a.headerlink {
|
191 |
+
visibility: hidden;
|
192 |
+
}
|
193 |
+
|
194 |
+
h1:hover > a.headerlink,
|
195 |
+
h2:hover > a.headerlink,
|
196 |
+
h3:hover > a.headerlink,
|
197 |
+
h4:hover > a.headerlink,
|
198 |
+
h5:hover > a.headerlink,
|
199 |
+
h6:hover > a.headerlink,
|
200 |
+
dt:hover > a.headerlink,
|
201 |
+
caption:hover > a.headerlink,
|
202 |
+
p.caption:hover > a.headerlink,
|
203 |
+
div.code-block-caption:hover > a.headerlink {
|
204 |
+
visibility: visible;
|
205 |
+
}
|
206 |
+
|
207 |
+
div.body p.caption {
|
208 |
+
text-align: inherit;
|
209 |
+
}
|
210 |
+
|
211 |
+
div.body td {
|
212 |
+
text-align: left;
|
213 |
+
}
|
214 |
+
|
215 |
+
.field-list ul {
|
216 |
+
padding-left: 1em;
|
217 |
+
}
|
218 |
+
|
219 |
+
.first {
|
220 |
+
margin-top: 0 !important;
|
221 |
+
}
|
222 |
+
|
223 |
+
p.rubric {
|
224 |
+
margin-top: 30px;
|
225 |
+
font-weight: bold;
|
226 |
+
}
|
227 |
+
|
228 |
+
img.align-left, .figure.align-left, object.align-left {
|
229 |
+
clear: left;
|
230 |
+
float: left;
|
231 |
+
margin-right: 1em;
|
232 |
+
}
|
233 |
+
|
234 |
+
img.align-right, .figure.align-right, object.align-right {
|
235 |
+
clear: right;
|
236 |
+
float: right;
|
237 |
+
margin-left: 1em;
|
238 |
+
}
|
239 |
+
|
240 |
+
img.align-center, .figure.align-center, object.align-center {
|
241 |
+
display: block;
|
242 |
+
margin-left: auto;
|
243 |
+
margin-right: auto;
|
244 |
+
}
|
245 |
+
|
246 |
+
.align-left {
|
247 |
+
text-align: left;
|
248 |
+
}
|
249 |
+
|
250 |
+
.align-center {
|
251 |
+
text-align: center;
|
252 |
+
}
|
253 |
+
|
254 |
+
.align-right {
|
255 |
+
text-align: right;
|
256 |
+
}
|
257 |
+
|
258 |
+
/* -- sidebars -------------------------------------------------------------- */
|
259 |
+
|
260 |
+
div.sidebar {
|
261 |
+
margin: 0 0 0.5em 1em;
|
262 |
+
border: 1px solid #ddb;
|
263 |
+
padding: 7px 7px 0 7px;
|
264 |
+
background-color: #ffe;
|
265 |
+
width: 40%;
|
266 |
+
float: right;
|
267 |
+
}
|
268 |
+
|
269 |
+
p.sidebar-title {
|
270 |
+
font-weight: bold;
|
271 |
+
}
|
272 |
+
|
273 |
+
/* -- topics ---------------------------------------------------------------- */
|
274 |
+
|
275 |
+
div.topic {
|
276 |
+
border: 1px solid #ccc;
|
277 |
+
padding: 7px 7px 0 7px;
|
278 |
+
margin: 10px 0 10px 0;
|
279 |
+
}
|
280 |
+
|
281 |
+
p.topic-title {
|
282 |
+
font-size: 1.1em;
|
283 |
+
font-weight: bold;
|
284 |
+
margin-top: 10px;
|
285 |
+
}
|
286 |
+
|
287 |
+
/* -- admonitions ----------------------------------------------------------- */
|
288 |
+
|
289 |
+
div.admonition {
|
290 |
+
margin-top: 10px;
|
291 |
+
margin-bottom: 10px;
|
292 |
+
padding: 7px;
|
293 |
+
}
|
294 |
+
|
295 |
+
div.admonition dt {
|
296 |
+
font-weight: bold;
|
297 |
+
}
|
298 |
+
|
299 |
+
div.admonition dl {
|
300 |
+
margin-bottom: 0;
|
301 |
+
}
|
302 |
+
|
303 |
+
p.admonition-title {
|
304 |
+
margin: 0px 10px 5px 0px;
|
305 |
+
font-weight: bold;
|
306 |
+
}
|
307 |
+
|
308 |
+
div.body p.centered {
|
309 |
+
text-align: center;
|
310 |
+
margin-top: 25px;
|
311 |
+
}
|
312 |
+
|
313 |
+
/* -- tables ---------------------------------------------------------------- */
|
314 |
+
|
315 |
+
table.docutils {
|
316 |
+
border: 0;
|
317 |
+
border-collapse: collapse;
|
318 |
+
}
|
319 |
+
|
320 |
+
table caption span.caption-number {
|
321 |
+
font-style: italic;
|
322 |
+
}
|
323 |
+
|
324 |
+
table caption span.caption-text {
|
325 |
+
}
|
326 |
+
|
327 |
+
table.docutils td, table.docutils th {
|
328 |
+
padding: 1px 8px 1px 5px;
|
329 |
+
border-top: 0;
|
330 |
+
border-left: 0;
|
331 |
+
border-right: 0;
|
332 |
+
border-bottom: 1px solid #aaa;
|
333 |
+
}
|
334 |
+
|
335 |
+
table.field-list td, table.field-list th {
|
336 |
+
border: 0 !important;
|
337 |
+
}
|
338 |
+
|
339 |
+
table.footnote td, table.footnote th {
|
340 |
+
border: 0 !important;
|
341 |
+
}
|
342 |
+
|
343 |
+
th {
|
344 |
+
text-align: left;
|
345 |
+
padding-right: 5px;
|
346 |
+
}
|
347 |
+
|
348 |
+
table.citation {
|
349 |
+
border-left: solid 1px gray;
|
350 |
+
margin-left: 1px;
|
351 |
+
}
|
352 |
+
|
353 |
+
table.citation td {
|
354 |
+
border-bottom: none;
|
355 |
+
}
|
356 |
+
|
357 |
+
/* -- figures --------------------------------------------------------------- */
|
358 |
+
|
359 |
+
div.figure {
|
360 |
+
margin: 0.5em;
|
361 |
+
padding: 0.5em;
|
362 |
+
}
|
363 |
+
|
364 |
+
div.figure p.caption {
|
365 |
+
padding: 0.3em;
|
366 |
+
}
|
367 |
+
|
368 |
+
div.figure p.caption span.caption-number {
|
369 |
+
font-style: italic;
|
370 |
+
}
|
371 |
+
|
372 |
+
div.figure p.caption span.caption-text {
|
373 |
+
}
|
374 |
+
|
375 |
+
|
376 |
+
/* -- other body styles ----------------------------------------------------- */
|
377 |
+
|
378 |
+
ol.arabic {
|
379 |
+
list-style: decimal;
|
380 |
+
}
|
381 |
+
|
382 |
+
ol.loweralpha {
|
383 |
+
list-style: lower-alpha;
|
384 |
+
}
|
385 |
+
|
386 |
+
ol.upperalpha {
|
387 |
+
list-style: upper-alpha;
|
388 |
+
}
|
389 |
+
|
390 |
+
ol.lowerroman {
|
391 |
+
list-style: lower-roman;
|
392 |
+
}
|
393 |
+
|
394 |
+
ol.upperroman {
|
395 |
+
list-style: upper-roman;
|
396 |
+
}
|
397 |
+
|
398 |
+
dl {
|
399 |
+
margin-bottom: 15px;
|
400 |
+
}
|
401 |
+
|
402 |
+
dd p {
|
403 |
+
margin-top: 0px;
|
404 |
+
}
|
405 |
+
|
406 |
+
dd ul, dd table {
|
407 |
+
margin-bottom: 10px;
|
408 |
+
}
|
409 |
+
|
410 |
+
dd {
|
411 |
+
margin-top: 3px;
|
412 |
+
margin-bottom: 10px;
|
413 |
+
margin-left: 30px;
|
414 |
+
}
|
415 |
+
|
416 |
+
dt:target, .highlighted {
|
417 |
+
background-color: #fbe54e;
|
418 |
+
}
|
419 |
+
|
420 |
+
dl.glossary dt {
|
421 |
+
font-weight: bold;
|
422 |
+
font-size: 1.1em;
|
423 |
+
}
|
424 |
+
|
425 |
+
.field-list ul {
|
426 |
+
margin: 0;
|
427 |
+
padding-left: 1em;
|
428 |
+
}
|
429 |
+
|
430 |
+
.field-list p {
|
431 |
+
margin: 0;
|
432 |
+
}
|
433 |
+
|
434 |
+
.optional {
|
435 |
+
font-size: 1.3em;
|
436 |
+
}
|
437 |
+
|
438 |
+
.sig-paren {
|
439 |
+
font-size: larger;
|
440 |
+
}
|
441 |
+
|
442 |
+
.versionmodified {
|
443 |
+
font-style: italic;
|
444 |
+
}
|
445 |
+
|
446 |
+
.system-message {
|
447 |
+
background-color: #fda;
|
448 |
+
padding: 5px;
|
449 |
+
border: 3px solid red;
|
450 |
+
}
|
451 |
+
|
452 |
+
.footnote:target {
|
453 |
+
background-color: #ffa;
|
454 |
+
}
|
455 |
+
|
456 |
+
.line-block {
|
457 |
+
display: block;
|
458 |
+
margin-top: 1em;
|
459 |
+
margin-bottom: 1em;
|
460 |
+
}
|
461 |
+
|
462 |
+
.line-block .line-block {
|
463 |
+
margin-top: 0;
|
464 |
+
margin-bottom: 0;
|
465 |
+
margin-left: 1.5em;
|
466 |
+
}
|
467 |
+
|
468 |
+
.guilabel, .menuselection {
|
469 |
+
font-family: sans-serif;
|
470 |
+
}
|
471 |
+
|
472 |
+
.accelerator {
|
473 |
+
text-decoration: underline;
|
474 |
+
}
|
475 |
+
|
476 |
+
.classifier {
|
477 |
+
font-style: oblique;
|
478 |
+
}
|
479 |
+
|
480 |
+
abbr, acronym {
|
481 |
+
border-bottom: dotted 1px;
|
482 |
+
cursor: help;
|
483 |
+
}
|
484 |
+
|
485 |
+
/* -- code displays --------------------------------------------------------- */
|
486 |
+
|
487 |
+
pre {
|
488 |
+
overflow: auto;
|
489 |
+
overflow-y: hidden; /* fixes display issues on Chrome browsers */
|
490 |
+
}
|
491 |
+
|
492 |
+
td.linenos pre {
|
493 |
+
padding: 5px 0px;
|
494 |
+
border: 0;
|
495 |
+
background-color: transparent;
|
496 |
+
color: #aaa;
|
497 |
+
}
|
498 |
+
|
499 |
+
table.highlighttable {
|
500 |
+
margin-left: 0.5em;
|
501 |
+
}
|
502 |
+
|
503 |
+
table.highlighttable td {
|
504 |
+
padding: 0 0.5em 0 0.5em;
|
505 |
+
}
|
506 |
+
|
507 |
+
div.code-block-caption {
|
508 |
+
padding: 2px 5px;
|
509 |
+
font-size: small;
|
510 |
+
}
|
511 |
+
|
512 |
+
div.code-block-caption code {
|
513 |
+
background-color: transparent;
|
514 |
+
}
|
515 |
+
|
516 |
+
div.code-block-caption + div > div.highlight > pre {
|
517 |
+
margin-top: 0;
|
518 |
+
}
|
519 |
+
|
520 |
+
div.code-block-caption span.caption-number {
|
521 |
+
padding: 0.1em 0.3em;
|
522 |
+
font-style: italic;
|
523 |
+
}
|
524 |
+
|
525 |
+
div.code-block-caption span.caption-text {
|
526 |
+
}
|
527 |
+
|
528 |
+
div.literal-block-wrapper {
|
529 |
+
padding: 1em 1em 0;
|
530 |
+
}
|
531 |
+
|
532 |
+
div.literal-block-wrapper div.highlight {
|
533 |
+
margin: 0;
|
534 |
+
}
|
535 |
+
|
536 |
+
code.descname {
|
537 |
+
background-color: transparent;
|
538 |
+
font-weight: bold;
|
539 |
+
font-size: 1.2em;
|
540 |
+
}
|
541 |
+
|
542 |
+
code.descclassname {
|
543 |
+
background-color: transparent;
|
544 |
+
}
|
545 |
+
|
546 |
+
code.xref, a code {
|
547 |
+
background-color: transparent;
|
548 |
+
font-weight: bold;
|
549 |
+
}
|
550 |
+
|
551 |
+
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
|
552 |
+
background-color: transparent;
|
553 |
+
}
|
554 |
+
|
555 |
+
.viewcode-link {
|
556 |
+
float: right;
|
557 |
+
}
|
558 |
+
|
559 |
+
.viewcode-back {
|
560 |
+
float: right;
|
561 |
+
font-family: sans-serif;
|
562 |
+
}
|
563 |
+
|
564 |
+
div.viewcode-block:target {
|
565 |
+
margin: -1px -10px;
|
566 |
+
padding: 0 10px;
|
567 |
+
}
|
568 |
+
|
569 |
+
/* -- math display ---------------------------------------------------------- */
|
570 |
+
|
571 |
+
img.math {
|
572 |
+
vertical-align: middle;
|
573 |
+
}
|
574 |
+
|
575 |
+
div.body div.math p {
|
576 |
+
text-align: center;
|
577 |
+
}
|
578 |
+
|
579 |
+
span.eqno {
|
580 |
+
float: right;
|
581 |
+
}
|
582 |
+
|
583 |
+
/* -- printout stylesheet --------------------------------------------------- */
|
584 |
+
|
585 |
+
@media print {
|
586 |
+
div.document,
|
587 |
+
div.documentwrapper,
|
588 |
+
div.bodywrapper {
|
589 |
+
margin: 0 !important;
|
590 |
+
width: 100%;
|
591 |
+
}
|
592 |
+
|
593 |
+
div.sphinxsidebar,
|
594 |
+
div.related,
|
595 |
+
div.footer,
|
596 |
+
#top-link {
|
597 |
+
display: none;
|
598 |
+
}
|
599 |
+
}
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/comment-bright.png
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/comment-close.png
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/comment.png
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/css/badge_only.css
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../font/fontawesome_webfont.eot");src:url("../font/fontawesome_webfont.eot?#iefix") format("embedded-opentype"),url("../font/fontawesome_webfont.woff") format("woff"),url("../font/fontawesome_webfont.ttf") format("truetype"),url("../font/fontawesome_webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:0.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:before{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;border-top:solid 10px #343131;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}img{width:100%;height:auto}}
|
2 |
+
/*# sourceMappingURL=badge_only.css.map */
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/css/theme.css
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}[hidden]{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:hover,a:active{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;color:#000;text-decoration:none}mark{background:#ff0;color:#000;font-style:italic;font-weight:bold}pre,code,.rst-content tt,.rst-content code,kbd,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}ul,ol,dl{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:0;margin:0;padding:0}label{cursor:pointer}legend{border:0;*margin-left:-7px;padding:0;white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top;resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:0.2em 0;background:#ccc;color:#000;padding:0.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none !important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{html,body,section{background:none !important}*{box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,.rst-content .toctree-wrapper p.caption,h3{orphans:3;widows:3}h2,.rst-content .toctree-wrapper p.caption,h3{page-break-after:avoid}}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}/*!
|
2 |
+
* Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
|
3 |
+
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
|
4 |
+
*/@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.2.0");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff?v=4.2.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.2.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:0.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:0.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.wy-menu-vertical li span.pull-left.toctree-expand,.wy-menu-vertical li.on a span.pull-left.toctree-expand,.wy-menu-vertical li.current>a span.pull-left.toctree-expand,.rst-content .pull-left.admonition-title,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content dl dt .pull-left.headerlink,.rst-content p.caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.rst-content code.download span.pull-left:first-child,.pull-left.icon{margin-right:.3em}.fa.pull-right,.wy-menu-vertical li span.pull-right.toctree-expand,.wy-menu-vertical li.on a span.pull-right.toctree-expand,.wy-menu-vertical li.current>a span.pull-right.toctree-expand,.rst-content .pull-right.admonition-title,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content dl dt .pull-right.headerlink,.rst-content p.caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.rst-content code.download span.pull-right:first-child,.pull-right.icon{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.rst-content .admonition-title:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.wy-dropdown .caret:before,.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li span.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context{font-family:inherit}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before{font-family:"FontAwesome";display:inline-block;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa,a .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,a .rst-content .admonition-title,.rst-content a .admonition-title,a .rst-content h1 .headerlink,.rst-content h1 a .headerlink,a .rst-content h2 .headerlink,.rst-content h2 a .headerlink,a .rst-content h3 .headerlink,.rst-content h3 a .headerlink,a .rst-content h4 .headerlink,.rst-content h4 a .headerlink,a .rst-content h5 .headerlink,.rst-content h5 a .headerlink,a .rst-content h6 .headerlink,.rst-content h6 a .headerlink,a .rst-content dl dt .headerlink,.rst-content dl dt a .headerlink,a .rst-content p.caption .headerlink,.rst-content p.caption a .headerlink,a .rst-content tt.download span:first-child,.rst-content tt.download a span:first-child,a .rst-content code.download span:first-child,.rst-content code.download a span:first-child,a .icon{display:inline-block;text-decoration:inherit}.btn .fa,.btn .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .btn span.toctree-expand,.btn .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .btn span.toctree-expand,.btn .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .btn span.toctree-expand,.btn .rst-content .admonition-title,.rst-content .btn .admonition-title,.btn .rst-content h1 .headerlink,.rst-content h1 .btn .headerlink,.btn .rst-content h2 .headerlink,.rst-content h2 .btn .headerlink,.btn .rst-content h3 .headerlink,.rst-content h3 .btn .headerlink,.btn .rst-content h4 .headerlink,.rst-content h4 .btn .headerlink,.btn .rst-content h5 .headerlink,.rst-content h5 .btn .headerlink,.btn .rst-content h6 .headerlink,.rst-content h6 .btn .headerlink,.btn .rst-content dl dt .headerlink,.rst-content dl dt .btn .headerlink,.btn .rst-content p.caption .headerlink,.rst-content p.caption .btn .headerlink,.btn .rst-content tt.download span:first-child,.rst-content tt.download .btn span:first-child,.btn .rst-content code.download span:first-child,.rst-content code.download .btn span:first-child,.btn .icon,.nav .fa,.nav .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .nav span.toctree-expand,.nav .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .nav span.toctree-expand,.nav .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .nav span.toctree-expand,.nav .rst-content .admonition-title,.rst-content .nav .admonition-title,.nav .rst-content h1 .headerlink,.rst-content h1 .nav .headerlink,.nav .rst-content h2 .headerlink,.rst-content h2 .nav .headerlink,.nav .rst-content h3 .headerlink,.rst-content h3 .nav .headerlink,.nav .rst-content h4 .headerlink,.rst-content h4 .nav .headerlink,.nav .rst-content h5 .headerlink,.rst-content h5 .nav .headerlink,.nav .rst-content h6 .headerlink,.rst-content h6 .nav .headerlink,.nav .rst-content dl dt .headerlink,.rst-content dl dt .nav .headerlink,.nav .rst-content p.caption .headerlink,.rst-content p.caption .nav .headerlink,.nav .rst-content tt.download span:first-child,.rst-content tt.download .nav span:first-child,.nav .rst-content code.download span:first-child,.rst-content code.download .nav span:first-child,.nav .icon{display:inline}.btn .fa.fa-large,.btn .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .btn span.fa-large.toctree-expand,.btn .rst-content .fa-large.admonition-title,.rst-content .btn .fa-large.admonition-title,.btn .rst-content h1 .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.btn .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .btn .fa-large.headerlink,.btn .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .btn .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .btn span.fa-large:first-child,.btn .rst-content code.download span.fa-large:first-child,.rst-content code.download .btn span.fa-large:first-child,.btn .fa-large.icon,.nav .fa.fa-large,.nav .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .nav span.fa-large.toctree-expand,.nav .rst-content .fa-large.admonition-title,.rst-content .nav .fa-large.admonition-title,.nav .rst-content h1 .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.nav .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.nav .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .nav .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.nav .rst-content code.download span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.nav .fa-large.icon{line-height:0.9em}.btn .fa.fa-spin,.btn .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .btn span.fa-spin.toctree-expand,.btn .rst-content .fa-spin.admonition-title,.rst-content .btn .fa-spin.admonition-title,.btn .rst-content h1 .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.btn .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .btn .fa-spin.headerlink,.btn .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .btn .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .btn span.fa-spin:first-child,.btn .rst-content code.download span.fa-spin:first-child,.rst-content code.download .btn span.fa-spin:first-child,.btn .fa-spin.icon,.nav .fa.fa-spin,.nav .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .nav span.fa-spin.toctree-expand,.nav .rst-content .fa-spin.admonition-title,.rst-content .nav .fa-spin.admonition-title,.nav .rst-content h1 .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.nav .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.nav .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .nav .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.nav .rst-content code.download span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.nav .fa-spin.icon{display:inline-block}.btn.fa:before,.wy-menu-vertical li span.btn.toctree-expand:before,.rst-content .btn.admonition-title:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content dl dt .btn.headerlink:before,.rst-content p.caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.rst-content code.download span.btn:first-child:before,.btn.icon:before{opacity:0.5;-webkit-transition:opacity 0.05s ease-in;-moz-transition:opacity 0.05s ease-in;transition:opacity 0.05s ease-in}.btn.fa:hover:before,.wy-menu-vertical li span.btn.toctree-expand:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content p.caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.rst-content code.download span.btn:first-child:hover:before,.btn.icon:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li .btn-mini span.toctree-expand:before,.btn-mini .rst-content .admonition-title:before,.rst-content .btn-mini .admonition-title:before,.btn-mini .rst-content h1 .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.btn-mini .rst-content dl dt .headerlink:before,.rst-content dl dt .btn-mini .headerlink:before,.btn-mini .rst-content p.caption .headerlink:before,.rst-content p.caption .btn-mini .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.rst-content tt.download .btn-mini span:first-child:before,.btn-mini .rst-content code.download span:first-child:before,.rst-content code.download .btn-mini span:first-child:before,.btn-mini .icon:before{font-size:14px;vertical-align:-15%}.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.wy-alert-title,.rst-content .admonition-title{color:#fff;font-weight:bold;display:block;color:#fff;background:#6ab0de;margin:-12px;padding:6px 12px;margin-bottom:12px}.wy-alert.wy-alert-danger,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.admonition-todo{background:#fdf3f2}.wy-alert.wy-alert-danger .wy-alert-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .danger .wy-alert-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .danger .admonition-title,.rst-content .error .admonition-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title{background:#f29f97}.wy-alert.wy-alert-warning,.rst-content .wy-alert-warning.note,.rst-content .attention,.rst-content .caution,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.tip,.rst-content .warning,.rst-content .wy-alert-warning.seealso,.rst-content .admonition-todo{background:#ffedcc}.wy-alert.wy-alert-warning .wy-alert-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .attention .wy-alert-title,.rst-content .caution .wy-alert-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .admonition-todo .wy-alert-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .attention .admonition-title,.rst-content .caution .admonition-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .warning .admonition-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .admonition-todo .admonition-title{background:#f0b37e}.wy-alert.wy-alert-info,.rst-content .note,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.rst-content .seealso,.rst-content .wy-alert-info.admonition-todo{background:#e7f2fa}.wy-alert.wy-alert-info .wy-alert-title,.rst-content .note .wy-alert-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.rst-content .note .admonition-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .seealso .admonition-title,.rst-content .wy-alert-info.admonition-todo .admonition-title{background:#6ab0de}.wy-alert.wy-alert-success,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.warning,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.admonition-todo{background:#dbfaf4}.wy-alert.wy-alert-success .wy-alert-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .hint .wy-alert-title,.rst-content .important .wy-alert-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .hint .admonition-title,.rst-content .important .admonition-title,.rst-content .tip .admonition-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.admonition-todo .admonition-title{background:#1abc9c}.wy-alert.wy-alert-neutral,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.admonition-todo{background:#f3f6f6}.wy-alert.wy-alert-neutral .wy-alert-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .admonition-title{color:#404040;background:#e1e4e5}.wy-alert.wy-alert-neutral a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.admonition-todo a{color:#2980B9}.wy-alert p:last-child,.rst-content .note p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.rst-content .seealso p:last-child,.rst-content .admonition-todo p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0px;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,0.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all 0.3s ease-in;-moz-transition:all 0.3s ease-in;transition:all 0.3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27AE60}.wy-tray-container li.wy-tray-item-info{background:#2980B9}.wy-tray-container li.wy-tray-item-warning{background:#E67E22}.wy-tray-container li.wy-tray-item-danger{background:#E74C3C}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width: 768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px 12px;color:#fff;border:1px solid rgba(0,0,0,0.1);background-color:#27AE60;text-decoration:none;font-weight:normal;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:0px 1px 2px -1px rgba(255,255,255,0.5) inset,0px -2px 0px 0px rgba(0,0,0,0.1) inset;outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all 0.1s linear;-moz-transition:all 0.1s linear;transition:all 0.1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:0px -1px 0px 0px rgba(0,0,0,0.05) inset,0px 2px 0px 0px rgba(0,0,0,0.1) inset;padding:8px 12px 6px 12px}.btn:visited{color:#fff}.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn-disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn-disabled:hover,.btn-disabled:focus,.btn-disabled:active{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980B9 !important}.btn-info:hover{background-color:#2e8ece !important}.btn-neutral{background-color:#f3f6f6 !important;color:#404040 !important}.btn-neutral:hover{background-color:#e5ebeb !important;color:#404040}.btn-neutral:visited{color:#404040 !important}.btn-success{background-color:#27AE60 !important}.btn-success:hover{background-color:#295 !important}.btn-danger{background-color:#E74C3C !important}.btn-danger:hover{background-color:#ea6153 !important}.btn-warning{background-color:#E67E22 !important}.btn-warning:hover{background-color:#e98b39 !important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f !important}.btn-link{background-color:transparent !important;color:#2980B9;box-shadow:none;border-color:transparent !important}.btn-link:hover{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:active{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:visited{color:#9B59B6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:before,.wy-btn-group:after{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:solid 1px #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980B9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:solid 1px #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type="search"]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980B9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned input,.wy-form-aligned textarea,.wy-form-aligned select,.wy-form-aligned .wy-help-inline,.wy-form-aligned label{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{border:0;margin:0;padding:0}legend{display:block;width:100%;border:0;padding:0;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label{display:block;margin:0 0 0.3125em 0;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#E74C3C}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full input[type="text"],.wy-control-group .wy-form-full input[type="password"],.wy-control-group .wy-form-full input[type="email"],.wy-control-group .wy-form-full input[type="url"],.wy-control-group .wy-form-full input[type="date"],.wy-control-group .wy-form-full input[type="month"],.wy-control-group .wy-form-full input[type="time"],.wy-control-group .wy-form-full input[type="datetime"],.wy-control-group .wy-form-full input[type="datetime-local"],.wy-control-group .wy-form-full input[type="week"],.wy-control-group .wy-form-full input[type="number"],.wy-control-group .wy-form-full input[type="search"],.wy-control-group .wy-form-full input[type="tel"],.wy-control-group .wy-form-full input[type="color"],.wy-control-group .wy-form-halves input[type="text"],.wy-control-group .wy-form-halves input[type="password"],.wy-control-group .wy-form-halves input[type="email"],.wy-control-group .wy-form-halves input[type="url"],.wy-control-group .wy-form-halves input[type="date"],.wy-control-group .wy-form-halves input[type="month"],.wy-control-group .wy-form-halves input[type="time"],.wy-control-group .wy-form-halves input[type="datetime"],.wy-control-group .wy-form-halves input[type="datetime-local"],.wy-control-group .wy-form-halves input[type="week"],.wy-control-group .wy-form-halves input[type="number"],.wy-control-group .wy-form-halves input[type="search"],.wy-control-group .wy-form-halves input[type="tel"],.wy-control-group .wy-form-halves input[type="color"],.wy-control-group .wy-form-thirds input[type="text"],.wy-control-group .wy-form-thirds input[type="password"],.wy-control-group .wy-form-thirds input[type="email"],.wy-control-group .wy-form-thirds input[type="url"],.wy-control-group .wy-form-thirds input[type="date"],.wy-control-group .wy-form-thirds input[type="month"],.wy-control-group .wy-form-thirds input[type="time"],.wy-control-group .wy-form-thirds input[type="datetime"],.wy-control-group .wy-form-thirds input[type="datetime-local"],.wy-control-group .wy-form-thirds input[type="week"],.wy-control-group .wy-form-thirds input[type="number"],.wy-control-group .wy-form-thirds input[type="search"],.wy-control-group .wy-form-thirds input[type="tel"],.wy-control-group .wy-form-thirds input[type="color"]{width:100%}.wy-control-group .wy-form-full{float:left;display:block;margin-right:2.35765%;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child{margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n+1){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child{margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control{margin:6px 0 0 0;font-size:90%}.wy-control-no-input{display:inline-block;margin:6px 0 0 0;font-size:90%}.wy-control-group.fluid-input input[type="text"],.wy-control-group.fluid-input input[type="password"],.wy-control-group.fluid-input input[type="email"],.wy-control-group.fluid-input input[type="url"],.wy-control-group.fluid-input input[type="date"],.wy-control-group.fluid-input input[type="month"],.wy-control-group.fluid-input input[type="time"],.wy-control-group.fluid-input input[type="datetime"],.wy-control-group.fluid-input input[type="datetime-local"],.wy-control-group.fluid-input input[type="week"],.wy-control-group.fluid-input input[type="number"],.wy-control-group.fluid-input input[type="search"],.wy-control-group.fluid-input input[type="tel"],.wy-control-group.fluid-input input[type="color"]{width:100%}.wy-form-message-inline{display:inline-block;padding-left:0.3em;color:#666;vertical-align:middle;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:0.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;*overflow:visible}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border 0.3s linear;-moz-transition:border 0.3s linear;transition:border 0.3s linear}input[type="datetime-local"]{padding:0.34375em 0.625em}input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin-right:0.3125em;*height:13px;*width:13px}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus{outline:0;outline:thin dotted \9;border-color:#333}input.no-focus:focus{border-color:#ccc !important}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:1px auto #129FEA}input[type="text"][disabled],input[type="password"][disabled],input[type="email"][disabled],input[type="url"][disabled],input[type="date"][disabled],input[type="month"][disabled],input[type="time"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="week"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="color"][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#E74C3C;border:1px solid #E74C3C}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#E74C3C}input[type="file"]:focus:invalid:focus,input[type="radio"]:focus:invalid:focus,input[type="checkbox"]:focus:invalid:focus{outline-color:#E74C3C}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif}select,textarea{padding:0.5em 0.625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border 0.3s linear;-moz-transition:border 0.3s linear;transition:border 0.3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type="radio"][disabled],input[type="checkbox"][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:solid 1px #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{width:36px;height:12px;margin:12px 0;position:relative;border-radius:4px;background:#ccc;cursor:pointer;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.wy-switch:before{position:absolute;content:"";display:block;width:18px;height:18px;border-radius:4px;background:#999;left:-3px;top:-3px;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.wy-switch:after{content:"false";position:absolute;left:48px;display:block;font-size:12px;color:#ccc}.wy-switch.active{background:#1e8449}.wy-switch.active:before{left:24px;background:#27AE60}.wy-switch.active:after{content:"true"}.wy-switch.disabled,.wy-switch.active.disabled{cursor:not-allowed}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#E74C3C}.wy-control-group.wy-control-group-error input[type="text"],.wy-control-group.wy-control-group-error input[type="password"],.wy-control-group.wy-control-group-error input[type="email"],.wy-control-group.wy-control-group-error input[type="url"],.wy-control-group.wy-control-group-error input[type="date"],.wy-control-group.wy-control-group-error input[type="month"],.wy-control-group.wy-control-group-error input[type="time"],.wy-control-group.wy-control-group-error input[type="datetime"],.wy-control-group.wy-control-group-error input[type="datetime-local"],.wy-control-group.wy-control-group-error input[type="week"],.wy-control-group.wy-control-group-error input[type="number"],.wy-control-group.wy-control-group-error input[type="search"],.wy-control-group.wy-control-group-error input[type="tel"],.wy-control-group.wy-control-group-error input[type="color"]{border:solid 1px #E74C3C}.wy-control-group.wy-control-group-error textarea{border:solid 1px #E74C3C}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:0.5em 0.625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27AE60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#E74C3C}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#E67E22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980B9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width: 480px){.wy-form button[type="submit"]{margin:0.7em 0 0}.wy-form input[type="text"],.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0.3em;display:block}.wy-form label{margin-bottom:0.3em;display:block}.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:0.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0 0}.wy-form .wy-help-inline,.wy-form-message-inline,.wy-form-message{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width: 768px){.tablet-hide{display:none}}@media screen and (max-width: 480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.wy-table,.rst-content table.docutils,.rst-content table.field-list{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.wy-table caption,.rst-content table.docutils caption,.rst-content table.field-list caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td,.wy-table th,.rst-content table.docutils th,.rst-content table.field-list th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.wy-table td:first-child,.rst-content table.docutils td:first-child,.rst-content table.field-list td:first-child,.wy-table th:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list th:first-child{border-left-width:0}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.wy-table thead th,.rst-content table.docutils thead th,.rst-content table.field-list thead th{font-weight:bold;border-bottom:solid 2px #e1e4e5}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td{background-color:transparent;vertical-align:middle}.wy-table td p,.rst-content table.docutils td p,.rst-content table.field-list td p{line-height:18px}.wy-table td p:last-child,.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child{margin-bottom:0}.wy-table .wy-table-cell-min,.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min{width:1%;padding-right:0}.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:gray;font-size:90%}.wy-table-tertiary{color:gray;font-size:80%}.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td,.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td{background-color:#f3f6f6}.wy-table-backed{background-color:#f3f6f6}.wy-table-bordered-all,.rst-content table.docutils{border:1px solid #e1e4e5}.wy-table-bordered-all td,.rst-content table.docutils td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.wy-table-bordered-all tbody>tr:last-child td,.rst-content table.docutils tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0 !important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980B9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9B59B6}html{height:100%;overflow-x:hidden}body{font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;font-weight:normal;color:#404040;min-height:100%;overflow-x:hidden;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#E67E22 !important}a.wy-text-warning:hover{color:#eb9950 !important}.wy-text-info{color:#2980B9 !important}a.wy-text-info:hover{color:#409ad5 !important}.wy-text-success{color:#27AE60 !important}a.wy-text-success:hover{color:#36d278 !important}.wy-text-danger{color:#E74C3C !important}a.wy-text-danger:hover{color:#ed7669 !important}.wy-text-neutral{color:#404040 !important}a.wy-text-neutral:hover{color:#595959 !important}h1,h2,.rst-content .toctree-wrapper p.caption,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif}p{line-height:24px;margin:0;font-size:16px;margin-bottom:24px}h1{font-size:175%}h2,.rst-content .toctree-wrapper p.caption{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}code,.rst-content tt,.rst-content code{white-space:nowrap;max-width:100%;background:#fff;border:solid 1px #e1e4e5;font-size:75%;padding:0 5px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;color:#E74C3C;overflow-x:auto}code.code-large,.rst-content tt.code-large{font-size:90%}.wy-plain-list-disc,.rst-content .section ul,.rst-content .toctree-wrapper ul,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.wy-plain-list-disc li,.rst-content .section ul li,.rst-content .toctree-wrapper ul li,article ul li{list-style:disc;margin-left:24px}.wy-plain-list-disc li p:last-child,.rst-content .section ul li p:last-child,.rst-content .toctree-wrapper ul li p:last-child,article ul li p:last-child{margin-bottom:0}.wy-plain-list-disc li ul,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li ul,article ul li ul{margin-bottom:0}.wy-plain-list-disc li li,.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,article ul li li{list-style:circle}.wy-plain-list-disc li li li,.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,article ul li li li{list-style:square}.wy-plain-list-disc li ol li,.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,article ul li ol li{list-style:decimal}.wy-plain-list-decimal,.rst-content .section ol,.rst-content ol.arabic,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.wy-plain-list-decimal li,.rst-content .section ol li,.rst-content ol.arabic li,article ol li{list-style:decimal;margin-left:24px}.wy-plain-list-decimal li p:last-child,.rst-content .section ol li p:last-child,.rst-content ol.arabic li p:last-child,article ol li p:last-child{margin-bottom:0}.wy-plain-list-decimal li ul,.rst-content .section ol li ul,.rst-content ol.arabic li ul,article ol li ul{margin-bottom:0}.wy-plain-list-decimal li ul li,.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,article ol li ul li{list-style:disc}.codeblock-example{border:1px solid #e1e4e5;border-bottom:none;padding:24px;padding-top:48px;font-weight:500;background:#fff;position:relative}.codeblock-example:after{content:"Example";position:absolute;top:0px;left:0px;background:#9B59B6;color:#fff;padding:6px 12px}.codeblock-example.prettyprint-example-only{border:1px solid #e1e4e5;margin-bottom:24px}.codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block,div[class^='highlight']{border:1px solid #e1e4e5;padding:0px;overflow-x:auto;background:#fff;margin:1px 0 24px 0}.codeblock div[class^='highlight'],pre.literal-block div[class^='highlight'],.rst-content .literal-block div[class^='highlight'],div[class^='highlight'] div[class^='highlight']{border:none;background:none;margin:0}div[class^='highlight'] td.code{width:100%}.linenodiv pre{border-right:solid 1px #e6e9ea;margin:0;padding:12px 12px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;font-size:12px;line-height:1.5;color:#d9d9d9}div[class^='highlight'] pre{white-space:pre;margin:0;padding:12px 12px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;font-size:12px;line-height:1.5;display:block;overflow:auto;color:#404040}@media print{.codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block,div[class^='highlight'],div[class^='highlight'] pre{white-space:pre-wrap}}.hll{background-color:#ffc;margin:0 -12px;padding:0 12px;display:block}.c{color:#998;font-style:italic}.err{color:#a61717;background-color:#e3d2d2}.k{font-weight:bold}.o{font-weight:bold}.cm{color:#998;font-style:italic}.cp{color:#999;font-weight:bold}.c1{color:#998;font-style:italic}.cs{color:#999;font-weight:bold;font-style:italic}.gd{color:#000;background-color:#fdd}.gd .x{color:#000;background-color:#faa}.ge{font-style:italic}.gr{color:#a00}.gh{color:#999}.gi{color:#000;background-color:#dfd}.gi .x{color:#000;background-color:#afa}.go{color:#888}.gp{color:#555}.gs{font-weight:bold}.gu{color:purple;font-weight:bold}.gt{color:#a00}.kc{font-weight:bold}.kd{font-weight:bold}.kn{font-weight:bold}.kp{font-weight:bold}.kr{font-weight:bold}.kt{color:#458;font-weight:bold}.m{color:#099}.s{color:#d14}.n{color:#333}.na{color:teal}.nb{color:#0086b3}.nc{color:#458;font-weight:bold}.no{color:teal}.ni{color:purple}.ne{color:#900;font-weight:bold}.nf{color:#900;font-weight:bold}.nn{color:#555}.nt{color:navy}.nv{color:teal}.ow{font-weight:bold}.w{color:#bbb}.mf{color:#099}.mh{color:#099}.mi{color:#099}.mo{color:#099}.sb{color:#d14}.sc{color:#d14}.sd{color:#d14}.s2{color:#d14}.se{color:#d14}.sh{color:#d14}.si{color:#d14}.sx{color:#d14}.sr{color:#009926}.s1{color:#d14}.ss{color:#990073}.bp{color:#999}.vc{color:teal}.vg{color:teal}.vi{color:teal}.il{color:#099}.gc{color:#999;background-color:#EAF2F5}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.wy-breadcrumbs li code,.wy-breadcrumbs li .rst-content tt,.rst-content .wy-breadcrumbs li tt{padding:5px;border:none;background:none}.wy-breadcrumbs li code.literal,.wy-breadcrumbs li .rst-content tt.literal,.rst-content .wy-breadcrumbs li tt.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width: 480px){.wy-breadcrumbs-extra{display:none}.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:before,.wy-menu-horiz:after{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz ul,.wy-menu-horiz li{display:inline-block}.wy-menu-horiz li:hover{background:rgba(255,255,255,0.1)}.wy-menu-horiz li.divide-left{border-left:solid 1px #404040}.wy-menu-horiz li.divide-right{border-right:solid 1px #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{height:32px;display:inline-block;line-height:32px;padding:0 1.618em;margin-bottom:0;display:block;font-weight:bold;text-transform:uppercase;font-size:80%;color:#555;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:solid 1px #404040}.wy-menu-vertical li.divide-bottom{border-bottom:solid 1px #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:gray;border-right:solid 1px #c9c9c9;padding:0.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.wy-menu-vertical li code,.wy-menu-vertical li .rst-content tt,.rst-content .wy-menu-vertical li tt{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li span.toctree-expand{display:block;float:left;margin-left:-1.2em;font-size:0.8em;line-height:1.6em;color:#4d4d4d}.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a{color:#404040;padding:0.4045em 1.618em;font-weight:bold;position:relative;background:#fcfcfc;border:none;border-bottom:solid 1px #c9c9c9;border-top:solid 1px #c9c9c9;padding-left:1.618em -4px}.wy-menu-vertical li.on a:hover,.wy-menu-vertical li.current>a:hover{background:#fcfcfc}.wy-menu-vertical li.on a:hover span.toctree-expand,.wy-menu-vertical li.current>a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand{display:block;font-size:0.8em;line-height:1.6em;color:#333}.wy-menu-vertical li.toctree-l1.current li.toctree-l2>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>ul{display:none}.wy-menu-vertical li.toctree-l1.current li.toctree-l2.current>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3.current>ul{display:block}.wy-menu-vertical li.toctree-l2.current>a{background:#c9c9c9;padding:0.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{display:block;background:#c9c9c9;padding:0.4045em 4.045em}.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l2 span.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3{font-size:0.9em}.wy-menu-vertical li.toctree-l3.current>a{background:#bdbdbd;padding:0.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{display:block;background:#bdbdbd;padding:0.4045em 5.663em;border-top:none;border-bottom:none}.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l3 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l4{font-size:0.9em}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical .local-toc li ul{display:block}.wy-menu-vertical li ul li a{margin-bottom:0;color:#b3b3b3;font-weight:normal}.wy-menu-vertical a{display:inline-block;line-height:18px;padding:0.4045em 1.618em;display:block;position:relative;font-size:90%;color:#b3b3b3}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover span.toctree-expand{color:#b3b3b3}.wy-menu-vertical a:active{background-color:#2980B9;cursor:pointer;color:#fff}.wy-menu-vertical a:active span.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:0.809em;margin-bottom:0.809em;z-index:200;background-color:#2980B9;text-align:center;padding:0.809em;display:block;color:#fcfcfc;margin-bottom:0.809em}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto 0.809em auto;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a{color:#fcfcfc;font-size:100%;font-weight:bold;display:inline-block;padding:4px 6px;margin-bottom:0.809em}.wy-side-nav-search>a:hover,.wy-side-nav-search .wy-dropdown>a:hover{background:rgba(255,255,255,0.1)}.wy-side-nav-search>a img.logo,.wy-side-nav-search .wy-dropdown>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search>a.icon img.logo,.wy-side-nav-search .wy-dropdown>a.icon img.logo{margin-top:0.85em}.wy-side-nav-search>div.version{margin-top:-0.4045em;margin-bottom:0.809em;font-weight:normal;color:rgba(255,255,255,0.3)}.wy-nav .wy-menu-vertical header{color:#2980B9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980B9;color:#fff}[data-menu-wrap]{-webkit-transition:all 0.2s ease-in;-moz-transition:all 0.2s ease-in;transition:all 0.2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:left repeat-y #fcfcfc;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOERBMTRGRDBFMUUxMUUzODUwMkJCOThDMEVFNURFMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOERBMTRGRTBFMUUxMUUzODUwMkJCOThDMEVFNURFMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE4REExNEZCMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE4REExNEZDMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EwrlwAAAAA5JREFUeNpiMDU0BAgwAAE2AJgB9BnaAAAAAElFTkSuQmCC);background-size:300px 1px}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980B9;color:#fff;padding:0.4045em 0.809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:before,.wy-nav-top:after{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:bold}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:#999}footer p{margin-bottom:12px}footer span.commit code,footer span.commit .rst-content tt,.rst-content footer span.commit tt{padding:0px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;font-size:1em;background:none;border:none;color:#999}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:before,.rst-footer-buttons:after{display:table;content:""}.rst-footer-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:solid 1px #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:solid 1px #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:gray;font-size:90%}@media screen and (max-width: 768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-side-scroll{width:auto}.wy-side-nav-search{width:auto}.wy-menu.wy-menu-vertical{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width: 1400px){.wy-nav-content-wrap{background:rgba(0,0,0,0.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,footer,.wy-nav-side{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;border-top:solid 10px #343131;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content p.caption .headerlink,.rst-content p.caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .icon{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}img{width:100%;height:auto}}.rst-content img{max-width:100%;height:auto !important}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure p.caption{font-style:italic}.rst-content div.figure.align-center{text-align:center}.rst-content .section>img,.rst-content .section>a>img{margin-bottom:24px}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content .note .last,.rst-content .attention .last,.rst-content .caution .last,.rst-content .danger .last,.rst-content .error .last,.rst-content .hint .last,.rst-content .important .last,.rst-content .tip .last,.rst-content .warning .last,.rst-content .seealso .last,.rst-content .admonition-todo .last{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,0.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent !important;border-color:rgba(0,0,0,0.1) !important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha li{list-style:upper-alpha}.rst-content .section ol p,.rst-content .section ul p{margin-bottom:12px}.rst-content .line-block{margin-left:24px}.rst-content .topic-title{font-weight:bold;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0px 0px 24px 24px}.rst-content .align-left{float:left;margin:0px 24px 24px 0px}.rst-content .align-center{margin:auto;display:block}.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content .toctree-wrapper p.caption .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink{display:none;visibility:hidden;font-size:14px}.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content .toctree-wrapper p.caption .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content dl dt .headerlink:after,.rst-content p.caption .headerlink:after{visibility:visible;content:"";font-family:FontAwesome;display:inline-block}.rst-content h1:hover .headerlink,.rst-content h2:hover .headerlink,.rst-content .toctree-wrapper p.caption:hover .headerlink,.rst-content h3:hover .headerlink,.rst-content h4:hover .headerlink,.rst-content h5:hover .headerlink,.rst-content h6:hover .headerlink,.rst-content dl dt:hover .headerlink,.rst-content p.caption:hover .headerlink{display:inline-block}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:solid 1px #e1e4e5}.rst-content .sidebar p,.rst-content .sidebar ul,.rst-content .sidebar dl{font-size:90%}.rst-content .sidebar .last{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif;font-weight:bold;background:#e1e4e5;padding:6px 12px;margin:-24px;margin-bottom:24px;font-size:100%}.rst-content .highlighted{background:#F1C40F;display:inline-block;font-weight:bold;padding:0 6px}.rst-content .footnote-reference,.rst-content .citation-reference{vertical-align:super;font-size:90%}.rst-content table.docutils.citation,.rst-content table.docutils.footnote{background:none;border:none;color:#999}.rst-content table.docutils.citation td,.rst-content table.docutils.citation tr,.rst-content table.docutils.footnote td,.rst-content table.docutils.footnote tr{border:none;background-color:transparent !important;white-space:normal}.rst-content table.docutils.citation td.label,.rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}.rst-content table.docutils.citation tt,.rst-content table.docutils.citation code,.rst-content table.docutils.footnote tt,.rst-content table.docutils.footnote code{color:#555}.rst-content table.field-list{border:none}.rst-content table.field-list td{border:none;padding-top:5px}.rst-content table.field-list td>strong{display:inline-block;margin-top:3px}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left;padding-left:0}.rst-content tt,.rst-content tt,.rst-content code{color:#000;padding:2px 5px}.rst-content tt big,.rst-content tt em,.rst-content tt big,.rst-content code big,.rst-content tt em,.rst-content code em{font-size:100% !important;line-height:normal}.rst-content tt.literal,.rst-content tt.literal,.rst-content code.literal{color:#E74C3C}.rst-content tt.xref,a .rst-content tt,.rst-content tt.xref,.rst-content code.xref,a .rst-content tt,a .rst-content code{font-weight:bold;color:#404040}.rst-content a tt,.rst-content a tt,.rst-content a code{color:#2980B9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:bold}.rst-content dl p,.rst-content dl table,.rst-content dl ul,.rst-content dl ol{margin-bottom:12px !important}.rst-content dl dd{margin:0 0 12px 24px}.rst-content dl:not(.docutils){margin-bottom:24px}.rst-content dl:not(.docutils) dt{display:inline-block;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980B9;border-top:solid 3px #6ab0de;padding:6px;position:relative}.rst-content dl:not(.docutils) dt:before{color:#6ab0de}.rst-content dl:not(.docutils) dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dl dt{margin-bottom:6px;border:none;border-left:solid 3px #ccc;background:#f0f0f0;color:#555}.rst-content dl:not(.docutils) dl dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dt:first-child{margin-top:0}.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) code{font-weight:bold}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) code.descclassname{background-color:transparent;border:none;padding:0;font-size:100% !important}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname{font-weight:bold}.rst-content dl:not(.docutils) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:bold}.rst-content dl:not(.docutils) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-link,.rst-content .viewcode-back{display:inline-block;color:#27AE60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:bold}.rst-content tt.download,.rst-content code.download{background:inherit;padding:inherit;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{margin-right:4px}@media screen and (max-width: 480px){.rst-content .sidebar{width:100%}}span[id*='MathJax-Span']{color:#404040}.math{text-align:center}@font-face{font-family:"Inconsolata";font-style:normal;font-weight:400;src:local("Inconsolata"),local("Inconsolata-Regular"),url(../fonts/Inconsolata-Regular.ttf) format("truetype")}@font-face{font-family:"Inconsolata";font-style:normal;font-weight:700;src:local("Inconsolata Bold"),local("Inconsolata-Bold"),url(../fonts/Inconsolata-Bold.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:normal;font-weight:400;src:local("Lato Regular"),local("Lato-Regular"),url(../fonts/Lato-Regular.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:normal;font-weight:700;src:local("Lato Bold"),local("Lato-Bold"),url(../fonts/Lato-Bold.ttf) format("truetype")}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:400;src:local("Roboto Slab Regular"),local("RobotoSlab-Regular"),url(../fonts/RobotoSlab-Regular.ttf) format("truetype")}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:700;src:local("Roboto Slab Bold"),local("RobotoSlab-Bold"),url(../fonts/RobotoSlab-Bold.ttf) format("truetype")}
|
5 |
+
/*# sourceMappingURL=theme.css.map */
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/doctools.js
ADDED
@@ -0,0 +1,263 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* doctools.js
|
3 |
+
* ~~~~~~~~~~~
|
4 |
+
*
|
5 |
+
* Sphinx JavaScript utilities for all documentation.
|
6 |
+
*
|
7 |
+
* :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
|
8 |
+
* :license: BSD, see LICENSE for details.
|
9 |
+
*
|
10 |
+
*/
|
11 |
+
|
12 |
+
/**
|
13 |
+
* select a different prefix for underscore
|
14 |
+
*/
|
15 |
+
$u = _.noConflict();
|
16 |
+
|
17 |
+
/**
|
18 |
+
* make the code below compatible with browsers without
|
19 |
+
* an installed firebug like debugger
|
20 |
+
if (!window.console || !console.firebug) {
|
21 |
+
var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
|
22 |
+
"dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
|
23 |
+
"profile", "profileEnd"];
|
24 |
+
window.console = {};
|
25 |
+
for (var i = 0; i < names.length; ++i)
|
26 |
+
window.console[names[i]] = function() {};
|
27 |
+
}
|
28 |
+
*/
|
29 |
+
|
30 |
+
/**
|
31 |
+
* small helper function to urldecode strings
|
32 |
+
*/
|
33 |
+
jQuery.urldecode = function(x) {
|
34 |
+
return decodeURIComponent(x).replace(/\+/g, ' ');
|
35 |
+
};
|
36 |
+
|
37 |
+
/**
|
38 |
+
* small helper function to urlencode strings
|
39 |
+
*/
|
40 |
+
jQuery.urlencode = encodeURIComponent;
|
41 |
+
|
42 |
+
/**
|
43 |
+
* This function returns the parsed url parameters of the
|
44 |
+
* current request. Multiple values per key are supported,
|
45 |
+
* it will always return arrays of strings for the value parts.
|
46 |
+
*/
|
47 |
+
jQuery.getQueryParameters = function(s) {
|
48 |
+
if (typeof s == 'undefined')
|
49 |
+
s = document.location.search;
|
50 |
+
var parts = s.substr(s.indexOf('?') + 1).split('&');
|
51 |
+
var result = {};
|
52 |
+
for (var i = 0; i < parts.length; i++) {
|
53 |
+
var tmp = parts[i].split('=', 2);
|
54 |
+
var key = jQuery.urldecode(tmp[0]);
|
55 |
+
var value = jQuery.urldecode(tmp[1]);
|
56 |
+
if (key in result)
|
57 |
+
result[key].push(value);
|
58 |
+
else
|
59 |
+
result[key] = [value];
|
60 |
+
}
|
61 |
+
return result;
|
62 |
+
};
|
63 |
+
|
64 |
+
/**
|
65 |
+
* highlight a given string on a jquery object by wrapping it in
|
66 |
+
* span elements with the given class name.
|
67 |
+
*/
|
68 |
+
jQuery.fn.highlightText = function(text, className) {
|
69 |
+
function highlight(node) {
|
70 |
+
if (node.nodeType == 3) {
|
71 |
+
var val = node.nodeValue;
|
72 |
+
var pos = val.toLowerCase().indexOf(text);
|
73 |
+
if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
|
74 |
+
var span = document.createElement("span");
|
75 |
+
span.className = className;
|
76 |
+
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
|
77 |
+
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
|
78 |
+
document.createTextNode(val.substr(pos + text.length)),
|
79 |
+
node.nextSibling));
|
80 |
+
node.nodeValue = val.substr(0, pos);
|
81 |
+
}
|
82 |
+
}
|
83 |
+
else if (!jQuery(node).is("button, select, textarea")) {
|
84 |
+
jQuery.each(node.childNodes, function() {
|
85 |
+
highlight(this);
|
86 |
+
});
|
87 |
+
}
|
88 |
+
}
|
89 |
+
return this.each(function() {
|
90 |
+
highlight(this);
|
91 |
+
});
|
92 |
+
};
|
93 |
+
|
94 |
+
/*
|
95 |
+
* backward compatibility for jQuery.browser
|
96 |
+
* This will be supported until firefox bug is fixed.
|
97 |
+
*/
|
98 |
+
if (!jQuery.browser) {
|
99 |
+
jQuery.uaMatch = function(ua) {
|
100 |
+
ua = ua.toLowerCase();
|
101 |
+
|
102 |
+
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
|
103 |
+
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
|
104 |
+
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
|
105 |
+
/(msie) ([\w.]+)/.exec(ua) ||
|
106 |
+
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
|
107 |
+
[];
|
108 |
+
|
109 |
+
return {
|
110 |
+
browser: match[ 1 ] || "",
|
111 |
+
version: match[ 2 ] || "0"
|
112 |
+
};
|
113 |
+
};
|
114 |
+
jQuery.browser = {};
|
115 |
+
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Small JavaScript module for the documentation.
|
120 |
+
*/
|
121 |
+
var Documentation = {
|
122 |
+
|
123 |
+
init : function() {
|
124 |
+
this.fixFirefoxAnchorBug();
|
125 |
+
this.highlightSearchWords();
|
126 |
+
this.initIndexTable();
|
127 |
+
},
|
128 |
+
|
129 |
+
/**
|
130 |
+
* i18n support
|
131 |
+
*/
|
132 |
+
TRANSLATIONS : {},
|
133 |
+
PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
|
134 |
+
LOCALE : 'unknown',
|
135 |
+
|
136 |
+
// gettext and ngettext don't access this so that the functions
|
137 |
+
// can safely bound to a different name (_ = Documentation.gettext)
|
138 |
+
gettext : function(string) {
|
139 |
+
var translated = Documentation.TRANSLATIONS[string];
|
140 |
+
if (typeof translated == 'undefined')
|
141 |
+
return string;
|
142 |
+
return (typeof translated == 'string') ? translated : translated[0];
|
143 |
+
},
|
144 |
+
|
145 |
+
ngettext : function(singular, plural, n) {
|
146 |
+
var translated = Documentation.TRANSLATIONS[singular];
|
147 |
+
if (typeof translated == 'undefined')
|
148 |
+
return (n == 1) ? singular : plural;
|
149 |
+
return translated[Documentation.PLURALEXPR(n)];
|
150 |
+
},
|
151 |
+
|
152 |
+
addTranslations : function(catalog) {
|
153 |
+
for (var key in catalog.messages)
|
154 |
+
this.TRANSLATIONS[key] = catalog.messages[key];
|
155 |
+
this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
|
156 |
+
this.LOCALE = catalog.locale;
|
157 |
+
},
|
158 |
+
|
159 |
+
/**
|
160 |
+
* add context elements like header anchor links
|
161 |
+
*/
|
162 |
+
addContextElements : function() {
|
163 |
+
$('div[id] > :header:first').each(function() {
|
164 |
+
$('<a class="headerlink">\u00B6</a>').
|
165 |
+
attr('href', '#' + this.id).
|
166 |
+
attr('title', _('Permalink to this headline')).
|
167 |
+
appendTo(this);
|
168 |
+
});
|
169 |
+
$('dt[id]').each(function() {
|
170 |
+
$('<a class="headerlink">\u00B6</a>').
|
171 |
+
attr('href', '#' + this.id).
|
172 |
+
attr('title', _('Permalink to this definition')).
|
173 |
+
appendTo(this);
|
174 |
+
});
|
175 |
+
},
|
176 |
+
|
177 |
+
/**
|
178 |
+
* workaround a firefox stupidity
|
179 |
+
* see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
|
180 |
+
*/
|
181 |
+
fixFirefoxAnchorBug : function() {
|
182 |
+
if (document.location.hash)
|
183 |
+
window.setTimeout(function() {
|
184 |
+
document.location.href += '';
|
185 |
+
}, 10);
|
186 |
+
},
|
187 |
+
|
188 |
+
/**
|
189 |
+
* highlight the search words provided in the url in the text
|
190 |
+
*/
|
191 |
+
highlightSearchWords : function() {
|
192 |
+
var params = $.getQueryParameters();
|
193 |
+
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
|
194 |
+
if (terms.length) {
|
195 |
+
var body = $('div.body');
|
196 |
+
if (!body.length) {
|
197 |
+
body = $('body');
|
198 |
+
}
|
199 |
+
window.setTimeout(function() {
|
200 |
+
$.each(terms, function() {
|
201 |
+
body.highlightText(this.toLowerCase(), 'highlighted');
|
202 |
+
});
|
203 |
+
}, 10);
|
204 |
+
$('<p class="highlight-link"><a href="javascript:Documentation.' +
|
205 |
+
'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
|
206 |
+
.appendTo($('#searchbox'));
|
207 |
+
}
|
208 |
+
},
|
209 |
+
|
210 |
+
/**
|
211 |
+
* init the domain index toggle buttons
|
212 |
+
*/
|
213 |
+
initIndexTable : function() {
|
214 |
+
var togglers = $('img.toggler').click(function() {
|
215 |
+
var src = $(this).attr('src');
|
216 |
+
var idnum = $(this).attr('id').substr(7);
|
217 |
+
$('tr.cg-' + idnum).toggle();
|
218 |
+
if (src.substr(-9) == 'minus.png')
|
219 |
+
$(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
|
220 |
+
else
|
221 |
+
$(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
|
222 |
+
}).css('display', '');
|
223 |
+
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
|
224 |
+
togglers.click();
|
225 |
+
}
|
226 |
+
},
|
227 |
+
|
228 |
+
/**
|
229 |
+
* helper function to hide the search marks again
|
230 |
+
*/
|
231 |
+
hideSearchWords : function() {
|
232 |
+
$('#searchbox .highlight-link').fadeOut(300);
|
233 |
+
$('span.highlighted').removeClass('highlighted');
|
234 |
+
},
|
235 |
+
|
236 |
+
/**
|
237 |
+
* make the url absolute
|
238 |
+
*/
|
239 |
+
makeURL : function(relativeURL) {
|
240 |
+
return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
|
241 |
+
},
|
242 |
+
|
243 |
+
/**
|
244 |
+
* get the current relative url
|
245 |
+
*/
|
246 |
+
getCurrentURL : function() {
|
247 |
+
var path = document.location.pathname;
|
248 |
+
var parts = path.split(/\//);
|
249 |
+
$.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
|
250 |
+
if (this == '..')
|
251 |
+
parts.pop();
|
252 |
+
});
|
253 |
+
var url = parts.join('/');
|
254 |
+
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
|
255 |
+
}
|
256 |
+
};
|
257 |
+
|
258 |
+
// quick alias for translations
|
259 |
+
_ = Documentation.gettext;
|
260 |
+
|
261 |
+
$(document).ready(function() {
|
262 |
+
Documentation.init();
|
263 |
+
});
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/down-pressed.png
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/down.png
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/file.png
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/Inconsolata-Bold.ttf
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/Inconsolata-Regular.ttf
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/Lato-Bold.ttf
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/Lato-Regular.ttf
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/RobotoSlab-Bold.ttf
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/RobotoSlab-Regular.ttf
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/fontawesome-webfont.eot
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/fontawesome-webfont.svg
ADDED
@@ -0,0 +1,520 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" standalone="no"?>
|
2 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
3 |
+
<svg xmlns="http://www.w3.org/2000/svg">
|
4 |
+
<metadata></metadata>
|
5 |
+
<defs>
|
6 |
+
<font id="fontawesomeregular" horiz-adv-x="1536" >
|
7 |
+
<font-face units-per-em="1792" ascent="1536" descent="-256" />
|
8 |
+
<missing-glyph horiz-adv-x="448" />
|
9 |
+
<glyph unicode=" " horiz-adv-x="448" />
|
10 |
+
<glyph unicode="	" horiz-adv-x="448" />
|
11 |
+
<glyph unicode=" " horiz-adv-x="448" />
|
12 |
+
<glyph unicode="¨" horiz-adv-x="1792" />
|
13 |
+
<glyph unicode="©" horiz-adv-x="1792" />
|
14 |
+
<glyph unicode="®" horiz-adv-x="1792" />
|
15 |
+
<glyph unicode="´" horiz-adv-x="1792" />
|
16 |
+
<glyph unicode="Æ" horiz-adv-x="1792" />
|
17 |
+
<glyph unicode="Ø" horiz-adv-x="1792" />
|
18 |
+
<glyph unicode=" " horiz-adv-x="768" />
|
19 |
+
<glyph unicode=" " horiz-adv-x="1537" />
|
20 |
+
<glyph unicode=" " horiz-adv-x="768" />
|
21 |
+
<glyph unicode=" " horiz-adv-x="1537" />
|
22 |
+
<glyph unicode=" " horiz-adv-x="512" />
|
23 |
+
<glyph unicode=" " horiz-adv-x="384" />
|
24 |
+
<glyph unicode=" " horiz-adv-x="256" />
|
25 |
+
<glyph unicode=" " horiz-adv-x="256" />
|
26 |
+
<glyph unicode=" " horiz-adv-x="192" />
|
27 |
+
<glyph unicode=" " horiz-adv-x="307" />
|
28 |
+
<glyph unicode=" " horiz-adv-x="85" />
|
29 |
+
<glyph unicode=" " horiz-adv-x="307" />
|
30 |
+
<glyph unicode=" " horiz-adv-x="384" />
|
31 |
+
<glyph unicode="™" horiz-adv-x="1792" />
|
32 |
+
<glyph unicode="∞" horiz-adv-x="1792" />
|
33 |
+
<glyph unicode="≠" horiz-adv-x="1792" />
|
34 |
+
<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" />
|
35 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
|
36 |
+
<glyph unicode="" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
|
37 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
|
38 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
|
39 |
+
<glyph unicode="" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" />
|
40 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" />
|
41 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
|
42 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
|
43 |
+
<glyph unicode="" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
|
44 |
+
<glyph unicode="" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
|
45 |
+
<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
|
46 |
+
<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
|
47 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
|
48 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
|
49 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
|
50 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " />
|
51 |
+
<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
|
52 |
+
<glyph unicode="" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
|
53 |
+
<glyph unicode="" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
|
54 |
+
<glyph unicode="" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
|
55 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
|
56 |
+
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z " />
|
57 |
+
<glyph unicode="" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
58 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
|
59 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
|
60 |
+
<glyph unicode="" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
61 |
+
<glyph unicode="" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
62 |
+
<glyph unicode="" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" />
|
63 |
+
<glyph unicode="" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
64 |
+
<glyph unicode="" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
|
65 |
+
<glyph unicode="" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
|
66 |
+
<glyph unicode="" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" />
|
67 |
+
<glyph unicode="" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
|
68 |
+
<glyph unicode="" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
|
69 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
|
70 |
+
<glyph unicode="" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
|
71 |
+
<glyph unicode="" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
|
72 |
+
<glyph unicode="" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
|
73 |
+
<glyph unicode="" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
|
74 |
+
<glyph unicode="" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
|
75 |
+
<glyph unicode="" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" />
|
76 |
+
<glyph unicode="" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
|
77 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
|
78 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
|
79 |
+
<glyph unicode="" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
|
80 |
+
<glyph unicode="" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
|
81 |
+
<glyph unicode="" horiz-adv-x="1664" d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57 q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5 q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" />
|
82 |
+
<glyph unicode="" horiz-adv-x="1408" d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142 q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5 t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5 t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" />
|
83 |
+
<glyph unicode="" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
|
84 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2 t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5 q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" />
|
85 |
+
<glyph unicode="" d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1 t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5 t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49 t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" />
|
86 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
|
87 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
|
88 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
|
89 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
|
90 |
+
<glyph unicode="" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
|
91 |
+
<glyph unicode="" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
|
92 |
+
<glyph unicode="" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
|
93 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" />
|
94 |
+
<glyph unicode="" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
|
95 |
+
<glyph unicode="" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" />
|
96 |
+
<glyph unicode="" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
|
97 |
+
<glyph unicode="" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
98 |
+
<glyph unicode="" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
|
99 |
+
<glyph unicode="" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
|
100 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
|
101 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" />
|
102 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
|
103 |
+
<glyph unicode="" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" />
|
104 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" />
|
105 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" />
|
106 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
|
107 |
+
<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
|
108 |
+
<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
|
109 |
+
<glyph unicode="" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
|
110 |
+
<glyph unicode="" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
|
111 |
+
<glyph unicode="" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" />
|
112 |
+
<glyph unicode="" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
|
113 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" />
|
114 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" />
|
115 |
+
<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
116 |
+
<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
|
117 |
+
<glyph unicode="" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
118 |
+
<glyph unicode="" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
119 |
+
<glyph unicode="" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
120 |
+
<glyph unicode="" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
121 |
+
<glyph unicode="" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
|
122 |
+
<glyph unicode="" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
123 |
+
<glyph unicode="" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
124 |
+
<glyph unicode="" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
|
125 |
+
<glyph unicode="" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" />
|
126 |
+
<glyph unicode="" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
|
127 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" />
|
128 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
|
129 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
|
130 |
+
<glyph unicode="" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
|
131 |
+
<glyph unicode="" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
|
132 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
|
133 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
|
134 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
|
135 |
+
<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
|
136 |
+
<glyph unicode="" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
|
137 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
|
138 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
|
139 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
|
140 |
+
<glyph unicode="" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " />
|
141 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
|
142 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
|
143 |
+
<glyph unicode="" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
|
144 |
+
<glyph unicode="" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
|
145 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
|
146 |
+
<glyph unicode="" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
|
147 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
|
148 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
|
149 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
|
150 |
+
<glyph unicode="" horiz-adv-x="1664" d="M640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5 l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5 t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
|
151 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
|
152 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
|
153 |
+
<glyph unicode="" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
|
154 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
|
155 |
+
<glyph unicode="" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
|
156 |
+
<glyph unicode="" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
157 |
+
<glyph unicode="" d="M1536 160q0 -119 -84.5 -203.5t-203.5 -84.5h-192v608h203l30 224h-233v143q0 54 28 83t96 29l132 1v207q-96 9 -180 9q-136 0 -218 -80.5t-82 -225.5v-166h-224v-224h224v-608h-544q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5v-960z" />
|
158 |
+
<glyph unicode="" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
|
159 |
+
<glyph unicode="" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
|
160 |
+
<glyph unicode="" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
|
161 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
|
162 |
+
<glyph unicode="" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
|
163 |
+
<glyph unicode="" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" />
|
164 |
+
<glyph unicode="" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
|
165 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" />
|
166 |
+
<glyph unicode="" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
|
167 |
+
<glyph unicode="" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
168 |
+
<glyph unicode="" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
|
169 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
|
170 |
+
<glyph unicode="" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
|
171 |
+
<glyph unicode="" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
|
172 |
+
<glyph unicode="" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
173 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
|
174 |
+
<glyph unicode="" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
|
175 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
|
176 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" />
|
177 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
|
178 |
+
<glyph unicode="" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
179 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
|
180 |
+
<glyph unicode="" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
|
181 |
+
<glyph unicode="" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
182 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
|
183 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
|
184 |
+
<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
|
185 |
+
<glyph unicode="" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
|
186 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
|
187 |
+
<glyph unicode="" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5 t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
|
188 |
+
<glyph unicode="" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
|
189 |
+
<glyph unicode="" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
|
190 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
|
191 |
+
<glyph unicode="" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
|
192 |
+
<glyph unicode="" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
|
193 |
+
<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
194 |
+
<glyph unicode="" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
195 |
+
<glyph unicode="" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
196 |
+
<glyph unicode="" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
197 |
+
<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
|
198 |
+
<glyph unicode="" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
|
199 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
|
200 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
|
201 |
+
<glyph unicode="" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
|
202 |
+
<glyph unicode="" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " />
|
203 |
+
<glyph unicode="" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
|
204 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
|
205 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " />
|
206 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
|
207 |
+
<glyph unicode="" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
|
208 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
|
209 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" />
|
210 |
+
<glyph unicode="" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
|
211 |
+
<glyph unicode="" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
212 |
+
<glyph unicode="" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
|
213 |
+
<glyph unicode="" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
|
214 |
+
<glyph unicode="" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
|
215 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
|
216 |
+
<glyph unicode="" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
|
217 |
+
<glyph unicode="" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" />
|
218 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
|
219 |
+
<glyph unicode="" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
|
220 |
+
<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
221 |
+
<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
|
222 |
+
<glyph unicode="" d="M829 318q0 -76 -58.5 -112.5t-139.5 -36.5q-41 0 -80.5 9.5t-75.5 28.5t-58 53t-22 78q0 46 25 80t65.5 51.5t82 25t84.5 7.5q20 0 31 -2q2 -1 23 -16.5t26 -19t23 -18t24.5 -22t19 -22.5t17 -26t9 -26.5t4.5 -31.5zM755 863q0 -60 -33 -99.5t-92 -39.5q-53 0 -93 42.5 t-57.5 96.5t-17.5 106q0 61 32 104t92 43q53 0 93.5 -45t58 -101t17.5 -107zM861 1120l88 64h-265q-85 0 -161 -32t-127.5 -98t-51.5 -153q0 -93 64.5 -154.5t158.5 -61.5q22 0 43 3q-13 -29 -13 -54q0 -44 40 -94q-175 -12 -257 -63q-47 -29 -75.5 -73t-28.5 -95 q0 -43 18.5 -77.5t48.5 -56.5t69 -37t77.5 -21t76.5 -6q60 0 120.5 15.5t113.5 46t86 82.5t33 117q0 49 -20 89.5t-49 66.5t-58 47.5t-49 44t-20 44.5t15.5 42.5t37.5 39.5t44 42t37.5 59.5t15.5 82.5q0 60 -22.5 99.5t-72.5 90.5h83zM1152 672h128v64h-128v128h-64v-128 h-128v-64h128v-160h64v160zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
223 |
+
<glyph unicode="" horiz-adv-x="1664" d="M735 740q0 -36 32 -70.5t77.5 -68t90.5 -73.5t77 -104t32 -142q0 -90 -48 -173q-72 -122 -211 -179.5t-298 -57.5q-132 0 -246.5 41.5t-171.5 137.5q-37 60 -37 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 42 -47.5 74t-15.5 73q0 36 21 85q-46 -4 -68 -4 q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q77 66 182.5 98t217.5 32h418l-138 -88h-131q74 -63 112 -133t38 -160q0 -72 -24.5 -129.5t-59 -93t-69.5 -65t-59.5 -61.5t-24.5 -66zM589 836q38 0 78 16.5t66 43.5q53 57 53 159q0 58 -17 125t-48.5 129.5 t-84.5 103.5t-117 41q-42 0 -82.5 -19.5t-65.5 -52.5q-47 -59 -47 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26zM591 -37q58 0 111.5 13t99 39t73 73t27.5 109q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -48 2 q-53 0 -105 -7t-107.5 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -70 35 -123.5t91.5 -83t119 -44t127.5 -14.5zM1401 839h213v-108h-213v-219h-105v219h-212v108h212v217h105v-217z" />
|
224 |
+
<glyph unicode="" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
|
225 |
+
<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
|
226 |
+
<glyph unicode="" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
|
227 |
+
<glyph unicode="" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
|
228 |
+
<glyph unicode="" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
|
229 |
+
<glyph unicode="" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
|
230 |
+
<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
|
231 |
+
<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
|
232 |
+
<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
|
233 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
|
234 |
+
<glyph unicode="" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
|
235 |
+
<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
|
236 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
|
237 |
+
<glyph unicode="" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
|
238 |
+
<glyph unicode="" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
|
239 |
+
<glyph unicode="" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
|
240 |
+
<glyph unicode="" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
|
241 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" />
|
242 |
+
<glyph unicode="" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
|
243 |
+
<glyph unicode="" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
|
244 |
+
<glyph unicode="" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
|
245 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
|
246 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
|
247 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
|
248 |
+
<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
|
249 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
|
250 |
+
<glyph unicode="" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" />
|
251 |
+
<glyph unicode="" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5 t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
|
252 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
|
253 |
+
<glyph unicode="" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
|
254 |
+
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704 q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" />
|
255 |
+
<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
|
256 |
+
<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
|
257 |
+
<glyph unicode="" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
|
258 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
|
259 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" />
|
260 |
+
<glyph unicode="" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
|
261 |
+
<glyph unicode="" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
262 |
+
<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
263 |
+
<glyph unicode="" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
|
264 |
+
<glyph unicode="" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
|
265 |
+
<glyph unicode="" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
|
266 |
+
<glyph unicode="" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
|
267 |
+
<glyph unicode="" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
|
268 |
+
<glyph unicode="" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
|
269 |
+
<glyph unicode="" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
|
270 |
+
<glyph unicode="" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
|
271 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
|
272 |
+
<glyph unicode="" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
|
273 |
+
<glyph unicode="" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
|
274 |
+
<glyph unicode="" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
|
275 |
+
<glyph unicode="" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
|
276 |
+
<glyph unicode="" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
|
277 |
+
<glyph unicode="" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
|
278 |
+
<glyph unicode="" horiz-adv-x="1568" d="M496 192q0 -60 -42.5 -102t-101.5 -42q-60 0 -102 42t-42 102t42 102t102 42q59 0 101.5 -42t42.5 -102zM928 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -66 -47 -113t-113 -47t-113 47t-47 113 t47 113t113 47t113 -47t47 -113zM1360 192q0 -46 -33 -79t-79 -33t-79 33t-33 79t33 79t79 33t79 -33t33 -79zM528 1088q0 -73 -51.5 -124.5t-124.5 -51.5t-124.5 51.5t-51.5 124.5t51.5 124.5t124.5 51.5t124.5 -51.5t51.5 -124.5zM992 1280q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1536 640q0 -40 -28 -68t-68 -28t-68 28t-28 68t28 68t68 28t68 -28t28 -68zM1328 1088q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5z" />
|
279 |
+
<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
280 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
|
281 |
+
<glyph unicode="" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
|
282 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
|
283 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " />
|
284 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
285 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
286 |
+
<glyph unicode="" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
287 |
+
<glyph unicode="" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
288 |
+
<glyph unicode="" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
289 |
+
<glyph unicode="" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
|
290 |
+
<glyph unicode="" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
|
291 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
|
292 |
+
<glyph unicode="" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
|
293 |
+
<glyph unicode="" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" />
|
294 |
+
<glyph unicode="" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
|
295 |
+
<glyph unicode="" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
|
296 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
|
297 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
|
298 |
+
<glyph unicode="" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
|
299 |
+
<glyph unicode="" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
|
300 |
+
<glyph unicode="" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
|
301 |
+
<glyph unicode="" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
|
302 |
+
<glyph unicode="" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
|
303 |
+
<glyph unicode="" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
|
304 |
+
<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" />
|
305 |
+
<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" />
|
306 |
+
<glyph unicode="" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
|
307 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
|
308 |
+
<glyph unicode="" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
|
309 |
+
<glyph unicode="" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
|
310 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
|
311 |
+
<glyph unicode="" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
|
312 |
+
<glyph unicode="" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
|
313 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
|
314 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
|
315 |
+
<glyph unicode="" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
316 |
+
<glyph unicode="" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
317 |
+
<glyph unicode="" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
318 |
+
<glyph unicode="" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
319 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
|
320 |
+
<glyph unicode="" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
|
321 |
+
<glyph unicode="" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
|
322 |
+
<glyph unicode="" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" />
|
323 |
+
<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
324 |
+
<glyph unicode="" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
|
325 |
+
<glyph unicode="" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
|
326 |
+
<glyph unicode="" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
327 |
+
<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" />
|
328 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
|
329 |
+
<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
|
330 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
|
331 |
+
<glyph unicode="" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
|
332 |
+
<glyph unicode="" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
|
333 |
+
<glyph unicode="" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
334 |
+
<glyph unicode="" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
335 |
+
<glyph unicode="" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
336 |
+
<glyph unicode="" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
337 |
+
<glyph unicode="" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
338 |
+
<glyph unicode="" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
339 |
+
<glyph unicode="" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
340 |
+
<glyph unicode="" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
341 |
+
<glyph unicode="" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
|
342 |
+
<glyph unicode="" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
|
343 |
+
<glyph unicode="" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" />
|
344 |
+
<glyph unicode="" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
|
345 |
+
<glyph unicode="" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
|
346 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
|
347 |
+
<glyph unicode="" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
|
348 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
|
349 |
+
<glyph unicode="" d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" />
|
350 |
+
<glyph unicode="" d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" />
|
351 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" />
|
352 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" />
|
353 |
+
<glyph unicode="" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
|
354 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
|
355 |
+
<glyph unicode="" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
|
356 |
+
<glyph unicode="" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
|
357 |
+
<glyph unicode="" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
|
358 |
+
<glyph unicode="" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
|
359 |
+
<glyph unicode="" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
360 |
+
<glyph unicode="" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
|
361 |
+
<glyph unicode="" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" />
|
362 |
+
<glyph unicode="" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
363 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
|
364 |
+
<glyph unicode="" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
|
365 |
+
<glyph unicode="" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" />
|
366 |
+
<glyph unicode="" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" />
|
367 |
+
<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
|
368 |
+
<glyph unicode="" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
369 |
+
<glyph unicode="" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
|
370 |
+
<glyph unicode="" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
371 |
+
<glyph unicode="" horiz-adv-x="1024" d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14 q78 2 134 29z" />
|
372 |
+
<glyph unicode="" d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
373 |
+
<glyph unicode="" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
|
374 |
+
<glyph unicode="" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
|
375 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
|
376 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
|
377 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
|
378 |
+
<glyph unicode="" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
|
379 |
+
<glyph unicode="" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
|
380 |
+
<glyph unicode="" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
|
381 |
+
<glyph unicode="" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
382 |
+
<glyph unicode="" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
|
383 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324 l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" />
|
384 |
+
<glyph unicode="" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
|
385 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
|
386 |
+
<glyph unicode="" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
|
387 |
+
<glyph unicode="" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
388 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
|
389 |
+
<glyph unicode="" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
|
390 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
|
391 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
|
392 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" />
|
393 |
+
<glyph unicode="" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
|
394 |
+
<glyph unicode="" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
|
395 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
|
396 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " />
|
397 |
+
<glyph unicode="" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
398 |
+
<glyph unicode="" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
399 |
+
<glyph unicode="" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
400 |
+
<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
401 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
|
402 |
+
<glyph unicode="" d="M1254 899q16 85 -21 132q-52 65 -187 45q-17 -3 -41 -12.5t-57.5 -30.5t-64.5 -48.5t-59.5 -70t-44.5 -91.5q80 7 113.5 -16t26.5 -99q-5 -52 -52 -143q-43 -78 -71 -99q-44 -32 -87 14q-23 24 -37.5 64.5t-19 73t-10 84t-8.5 71.5q-23 129 -34 164q-12 37 -35.5 69 t-50.5 40q-57 16 -127 -25q-54 -32 -136.5 -106t-122.5 -102v-7q16 -8 25.5 -26t21.5 -20q21 -3 54.5 8.5t58 10.5t41.5 -30q11 -18 18.5 -38.5t15 -48t12.5 -40.5q17 -46 53 -187q36 -146 57 -197q42 -99 103 -125q43 -12 85 -1.5t76 31.5q131 77 250 237 q104 139 172.5 292.5t82.5 226.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
403 |
+
<glyph unicode="" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
|
404 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
|
405 |
+
<glyph unicode="" horiz-adv-x="2176" d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40 t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29 q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" />
|
406 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9 q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102 t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" />
|
407 |
+
<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69 q-46 32 -141.5 92.5t-142.5 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13 t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" />
|
408 |
+
<glyph unicode="" horiz-adv-x="1792" d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5 t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21 t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286 t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273 t273 -182.5t331.5 -68z" />
|
409 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" />
|
410 |
+
<glyph unicode="" horiz-adv-x="2048" d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" />
|
411 |
+
<glyph unicode="" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
|
412 |
+
<glyph unicode="" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
|
413 |
+
<glyph unicode="" horiz-adv-x="1280" d="M981 197q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -49 2q-53 0 -104.5 -7t-107 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -56 23.5 -102t61 -75.5t87 -50t100 -29t101.5 -8.5q58 0 111.5 13t99 39t73 73t27.5 109zM864 1055 q0 59 -17 125.5t-48 129t-84 103.5t-117 41q-42 0 -82.5 -19.5t-66.5 -52.5q-46 -59 -46 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q37 0 77.5 16.5t65.5 43.5q53 56 53 159zM752 1536h417l-137 -88h-132q75 -63 113 -133t38 -160q0 -72 -24.5 -129.5 t-59.5 -93t-69.5 -65t-59 -61.5t-24.5 -66q0 -36 32 -70.5t77 -68t90.5 -73.5t77.5 -104t32 -142q0 -91 -49 -173q-71 -122 -209.5 -179.5t-298.5 -57.5q-132 0 -246.5 41.5t-172.5 137.5q-36 59 -36 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 41 -47.5 73.5 t-15.5 73.5q0 40 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q76 66 182 98t218 32z" />
|
414 |
+
<glyph unicode="" horiz-adv-x="1984" d="M831 572q0 -56 -40.5 -96t-96.5 -40q-57 0 -98 40t-41 96q0 57 41.5 98t97.5 41t96.5 -41t40.5 -98zM1292 711q56 0 96.5 -41t40.5 -98q0 -56 -40.5 -96t-96.5 -40q-57 0 -98 40t-41 96q0 57 41.5 98t97.5 41zM1984 722q0 -62 -31 -114t-83 -82q5 -33 5 -61 q0 -121 -68.5 -230.5t-197.5 -193.5q-125 -82 -285.5 -125.5t-335.5 -43.5q-176 0 -336.5 43.5t-284.5 125.5q-129 84 -197.5 193t-68.5 231q0 29 5 66q-48 31 -77 81.5t-29 109.5q0 94 66 160t160 66q83 0 148 -55q248 158 592 164l134 423q4 14 17.5 21.5t28.5 4.5 l347 -82q22 50 68.5 81t102.5 31q77 0 131.5 -54.5t54.5 -131.5t-54.5 -132t-131.5 -55q-76 0 -130.5 54t-55.5 131l-315 74l-116 -366q327 -14 560 -166q64 58 151 58q94 0 160 -66t66 -160zM1664 1459q-45 0 -77 -32t-32 -77t32 -77t77 -32t77 32t32 77t-32 77t-77 32z M77 722q0 -67 51 -111q49 131 180 235q-36 25 -82 25q-62 0 -105.5 -43.5t-43.5 -105.5zM1567 105q112 73 171.5 166t59.5 194t-59.5 193.5t-171.5 165.5q-116 75 -265.5 115.5t-313.5 40.5t-313.5 -40.5t-265.5 -115.5q-112 -73 -171.5 -165.5t-59.5 -193.5t59.5 -194 t171.5 -166q116 -75 265.5 -115.5t313.5 -40.5t313.5 40.5t265.5 115.5zM1850 605q57 46 57 117q0 62 -43.5 105.5t-105.5 43.5q-49 0 -86 -28q131 -105 178 -238zM1258 237q11 11 27 11t27 -11t11 -27.5t-11 -27.5q-99 -99 -319 -99h-2q-220 0 -319 99q-11 11 -11 27.5 t11 27.5t27 11t27 -11q77 -77 265 -77h2q188 0 265 77z" />
|
415 |
+
<glyph unicode="" d="M950 393q7 7 17.5 7t17.5 -7t7 -18t-7 -18q-65 -64 -208 -64h-1h-1q-143 0 -207 64q-8 7 -8 18t8 18q7 7 17.5 7t17.5 -7q49 -51 172 -51h1h1q122 0 173 51zM671 613q0 -37 -26 -64t-63 -27t-63 27t-26 64t26 63t63 26t63 -26t26 -63zM1214 1049q-29 0 -50 21t-21 50 q0 30 21 51t50 21q30 0 51 -21t21 -51q0 -29 -21 -50t-51 -21zM1216 1408q132 0 226 -94t94 -227v-894q0 -133 -94 -227t-226 -94h-896q-132 0 -226 94t-94 227v894q0 133 94 227t226 94h896zM1321 596q35 14 57 45.5t22 70.5q0 51 -36 87.5t-87 36.5q-60 0 -98 -48 q-151 107 -375 115l83 265l206 -49q1 -50 36.5 -85t84.5 -35q50 0 86 35.5t36 85.5t-36 86t-86 36q-36 0 -66 -20.5t-45 -53.5l-227 54q-9 2 -17.5 -2.5t-11.5 -14.5l-95 -302q-224 -4 -381 -113q-36 43 -93 43q-51 0 -87 -36.5t-36 -87.5q0 -37 19.5 -67.5t52.5 -45.5 q-7 -25 -7 -54q0 -98 74 -181.5t201.5 -132t278.5 -48.5q150 0 277.5 48.5t201.5 132t74 181.5q0 27 -6 54zM971 702q37 0 63 -26t26 -63t-26 -64t-63 -27t-63 27t-26 64t26 63t63 26z" />
|
416 |
+
<glyph unicode="" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" />
|
417 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
|
418 |
+
<glyph unicode="" d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
|
419 |
+
<glyph unicode="" horiz-adv-x="2048" d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123 v-369h123z" />
|
420 |
+
<glyph unicode="" d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101 v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
421 |
+
<glyph unicode="" horiz-adv-x="2038" d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14 q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24 q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33 q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5 t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43 q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5 t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13 t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" />
|
422 |
+
<glyph unicode="" d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10 q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14 q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14 t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44 q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" />
|
423 |
+
<glyph unicode="" d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5 t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5 q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126 t135.5 51q85 0 145 -60.5t60 -145.5z" />
|
424 |
+
<glyph unicode="" d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5 q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28 q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11 q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q106 35 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5 q20 0 20 -21v-418z" />
|
425 |
+
<glyph unicode="" horiz-adv-x="1792" d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48 l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23 t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128 q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128 q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" />
|
426 |
+
<glyph unicode="" d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9 t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9 t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" />
|
427 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68t68 28t68 -28l228 -228h368l228 228q28 28 68 28t68 -28t28 -68t-28 -68zM864 1152q0 -93 -65.5 -158.5 t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
|
428 |
+
<glyph unicode="" horiz-adv-x="1664" d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5 q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819 q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5 t100.5 134t141.5 55.5z" />
|
429 |
+
<glyph unicode="" horiz-adv-x="768" d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" />
|
430 |
+
<glyph unicode="" horiz-adv-x="1792" d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z " />
|
431 |
+
<glyph unicode="" horiz-adv-x="2304" d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67 t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-5 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70 v-400l434 -186q36 -16 57 -48t21 -70z" />
|
432 |
+
<glyph unicode="" horiz-adv-x="2048" d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658 q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204 q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" />
|
433 |
+
<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5 t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217 t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" />
|
434 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5 q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89 q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" />
|
435 |
+
<glyph unicode="" d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5 q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5 q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z " />
|
436 |
+
<glyph unicode="" horiz-adv-x="1792" d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188 l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5 t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1 q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" />
|
437 |
+
<glyph unicode="" horiz-adv-x="2048" d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384 q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5 l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" />
|
438 |
+
<glyph unicode="" horiz-adv-x="2048" d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" />
|
439 |
+
<glyph unicode="" d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" />
|
440 |
+
<glyph unicode="" d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
441 |
+
<glyph unicode="" d="M1397 1408q58 0 98.5 -40.5t40.5 -98.5v-1258q0 -58 -40.5 -98.5t-98.5 -40.5h-1258q-58 0 -98.5 40.5t-40.5 98.5v1258q0 58 40.5 98.5t98.5 40.5h1258zM1465 11v1258q0 28 -20 48t-48 20h-1258q-28 0 -48 -20t-20 -48v-1258q0 -28 20 -48t48 -20h1258q28 0 48 20t20 48 zM694 749l188 -387l533 145v-496q0 -7 -5.5 -12.5t-12.5 -5.5h-1258q-7 0 -12.5 5.5t-5.5 12.5v141l711 195l-212 439q4 1 12 2.5t12 1.5q170 32 303.5 21.5t221 -46t143.5 -94.5q27 -28 -25 -42q-64 -16 -256 -62l-97 198q-111 7 -240 -16zM1397 1287q7 0 12.5 -5.5 t5.5 -12.5v-428q-85 30 -188 52q-294 64 -645 12l-18 -3l-65 134h-233l85 -190q-132 -51 -230 -137v560q0 7 5.5 12.5t12.5 5.5h1258zM286 387q-14 -3 -26 4.5t-14 21.5q-24 203 166 305l129 -270z" />
|
442 |
+
<glyph unicode="" horiz-adv-x="2304" d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236q0 -11 -8 -19 t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22v899 q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" />
|
443 |
+
<glyph unicode="" d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128v128q0 69 103 128t280 93.5t385 34.5z" />
|
444 |
+
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" />
|
445 |
+
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4l-3 21q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5t-3.5 -21.5l-4 -21h-4l-2 21 q-2 26 -7 46l-99 438h90v107h-300z" />
|
446 |
+
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107 h-290v-107h68l189 -272l-194 -283h-68z" />
|
447 |
+
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" />
|
448 |
+
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" />
|
449 |
+
<glyph unicode="" d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400 v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79 q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" />
|
450 |
+
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5 q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" />
|
451 |
+
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" />
|
452 |
+
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243 l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" />
|
453 |
+
<glyph unicode="" d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406 q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" />
|
454 |
+
<glyph unicode="" horiz-adv-x="1792" d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" />
|
455 |
+
<glyph unicode="" horiz-adv-x="2048" d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5 t-85 -189.5z" />
|
456 |
+
<glyph unicode="" horiz-adv-x="1792" d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
|
457 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348q0 222 101 414.5t276.5 317t390.5 155.5v-260q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 q0 230 -145.5 406t-366.5 221v260q215 -31 390.5 -155.5t276.5 -317t101 -414.5z" />
|
458 |
+
<glyph unicode="" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
|
459 |
+
<glyph unicode="" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
|
460 |
+
<glyph unicode="" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
461 |
+
<glyph unicode="" horiz-adv-x="1792" d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58 q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47 q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171 v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" />
|
462 |
+
<glyph unicode="" d="M825 547l343 588h-150q-21 -39 -63.5 -118.5t-68 -128.5t-59.5 -118.5t-60 -128.5h-3q-21 48 -44.5 97t-52 105.5t-46.5 92t-54 104.5t-49 95h-150l323 -589v-435h134v436zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
463 |
+
<glyph unicode="" horiz-adv-x="1280" d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5 t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153 t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" />
|
464 |
+
<glyph unicode="" horiz-adv-x="1792" d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5 q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20 t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5 t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" />
|
465 |
+
<glyph unicode="" horiz-adv-x="2048" d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25 q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5 q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109 q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" />
|
466 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" />
|
467 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137 l863 639l-478 -797z" />
|
468 |
+
<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23 t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" />
|
469 |
+
<glyph unicode="" d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
470 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15 t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2 t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160 q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5 q0 -26 -12 -48t-36 -22z" />
|
471 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179 q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" />
|
472 |
+
<glyph unicode="" d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256 q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" />
|
473 |
+
<glyph unicode="" d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5 t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" />
|
474 |
+
<glyph unicode="" d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5 t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
475 |
+
<glyph unicode="" horiz-adv-x="1792" d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5 t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91 q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9 t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
|
476 |
+
<glyph unicode="" horiz-adv-x="1792" d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323 l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" />
|
477 |
+
<glyph unicode="" horiz-adv-x="1792" d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23 zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5 t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" />
|
478 |
+
<glyph unicode="" horiz-adv-x="1792" d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" />
|
479 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1755 1083q37 -37 37 -90t-37 -91l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234l401 400 q38 37 91 37t90 -37z" />
|
480 |
+
<glyph unicode="" horiz-adv-x="1792" d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5 t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q3 -2 11 -7 t11 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" />
|
481 |
+
<glyph unicode="" horiz-adv-x="1792" d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" />
|
482 |
+
<glyph unicode="" d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36 q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q70 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5 t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87 q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" />
|
483 |
+
<glyph unicode="" horiz-adv-x="2048" d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19 t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" />
|
484 |
+
<glyph unicode="" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
|
485 |
+
<glyph unicode="" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
|
486 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1112 1090q0 159 -237 159h-70q-32 0 -59.5 -21.5t-34.5 -52.5l-63 -276q-2 -5 -2 -16q0 -24 17 -39.5t41 -15.5h53q69 0 128.5 13t112.5 41t83.5 81.5t30.5 126.5zM1716 938q0 -265 -220 -428q-219 -161 -612 -161h-61q-32 0 -59 -21.5t-34 -52.5l-73 -316 q-8 -36 -40.5 -61.5t-69.5 -25.5h-213q-31 0 -53 20t-22 51q0 10 13 65h151q34 0 64 23.5t38 56.5l73 316q8 33 37.5 57t63.5 24h61q390 0 607 160t217 421q0 129 -51 207q183 -92 183 -335zM1533 1123q0 -264 -221 -428q-218 -161 -612 -161h-60q-32 0 -59.5 -22t-34.5 -53 l-73 -315q-8 -36 -40 -61.5t-69 -25.5h-214q-31 0 -52.5 19.5t-21.5 51.5q0 8 2 20l300 1301q8 36 40.5 61.5t69.5 25.5h444q68 0 125 -4t120.5 -15t113.5 -30t96.5 -50.5t77.5 -74t49.5 -103.5t18.5 -136z" />
|
487 |
+
<glyph unicode="" horiz-adv-x="1792" d="M602 949q19 -61 31 -123.5t17 -141.5t-14 -159t-62 -145q-21 81 -67 157t-95.5 127t-99 90.5t-78.5 57.5t-33 19q-62 34 -81.5 100t14.5 128t101 81.5t129 -14.5q138 -83 238 -177zM927 1236q11 -25 20.5 -46t36.5 -100.5t42.5 -150.5t25.5 -179.5t0 -205.5t-47.5 -209.5 t-105.5 -208.5q-51 -72 -138 -72q-54 0 -98 31q-57 40 -69 109t28 127q60 85 81 195t13 199.5t-32 180.5t-39 128t-22 52q-31 63 -8.5 129.5t85.5 97.5q34 17 75 17q47 0 88.5 -25t63.5 -69zM1248 567q-17 -160 -72 -311q-17 131 -63 246q25 174 -5 361q-27 178 -94 342 q114 -90 212 -211q9 -37 15 -80q26 -179 7 -347zM1520 1440q9 -17 23.5 -49.5t43.5 -117.5t50.5 -178t34 -227.5t5 -269t-47 -300t-112.5 -323.5q-22 -48 -66 -75.5t-95 -27.5q-39 0 -74 16q-67 31 -92.5 100t4.5 136q58 126 90 257.5t37.5 239.5t-3.5 213.5t-26.5 180.5 t-38.5 138.5t-32.5 90t-15.5 32.5q-34 65 -11.5 135.5t87.5 104.5q37 20 81 20q49 0 91.5 -25.5t66.5 -70.5z" />
|
488 |
+
<glyph unicode="" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
|
489 |
+
<glyph unicode="" horiz-adv-x="2304" d="M671 603h-13q-47 0 -47 -32q0 -22 20 -22q17 0 28 15t12 39zM1066 639h62v3q1 4 0.5 6.5t-1 7t-2 8t-4.5 6.5t-7.5 5t-11.5 2q-28 0 -36 -38zM1606 603h-12q-48 0 -48 -32q0 -22 20 -22q17 0 28 15t12 39zM1925 629q0 41 -30 41q-19 0 -31 -20t-12 -51q0 -42 28 -42 q20 0 32.5 20t12.5 52zM480 770h87l-44 -262h-56l32 201l-71 -201h-39l-4 200l-34 -200h-53l44 262h81l2 -163zM733 663q0 -6 -4 -42q-16 -101 -17 -113h-47l1 22q-20 -26 -58 -26q-23 0 -37.5 16t-14.5 42q0 39 26 60.5t73 21.5q14 0 23 -1q0 3 0.5 5.5t1 4.5t0.5 3 q0 20 -36 20q-29 0 -59 -10q0 4 7 48q38 11 67 11q74 0 74 -62zM889 721l-8 -49q-22 3 -41 3q-27 0 -27 -17q0 -8 4.5 -12t21.5 -11q40 -19 40 -60q0 -72 -87 -71q-34 0 -58 6q0 2 7 49q29 -8 51 -8q32 0 32 19q0 7 -4.5 11.5t-21.5 12.5q-43 20 -43 59q0 72 84 72 q30 0 50 -4zM977 721h28l-7 -52h-29q-2 -17 -6.5 -40.5t-7 -38.5t-2.5 -18q0 -16 19 -16q8 0 16 2l-8 -47q-21 -7 -40 -7q-43 0 -45 47q0 12 8 56q3 20 25 146h55zM1180 648q0 -23 -7 -52h-111q-3 -22 10 -33t38 -11q30 0 58 14l-9 -54q-30 -8 -57 -8q-95 0 -95 95 q0 55 27.5 90.5t69.5 35.5q35 0 55.5 -21t20.5 -56zM1319 722q-13 -23 -22 -62q-22 2 -31 -24t-25 -128h-56l3 14q22 130 29 199h51l-3 -33q14 21 25.5 29.5t28.5 4.5zM1506 763l-9 -57q-28 14 -50 14q-31 0 -51 -27.5t-20 -70.5q0 -30 13.5 -47t38.5 -17q21 0 48 13 l-10 -59q-28 -8 -50 -8q-45 0 -71.5 30.5t-26.5 82.5q0 70 35.5 114.5t91.5 44.5q26 0 61 -13zM1668 663q0 -18 -4 -42q-13 -79 -17 -113h-46l1 22q-20 -26 -59 -26q-23 0 -37 16t-14 42q0 39 25.5 60.5t72.5 21.5q15 0 23 -1q2 7 2 13q0 20 -36 20q-29 0 -59 -10q0 4 8 48 q38 11 67 11q73 0 73 -62zM1809 722q-14 -24 -21 -62q-23 2 -31.5 -23t-25.5 -129h-56l3 14q19 104 29 199h52q0 -11 -4 -33q15 21 26.5 29.5t27.5 4.5zM1950 770h56l-43 -262h-53l3 19q-23 -23 -52 -23q-31 0 -49.5 24t-18.5 64q0 53 27.5 92t64.5 39q31 0 53 -29z M2061 640q0 148 -72.5 273t-198 198t-273.5 73q-181 0 -328 -110q127 -116 171 -284h-50q-44 150 -158 253q-114 -103 -158 -253h-50q44 168 171 284q-147 110 -328 110q-148 0 -273.5 -73t-198 -198t-72.5 -273t72.5 -273t198 -198t273.5 -73q181 0 328 110 q-120 111 -165 264h50q46 -138 152 -233q106 95 152 233h50q-45 -153 -165 -264q147 -110 328 -110q148 0 273.5 73t198 198t72.5 273zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
|
490 |
+
<glyph unicode="" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
|
491 |
+
<glyph unicode="" horiz-adv-x="2304" d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260 l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279 v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040 q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168 q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5 t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21 h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5 t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
|
492 |
+
<glyph unicode="" horiz-adv-x="2304" d="M322 689h-15q-19 0 -19 18q0 28 19 85q5 15 15 19.5t28 4.5q77 0 77 -49q0 -41 -30.5 -59.5t-74.5 -18.5zM664 528q-47 0 -47 29q0 62 123 62l3 -3q-5 -88 -79 -88zM1438 687h-15q-19 0 -19 19q0 28 19 85q5 15 14.5 19t28.5 4q77 0 77 -49q0 -41 -30.5 -59.5 t-74.5 -18.5zM1780 527q-47 0 -47 30q0 62 123 62l3 -3q-5 -89 -79 -89zM373 894h-128q-8 0 -14.5 -4t-8.5 -7.5t-7 -12.5q-3 -7 -45 -190t-42 -192q0 -7 5.5 -12.5t13.5 -5.5h62q25 0 32.5 34.5l15 69t32.5 34.5q47 0 87.5 7.5t80.5 24.5t63.5 52.5t23.5 84.5 q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM719 798q-38 0 -74 -6q-2 0 -8.5 -1t-9 -1.5l-7.5 -1.5t-7.5 -2t-6.5 -3t-6.5 -4t-5 -5t-4.5 -7t-4 -9q-9 -29 -9 -39t9 -10q5 0 21.5 5t19.5 6q30 8 58 8q74 0 74 -36q0 -11 -10 -14q-8 -2 -18 -3t-21.5 -1.5t-17.5 -1.5 q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5q0 -38 26 -59.5t64 -21.5q24 0 45.5 6.5t33 13t38.5 23.5q-3 -7 -3 -15t5.5 -13.5t12.5 -5.5h56q1 1 7 3.5t7.5 3.5t5 3.5t5 5.5t2.5 8l45 194q4 13 4 30q0 81 -145 81zM1247 793h-74q-22 0 -39 -23q-5 -7 -29.5 -51 t-46.5 -81.5t-26 -38.5l-5 4q0 77 -27 166q-1 5 -3.5 8.5t-6 6.5t-6.5 5t-8.5 3t-8.5 1.5t-9.5 1t-9 0.5h-10h-8.5q-38 0 -38 -21l1 -5q5 -53 25 -151t25 -143q2 -16 2 -24q0 -19 -30.5 -61.5t-30.5 -58.5q0 -13 40 -13q61 0 76 25l245 415q10 20 10 26q0 9 -8 9zM1489 892 h-129q-18 0 -29 -23q-6 -13 -46.5 -191.5t-40.5 -190.5q0 -20 43 -20h7.5h9h9t9.5 1t8.5 2t8.5 3t6.5 4.5t5.5 6t3 8.5l21 91q2 10 10.5 17t19.5 7q47 0 87.5 7t80.5 24.5t63.5 52.5t23.5 84q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM1835 798q-26 0 -74 -6 q-38 -6 -48 -16q-7 -8 -11 -19q-8 -24 -8 -39q0 -10 8 -10q1 0 41 12q30 8 58 8q74 0 74 -36q0 -12 -10 -14q-4 -1 -57 -7q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5t26 -58.5t64 -21.5q24 0 45 6t34 13t38 24q-3 -15 -3 -16q0 -5 2 -8.5t6.5 -5.5t8 -3.5 t10.5 -2t9.5 -0.5h9.5h8q42 0 48 25l45 194q3 15 3 31q0 81 -145 81zM2157 889h-55q-25 0 -33 -40q-10 -44 -36.5 -167t-42.5 -190v-5q0 -16 16 -18h1h57q10 0 18.5 6.5t10.5 16.5l83 374h-1l1 5q0 7 -5.5 12.5t-13.5 5.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048 q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
|
493 |
+
<glyph unicode="" horiz-adv-x="2304" d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109 q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118 q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151 q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31 q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
|
494 |
+
<glyph unicode="" horiz-adv-x="2048" d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5 l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5 l418 363q10 8 23.5 7t21.5 -11z" />
|
495 |
+
<glyph unicode="" horiz-adv-x="2048" d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128 q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161 q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" />
|
496 |
+
<glyph unicode="" horiz-adv-x="1408" d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167 q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
|
497 |
+
<glyph unicode="" d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5 t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
498 |
+
<glyph unicode="" d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53 q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24 t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61 t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" />
|
499 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10 t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" />
|
500 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5 t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" />
|
501 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11t55.5 -11t52.5 -38q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5t47 37.5 q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-35 0 -55.5 11t-52.5 38q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38t-58 27 t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448h256v448 h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51 t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" />
|
502 |
+
<glyph unicode="" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" />
|
503 |
+
<glyph unicode="" horiz-adv-x="1792" d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" />
|
504 |
+
<glyph unicode="" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9 t9 -23z" />
|
505 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20 q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50 t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1 q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" />
|
506 |
+
<glyph unicode="" d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73 q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110 q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
507 |
+
<glyph unicode="" horiz-adv-x="2048" d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5 t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5 t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" />
|
508 |
+
<glyph unicode="" horiz-adv-x="2048" d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5 t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
|
509 |
+
<glyph unicode="" horiz-adv-x="2304" d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94 q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469 q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400 q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" />
|
510 |
+
<glyph unicode="" d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5 h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" />
|
511 |
+
<glyph unicode="" horiz-adv-x="2048" d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327 q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5 q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" />
|
512 |
+
<glyph unicode="" horiz-adv-x="1280" d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q18 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119 t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5 t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14 q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88 q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5 t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" />
|
513 |
+
<glyph unicode="" horiz-adv-x="2048" d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" />
|
514 |
+
<glyph unicode="" d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
|
515 |
+
<glyph unicode="" d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" />
|
516 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
517 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
518 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
519 |
+
</font>
|
520 |
+
</defs></svg>
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/fontawesome-webfont.ttf
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/fonts/fontawesome-webfont.woff
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/jquery-1.11.1.js
ADDED
@@ -0,0 +1,10308 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* jQuery JavaScript Library v1.11.1
|
3 |
+
* http://jquery.com/
|
4 |
+
*
|
5 |
+
* Includes Sizzle.js
|
6 |
+
* http://sizzlejs.com/
|
7 |
+
*
|
8 |
+
* Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
|
9 |
+
* Released under the MIT license
|
10 |
+
* http://jquery.org/license
|
11 |
+
*
|
12 |
+
* Date: 2014-05-01T17:42Z
|
13 |
+
*/
|
14 |
+
|
15 |
+
(function( global, factory ) {
|
16 |
+
|
17 |
+
if ( typeof module === "object" && typeof module.exports === "object" ) {
|
18 |
+
// For CommonJS and CommonJS-like environments where a proper window is present,
|
19 |
+
// execute the factory and get jQuery
|
20 |
+
// For environments that do not inherently posses a window with a document
|
21 |
+
// (such as Node.js), expose a jQuery-making factory as module.exports
|
22 |
+
// This accentuates the need for the creation of a real window
|
23 |
+
// e.g. var jQuery = require("jquery")(window);
|
24 |
+
// See ticket #14549 for more info
|
25 |
+
module.exports = global.document ?
|
26 |
+
factory( global, true ) :
|
27 |
+
function( w ) {
|
28 |
+
if ( !w.document ) {
|
29 |
+
throw new Error( "jQuery requires a window with a document" );
|
30 |
+
}
|
31 |
+
return factory( w );
|
32 |
+
};
|
33 |
+
} else {
|
34 |
+
factory( global );
|
35 |
+
}
|
36 |
+
|
37 |
+
// Pass this if window is not defined yet
|
38 |
+
}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
|
39 |
+
|
40 |
+
// Can't do this because several apps including ASP.NET trace
|
41 |
+
// the stack via arguments.caller.callee and Firefox dies if
|
42 |
+
// you try to trace through "use strict" call chains. (#13335)
|
43 |
+
// Support: Firefox 18+
|
44 |
+
//
|
45 |
+
|
46 |
+
var deletedIds = [];
|
47 |
+
|
48 |
+
var slice = deletedIds.slice;
|
49 |
+
|
50 |
+
var concat = deletedIds.concat;
|
51 |
+
|
52 |
+
var push = deletedIds.push;
|
53 |
+
|
54 |
+
var indexOf = deletedIds.indexOf;
|
55 |
+
|
56 |
+
var class2type = {};
|
57 |
+
|
58 |
+
var toString = class2type.toString;
|
59 |
+
|
60 |
+
var hasOwn = class2type.hasOwnProperty;
|
61 |
+
|
62 |
+
var support = {};
|
63 |
+
|
64 |
+
|
65 |
+
|
66 |
+
var
|
67 |
+
version = "1.11.1",
|
68 |
+
|
69 |
+
// Define a local copy of jQuery
|
70 |
+
jQuery = function( selector, context ) {
|
71 |
+
// The jQuery object is actually just the init constructor 'enhanced'
|
72 |
+
// Need init if jQuery is called (just allow error to be thrown if not included)
|
73 |
+
return new jQuery.fn.init( selector, context );
|
74 |
+
},
|
75 |
+
|
76 |
+
// Support: Android<4.1, IE<9
|
77 |
+
// Make sure we trim BOM and NBSP
|
78 |
+
rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
|
79 |
+
|
80 |
+
// Matches dashed string for camelizing
|
81 |
+
rmsPrefix = /^-ms-/,
|
82 |
+
rdashAlpha = /-([\da-z])/gi,
|
83 |
+
|
84 |
+
// Used by jQuery.camelCase as callback to replace()
|
85 |
+
fcamelCase = function( all, letter ) {
|
86 |
+
return letter.toUpperCase();
|
87 |
+
};
|
88 |
+
|
89 |
+
jQuery.fn = jQuery.prototype = {
|
90 |
+
// The current version of jQuery being used
|
91 |
+
jquery: version,
|
92 |
+
|
93 |
+
constructor: jQuery,
|
94 |
+
|
95 |
+
// Start with an empty selector
|
96 |
+
selector: "",
|
97 |
+
|
98 |
+
// The default length of a jQuery object is 0
|
99 |
+
length: 0,
|
100 |
+
|
101 |
+
toArray: function() {
|
102 |
+
return slice.call( this );
|
103 |
+
},
|
104 |
+
|
105 |
+
// Get the Nth element in the matched element set OR
|
106 |
+
// Get the whole matched element set as a clean array
|
107 |
+
get: function( num ) {
|
108 |
+
return num != null ?
|
109 |
+
|
110 |
+
// Return just the one element from the set
|
111 |
+
( num < 0 ? this[ num + this.length ] : this[ num ] ) :
|
112 |
+
|
113 |
+
// Return all the elements in a clean array
|
114 |
+
slice.call( this );
|
115 |
+
},
|
116 |
+
|
117 |
+
// Take an array of elements and push it onto the stack
|
118 |
+
// (returning the new matched element set)
|
119 |
+
pushStack: function( elems ) {
|
120 |
+
|
121 |
+
// Build a new jQuery matched element set
|
122 |
+
var ret = jQuery.merge( this.constructor(), elems );
|
123 |
+
|
124 |
+
// Add the old object onto the stack (as a reference)
|
125 |
+
ret.prevObject = this;
|
126 |
+
ret.context = this.context;
|
127 |
+
|
128 |
+
// Return the newly-formed element set
|
129 |
+
return ret;
|
130 |
+
},
|
131 |
+
|
132 |
+
// Execute a callback for every element in the matched set.
|
133 |
+
// (You can seed the arguments with an array of args, but this is
|
134 |
+
// only used internally.)
|
135 |
+
each: function( callback, args ) {
|
136 |
+
return jQuery.each( this, callback, args );
|
137 |
+
},
|
138 |
+
|
139 |
+
map: function( callback ) {
|
140 |
+
return this.pushStack( jQuery.map(this, function( elem, i ) {
|
141 |
+
return callback.call( elem, i, elem );
|
142 |
+
}));
|
143 |
+
},
|
144 |
+
|
145 |
+
slice: function() {
|
146 |
+
return this.pushStack( slice.apply( this, arguments ) );
|
147 |
+
},
|
148 |
+
|
149 |
+
first: function() {
|
150 |
+
return this.eq( 0 );
|
151 |
+
},
|
152 |
+
|
153 |
+
last: function() {
|
154 |
+
return this.eq( -1 );
|
155 |
+
},
|
156 |
+
|
157 |
+
eq: function( i ) {
|
158 |
+
var len = this.length,
|
159 |
+
j = +i + ( i < 0 ? len : 0 );
|
160 |
+
return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
|
161 |
+
},
|
162 |
+
|
163 |
+
end: function() {
|
164 |
+
return this.prevObject || this.constructor(null);
|
165 |
+
},
|
166 |
+
|
167 |
+
// For internal use only.
|
168 |
+
// Behaves like an Array's method, not like a jQuery method.
|
169 |
+
push: push,
|
170 |
+
sort: deletedIds.sort,
|
171 |
+
splice: deletedIds.splice
|
172 |
+
};
|
173 |
+
|
174 |
+
jQuery.extend = jQuery.fn.extend = function() {
|
175 |
+
var src, copyIsArray, copy, name, options, clone,
|
176 |
+
target = arguments[0] || {},
|
177 |
+
i = 1,
|
178 |
+
length = arguments.length,
|
179 |
+
deep = false;
|
180 |
+
|
181 |
+
// Handle a deep copy situation
|
182 |
+
if ( typeof target === "boolean" ) {
|
183 |
+
deep = target;
|
184 |
+
|
185 |
+
// skip the boolean and the target
|
186 |
+
target = arguments[ i ] || {};
|
187 |
+
i++;
|
188 |
+
}
|
189 |
+
|
190 |
+
// Handle case when target is a string or something (possible in deep copy)
|
191 |
+
if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
|
192 |
+
target = {};
|
193 |
+
}
|
194 |
+
|
195 |
+
// extend jQuery itself if only one argument is passed
|
196 |
+
if ( i === length ) {
|
197 |
+
target = this;
|
198 |
+
i--;
|
199 |
+
}
|
200 |
+
|
201 |
+
for ( ; i < length; i++ ) {
|
202 |
+
// Only deal with non-null/undefined values
|
203 |
+
if ( (options = arguments[ i ]) != null ) {
|
204 |
+
// Extend the base object
|
205 |
+
for ( name in options ) {
|
206 |
+
src = target[ name ];
|
207 |
+
copy = options[ name ];
|
208 |
+
|
209 |
+
// Prevent never-ending loop
|
210 |
+
if ( target === copy ) {
|
211 |
+
continue;
|
212 |
+
}
|
213 |
+
|
214 |
+
// Recurse if we're merging plain objects or arrays
|
215 |
+
if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
|
216 |
+
if ( copyIsArray ) {
|
217 |
+
copyIsArray = false;
|
218 |
+
clone = src && jQuery.isArray(src) ? src : [];
|
219 |
+
|
220 |
+
} else {
|
221 |
+
clone = src && jQuery.isPlainObject(src) ? src : {};
|
222 |
+
}
|
223 |
+
|
224 |
+
// Never move original objects, clone them
|
225 |
+
target[ name ] = jQuery.extend( deep, clone, copy );
|
226 |
+
|
227 |
+
// Don't bring in undefined values
|
228 |
+
} else if ( copy !== undefined ) {
|
229 |
+
target[ name ] = copy;
|
230 |
+
}
|
231 |
+
}
|
232 |
+
}
|
233 |
+
}
|
234 |
+
|
235 |
+
// Return the modified object
|
236 |
+
return target;
|
237 |
+
};
|
238 |
+
|
239 |
+
jQuery.extend({
|
240 |
+
// Unique for each copy of jQuery on the page
|
241 |
+
expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
|
242 |
+
|
243 |
+
// Assume jQuery is ready without the ready module
|
244 |
+
isReady: true,
|
245 |
+
|
246 |
+
error: function( msg ) {
|
247 |
+
throw new Error( msg );
|
248 |
+
},
|
249 |
+
|
250 |
+
noop: function() {},
|
251 |
+
|
252 |
+
// See test/unit/core.js for details concerning isFunction.
|
253 |
+
// Since version 1.3, DOM methods and functions like alert
|
254 |
+
// aren't supported. They return false on IE (#2968).
|
255 |
+
isFunction: function( obj ) {
|
256 |
+
return jQuery.type(obj) === "function";
|
257 |
+
},
|
258 |
+
|
259 |
+
isArray: Array.isArray || function( obj ) {
|
260 |
+
return jQuery.type(obj) === "array";
|
261 |
+
},
|
262 |
+
|
263 |
+
isWindow: function( obj ) {
|
264 |
+
/* jshint eqeqeq: false */
|
265 |
+
return obj != null && obj == obj.window;
|
266 |
+
},
|
267 |
+
|
268 |
+
isNumeric: function( obj ) {
|
269 |
+
// parseFloat NaNs numeric-cast false positives (null|true|false|"")
|
270 |
+
// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
|
271 |
+
// subtraction forces infinities to NaN
|
272 |
+
return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0;
|
273 |
+
},
|
274 |
+
|
275 |
+
isEmptyObject: function( obj ) {
|
276 |
+
var name;
|
277 |
+
for ( name in obj ) {
|
278 |
+
return false;
|
279 |
+
}
|
280 |
+
return true;
|
281 |
+
},
|
282 |
+
|
283 |
+
isPlainObject: function( obj ) {
|
284 |
+
var key;
|
285 |
+
|
286 |
+
// Must be an Object.
|
287 |
+
// Because of IE, we also have to check the presence of the constructor property.
|
288 |
+
// Make sure that DOM nodes and window objects don't pass through, as well
|
289 |
+
if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
|
290 |
+
return false;
|
291 |
+
}
|
292 |
+
|
293 |
+
try {
|
294 |
+
// Not own constructor property must be Object
|
295 |
+
if ( obj.constructor &&
|
296 |
+
!hasOwn.call(obj, "constructor") &&
|
297 |
+
!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
|
298 |
+
return false;
|
299 |
+
}
|
300 |
+
} catch ( e ) {
|
301 |
+
// IE8,9 Will throw exceptions on certain host objects #9897
|
302 |
+
return false;
|
303 |
+
}
|
304 |
+
|
305 |
+
// Support: IE<9
|
306 |
+
// Handle iteration over inherited properties before own properties.
|
307 |
+
if ( support.ownLast ) {
|
308 |
+
for ( key in obj ) {
|
309 |
+
return hasOwn.call( obj, key );
|
310 |
+
}
|
311 |
+
}
|
312 |
+
|
313 |
+
// Own properties are enumerated firstly, so to speed up,
|
314 |
+
// if last one is own, then all properties are own.
|
315 |
+
for ( key in obj ) {}
|
316 |
+
|
317 |
+
return key === undefined || hasOwn.call( obj, key );
|
318 |
+
},
|
319 |
+
|
320 |
+
type: function( obj ) {
|
321 |
+
if ( obj == null ) {
|
322 |
+
return obj + "";
|
323 |
+
}
|
324 |
+
return typeof obj === "object" || typeof obj === "function" ?
|
325 |
+
class2type[ toString.call(obj) ] || "object" :
|
326 |
+
typeof obj;
|
327 |
+
},
|
328 |
+
|
329 |
+
// Evaluates a script in a global context
|
330 |
+
// Workarounds based on findings by Jim Driscoll
|
331 |
+
// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
|
332 |
+
globalEval: function( data ) {
|
333 |
+
if ( data && jQuery.trim( data ) ) {
|
334 |
+
// We use execScript on Internet Explorer
|
335 |
+
// We use an anonymous function so that context is window
|
336 |
+
// rather than jQuery in Firefox
|
337 |
+
( window.execScript || function( data ) {
|
338 |
+
window[ "eval" ].call( window, data );
|
339 |
+
} )( data );
|
340 |
+
}
|
341 |
+
},
|
342 |
+
|
343 |
+
// Convert dashed to camelCase; used by the css and data modules
|
344 |
+
// Microsoft forgot to hump their vendor prefix (#9572)
|
345 |
+
camelCase: function( string ) {
|
346 |
+
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
|
347 |
+
},
|
348 |
+
|
349 |
+
nodeName: function( elem, name ) {
|
350 |
+
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
|
351 |
+
},
|
352 |
+
|
353 |
+
// args is for internal usage only
|
354 |
+
each: function( obj, callback, args ) {
|
355 |
+
var value,
|
356 |
+
i = 0,
|
357 |
+
length = obj.length,
|
358 |
+
isArray = isArraylike( obj );
|
359 |
+
|
360 |
+
if ( args ) {
|
361 |
+
if ( isArray ) {
|
362 |
+
for ( ; i < length; i++ ) {
|
363 |
+
value = callback.apply( obj[ i ], args );
|
364 |
+
|
365 |
+
if ( value === false ) {
|
366 |
+
break;
|
367 |
+
}
|
368 |
+
}
|
369 |
+
} else {
|
370 |
+
for ( i in obj ) {
|
371 |
+
value = callback.apply( obj[ i ], args );
|
372 |
+
|
373 |
+
if ( value === false ) {
|
374 |
+
break;
|
375 |
+
}
|
376 |
+
}
|
377 |
+
}
|
378 |
+
|
379 |
+
// A special, fast, case for the most common use of each
|
380 |
+
} else {
|
381 |
+
if ( isArray ) {
|
382 |
+
for ( ; i < length; i++ ) {
|
383 |
+
value = callback.call( obj[ i ], i, obj[ i ] );
|
384 |
+
|
385 |
+
if ( value === false ) {
|
386 |
+
break;
|
387 |
+
}
|
388 |
+
}
|
389 |
+
} else {
|
390 |
+
for ( i in obj ) {
|
391 |
+
value = callback.call( obj[ i ], i, obj[ i ] );
|
392 |
+
|
393 |
+
if ( value === false ) {
|
394 |
+
break;
|
395 |
+
}
|
396 |
+
}
|
397 |
+
}
|
398 |
+
}
|
399 |
+
|
400 |
+
return obj;
|
401 |
+
},
|
402 |
+
|
403 |
+
// Support: Android<4.1, IE<9
|
404 |
+
trim: function( text ) {
|
405 |
+
return text == null ?
|
406 |
+
"" :
|
407 |
+
( text + "" ).replace( rtrim, "" );
|
408 |
+
},
|
409 |
+
|
410 |
+
// results is for internal usage only
|
411 |
+
makeArray: function( arr, results ) {
|
412 |
+
var ret = results || [];
|
413 |
+
|
414 |
+
if ( arr != null ) {
|
415 |
+
if ( isArraylike( Object(arr) ) ) {
|
416 |
+
jQuery.merge( ret,
|
417 |
+
typeof arr === "string" ?
|
418 |
+
[ arr ] : arr
|
419 |
+
);
|
420 |
+
} else {
|
421 |
+
push.call( ret, arr );
|
422 |
+
}
|
423 |
+
}
|
424 |
+
|
425 |
+
return ret;
|
426 |
+
},
|
427 |
+
|
428 |
+
inArray: function( elem, arr, i ) {
|
429 |
+
var len;
|
430 |
+
|
431 |
+
if ( arr ) {
|
432 |
+
if ( indexOf ) {
|
433 |
+
return indexOf.call( arr, elem, i );
|
434 |
+
}
|
435 |
+
|
436 |
+
len = arr.length;
|
437 |
+
i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
|
438 |
+
|
439 |
+
for ( ; i < len; i++ ) {
|
440 |
+
// Skip accessing in sparse arrays
|
441 |
+
if ( i in arr && arr[ i ] === elem ) {
|
442 |
+
return i;
|
443 |
+
}
|
444 |
+
}
|
445 |
+
}
|
446 |
+
|
447 |
+
return -1;
|
448 |
+
},
|
449 |
+
|
450 |
+
merge: function( first, second ) {
|
451 |
+
var len = +second.length,
|
452 |
+
j = 0,
|
453 |
+
i = first.length;
|
454 |
+
|
455 |
+
while ( j < len ) {
|
456 |
+
first[ i++ ] = second[ j++ ];
|
457 |
+
}
|
458 |
+
|
459 |
+
// Support: IE<9
|
460 |
+
// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)
|
461 |
+
if ( len !== len ) {
|
462 |
+
while ( second[j] !== undefined ) {
|
463 |
+
first[ i++ ] = second[ j++ ];
|
464 |
+
}
|
465 |
+
}
|
466 |
+
|
467 |
+
first.length = i;
|
468 |
+
|
469 |
+
return first;
|
470 |
+
},
|
471 |
+
|
472 |
+
grep: function( elems, callback, invert ) {
|
473 |
+
var callbackInverse,
|
474 |
+
matches = [],
|
475 |
+
i = 0,
|
476 |
+
length = elems.length,
|
477 |
+
callbackExpect = !invert;
|
478 |
+
|
479 |
+
// Go through the array, only saving the items
|
480 |
+
// that pass the validator function
|
481 |
+
for ( ; i < length; i++ ) {
|
482 |
+
callbackInverse = !callback( elems[ i ], i );
|
483 |
+
if ( callbackInverse !== callbackExpect ) {
|
484 |
+
matches.push( elems[ i ] );
|
485 |
+
}
|
486 |
+
}
|
487 |
+
|
488 |
+
return matches;
|
489 |
+
},
|
490 |
+
|
491 |
+
// arg is for internal usage only
|
492 |
+
map: function( elems, callback, arg ) {
|
493 |
+
var value,
|
494 |
+
i = 0,
|
495 |
+
length = elems.length,
|
496 |
+
isArray = isArraylike( elems ),
|
497 |
+
ret = [];
|
498 |
+
|
499 |
+
// Go through the array, translating each of the items to their new values
|
500 |
+
if ( isArray ) {
|
501 |
+
for ( ; i < length; i++ ) {
|
502 |
+
value = callback( elems[ i ], i, arg );
|
503 |
+
|
504 |
+
if ( value != null ) {
|
505 |
+
ret.push( value );
|
506 |
+
}
|
507 |
+
}
|
508 |
+
|
509 |
+
// Go through every key on the object,
|
510 |
+
} else {
|
511 |
+
for ( i in elems ) {
|
512 |
+
value = callback( elems[ i ], i, arg );
|
513 |
+
|
514 |
+
if ( value != null ) {
|
515 |
+
ret.push( value );
|
516 |
+
}
|
517 |
+
}
|
518 |
+
}
|
519 |
+
|
520 |
+
// Flatten any nested arrays
|
521 |
+
return concat.apply( [], ret );
|
522 |
+
},
|
523 |
+
|
524 |
+
// A global GUID counter for objects
|
525 |
+
guid: 1,
|
526 |
+
|
527 |
+
// Bind a function to a context, optionally partially applying any
|
528 |
+
// arguments.
|
529 |
+
proxy: function( fn, context ) {
|
530 |
+
var args, proxy, tmp;
|
531 |
+
|
532 |
+
if ( typeof context === "string" ) {
|
533 |
+
tmp = fn[ context ];
|
534 |
+
context = fn;
|
535 |
+
fn = tmp;
|
536 |
+
}
|
537 |
+
|
538 |
+
// Quick check to determine if target is callable, in the spec
|
539 |
+
// this throws a TypeError, but we will just return undefined.
|
540 |
+
if ( !jQuery.isFunction( fn ) ) {
|
541 |
+
return undefined;
|
542 |
+
}
|
543 |
+
|
544 |
+
// Simulated bind
|
545 |
+
args = slice.call( arguments, 2 );
|
546 |
+
proxy = function() {
|
547 |
+
return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
|
548 |
+
};
|
549 |
+
|
550 |
+
// Set the guid of unique handler to the same of original handler, so it can be removed
|
551 |
+
proxy.guid = fn.guid = fn.guid || jQuery.guid++;
|
552 |
+
|
553 |
+
return proxy;
|
554 |
+
},
|
555 |
+
|
556 |
+
now: function() {
|
557 |
+
return +( new Date() );
|
558 |
+
},
|
559 |
+
|
560 |
+
// jQuery.support is not used in Core but other projects attach their
|
561 |
+
// properties to it so it needs to exist.
|
562 |
+
support: support
|
563 |
+
});
|
564 |
+
|
565 |
+
// Populate the class2type map
|
566 |
+
jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
|
567 |
+
class2type[ "[object " + name + "]" ] = name.toLowerCase();
|
568 |
+
});
|
569 |
+
|
570 |
+
function isArraylike( obj ) {
|
571 |
+
var length = obj.length,
|
572 |
+
type = jQuery.type( obj );
|
573 |
+
|
574 |
+
if ( type === "function" || jQuery.isWindow( obj ) ) {
|
575 |
+
return false;
|
576 |
+
}
|
577 |
+
|
578 |
+
if ( obj.nodeType === 1 && length ) {
|
579 |
+
return true;
|
580 |
+
}
|
581 |
+
|
582 |
+
return type === "array" || length === 0 ||
|
583 |
+
typeof length === "number" && length > 0 && ( length - 1 ) in obj;
|
584 |
+
}
|
585 |
+
var Sizzle =
|
586 |
+
/*!
|
587 |
+
* Sizzle CSS Selector Engine v1.10.19
|
588 |
+
* http://sizzlejs.com/
|
589 |
+
*
|
590 |
+
* Copyright 2013 jQuery Foundation, Inc. and other contributors
|
591 |
+
* Released under the MIT license
|
592 |
+
* http://jquery.org/license
|
593 |
+
*
|
594 |
+
* Date: 2014-04-18
|
595 |
+
*/
|
596 |
+
(function( window ) {
|
597 |
+
|
598 |
+
var i,
|
599 |
+
support,
|
600 |
+
Expr,
|
601 |
+
getText,
|
602 |
+
isXML,
|
603 |
+
tokenize,
|
604 |
+
compile,
|
605 |
+
select,
|
606 |
+
outermostContext,
|
607 |
+
sortInput,
|
608 |
+
hasDuplicate,
|
609 |
+
|
610 |
+
// Local document vars
|
611 |
+
setDocument,
|
612 |
+
document,
|
613 |
+
docElem,
|
614 |
+
documentIsHTML,
|
615 |
+
rbuggyQSA,
|
616 |
+
rbuggyMatches,
|
617 |
+
matches,
|
618 |
+
contains,
|
619 |
+
|
620 |
+
// Instance-specific data
|
621 |
+
expando = "sizzle" + -(new Date()),
|
622 |
+
preferredDoc = window.document,
|
623 |
+
dirruns = 0,
|
624 |
+
done = 0,
|
625 |
+
classCache = createCache(),
|
626 |
+
tokenCache = createCache(),
|
627 |
+
compilerCache = createCache(),
|
628 |
+
sortOrder = function( a, b ) {
|
629 |
+
if ( a === b ) {
|
630 |
+
hasDuplicate = true;
|
631 |
+
}
|
632 |
+
return 0;
|
633 |
+
},
|
634 |
+
|
635 |
+
// General-purpose constants
|
636 |
+
strundefined = typeof undefined,
|
637 |
+
MAX_NEGATIVE = 1 << 31,
|
638 |
+
|
639 |
+
// Instance methods
|
640 |
+
hasOwn = ({}).hasOwnProperty,
|
641 |
+
arr = [],
|
642 |
+
pop = arr.pop,
|
643 |
+
push_native = arr.push,
|
644 |
+
push = arr.push,
|
645 |
+
slice = arr.slice,
|
646 |
+
// Use a stripped-down indexOf if we can't use a native one
|
647 |
+
indexOf = arr.indexOf || function( elem ) {
|
648 |
+
var i = 0,
|
649 |
+
len = this.length;
|
650 |
+
for ( ; i < len; i++ ) {
|
651 |
+
if ( this[i] === elem ) {
|
652 |
+
return i;
|
653 |
+
}
|
654 |
+
}
|
655 |
+
return -1;
|
656 |
+
},
|
657 |
+
|
658 |
+
booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
|
659 |
+
|
660 |
+
// Regular expressions
|
661 |
+
|
662 |
+
// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
|
663 |
+
whitespace = "[\\x20\\t\\r\\n\\f]",
|
664 |
+
// http://www.w3.org/TR/css3-syntax/#characters
|
665 |
+
characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
|
666 |
+
|
667 |
+
// Loosely modeled on CSS identifier characters
|
668 |
+
// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
|
669 |
+
// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
|
670 |
+
identifier = characterEncoding.replace( "w", "w#" ),
|
671 |
+
|
672 |
+
// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
|
673 |
+
attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
|
674 |
+
// Operator (capture 2)
|
675 |
+
"*([*^$|!~]?=)" + whitespace +
|
676 |
+
// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
|
677 |
+
"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
|
678 |
+
"*\\]",
|
679 |
+
|
680 |
+
pseudos = ":(" + characterEncoding + ")(?:\\((" +
|
681 |
+
// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
|
682 |
+
// 1. quoted (capture 3; capture 4 or capture 5)
|
683 |
+
"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
|
684 |
+
// 2. simple (capture 6)
|
685 |
+
"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
|
686 |
+
// 3. anything else (capture 2)
|
687 |
+
".*" +
|
688 |
+
")\\)|)",
|
689 |
+
|
690 |
+
// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
|
691 |
+
rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
|
692 |
+
|
693 |
+
rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
|
694 |
+
rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
|
695 |
+
|
696 |
+
rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
|
697 |
+
|
698 |
+
rpseudo = new RegExp( pseudos ),
|
699 |
+
ridentifier = new RegExp( "^" + identifier + "$" ),
|
700 |
+
|
701 |
+
matchExpr = {
|
702 |
+
"ID": new RegExp( "^#(" + characterEncoding + ")" ),
|
703 |
+
"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
|
704 |
+
"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
|
705 |
+
"ATTR": new RegExp( "^" + attributes ),
|
706 |
+
"PSEUDO": new RegExp( "^" + pseudos ),
|
707 |
+
"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
|
708 |
+
"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
|
709 |
+
"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
|
710 |
+
"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
|
711 |
+
// For use in libraries implementing .is()
|
712 |
+
// We use this for POS matching in `select`
|
713 |
+
"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
|
714 |
+
whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
|
715 |
+
},
|
716 |
+
|
717 |
+
rinputs = /^(?:input|select|textarea|button)$/i,
|
718 |
+
rheader = /^h\d$/i,
|
719 |
+
|
720 |
+
rnative = /^[^{]+\{\s*\[native \w/,
|
721 |
+
|
722 |
+
// Easily-parseable/retrievable ID or TAG or CLASS selectors
|
723 |
+
rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
|
724 |
+
|
725 |
+
rsibling = /[+~]/,
|
726 |
+
rescape = /'|\\/g,
|
727 |
+
|
728 |
+
// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
|
729 |
+
runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
|
730 |
+
funescape = function( _, escaped, escapedWhitespace ) {
|
731 |
+
var high = "0x" + escaped - 0x10000;
|
732 |
+
// NaN means non-codepoint
|
733 |
+
// Support: Firefox<24
|
734 |
+
// Workaround erroneous numeric interpretation of +"0x"
|
735 |
+
return high !== high || escapedWhitespace ?
|
736 |
+
escaped :
|
737 |
+
high < 0 ?
|
738 |
+
// BMP codepoint
|
739 |
+
String.fromCharCode( high + 0x10000 ) :
|
740 |
+
// Supplemental Plane codepoint (surrogate pair)
|
741 |
+
String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
|
742 |
+
};
|
743 |
+
|
744 |
+
// Optimize for push.apply( _, NodeList )
|
745 |
+
try {
|
746 |
+
push.apply(
|
747 |
+
(arr = slice.call( preferredDoc.childNodes )),
|
748 |
+
preferredDoc.childNodes
|
749 |
+
);
|
750 |
+
// Support: Android<4.0
|
751 |
+
// Detect silently failing push.apply
|
752 |
+
arr[ preferredDoc.childNodes.length ].nodeType;
|
753 |
+
} catch ( e ) {
|
754 |
+
push = { apply: arr.length ?
|
755 |
+
|
756 |
+
// Leverage slice if possible
|
757 |
+
function( target, els ) {
|
758 |
+
push_native.apply( target, slice.call(els) );
|
759 |
+
} :
|
760 |
+
|
761 |
+
// Support: IE<9
|
762 |
+
// Otherwise append directly
|
763 |
+
function( target, els ) {
|
764 |
+
var j = target.length,
|
765 |
+
i = 0;
|
766 |
+
// Can't trust NodeList.length
|
767 |
+
while ( (target[j++] = els[i++]) ) {}
|
768 |
+
target.length = j - 1;
|
769 |
+
}
|
770 |
+
};
|
771 |
+
}
|
772 |
+
|
773 |
+
function Sizzle( selector, context, results, seed ) {
|
774 |
+
var match, elem, m, nodeType,
|
775 |
+
// QSA vars
|
776 |
+
i, groups, old, nid, newContext, newSelector;
|
777 |
+
|
778 |
+
if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
|
779 |
+
setDocument( context );
|
780 |
+
}
|
781 |
+
|
782 |
+
context = context || document;
|
783 |
+
results = results || [];
|
784 |
+
|
785 |
+
if ( !selector || typeof selector !== "string" ) {
|
786 |
+
return results;
|
787 |
+
}
|
788 |
+
|
789 |
+
if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
|
790 |
+
return [];
|
791 |
+
}
|
792 |
+
|
793 |
+
if ( documentIsHTML && !seed ) {
|
794 |
+
|
795 |
+
// Shortcuts
|
796 |
+
if ( (match = rquickExpr.exec( selector )) ) {
|
797 |
+
// Speed-up: Sizzle("#ID")
|
798 |
+
if ( (m = match[1]) ) {
|
799 |
+
if ( nodeType === 9 ) {
|
800 |
+
elem = context.getElementById( m );
|
801 |
+
// Check parentNode to catch when Blackberry 4.6 returns
|
802 |
+
// nodes that are no longer in the document (jQuery #6963)
|
803 |
+
if ( elem && elem.parentNode ) {
|
804 |
+
// Handle the case where IE, Opera, and Webkit return items
|
805 |
+
// by name instead of ID
|
806 |
+
if ( elem.id === m ) {
|
807 |
+
results.push( elem );
|
808 |
+
return results;
|
809 |
+
}
|
810 |
+
} else {
|
811 |
+
return results;
|
812 |
+
}
|
813 |
+
} else {
|
814 |
+
// Context is not a document
|
815 |
+
if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
|
816 |
+
contains( context, elem ) && elem.id === m ) {
|
817 |
+
results.push( elem );
|
818 |
+
return results;
|
819 |
+
}
|
820 |
+
}
|
821 |
+
|
822 |
+
// Speed-up: Sizzle("TAG")
|
823 |
+
} else if ( match[2] ) {
|
824 |
+
push.apply( results, context.getElementsByTagName( selector ) );
|
825 |
+
return results;
|
826 |
+
|
827 |
+
// Speed-up: Sizzle(".CLASS")
|
828 |
+
} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
|
829 |
+
push.apply( results, context.getElementsByClassName( m ) );
|
830 |
+
return results;
|
831 |
+
}
|
832 |
+
}
|
833 |
+
|
834 |
+
// QSA path
|
835 |
+
if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
|
836 |
+
nid = old = expando;
|
837 |
+
newContext = context;
|
838 |
+
newSelector = nodeType === 9 && selector;
|
839 |
+
|
840 |
+
// qSA works strangely on Element-rooted queries
|
841 |
+
// We can work around this by specifying an extra ID on the root
|
842 |
+
// and working up from there (Thanks to Andrew Dupont for the technique)
|
843 |
+
// IE 8 doesn't work on object elements
|
844 |
+
if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
|
845 |
+
groups = tokenize( selector );
|
846 |
+
|
847 |
+
if ( (old = context.getAttribute("id")) ) {
|
848 |
+
nid = old.replace( rescape, "\\$&" );
|
849 |
+
} else {
|
850 |
+
context.setAttribute( "id", nid );
|
851 |
+
}
|
852 |
+
nid = "[id='" + nid + "'] ";
|
853 |
+
|
854 |
+
i = groups.length;
|
855 |
+
while ( i-- ) {
|
856 |
+
groups[i] = nid + toSelector( groups[i] );
|
857 |
+
}
|
858 |
+
newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
|
859 |
+
newSelector = groups.join(",");
|
860 |
+
}
|
861 |
+
|
862 |
+
if ( newSelector ) {
|
863 |
+
try {
|
864 |
+
push.apply( results,
|
865 |
+
newContext.querySelectorAll( newSelector )
|
866 |
+
);
|
867 |
+
return results;
|
868 |
+
} catch(qsaError) {
|
869 |
+
} finally {
|
870 |
+
if ( !old ) {
|
871 |
+
context.removeAttribute("id");
|
872 |
+
}
|
873 |
+
}
|
874 |
+
}
|
875 |
+
}
|
876 |
+
}
|
877 |
+
|
878 |
+
// All others
|
879 |
+
return select( selector.replace( rtrim, "$1" ), context, results, seed );
|
880 |
+
}
|
881 |
+
|
882 |
+
/**
|
883 |
+
* Create key-value caches of limited size
|
884 |
+
* @returns {Function(string, Object)} Returns the Object data after storing it on itself with
|
885 |
+
* property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
|
886 |
+
* deleting the oldest entry
|
887 |
+
*/
|
888 |
+
function createCache() {
|
889 |
+
var keys = [];
|
890 |
+
|
891 |
+
function cache( key, value ) {
|
892 |
+
// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
|
893 |
+
if ( keys.push( key + " " ) > Expr.cacheLength ) {
|
894 |
+
// Only keep the most recent entries
|
895 |
+
delete cache[ keys.shift() ];
|
896 |
+
}
|
897 |
+
return (cache[ key + " " ] = value);
|
898 |
+
}
|
899 |
+
return cache;
|
900 |
+
}
|
901 |
+
|
902 |
+
/**
|
903 |
+
* Mark a function for special use by Sizzle
|
904 |
+
* @param {Function} fn The function to mark
|
905 |
+
*/
|
906 |
+
function markFunction( fn ) {
|
907 |
+
fn[ expando ] = true;
|
908 |
+
return fn;
|
909 |
+
}
|
910 |
+
|
911 |
+
/**
|
912 |
+
* Support testing using an element
|
913 |
+
* @param {Function} fn Passed the created div and expects a boolean result
|
914 |
+
*/
|
915 |
+
function assert( fn ) {
|
916 |
+
var div = document.createElement("div");
|
917 |
+
|
918 |
+
try {
|
919 |
+
return !!fn( div );
|
920 |
+
} catch (e) {
|
921 |
+
return false;
|
922 |
+
} finally {
|
923 |
+
// Remove from its parent by default
|
924 |
+
if ( div.parentNode ) {
|
925 |
+
div.parentNode.removeChild( div );
|
926 |
+
}
|
927 |
+
// release memory in IE
|
928 |
+
div = null;
|
929 |
+
}
|
930 |
+
}
|
931 |
+
|
932 |
+
/**
|
933 |
+
* Adds the same handler for all of the specified attrs
|
934 |
+
* @param {String} attrs Pipe-separated list of attributes
|
935 |
+
* @param {Function} handler The method that will be applied
|
936 |
+
*/
|
937 |
+
function addHandle( attrs, handler ) {
|
938 |
+
var arr = attrs.split("|"),
|
939 |
+
i = attrs.length;
|
940 |
+
|
941 |
+
while ( i-- ) {
|
942 |
+
Expr.attrHandle[ arr[i] ] = handler;
|
943 |
+
}
|
944 |
+
}
|
945 |
+
|
946 |
+
/**
|
947 |
+
* Checks document order of two siblings
|
948 |
+
* @param {Element} a
|
949 |
+
* @param {Element} b
|
950 |
+
* @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
|
951 |
+
*/
|
952 |
+
function siblingCheck( a, b ) {
|
953 |
+
var cur = b && a,
|
954 |
+
diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
|
955 |
+
( ~b.sourceIndex || MAX_NEGATIVE ) -
|
956 |
+
( ~a.sourceIndex || MAX_NEGATIVE );
|
957 |
+
|
958 |
+
// Use IE sourceIndex if available on both nodes
|
959 |
+
if ( diff ) {
|
960 |
+
return diff;
|
961 |
+
}
|
962 |
+
|
963 |
+
// Check if b follows a
|
964 |
+
if ( cur ) {
|
965 |
+
while ( (cur = cur.nextSibling) ) {
|
966 |
+
if ( cur === b ) {
|
967 |
+
return -1;
|
968 |
+
}
|
969 |
+
}
|
970 |
+
}
|
971 |
+
|
972 |
+
return a ? 1 : -1;
|
973 |
+
}
|
974 |
+
|
975 |
+
/**
|
976 |
+
* Returns a function to use in pseudos for input types
|
977 |
+
* @param {String} type
|
978 |
+
*/
|
979 |
+
function createInputPseudo( type ) {
|
980 |
+
return function( elem ) {
|
981 |
+
var name = elem.nodeName.toLowerCase();
|
982 |
+
return name === "input" && elem.type === type;
|
983 |
+
};
|
984 |
+
}
|
985 |
+
|
986 |
+
/**
|
987 |
+
* Returns a function to use in pseudos for buttons
|
988 |
+
* @param {String} type
|
989 |
+
*/
|
990 |
+
function createButtonPseudo( type ) {
|
991 |
+
return function( elem ) {
|
992 |
+
var name = elem.nodeName.toLowerCase();
|
993 |
+
return (name === "input" || name === "button") && elem.type === type;
|
994 |
+
};
|
995 |
+
}
|
996 |
+
|
997 |
+
/**
|
998 |
+
* Returns a function to use in pseudos for positionals
|
999 |
+
* @param {Function} fn
|
1000 |
+
*/
|
1001 |
+
function createPositionalPseudo( fn ) {
|
1002 |
+
return markFunction(function( argument ) {
|
1003 |
+
argument = +argument;
|
1004 |
+
return markFunction(function( seed, matches ) {
|
1005 |
+
var j,
|
1006 |
+
matchIndexes = fn( [], seed.length, argument ),
|
1007 |
+
i = matchIndexes.length;
|
1008 |
+
|
1009 |
+
// Match elements found at the specified indexes
|
1010 |
+
while ( i-- ) {
|
1011 |
+
if ( seed[ (j = matchIndexes[i]) ] ) {
|
1012 |
+
seed[j] = !(matches[j] = seed[j]);
|
1013 |
+
}
|
1014 |
+
}
|
1015 |
+
});
|
1016 |
+
});
|
1017 |
+
}
|
1018 |
+
|
1019 |
+
/**
|
1020 |
+
* Checks a node for validity as a Sizzle context
|
1021 |
+
* @param {Element|Object=} context
|
1022 |
+
* @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
|
1023 |
+
*/
|
1024 |
+
function testContext( context ) {
|
1025 |
+
return context && typeof context.getElementsByTagName !== strundefined && context;
|
1026 |
+
}
|
1027 |
+
|
1028 |
+
// Expose support vars for convenience
|
1029 |
+
support = Sizzle.support = {};
|
1030 |
+
|
1031 |
+
/**
|
1032 |
+
* Detects XML nodes
|
1033 |
+
* @param {Element|Object} elem An element or a document
|
1034 |
+
* @returns {Boolean} True iff elem is a non-HTML XML node
|
1035 |
+
*/
|
1036 |
+
isXML = Sizzle.isXML = function( elem ) {
|
1037 |
+
// documentElement is verified for cases where it doesn't yet exist
|
1038 |
+
// (such as loading iframes in IE - #4833)
|
1039 |
+
var documentElement = elem && (elem.ownerDocument || elem).documentElement;
|
1040 |
+
return documentElement ? documentElement.nodeName !== "HTML" : false;
|
1041 |
+
};
|
1042 |
+
|
1043 |
+
/**
|
1044 |
+
* Sets document-related variables once based on the current document
|
1045 |
+
* @param {Element|Object} [doc] An element or document object to use to set the document
|
1046 |
+
* @returns {Object} Returns the current document
|
1047 |
+
*/
|
1048 |
+
setDocument = Sizzle.setDocument = function( node ) {
|
1049 |
+
var hasCompare,
|
1050 |
+
doc = node ? node.ownerDocument || node : preferredDoc,
|
1051 |
+
parent = doc.defaultView;
|
1052 |
+
|
1053 |
+
// If no document and documentElement is available, return
|
1054 |
+
if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
|
1055 |
+
return document;
|
1056 |
+
}
|
1057 |
+
|
1058 |
+
// Set our document
|
1059 |
+
document = doc;
|
1060 |
+
docElem = doc.documentElement;
|
1061 |
+
|
1062 |
+
// Support tests
|
1063 |
+
documentIsHTML = !isXML( doc );
|
1064 |
+
|
1065 |
+
// Support: IE>8
|
1066 |
+
// If iframe document is assigned to "document" variable and if iframe has been reloaded,
|
1067 |
+
// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
|
1068 |
+
// IE6-8 do not support the defaultView property so parent will be undefined
|
1069 |
+
if ( parent && parent !== parent.top ) {
|
1070 |
+
// IE11 does not have attachEvent, so all must suffer
|
1071 |
+
if ( parent.addEventListener ) {
|
1072 |
+
parent.addEventListener( "unload", function() {
|
1073 |
+
setDocument();
|
1074 |
+
}, false );
|
1075 |
+
} else if ( parent.attachEvent ) {
|
1076 |
+
parent.attachEvent( "onunload", function() {
|
1077 |
+
setDocument();
|
1078 |
+
});
|
1079 |
+
}
|
1080 |
+
}
|
1081 |
+
|
1082 |
+
/* Attributes
|
1083 |
+
---------------------------------------------------------------------- */
|
1084 |
+
|
1085 |
+
// Support: IE<8
|
1086 |
+
// Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
|
1087 |
+
support.attributes = assert(function( div ) {
|
1088 |
+
div.className = "i";
|
1089 |
+
return !div.getAttribute("className");
|
1090 |
+
});
|
1091 |
+
|
1092 |
+
/* getElement(s)By*
|
1093 |
+
---------------------------------------------------------------------- */
|
1094 |
+
|
1095 |
+
// Check if getElementsByTagName("*") returns only elements
|
1096 |
+
support.getElementsByTagName = assert(function( div ) {
|
1097 |
+
div.appendChild( doc.createComment("") );
|
1098 |
+
return !div.getElementsByTagName("*").length;
|
1099 |
+
});
|
1100 |
+
|
1101 |
+
// Check if getElementsByClassName can be trusted
|
1102 |
+
support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {
|
1103 |
+
div.innerHTML = "<div class='a'></div><div class='a i'></div>";
|
1104 |
+
|
1105 |
+
// Support: Safari<4
|
1106 |
+
// Catch class over-caching
|
1107 |
+
div.firstChild.className = "i";
|
1108 |
+
// Support: Opera<10
|
1109 |
+
// Catch gEBCN failure to find non-leading classes
|
1110 |
+
return div.getElementsByClassName("i").length === 2;
|
1111 |
+
});
|
1112 |
+
|
1113 |
+
// Support: IE<10
|
1114 |
+
// Check if getElementById returns elements by name
|
1115 |
+
// The broken getElementById methods don't pick up programatically-set names,
|
1116 |
+
// so use a roundabout getElementsByName test
|
1117 |
+
support.getById = assert(function( div ) {
|
1118 |
+
docElem.appendChild( div ).id = expando;
|
1119 |
+
return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
|
1120 |
+
});
|
1121 |
+
|
1122 |
+
// ID find and filter
|
1123 |
+
if ( support.getById ) {
|
1124 |
+
Expr.find["ID"] = function( id, context ) {
|
1125 |
+
if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
|
1126 |
+
var m = context.getElementById( id );
|
1127 |
+
// Check parentNode to catch when Blackberry 4.6 returns
|
1128 |
+
// nodes that are no longer in the document #6963
|
1129 |
+
return m && m.parentNode ? [ m ] : [];
|
1130 |
+
}
|
1131 |
+
};
|
1132 |
+
Expr.filter["ID"] = function( id ) {
|
1133 |
+
var attrId = id.replace( runescape, funescape );
|
1134 |
+
return function( elem ) {
|
1135 |
+
return elem.getAttribute("id") === attrId;
|
1136 |
+
};
|
1137 |
+
};
|
1138 |
+
} else {
|
1139 |
+
// Support: IE6/7
|
1140 |
+
// getElementById is not reliable as a find shortcut
|
1141 |
+
delete Expr.find["ID"];
|
1142 |
+
|
1143 |
+
Expr.filter["ID"] = function( id ) {
|
1144 |
+
var attrId = id.replace( runescape, funescape );
|
1145 |
+
return function( elem ) {
|
1146 |
+
var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
|
1147 |
+
return node && node.value === attrId;
|
1148 |
+
};
|
1149 |
+
};
|
1150 |
+
}
|
1151 |
+
|
1152 |
+
// Tag
|
1153 |
+
Expr.find["TAG"] = support.getElementsByTagName ?
|
1154 |
+
function( tag, context ) {
|
1155 |
+
if ( typeof context.getElementsByTagName !== strundefined ) {
|
1156 |
+
return context.getElementsByTagName( tag );
|
1157 |
+
}
|
1158 |
+
} :
|
1159 |
+
function( tag, context ) {
|
1160 |
+
var elem,
|
1161 |
+
tmp = [],
|
1162 |
+
i = 0,
|
1163 |
+
results = context.getElementsByTagName( tag );
|
1164 |
+
|
1165 |
+
// Filter out possible comments
|
1166 |
+
if ( tag === "*" ) {
|
1167 |
+
while ( (elem = results[i++]) ) {
|
1168 |
+
if ( elem.nodeType === 1 ) {
|
1169 |
+
tmp.push( elem );
|
1170 |
+
}
|
1171 |
+
}
|
1172 |
+
|
1173 |
+
return tmp;
|
1174 |
+
}
|
1175 |
+
return results;
|
1176 |
+
};
|
1177 |
+
|
1178 |
+
// Class
|
1179 |
+
Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
|
1180 |
+
if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
|
1181 |
+
return context.getElementsByClassName( className );
|
1182 |
+
}
|
1183 |
+
};
|
1184 |
+
|
1185 |
+
/* QSA/matchesSelector
|
1186 |
+
---------------------------------------------------------------------- */
|
1187 |
+
|
1188 |
+
// QSA and matchesSelector support
|
1189 |
+
|
1190 |
+
// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
|
1191 |
+
rbuggyMatches = [];
|
1192 |
+
|
1193 |
+
// qSa(:focus) reports false when true (Chrome 21)
|
1194 |
+
// We allow this because of a bug in IE8/9 that throws an error
|
1195 |
+
// whenever `document.activeElement` is accessed on an iframe
|
1196 |
+
// So, we allow :focus to pass through QSA all the time to avoid the IE error
|
1197 |
+
// See http://bugs.jquery.com/ticket/13378
|
1198 |
+
rbuggyQSA = [];
|
1199 |
+
|
1200 |
+
if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
|
1201 |
+
// Build QSA regex
|
1202 |
+
// Regex strategy adopted from Diego Perini
|
1203 |
+
assert(function( div ) {
|
1204 |
+
// Select is set to empty string on purpose
|
1205 |
+
// This is to test IE's treatment of not explicitly
|
1206 |
+
// setting a boolean content attribute,
|
1207 |
+
// since its presence should be enough
|
1208 |
+
// http://bugs.jquery.com/ticket/12359
|
1209 |
+
div.innerHTML = "<select msallowclip=''><option selected=''></option></select>";
|
1210 |
+
|
1211 |
+
// Support: IE8, Opera 11-12.16
|
1212 |
+
// Nothing should be selected when empty strings follow ^= or $= or *=
|
1213 |
+
// The test attribute must be unknown in Opera but "safe" for WinRT
|
1214 |
+
// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
|
1215 |
+
if ( div.querySelectorAll("[msallowclip^='']").length ) {
|
1216 |
+
rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
|
1217 |
+
}
|
1218 |
+
|
1219 |
+
// Support: IE8
|
1220 |
+
// Boolean attributes and "value" are not treated correctly
|
1221 |
+
if ( !div.querySelectorAll("[selected]").length ) {
|
1222 |
+
rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
|
1223 |
+
}
|
1224 |
+
|
1225 |
+
// Webkit/Opera - :checked should return selected option elements
|
1226 |
+
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
|
1227 |
+
// IE8 throws error here and will not see later tests
|
1228 |
+
if ( !div.querySelectorAll(":checked").length ) {
|
1229 |
+
rbuggyQSA.push(":checked");
|
1230 |
+
}
|
1231 |
+
});
|
1232 |
+
|
1233 |
+
assert(function( div ) {
|
1234 |
+
// Support: Windows 8 Native Apps
|
1235 |
+
// The type and name attributes are restricted during .innerHTML assignment
|
1236 |
+
var input = doc.createElement("input");
|
1237 |
+
input.setAttribute( "type", "hidden" );
|
1238 |
+
div.appendChild( input ).setAttribute( "name", "D" );
|
1239 |
+
|
1240 |
+
// Support: IE8
|
1241 |
+
// Enforce case-sensitivity of name attribute
|
1242 |
+
if ( div.querySelectorAll("[name=d]").length ) {
|
1243 |
+
rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
|
1244 |
+
}
|
1245 |
+
|
1246 |
+
// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
|
1247 |
+
// IE8 throws error here and will not see later tests
|
1248 |
+
if ( !div.querySelectorAll(":enabled").length ) {
|
1249 |
+
rbuggyQSA.push( ":enabled", ":disabled" );
|
1250 |
+
}
|
1251 |
+
|
1252 |
+
// Opera 10-11 does not throw on post-comma invalid pseudos
|
1253 |
+
div.querySelectorAll("*,:x");
|
1254 |
+
rbuggyQSA.push(",.*:");
|
1255 |
+
});
|
1256 |
+
}
|
1257 |
+
|
1258 |
+
if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
|
1259 |
+
docElem.webkitMatchesSelector ||
|
1260 |
+
docElem.mozMatchesSelector ||
|
1261 |
+
docElem.oMatchesSelector ||
|
1262 |
+
docElem.msMatchesSelector) )) ) {
|
1263 |
+
|
1264 |
+
assert(function( div ) {
|
1265 |
+
// Check to see if it's possible to do matchesSelector
|
1266 |
+
// on a disconnected node (IE 9)
|
1267 |
+
support.disconnectedMatch = matches.call( div, "div" );
|
1268 |
+
|
1269 |
+
// This should fail with an exception
|
1270 |
+
// Gecko does not error, returns false instead
|
1271 |
+
matches.call( div, "[s!='']:x" );
|
1272 |
+
rbuggyMatches.push( "!=", pseudos );
|
1273 |
+
});
|
1274 |
+
}
|
1275 |
+
|
1276 |
+
rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
|
1277 |
+
rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
|
1278 |
+
|
1279 |
+
/* Contains
|
1280 |
+
---------------------------------------------------------------------- */
|
1281 |
+
hasCompare = rnative.test( docElem.compareDocumentPosition );
|
1282 |
+
|
1283 |
+
// Element contains another
|
1284 |
+
// Purposefully does not implement inclusive descendent
|
1285 |
+
// As in, an element does not contain itself
|
1286 |
+
contains = hasCompare || rnative.test( docElem.contains ) ?
|
1287 |
+
function( a, b ) {
|
1288 |
+
var adown = a.nodeType === 9 ? a.documentElement : a,
|
1289 |
+
bup = b && b.parentNode;
|
1290 |
+
return a === bup || !!( bup && bup.nodeType === 1 && (
|
1291 |
+
adown.contains ?
|
1292 |
+
adown.contains( bup ) :
|
1293 |
+
a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
|
1294 |
+
));
|
1295 |
+
} :
|
1296 |
+
function( a, b ) {
|
1297 |
+
if ( b ) {
|
1298 |
+
while ( (b = b.parentNode) ) {
|
1299 |
+
if ( b === a ) {
|
1300 |
+
return true;
|
1301 |
+
}
|
1302 |
+
}
|
1303 |
+
}
|
1304 |
+
return false;
|
1305 |
+
};
|
1306 |
+
|
1307 |
+
/* Sorting
|
1308 |
+
---------------------------------------------------------------------- */
|
1309 |
+
|
1310 |
+
// Document order sorting
|
1311 |
+
sortOrder = hasCompare ?
|
1312 |
+
function( a, b ) {
|
1313 |
+
|
1314 |
+
// Flag for duplicate removal
|
1315 |
+
if ( a === b ) {
|
1316 |
+
hasDuplicate = true;
|
1317 |
+
return 0;
|
1318 |
+
}
|
1319 |
+
|
1320 |
+
// Sort on method existence if only one input has compareDocumentPosition
|
1321 |
+
var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
|
1322 |
+
if ( compare ) {
|
1323 |
+
return compare;
|
1324 |
+
}
|
1325 |
+
|
1326 |
+
// Calculate position if both inputs belong to the same document
|
1327 |
+
compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
|
1328 |
+
a.compareDocumentPosition( b ) :
|
1329 |
+
|
1330 |
+
// Otherwise we know they are disconnected
|
1331 |
+
1;
|
1332 |
+
|
1333 |
+
// Disconnected nodes
|
1334 |
+
if ( compare & 1 ||
|
1335 |
+
(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
|
1336 |
+
|
1337 |
+
// Choose the first element that is related to our preferred document
|
1338 |
+
if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
|
1339 |
+
return -1;
|
1340 |
+
}
|
1341 |
+
if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
|
1342 |
+
return 1;
|
1343 |
+
}
|
1344 |
+
|
1345 |
+
// Maintain original order
|
1346 |
+
return sortInput ?
|
1347 |
+
( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
|
1348 |
+
0;
|
1349 |
+
}
|
1350 |
+
|
1351 |
+
return compare & 4 ? -1 : 1;
|
1352 |
+
} :
|
1353 |
+
function( a, b ) {
|
1354 |
+
// Exit early if the nodes are identical
|
1355 |
+
if ( a === b ) {
|
1356 |
+
hasDuplicate = true;
|
1357 |
+
return 0;
|
1358 |
+
}
|
1359 |
+
|
1360 |
+
var cur,
|
1361 |
+
i = 0,
|
1362 |
+
aup = a.parentNode,
|
1363 |
+
bup = b.parentNode,
|
1364 |
+
ap = [ a ],
|
1365 |
+
bp = [ b ];
|
1366 |
+
|
1367 |
+
// Parentless nodes are either documents or disconnected
|
1368 |
+
if ( !aup || !bup ) {
|
1369 |
+
return a === doc ? -1 :
|
1370 |
+
b === doc ? 1 :
|
1371 |
+
aup ? -1 :
|
1372 |
+
bup ? 1 :
|
1373 |
+
sortInput ?
|
1374 |
+
( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
|
1375 |
+
0;
|
1376 |
+
|
1377 |
+
// If the nodes are siblings, we can do a quick check
|
1378 |
+
} else if ( aup === bup ) {
|
1379 |
+
return siblingCheck( a, b );
|
1380 |
+
}
|
1381 |
+
|
1382 |
+
// Otherwise we need full lists of their ancestors for comparison
|
1383 |
+
cur = a;
|
1384 |
+
while ( (cur = cur.parentNode) ) {
|
1385 |
+
ap.unshift( cur );
|
1386 |
+
}
|
1387 |
+
cur = b;
|
1388 |
+
while ( (cur = cur.parentNode) ) {
|
1389 |
+
bp.unshift( cur );
|
1390 |
+
}
|
1391 |
+
|
1392 |
+
// Walk down the tree looking for a discrepancy
|
1393 |
+
while ( ap[i] === bp[i] ) {
|
1394 |
+
i++;
|
1395 |
+
}
|
1396 |
+
|
1397 |
+
return i ?
|
1398 |
+
// Do a sibling check if the nodes have a common ancestor
|
1399 |
+
siblingCheck( ap[i], bp[i] ) :
|
1400 |
+
|
1401 |
+
// Otherwise nodes in our document sort first
|
1402 |
+
ap[i] === preferredDoc ? -1 :
|
1403 |
+
bp[i] === preferredDoc ? 1 :
|
1404 |
+
0;
|
1405 |
+
};
|
1406 |
+
|
1407 |
+
return doc;
|
1408 |
+
};
|
1409 |
+
|
1410 |
+
Sizzle.matches = function( expr, elements ) {
|
1411 |
+
return Sizzle( expr, null, null, elements );
|
1412 |
+
};
|
1413 |
+
|
1414 |
+
Sizzle.matchesSelector = function( elem, expr ) {
|
1415 |
+
// Set document vars if needed
|
1416 |
+
if ( ( elem.ownerDocument || elem ) !== document ) {
|
1417 |
+
setDocument( elem );
|
1418 |
+
}
|
1419 |
+
|
1420 |
+
// Make sure that attribute selectors are quoted
|
1421 |
+
expr = expr.replace( rattributeQuotes, "='$1']" );
|
1422 |
+
|
1423 |
+
if ( support.matchesSelector && documentIsHTML &&
|
1424 |
+
( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
|
1425 |
+
( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
|
1426 |
+
|
1427 |
+
try {
|
1428 |
+
var ret = matches.call( elem, expr );
|
1429 |
+
|
1430 |
+
// IE 9's matchesSelector returns false on disconnected nodes
|
1431 |
+
if ( ret || support.disconnectedMatch ||
|
1432 |
+
// As well, disconnected nodes are said to be in a document
|
1433 |
+
// fragment in IE 9
|
1434 |
+
elem.document && elem.document.nodeType !== 11 ) {
|
1435 |
+
return ret;
|
1436 |
+
}
|
1437 |
+
} catch(e) {}
|
1438 |
+
}
|
1439 |
+
|
1440 |
+
return Sizzle( expr, document, null, [ elem ] ).length > 0;
|
1441 |
+
};
|
1442 |
+
|
1443 |
+
Sizzle.contains = function( context, elem ) {
|
1444 |
+
// Set document vars if needed
|
1445 |
+
if ( ( context.ownerDocument || context ) !== document ) {
|
1446 |
+
setDocument( context );
|
1447 |
+
}
|
1448 |
+
return contains( context, elem );
|
1449 |
+
};
|
1450 |
+
|
1451 |
+
Sizzle.attr = function( elem, name ) {
|
1452 |
+
// Set document vars if needed
|
1453 |
+
if ( ( elem.ownerDocument || elem ) !== document ) {
|
1454 |
+
setDocument( elem );
|
1455 |
+
}
|
1456 |
+
|
1457 |
+
var fn = Expr.attrHandle[ name.toLowerCase() ],
|
1458 |
+
// Don't get fooled by Object.prototype properties (jQuery #13807)
|
1459 |
+
val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
|
1460 |
+
fn( elem, name, !documentIsHTML ) :
|
1461 |
+
undefined;
|
1462 |
+
|
1463 |
+
return val !== undefined ?
|
1464 |
+
val :
|
1465 |
+
support.attributes || !documentIsHTML ?
|
1466 |
+
elem.getAttribute( name ) :
|
1467 |
+
(val = elem.getAttributeNode(name)) && val.specified ?
|
1468 |
+
val.value :
|
1469 |
+
null;
|
1470 |
+
};
|
1471 |
+
|
1472 |
+
Sizzle.error = function( msg ) {
|
1473 |
+
throw new Error( "Syntax error, unrecognized expression: " + msg );
|
1474 |
+
};
|
1475 |
+
|
1476 |
+
/**
|
1477 |
+
* Document sorting and removing duplicates
|
1478 |
+
* @param {ArrayLike} results
|
1479 |
+
*/
|
1480 |
+
Sizzle.uniqueSort = function( results ) {
|
1481 |
+
var elem,
|
1482 |
+
duplicates = [],
|
1483 |
+
j = 0,
|
1484 |
+
i = 0;
|
1485 |
+
|
1486 |
+
// Unless we *know* we can detect duplicates, assume their presence
|
1487 |
+
hasDuplicate = !support.detectDuplicates;
|
1488 |
+
sortInput = !support.sortStable && results.slice( 0 );
|
1489 |
+
results.sort( sortOrder );
|
1490 |
+
|
1491 |
+
if ( hasDuplicate ) {
|
1492 |
+
while ( (elem = results[i++]) ) {
|
1493 |
+
if ( elem === results[ i ] ) {
|
1494 |
+
j = duplicates.push( i );
|
1495 |
+
}
|
1496 |
+
}
|
1497 |
+
while ( j-- ) {
|
1498 |
+
results.splice( duplicates[ j ], 1 );
|
1499 |
+
}
|
1500 |
+
}
|
1501 |
+
|
1502 |
+
// Clear input after sorting to release objects
|
1503 |
+
// See https://github.com/jquery/sizzle/pull/225
|
1504 |
+
sortInput = null;
|
1505 |
+
|
1506 |
+
return results;
|
1507 |
+
};
|
1508 |
+
|
1509 |
+
/**
|
1510 |
+
* Utility function for retrieving the text value of an array of DOM nodes
|
1511 |
+
* @param {Array|Element} elem
|
1512 |
+
*/
|
1513 |
+
getText = Sizzle.getText = function( elem ) {
|
1514 |
+
var node,
|
1515 |
+
ret = "",
|
1516 |
+
i = 0,
|
1517 |
+
nodeType = elem.nodeType;
|
1518 |
+
|
1519 |
+
if ( !nodeType ) {
|
1520 |
+
// If no nodeType, this is expected to be an array
|
1521 |
+
while ( (node = elem[i++]) ) {
|
1522 |
+
// Do not traverse comment nodes
|
1523 |
+
ret += getText( node );
|
1524 |
+
}
|
1525 |
+
} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
|
1526 |
+
// Use textContent for elements
|
1527 |
+
// innerText usage removed for consistency of new lines (jQuery #11153)
|
1528 |
+
if ( typeof elem.textContent === "string" ) {
|
1529 |
+
return elem.textContent;
|
1530 |
+
} else {
|
1531 |
+
// Traverse its children
|
1532 |
+
for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
|
1533 |
+
ret += getText( elem );
|
1534 |
+
}
|
1535 |
+
}
|
1536 |
+
} else if ( nodeType === 3 || nodeType === 4 ) {
|
1537 |
+
return elem.nodeValue;
|
1538 |
+
}
|
1539 |
+
// Do not include comment or processing instruction nodes
|
1540 |
+
|
1541 |
+
return ret;
|
1542 |
+
};
|
1543 |
+
|
1544 |
+
Expr = Sizzle.selectors = {
|
1545 |
+
|
1546 |
+
// Can be adjusted by the user
|
1547 |
+
cacheLength: 50,
|
1548 |
+
|
1549 |
+
createPseudo: markFunction,
|
1550 |
+
|
1551 |
+
match: matchExpr,
|
1552 |
+
|
1553 |
+
attrHandle: {},
|
1554 |
+
|
1555 |
+
find: {},
|
1556 |
+
|
1557 |
+
relative: {
|
1558 |
+
">": { dir: "parentNode", first: true },
|
1559 |
+
" ": { dir: "parentNode" },
|
1560 |
+
"+": { dir: "previousSibling", first: true },
|
1561 |
+
"~": { dir: "previousSibling" }
|
1562 |
+
},
|
1563 |
+
|
1564 |
+
preFilter: {
|
1565 |
+
"ATTR": function( match ) {
|
1566 |
+
match[1] = match[1].replace( runescape, funescape );
|
1567 |
+
|
1568 |
+
// Move the given value to match[3] whether quoted or unquoted
|
1569 |
+
match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
|
1570 |
+
|
1571 |
+
if ( match[2] === "~=" ) {
|
1572 |
+
match[3] = " " + match[3] + " ";
|
1573 |
+
}
|
1574 |
+
|
1575 |
+
return match.slice( 0, 4 );
|
1576 |
+
},
|
1577 |
+
|
1578 |
+
"CHILD": function( match ) {
|
1579 |
+
/* matches from matchExpr["CHILD"]
|
1580 |
+
1 type (only|nth|...)
|
1581 |
+
2 what (child|of-type)
|
1582 |
+
3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
|
1583 |
+
4 xn-component of xn+y argument ([+-]?\d*n|)
|
1584 |
+
5 sign of xn-component
|
1585 |
+
6 x of xn-component
|
1586 |
+
7 sign of y-component
|
1587 |
+
8 y of y-component
|
1588 |
+
*/
|
1589 |
+
match[1] = match[1].toLowerCase();
|
1590 |
+
|
1591 |
+
if ( match[1].slice( 0, 3 ) === "nth" ) {
|
1592 |
+
// nth-* requires argument
|
1593 |
+
if ( !match[3] ) {
|
1594 |
+
Sizzle.error( match[0] );
|
1595 |
+
}
|
1596 |
+
|
1597 |
+
// numeric x and y parameters for Expr.filter.CHILD
|
1598 |
+
// remember that false/true cast respectively to 0/1
|
1599 |
+
match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
|
1600 |
+
match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
|
1601 |
+
|
1602 |
+
// other types prohibit arguments
|
1603 |
+
} else if ( match[3] ) {
|
1604 |
+
Sizzle.error( match[0] );
|
1605 |
+
}
|
1606 |
+
|
1607 |
+
return match;
|
1608 |
+
},
|
1609 |
+
|
1610 |
+
"PSEUDO": function( match ) {
|
1611 |
+
var excess,
|
1612 |
+
unquoted = !match[6] && match[2];
|
1613 |
+
|
1614 |
+
if ( matchExpr["CHILD"].test( match[0] ) ) {
|
1615 |
+
return null;
|
1616 |
+
}
|
1617 |
+
|
1618 |
+
// Accept quoted arguments as-is
|
1619 |
+
if ( match[3] ) {
|
1620 |
+
match[2] = match[4] || match[5] || "";
|
1621 |
+
|
1622 |
+
// Strip excess characters from unquoted arguments
|
1623 |
+
} else if ( unquoted && rpseudo.test( unquoted ) &&
|
1624 |
+
// Get excess from tokenize (recursively)
|
1625 |
+
(excess = tokenize( unquoted, true )) &&
|
1626 |
+
// advance to the next closing parenthesis
|
1627 |
+
(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
|
1628 |
+
|
1629 |
+
// excess is a negative index
|
1630 |
+
match[0] = match[0].slice( 0, excess );
|
1631 |
+
match[2] = unquoted.slice( 0, excess );
|
1632 |
+
}
|
1633 |
+
|
1634 |
+
// Return only captures needed by the pseudo filter method (type and argument)
|
1635 |
+
return match.slice( 0, 3 );
|
1636 |
+
}
|
1637 |
+
},
|
1638 |
+
|
1639 |
+
filter: {
|
1640 |
+
|
1641 |
+
"TAG": function( nodeNameSelector ) {
|
1642 |
+
var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
|
1643 |
+
return nodeNameSelector === "*" ?
|
1644 |
+
function() { return true; } :
|
1645 |
+
function( elem ) {
|
1646 |
+
return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
|
1647 |
+
};
|
1648 |
+
},
|
1649 |
+
|
1650 |
+
"CLASS": function( className ) {
|
1651 |
+
var pattern = classCache[ className + " " ];
|
1652 |
+
|
1653 |
+
return pattern ||
|
1654 |
+
(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
|
1655 |
+
classCache( className, function( elem ) {
|
1656 |
+
return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
|
1657 |
+
});
|
1658 |
+
},
|
1659 |
+
|
1660 |
+
"ATTR": function( name, operator, check ) {
|
1661 |
+
return function( elem ) {
|
1662 |
+
var result = Sizzle.attr( elem, name );
|
1663 |
+
|
1664 |
+
if ( result == null ) {
|
1665 |
+
return operator === "!=";
|
1666 |
+
}
|
1667 |
+
if ( !operator ) {
|
1668 |
+
return true;
|
1669 |
+
}
|
1670 |
+
|
1671 |
+
result += "";
|
1672 |
+
|
1673 |
+
return operator === "=" ? result === check :
|
1674 |
+
operator === "!=" ? result !== check :
|
1675 |
+
operator === "^=" ? check && result.indexOf( check ) === 0 :
|
1676 |
+
operator === "*=" ? check && result.indexOf( check ) > -1 :
|
1677 |
+
operator === "$=" ? check && result.slice( -check.length ) === check :
|
1678 |
+
operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
|
1679 |
+
operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
|
1680 |
+
false;
|
1681 |
+
};
|
1682 |
+
},
|
1683 |
+
|
1684 |
+
"CHILD": function( type, what, argument, first, last ) {
|
1685 |
+
var simple = type.slice( 0, 3 ) !== "nth",
|
1686 |
+
forward = type.slice( -4 ) !== "last",
|
1687 |
+
ofType = what === "of-type";
|
1688 |
+
|
1689 |
+
return first === 1 && last === 0 ?
|
1690 |
+
|
1691 |
+
// Shortcut for :nth-*(n)
|
1692 |
+
function( elem ) {
|
1693 |
+
return !!elem.parentNode;
|
1694 |
+
} :
|
1695 |
+
|
1696 |
+
function( elem, context, xml ) {
|
1697 |
+
var cache, outerCache, node, diff, nodeIndex, start,
|
1698 |
+
dir = simple !== forward ? "nextSibling" : "previousSibling",
|
1699 |
+
parent = elem.parentNode,
|
1700 |
+
name = ofType && elem.nodeName.toLowerCase(),
|
1701 |
+
useCache = !xml && !ofType;
|
1702 |
+
|
1703 |
+
if ( parent ) {
|
1704 |
+
|
1705 |
+
// :(first|last|only)-(child|of-type)
|
1706 |
+
if ( simple ) {
|
1707 |
+
while ( dir ) {
|
1708 |
+
node = elem;
|
1709 |
+
while ( (node = node[ dir ]) ) {
|
1710 |
+
if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
|
1711 |
+
return false;
|
1712 |
+
}
|
1713 |
+
}
|
1714 |
+
// Reverse direction for :only-* (if we haven't yet done so)
|
1715 |
+
start = dir = type === "only" && !start && "nextSibling";
|
1716 |
+
}
|
1717 |
+
return true;
|
1718 |
+
}
|
1719 |
+
|
1720 |
+
start = [ forward ? parent.firstChild : parent.lastChild ];
|
1721 |
+
|
1722 |
+
// non-xml :nth-child(...) stores cache data on `parent`
|
1723 |
+
if ( forward && useCache ) {
|
1724 |
+
// Seek `elem` from a previously-cached index
|
1725 |
+
outerCache = parent[ expando ] || (parent[ expando ] = {});
|
1726 |
+
cache = outerCache[ type ] || [];
|
1727 |
+
nodeIndex = cache[0] === dirruns && cache[1];
|
1728 |
+
diff = cache[0] === dirruns && cache[2];
|
1729 |
+
node = nodeIndex && parent.childNodes[ nodeIndex ];
|
1730 |
+
|
1731 |
+
while ( (node = ++nodeIndex && node && node[ dir ] ||
|
1732 |
+
|
1733 |
+
// Fallback to seeking `elem` from the start
|
1734 |
+
(diff = nodeIndex = 0) || start.pop()) ) {
|
1735 |
+
|
1736 |
+
// When found, cache indexes on `parent` and break
|
1737 |
+
if ( node.nodeType === 1 && ++diff && node === elem ) {
|
1738 |
+
outerCache[ type ] = [ dirruns, nodeIndex, diff ];
|
1739 |
+
break;
|
1740 |
+
}
|
1741 |
+
}
|
1742 |
+
|
1743 |
+
// Use previously-cached element index if available
|
1744 |
+
} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
|
1745 |
+
diff = cache[1];
|
1746 |
+
|
1747 |
+
// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
|
1748 |
+
} else {
|
1749 |
+
// Use the same loop as above to seek `elem` from the start
|
1750 |
+
while ( (node = ++nodeIndex && node && node[ dir ] ||
|
1751 |
+
(diff = nodeIndex = 0) || start.pop()) ) {
|
1752 |
+
|
1753 |
+
if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
|
1754 |
+
// Cache the index of each encountered element
|
1755 |
+
if ( useCache ) {
|
1756 |
+
(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
|
1757 |
+
}
|
1758 |
+
|
1759 |
+
if ( node === elem ) {
|
1760 |
+
break;
|
1761 |
+
}
|
1762 |
+
}
|
1763 |
+
}
|
1764 |
+
}
|
1765 |
+
|
1766 |
+
// Incorporate the offset, then check against cycle size
|
1767 |
+
diff -= last;
|
1768 |
+
return diff === first || ( diff % first === 0 && diff / first >= 0 );
|
1769 |
+
}
|
1770 |
+
};
|
1771 |
+
},
|
1772 |
+
|
1773 |
+
"PSEUDO": function( pseudo, argument ) {
|
1774 |
+
// pseudo-class names are case-insensitive
|
1775 |
+
// http://www.w3.org/TR/selectors/#pseudo-classes
|
1776 |
+
// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
|
1777 |
+
// Remember that setFilters inherits from pseudos
|
1778 |
+
var args,
|
1779 |
+
fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
|
1780 |
+
Sizzle.error( "unsupported pseudo: " + pseudo );
|
1781 |
+
|
1782 |
+
// The user may use createPseudo to indicate that
|
1783 |
+
// arguments are needed to create the filter function
|
1784 |
+
// just as Sizzle does
|
1785 |
+
if ( fn[ expando ] ) {
|
1786 |
+
return fn( argument );
|
1787 |
+
}
|
1788 |
+
|
1789 |
+
// But maintain support for old signatures
|
1790 |
+
if ( fn.length > 1 ) {
|
1791 |
+
args = [ pseudo, pseudo, "", argument ];
|
1792 |
+
return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
|
1793 |
+
markFunction(function( seed, matches ) {
|
1794 |
+
var idx,
|
1795 |
+
matched = fn( seed, argument ),
|
1796 |
+
i = matched.length;
|
1797 |
+
while ( i-- ) {
|
1798 |
+
idx = indexOf.call( seed, matched[i] );
|
1799 |
+
seed[ idx ] = !( matches[ idx ] = matched[i] );
|
1800 |
+
}
|
1801 |
+
}) :
|
1802 |
+
function( elem ) {
|
1803 |
+
return fn( elem, 0, args );
|
1804 |
+
};
|
1805 |
+
}
|
1806 |
+
|
1807 |
+
return fn;
|
1808 |
+
}
|
1809 |
+
},
|
1810 |
+
|
1811 |
+
pseudos: {
|
1812 |
+
// Potentially complex pseudos
|
1813 |
+
"not": markFunction(function( selector ) {
|
1814 |
+
// Trim the selector passed to compile
|
1815 |
+
// to avoid treating leading and trailing
|
1816 |
+
// spaces as combinators
|
1817 |
+
var input = [],
|
1818 |
+
results = [],
|
1819 |
+
matcher = compile( selector.replace( rtrim, "$1" ) );
|
1820 |
+
|
1821 |
+
return matcher[ expando ] ?
|
1822 |
+
markFunction(function( seed, matches, context, xml ) {
|
1823 |
+
var elem,
|
1824 |
+
unmatched = matcher( seed, null, xml, [] ),
|
1825 |
+
i = seed.length;
|
1826 |
+
|
1827 |
+
// Match elements unmatched by `matcher`
|
1828 |
+
while ( i-- ) {
|
1829 |
+
if ( (elem = unmatched[i]) ) {
|
1830 |
+
seed[i] = !(matches[i] = elem);
|
1831 |
+
}
|
1832 |
+
}
|
1833 |
+
}) :
|
1834 |
+
function( elem, context, xml ) {
|
1835 |
+
input[0] = elem;
|
1836 |
+
matcher( input, null, xml, results );
|
1837 |
+
return !results.pop();
|
1838 |
+
};
|
1839 |
+
}),
|
1840 |
+
|
1841 |
+
"has": markFunction(function( selector ) {
|
1842 |
+
return function( elem ) {
|
1843 |
+
return Sizzle( selector, elem ).length > 0;
|
1844 |
+
};
|
1845 |
+
}),
|
1846 |
+
|
1847 |
+
"contains": markFunction(function( text ) {
|
1848 |
+
return function( elem ) {
|
1849 |
+
return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
|
1850 |
+
};
|
1851 |
+
}),
|
1852 |
+
|
1853 |
+
// "Whether an element is represented by a :lang() selector
|
1854 |
+
// is based solely on the element's language value
|
1855 |
+
// being equal to the identifier C,
|
1856 |
+
// or beginning with the identifier C immediately followed by "-".
|
1857 |
+
// The matching of C against the element's language value is performed case-insensitively.
|
1858 |
+
// The identifier C does not have to be a valid language name."
|
1859 |
+
// http://www.w3.org/TR/selectors/#lang-pseudo
|
1860 |
+
"lang": markFunction( function( lang ) {
|
1861 |
+
// lang value must be a valid identifier
|
1862 |
+
if ( !ridentifier.test(lang || "") ) {
|
1863 |
+
Sizzle.error( "unsupported lang: " + lang );
|
1864 |
+
}
|
1865 |
+
lang = lang.replace( runescape, funescape ).toLowerCase();
|
1866 |
+
return function( elem ) {
|
1867 |
+
var elemLang;
|
1868 |
+
do {
|
1869 |
+
if ( (elemLang = documentIsHTML ?
|
1870 |
+
elem.lang :
|
1871 |
+
elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
|
1872 |
+
|
1873 |
+
elemLang = elemLang.toLowerCase();
|
1874 |
+
return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
|
1875 |
+
}
|
1876 |
+
} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
|
1877 |
+
return false;
|
1878 |
+
};
|
1879 |
+
}),
|
1880 |
+
|
1881 |
+
// Miscellaneous
|
1882 |
+
"target": function( elem ) {
|
1883 |
+
var hash = window.location && window.location.hash;
|
1884 |
+
return hash && hash.slice( 1 ) === elem.id;
|
1885 |
+
},
|
1886 |
+
|
1887 |
+
"root": function( elem ) {
|
1888 |
+
return elem === docElem;
|
1889 |
+
},
|
1890 |
+
|
1891 |
+
"focus": function( elem ) {
|
1892 |
+
return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
|
1893 |
+
},
|
1894 |
+
|
1895 |
+
// Boolean properties
|
1896 |
+
"enabled": function( elem ) {
|
1897 |
+
return elem.disabled === false;
|
1898 |
+
},
|
1899 |
+
|
1900 |
+
"disabled": function( elem ) {
|
1901 |
+
return elem.disabled === true;
|
1902 |
+
},
|
1903 |
+
|
1904 |
+
"checked": function( elem ) {
|
1905 |
+
// In CSS3, :checked should return both checked and selected elements
|
1906 |
+
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
|
1907 |
+
var nodeName = elem.nodeName.toLowerCase();
|
1908 |
+
return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
|
1909 |
+
},
|
1910 |
+
|
1911 |
+
"selected": function( elem ) {
|
1912 |
+
// Accessing this property makes selected-by-default
|
1913 |
+
// options in Safari work properly
|
1914 |
+
if ( elem.parentNode ) {
|
1915 |
+
elem.parentNode.selectedIndex;
|
1916 |
+
}
|
1917 |
+
|
1918 |
+
return elem.selected === true;
|
1919 |
+
},
|
1920 |
+
|
1921 |
+
// Contents
|
1922 |
+
"empty": function( elem ) {
|
1923 |
+
// http://www.w3.org/TR/selectors/#empty-pseudo
|
1924 |
+
// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
|
1925 |
+
// but not by others (comment: 8; processing instruction: 7; etc.)
|
1926 |
+
// nodeType < 6 works because attributes (2) do not appear as children
|
1927 |
+
for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
|
1928 |
+
if ( elem.nodeType < 6 ) {
|
1929 |
+
return false;
|
1930 |
+
}
|
1931 |
+
}
|
1932 |
+
return true;
|
1933 |
+
},
|
1934 |
+
|
1935 |
+
"parent": function( elem ) {
|
1936 |
+
return !Expr.pseudos["empty"]( elem );
|
1937 |
+
},
|
1938 |
+
|
1939 |
+
// Element/input types
|
1940 |
+
"header": function( elem ) {
|
1941 |
+
return rheader.test( elem.nodeName );
|
1942 |
+
},
|
1943 |
+
|
1944 |
+
"input": function( elem ) {
|
1945 |
+
return rinputs.test( elem.nodeName );
|
1946 |
+
},
|
1947 |
+
|
1948 |
+
"button": function( elem ) {
|
1949 |
+
var name = elem.nodeName.toLowerCase();
|
1950 |
+
return name === "input" && elem.type === "button" || name === "button";
|
1951 |
+
},
|
1952 |
+
|
1953 |
+
"text": function( elem ) {
|
1954 |
+
var attr;
|
1955 |
+
return elem.nodeName.toLowerCase() === "input" &&
|
1956 |
+
elem.type === "text" &&
|
1957 |
+
|
1958 |
+
// Support: IE<8
|
1959 |
+
// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
|
1960 |
+
( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
|
1961 |
+
},
|
1962 |
+
|
1963 |
+
// Position-in-collection
|
1964 |
+
"first": createPositionalPseudo(function() {
|
1965 |
+
return [ 0 ];
|
1966 |
+
}),
|
1967 |
+
|
1968 |
+
"last": createPositionalPseudo(function( matchIndexes, length ) {
|
1969 |
+
return [ length - 1 ];
|
1970 |
+
}),
|
1971 |
+
|
1972 |
+
"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
|
1973 |
+
return [ argument < 0 ? argument + length : argument ];
|
1974 |
+
}),
|
1975 |
+
|
1976 |
+
"even": createPositionalPseudo(function( matchIndexes, length ) {
|
1977 |
+
var i = 0;
|
1978 |
+
for ( ; i < length; i += 2 ) {
|
1979 |
+
matchIndexes.push( i );
|
1980 |
+
}
|
1981 |
+
return matchIndexes;
|
1982 |
+
}),
|
1983 |
+
|
1984 |
+
"odd": createPositionalPseudo(function( matchIndexes, length ) {
|
1985 |
+
var i = 1;
|
1986 |
+
for ( ; i < length; i += 2 ) {
|
1987 |
+
matchIndexes.push( i );
|
1988 |
+
}
|
1989 |
+
return matchIndexes;
|
1990 |
+
}),
|
1991 |
+
|
1992 |
+
"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
|
1993 |
+
var i = argument < 0 ? argument + length : argument;
|
1994 |
+
for ( ; --i >= 0; ) {
|
1995 |
+
matchIndexes.push( i );
|
1996 |
+
}
|
1997 |
+
return matchIndexes;
|
1998 |
+
}),
|
1999 |
+
|
2000 |
+
"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
|
2001 |
+
var i = argument < 0 ? argument + length : argument;
|
2002 |
+
for ( ; ++i < length; ) {
|
2003 |
+
matchIndexes.push( i );
|
2004 |
+
}
|
2005 |
+
return matchIndexes;
|
2006 |
+
})
|
2007 |
+
}
|
2008 |
+
};
|
2009 |
+
|
2010 |
+
Expr.pseudos["nth"] = Expr.pseudos["eq"];
|
2011 |
+
|
2012 |
+
// Add button/input type pseudos
|
2013 |
+
for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
|
2014 |
+
Expr.pseudos[ i ] = createInputPseudo( i );
|
2015 |
+
}
|
2016 |
+
for ( i in { submit: true, reset: true } ) {
|
2017 |
+
Expr.pseudos[ i ] = createButtonPseudo( i );
|
2018 |
+
}
|
2019 |
+
|
2020 |
+
// Easy API for creating new setFilters
|
2021 |
+
function setFilters() {}
|
2022 |
+
setFilters.prototype = Expr.filters = Expr.pseudos;
|
2023 |
+
Expr.setFilters = new setFilters();
|
2024 |
+
|
2025 |
+
tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
|
2026 |
+
var matched, match, tokens, type,
|
2027 |
+
soFar, groups, preFilters,
|
2028 |
+
cached = tokenCache[ selector + " " ];
|
2029 |
+
|
2030 |
+
if ( cached ) {
|
2031 |
+
return parseOnly ? 0 : cached.slice( 0 );
|
2032 |
+
}
|
2033 |
+
|
2034 |
+
soFar = selector;
|
2035 |
+
groups = [];
|
2036 |
+
preFilters = Expr.preFilter;
|
2037 |
+
|
2038 |
+
while ( soFar ) {
|
2039 |
+
|
2040 |
+
// Comma and first run
|
2041 |
+
if ( !matched || (match = rcomma.exec( soFar )) ) {
|
2042 |
+
if ( match ) {
|
2043 |
+
// Don't consume trailing commas as valid
|
2044 |
+
soFar = soFar.slice( match[0].length ) || soFar;
|
2045 |
+
}
|
2046 |
+
groups.push( (tokens = []) );
|
2047 |
+
}
|
2048 |
+
|
2049 |
+
matched = false;
|
2050 |
+
|
2051 |
+
// Combinators
|
2052 |
+
if ( (match = rcombinators.exec( soFar )) ) {
|
2053 |
+
matched = match.shift();
|
2054 |
+
tokens.push({
|
2055 |
+
value: matched,
|
2056 |
+
// Cast descendant combinators to space
|
2057 |
+
type: match[0].replace( rtrim, " " )
|
2058 |
+
});
|
2059 |
+
soFar = soFar.slice( matched.length );
|
2060 |
+
}
|
2061 |
+
|
2062 |
+
// Filters
|
2063 |
+
for ( type in Expr.filter ) {
|
2064 |
+
if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
|
2065 |
+
(match = preFilters[ type ]( match ))) ) {
|
2066 |
+
matched = match.shift();
|
2067 |
+
tokens.push({
|
2068 |
+
value: matched,
|
2069 |
+
type: type,
|
2070 |
+
matches: match
|
2071 |
+
});
|
2072 |
+
soFar = soFar.slice( matched.length );
|
2073 |
+
}
|
2074 |
+
}
|
2075 |
+
|
2076 |
+
if ( !matched ) {
|
2077 |
+
break;
|
2078 |
+
}
|
2079 |
+
}
|
2080 |
+
|
2081 |
+
// Return the length of the invalid excess
|
2082 |
+
// if we're just parsing
|
2083 |
+
// Otherwise, throw an error or return tokens
|
2084 |
+
return parseOnly ?
|
2085 |
+
soFar.length :
|
2086 |
+
soFar ?
|
2087 |
+
Sizzle.error( selector ) :
|
2088 |
+
// Cache the tokens
|
2089 |
+
tokenCache( selector, groups ).slice( 0 );
|
2090 |
+
};
|
2091 |
+
|
2092 |
+
function toSelector( tokens ) {
|
2093 |
+
var i = 0,
|
2094 |
+
len = tokens.length,
|
2095 |
+
selector = "";
|
2096 |
+
for ( ; i < len; i++ ) {
|
2097 |
+
selector += tokens[i].value;
|
2098 |
+
}
|
2099 |
+
return selector;
|
2100 |
+
}
|
2101 |
+
|
2102 |
+
function addCombinator( matcher, combinator, base ) {
|
2103 |
+
var dir = combinator.dir,
|
2104 |
+
checkNonElements = base && dir === "parentNode",
|
2105 |
+
doneName = done++;
|
2106 |
+
|
2107 |
+
return combinator.first ?
|
2108 |
+
// Check against closest ancestor/preceding element
|
2109 |
+
function( elem, context, xml ) {
|
2110 |
+
while ( (elem = elem[ dir ]) ) {
|
2111 |
+
if ( elem.nodeType === 1 || checkNonElements ) {
|
2112 |
+
return matcher( elem, context, xml );
|
2113 |
+
}
|
2114 |
+
}
|
2115 |
+
} :
|
2116 |
+
|
2117 |
+
// Check against all ancestor/preceding elements
|
2118 |
+
function( elem, context, xml ) {
|
2119 |
+
var oldCache, outerCache,
|
2120 |
+
newCache = [ dirruns, doneName ];
|
2121 |
+
|
2122 |
+
// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
|
2123 |
+
if ( xml ) {
|
2124 |
+
while ( (elem = elem[ dir ]) ) {
|
2125 |
+
if ( elem.nodeType === 1 || checkNonElements ) {
|
2126 |
+
if ( matcher( elem, context, xml ) ) {
|
2127 |
+
return true;
|
2128 |
+
}
|
2129 |
+
}
|
2130 |
+
}
|
2131 |
+
} else {
|
2132 |
+
while ( (elem = elem[ dir ]) ) {
|
2133 |
+
if ( elem.nodeType === 1 || checkNonElements ) {
|
2134 |
+
outerCache = elem[ expando ] || (elem[ expando ] = {});
|
2135 |
+
if ( (oldCache = outerCache[ dir ]) &&
|
2136 |
+
oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
|
2137 |
+
|
2138 |
+
// Assign to newCache so results back-propagate to previous elements
|
2139 |
+
return (newCache[ 2 ] = oldCache[ 2 ]);
|
2140 |
+
} else {
|
2141 |
+
// Reuse newcache so results back-propagate to previous elements
|
2142 |
+
outerCache[ dir ] = newCache;
|
2143 |
+
|
2144 |
+
// A match means we're done; a fail means we have to keep checking
|
2145 |
+
if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
|
2146 |
+
return true;
|
2147 |
+
}
|
2148 |
+
}
|
2149 |
+
}
|
2150 |
+
}
|
2151 |
+
}
|
2152 |
+
};
|
2153 |
+
}
|
2154 |
+
|
2155 |
+
function elementMatcher( matchers ) {
|
2156 |
+
return matchers.length > 1 ?
|
2157 |
+
function( elem, context, xml ) {
|
2158 |
+
var i = matchers.length;
|
2159 |
+
while ( i-- ) {
|
2160 |
+
if ( !matchers[i]( elem, context, xml ) ) {
|
2161 |
+
return false;
|
2162 |
+
}
|
2163 |
+
}
|
2164 |
+
return true;
|
2165 |
+
} :
|
2166 |
+
matchers[0];
|
2167 |
+
}
|
2168 |
+
|
2169 |
+
function multipleContexts( selector, contexts, results ) {
|
2170 |
+
var i = 0,
|
2171 |
+
len = contexts.length;
|
2172 |
+
for ( ; i < len; i++ ) {
|
2173 |
+
Sizzle( selector, contexts[i], results );
|
2174 |
+
}
|
2175 |
+
return results;
|
2176 |
+
}
|
2177 |
+
|
2178 |
+
function condense( unmatched, map, filter, context, xml ) {
|
2179 |
+
var elem,
|
2180 |
+
newUnmatched = [],
|
2181 |
+
i = 0,
|
2182 |
+
len = unmatched.length,
|
2183 |
+
mapped = map != null;
|
2184 |
+
|
2185 |
+
for ( ; i < len; i++ ) {
|
2186 |
+
if ( (elem = unmatched[i]) ) {
|
2187 |
+
if ( !filter || filter( elem, context, xml ) ) {
|
2188 |
+
newUnmatched.push( elem );
|
2189 |
+
if ( mapped ) {
|
2190 |
+
map.push( i );
|
2191 |
+
}
|
2192 |
+
}
|
2193 |
+
}
|
2194 |
+
}
|
2195 |
+
|
2196 |
+
return newUnmatched;
|
2197 |
+
}
|
2198 |
+
|
2199 |
+
function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
|
2200 |
+
if ( postFilter && !postFilter[ expando ] ) {
|
2201 |
+
postFilter = setMatcher( postFilter );
|
2202 |
+
}
|
2203 |
+
if ( postFinder && !postFinder[ expando ] ) {
|
2204 |
+
postFinder = setMatcher( postFinder, postSelector );
|
2205 |
+
}
|
2206 |
+
return markFunction(function( seed, results, context, xml ) {
|
2207 |
+
var temp, i, elem,
|
2208 |
+
preMap = [],
|
2209 |
+
postMap = [],
|
2210 |
+
preexisting = results.length,
|
2211 |
+
|
2212 |
+
// Get initial elements from seed or context
|
2213 |
+
elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
|
2214 |
+
|
2215 |
+
// Prefilter to get matcher input, preserving a map for seed-results synchronization
|
2216 |
+
matcherIn = preFilter && ( seed || !selector ) ?
|
2217 |
+
condense( elems, preMap, preFilter, context, xml ) :
|
2218 |
+
elems,
|
2219 |
+
|
2220 |
+
matcherOut = matcher ?
|
2221 |
+
// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
|
2222 |
+
postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
|
2223 |
+
|
2224 |
+
// ...intermediate processing is necessary
|
2225 |
+
[] :
|
2226 |
+
|
2227 |
+
// ...otherwise use results directly
|
2228 |
+
results :
|
2229 |
+
matcherIn;
|
2230 |
+
|
2231 |
+
// Find primary matches
|
2232 |
+
if ( matcher ) {
|
2233 |
+
matcher( matcherIn, matcherOut, context, xml );
|
2234 |
+
}
|
2235 |
+
|
2236 |
+
// Apply postFilter
|
2237 |
+
if ( postFilter ) {
|
2238 |
+
temp = condense( matcherOut, postMap );
|
2239 |
+
postFilter( temp, [], context, xml );
|
2240 |
+
|
2241 |
+
// Un-match failing elements by moving them back to matcherIn
|
2242 |
+
i = temp.length;
|
2243 |
+
while ( i-- ) {
|
2244 |
+
if ( (elem = temp[i]) ) {
|
2245 |
+
matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
|
2246 |
+
}
|
2247 |
+
}
|
2248 |
+
}
|
2249 |
+
|
2250 |
+
if ( seed ) {
|
2251 |
+
if ( postFinder || preFilter ) {
|
2252 |
+
if ( postFinder ) {
|
2253 |
+
// Get the final matcherOut by condensing this intermediate into postFinder contexts
|
2254 |
+
temp = [];
|
2255 |
+
i = matcherOut.length;
|
2256 |
+
while ( i-- ) {
|
2257 |
+
if ( (elem = matcherOut[i]) ) {
|
2258 |
+
// Restore matcherIn since elem is not yet a final match
|
2259 |
+
temp.push( (matcherIn[i] = elem) );
|
2260 |
+
}
|
2261 |
+
}
|
2262 |
+
postFinder( null, (matcherOut = []), temp, xml );
|
2263 |
+
}
|
2264 |
+
|
2265 |
+
// Move matched elements from seed to results to keep them synchronized
|
2266 |
+
i = matcherOut.length;
|
2267 |
+
while ( i-- ) {
|
2268 |
+
if ( (elem = matcherOut[i]) &&
|
2269 |
+
(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
|
2270 |
+
|
2271 |
+
seed[temp] = !(results[temp] = elem);
|
2272 |
+
}
|
2273 |
+
}
|
2274 |
+
}
|
2275 |
+
|
2276 |
+
// Add elements to results, through postFinder if defined
|
2277 |
+
} else {
|
2278 |
+
matcherOut = condense(
|
2279 |
+
matcherOut === results ?
|
2280 |
+
matcherOut.splice( preexisting, matcherOut.length ) :
|
2281 |
+
matcherOut
|
2282 |
+
);
|
2283 |
+
if ( postFinder ) {
|
2284 |
+
postFinder( null, results, matcherOut, xml );
|
2285 |
+
} else {
|
2286 |
+
push.apply( results, matcherOut );
|
2287 |
+
}
|
2288 |
+
}
|
2289 |
+
});
|
2290 |
+
}
|
2291 |
+
|
2292 |
+
function matcherFromTokens( tokens ) {
|
2293 |
+
var checkContext, matcher, j,
|
2294 |
+
len = tokens.length,
|
2295 |
+
leadingRelative = Expr.relative[ tokens[0].type ],
|
2296 |
+
implicitRelative = leadingRelative || Expr.relative[" "],
|
2297 |
+
i = leadingRelative ? 1 : 0,
|
2298 |
+
|
2299 |
+
// The foundational matcher ensures that elements are reachable from top-level context(s)
|
2300 |
+
matchContext = addCombinator( function( elem ) {
|
2301 |
+
return elem === checkContext;
|
2302 |
+
}, implicitRelative, true ),
|
2303 |
+
matchAnyContext = addCombinator( function( elem ) {
|
2304 |
+
return indexOf.call( checkContext, elem ) > -1;
|
2305 |
+
}, implicitRelative, true ),
|
2306 |
+
matchers = [ function( elem, context, xml ) {
|
2307 |
+
return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
|
2308 |
+
(checkContext = context).nodeType ?
|
2309 |
+
matchContext( elem, context, xml ) :
|
2310 |
+
matchAnyContext( elem, context, xml ) );
|
2311 |
+
} ];
|
2312 |
+
|
2313 |
+
for ( ; i < len; i++ ) {
|
2314 |
+
if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
|
2315 |
+
matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
|
2316 |
+
} else {
|
2317 |
+
matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
|
2318 |
+
|
2319 |
+
// Return special upon seeing a positional matcher
|
2320 |
+
if ( matcher[ expando ] ) {
|
2321 |
+
// Find the next relative operator (if any) for proper handling
|
2322 |
+
j = ++i;
|
2323 |
+
for ( ; j < len; j++ ) {
|
2324 |
+
if ( Expr.relative[ tokens[j].type ] ) {
|
2325 |
+
break;
|
2326 |
+
}
|
2327 |
+
}
|
2328 |
+
return setMatcher(
|
2329 |
+
i > 1 && elementMatcher( matchers ),
|
2330 |
+
i > 1 && toSelector(
|
2331 |
+
// If the preceding token was a descendant combinator, insert an implicit any-element `*`
|
2332 |
+
tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
|
2333 |
+
).replace( rtrim, "$1" ),
|
2334 |
+
matcher,
|
2335 |
+
i < j && matcherFromTokens( tokens.slice( i, j ) ),
|
2336 |
+
j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
|
2337 |
+
j < len && toSelector( tokens )
|
2338 |
+
);
|
2339 |
+
}
|
2340 |
+
matchers.push( matcher );
|
2341 |
+
}
|
2342 |
+
}
|
2343 |
+
|
2344 |
+
return elementMatcher( matchers );
|
2345 |
+
}
|
2346 |
+
|
2347 |
+
function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
|
2348 |
+
var bySet = setMatchers.length > 0,
|
2349 |
+
byElement = elementMatchers.length > 0,
|
2350 |
+
superMatcher = function( seed, context, xml, results, outermost ) {
|
2351 |
+
var elem, j, matcher,
|
2352 |
+
matchedCount = 0,
|
2353 |
+
i = "0",
|
2354 |
+
unmatched = seed && [],
|
2355 |
+
setMatched = [],
|
2356 |
+
contextBackup = outermostContext,
|
2357 |
+
// We must always have either seed elements or outermost context
|
2358 |
+
elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
|
2359 |
+
// Use integer dirruns iff this is the outermost matcher
|
2360 |
+
dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
|
2361 |
+
len = elems.length;
|
2362 |
+
|
2363 |
+
if ( outermost ) {
|
2364 |
+
outermostContext = context !== document && context;
|
2365 |
+
}
|
2366 |
+
|
2367 |
+
// Add elements passing elementMatchers directly to results
|
2368 |
+
// Keep `i` a string if there are no elements so `matchedCount` will be "00" below
|
2369 |
+
// Support: IE<9, Safari
|
2370 |
+
// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
|
2371 |
+
for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
|
2372 |
+
if ( byElement && elem ) {
|
2373 |
+
j = 0;
|
2374 |
+
while ( (matcher = elementMatchers[j++]) ) {
|
2375 |
+
if ( matcher( elem, context, xml ) ) {
|
2376 |
+
results.push( elem );
|
2377 |
+
break;
|
2378 |
+
}
|
2379 |
+
}
|
2380 |
+
if ( outermost ) {
|
2381 |
+
dirruns = dirrunsUnique;
|
2382 |
+
}
|
2383 |
+
}
|
2384 |
+
|
2385 |
+
// Track unmatched elements for set filters
|
2386 |
+
if ( bySet ) {
|
2387 |
+
// They will have gone through all possible matchers
|
2388 |
+
if ( (elem = !matcher && elem) ) {
|
2389 |
+
matchedCount--;
|
2390 |
+
}
|
2391 |
+
|
2392 |
+
// Lengthen the array for every element, matched or not
|
2393 |
+
if ( seed ) {
|
2394 |
+
unmatched.push( elem );
|
2395 |
+
}
|
2396 |
+
}
|
2397 |
+
}
|
2398 |
+
|
2399 |
+
// Apply set filters to unmatched elements
|
2400 |
+
matchedCount += i;
|
2401 |
+
if ( bySet && i !== matchedCount ) {
|
2402 |
+
j = 0;
|
2403 |
+
while ( (matcher = setMatchers[j++]) ) {
|
2404 |
+
matcher( unmatched, setMatched, context, xml );
|
2405 |
+
}
|
2406 |
+
|
2407 |
+
if ( seed ) {
|
2408 |
+
// Reintegrate element matches to eliminate the need for sorting
|
2409 |
+
if ( matchedCount > 0 ) {
|
2410 |
+
while ( i-- ) {
|
2411 |
+
if ( !(unmatched[i] || setMatched[i]) ) {
|
2412 |
+
setMatched[i] = pop.call( results );
|
2413 |
+
}
|
2414 |
+
}
|
2415 |
+
}
|
2416 |
+
|
2417 |
+
// Discard index placeholder values to get only actual matches
|
2418 |
+
setMatched = condense( setMatched );
|
2419 |
+
}
|
2420 |
+
|
2421 |
+
// Add matches to results
|
2422 |
+
push.apply( results, setMatched );
|
2423 |
+
|
2424 |
+
// Seedless set matches succeeding multiple successful matchers stipulate sorting
|
2425 |
+
if ( outermost && !seed && setMatched.length > 0 &&
|
2426 |
+
( matchedCount + setMatchers.length ) > 1 ) {
|
2427 |
+
|
2428 |
+
Sizzle.uniqueSort( results );
|
2429 |
+
}
|
2430 |
+
}
|
2431 |
+
|
2432 |
+
// Override manipulation of globals by nested matchers
|
2433 |
+
if ( outermost ) {
|
2434 |
+
dirruns = dirrunsUnique;
|
2435 |
+
outermostContext = contextBackup;
|
2436 |
+
}
|
2437 |
+
|
2438 |
+
return unmatched;
|
2439 |
+
};
|
2440 |
+
|
2441 |
+
return bySet ?
|
2442 |
+
markFunction( superMatcher ) :
|
2443 |
+
superMatcher;
|
2444 |
+
}
|
2445 |
+
|
2446 |
+
compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
|
2447 |
+
var i,
|
2448 |
+
setMatchers = [],
|
2449 |
+
elementMatchers = [],
|
2450 |
+
cached = compilerCache[ selector + " " ];
|
2451 |
+
|
2452 |
+
if ( !cached ) {
|
2453 |
+
// Generate a function of recursive functions that can be used to check each element
|
2454 |
+
if ( !match ) {
|
2455 |
+
match = tokenize( selector );
|
2456 |
+
}
|
2457 |
+
i = match.length;
|
2458 |
+
while ( i-- ) {
|
2459 |
+
cached = matcherFromTokens( match[i] );
|
2460 |
+
if ( cached[ expando ] ) {
|
2461 |
+
setMatchers.push( cached );
|
2462 |
+
} else {
|
2463 |
+
elementMatchers.push( cached );
|
2464 |
+
}
|
2465 |
+
}
|
2466 |
+
|
2467 |
+
// Cache the compiled function
|
2468 |
+
cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
|
2469 |
+
|
2470 |
+
// Save selector and tokenization
|
2471 |
+
cached.selector = selector;
|
2472 |
+
}
|
2473 |
+
return cached;
|
2474 |
+
};
|
2475 |
+
|
2476 |
+
/**
|
2477 |
+
* A low-level selection function that works with Sizzle's compiled
|
2478 |
+
* selector functions
|
2479 |
+
* @param {String|Function} selector A selector or a pre-compiled
|
2480 |
+
* selector function built with Sizzle.compile
|
2481 |
+
* @param {Element} context
|
2482 |
+
* @param {Array} [results]
|
2483 |
+
* @param {Array} [seed] A set of elements to match against
|
2484 |
+
*/
|
2485 |
+
select = Sizzle.select = function( selector, context, results, seed ) {
|
2486 |
+
var i, tokens, token, type, find,
|
2487 |
+
compiled = typeof selector === "function" && selector,
|
2488 |
+
match = !seed && tokenize( (selector = compiled.selector || selector) );
|
2489 |
+
|
2490 |
+
results = results || [];
|
2491 |
+
|
2492 |
+
// Try to minimize operations if there is no seed and only one group
|
2493 |
+
if ( match.length === 1 ) {
|
2494 |
+
|
2495 |
+
// Take a shortcut and set the context if the root selector is an ID
|
2496 |
+
tokens = match[0] = match[0].slice( 0 );
|
2497 |
+
if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
|
2498 |
+
support.getById && context.nodeType === 9 && documentIsHTML &&
|
2499 |
+
Expr.relative[ tokens[1].type ] ) {
|
2500 |
+
|
2501 |
+
context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
|
2502 |
+
if ( !context ) {
|
2503 |
+
return results;
|
2504 |
+
|
2505 |
+
// Precompiled matchers will still verify ancestry, so step up a level
|
2506 |
+
} else if ( compiled ) {
|
2507 |
+
context = context.parentNode;
|
2508 |
+
}
|
2509 |
+
|
2510 |
+
selector = selector.slice( tokens.shift().value.length );
|
2511 |
+
}
|
2512 |
+
|
2513 |
+
// Fetch a seed set for right-to-left matching
|
2514 |
+
i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
|
2515 |
+
while ( i-- ) {
|
2516 |
+
token = tokens[i];
|
2517 |
+
|
2518 |
+
// Abort if we hit a combinator
|
2519 |
+
if ( Expr.relative[ (type = token.type) ] ) {
|
2520 |
+
break;
|
2521 |
+
}
|
2522 |
+
if ( (find = Expr.find[ type ]) ) {
|
2523 |
+
// Search, expanding context for leading sibling combinators
|
2524 |
+
if ( (seed = find(
|
2525 |
+
token.matches[0].replace( runescape, funescape ),
|
2526 |
+
rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
|
2527 |
+
)) ) {
|
2528 |
+
|
2529 |
+
// If seed is empty or no tokens remain, we can return early
|
2530 |
+
tokens.splice( i, 1 );
|
2531 |
+
selector = seed.length && toSelector( tokens );
|
2532 |
+
if ( !selector ) {
|
2533 |
+
push.apply( results, seed );
|
2534 |
+
return results;
|
2535 |
+
}
|
2536 |
+
|
2537 |
+
break;
|
2538 |
+
}
|
2539 |
+
}
|
2540 |
+
}
|
2541 |
+
}
|
2542 |
+
|
2543 |
+
// Compile and execute a filtering function if one is not provided
|
2544 |
+
// Provide `match` to avoid retokenization if we modified the selector above
|
2545 |
+
( compiled || compile( selector, match ) )(
|
2546 |
+
seed,
|
2547 |
+
context,
|
2548 |
+
!documentIsHTML,
|
2549 |
+
results,
|
2550 |
+
rsibling.test( selector ) && testContext( context.parentNode ) || context
|
2551 |
+
);
|
2552 |
+
return results;
|
2553 |
+
};
|
2554 |
+
|
2555 |
+
// One-time assignments
|
2556 |
+
|
2557 |
+
// Sort stability
|
2558 |
+
support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
|
2559 |
+
|
2560 |
+
// Support: Chrome<14
|
2561 |
+
// Always assume duplicates if they aren't passed to the comparison function
|
2562 |
+
support.detectDuplicates = !!hasDuplicate;
|
2563 |
+
|
2564 |
+
// Initialize against the default document
|
2565 |
+
setDocument();
|
2566 |
+
|
2567 |
+
// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
|
2568 |
+
// Detached nodes confoundingly follow *each other*
|
2569 |
+
support.sortDetached = assert(function( div1 ) {
|
2570 |
+
// Should return 1, but returns 4 (following)
|
2571 |
+
return div1.compareDocumentPosition( document.createElement("div") ) & 1;
|
2572 |
+
});
|
2573 |
+
|
2574 |
+
// Support: IE<8
|
2575 |
+
// Prevent attribute/property "interpolation"
|
2576 |
+
// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
|
2577 |
+
if ( !assert(function( div ) {
|
2578 |
+
div.innerHTML = "<a href='#'></a>";
|
2579 |
+
return div.firstChild.getAttribute("href") === "#" ;
|
2580 |
+
}) ) {
|
2581 |
+
addHandle( "type|href|height|width", function( elem, name, isXML ) {
|
2582 |
+
if ( !isXML ) {
|
2583 |
+
return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
|
2584 |
+
}
|
2585 |
+
});
|
2586 |
+
}
|
2587 |
+
|
2588 |
+
// Support: IE<9
|
2589 |
+
// Use defaultValue in place of getAttribute("value")
|
2590 |
+
if ( !support.attributes || !assert(function( div ) {
|
2591 |
+
div.innerHTML = "<input/>";
|
2592 |
+
div.firstChild.setAttribute( "value", "" );
|
2593 |
+
return div.firstChild.getAttribute( "value" ) === "";
|
2594 |
+
}) ) {
|
2595 |
+
addHandle( "value", function( elem, name, isXML ) {
|
2596 |
+
if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
|
2597 |
+
return elem.defaultValue;
|
2598 |
+
}
|
2599 |
+
});
|
2600 |
+
}
|
2601 |
+
|
2602 |
+
// Support: IE<9
|
2603 |
+
// Use getAttributeNode to fetch booleans when getAttribute lies
|
2604 |
+
if ( !assert(function( div ) {
|
2605 |
+
return div.getAttribute("disabled") == null;
|
2606 |
+
}) ) {
|
2607 |
+
addHandle( booleans, function( elem, name, isXML ) {
|
2608 |
+
var val;
|
2609 |
+
if ( !isXML ) {
|
2610 |
+
return elem[ name ] === true ? name.toLowerCase() :
|
2611 |
+
(val = elem.getAttributeNode( name )) && val.specified ?
|
2612 |
+
val.value :
|
2613 |
+
null;
|
2614 |
+
}
|
2615 |
+
});
|
2616 |
+
}
|
2617 |
+
|
2618 |
+
return Sizzle;
|
2619 |
+
|
2620 |
+
})( window );
|
2621 |
+
|
2622 |
+
|
2623 |
+
|
2624 |
+
jQuery.find = Sizzle;
|
2625 |
+
jQuery.expr = Sizzle.selectors;
|
2626 |
+
jQuery.expr[":"] = jQuery.expr.pseudos;
|
2627 |
+
jQuery.unique = Sizzle.uniqueSort;
|
2628 |
+
jQuery.text = Sizzle.getText;
|
2629 |
+
jQuery.isXMLDoc = Sizzle.isXML;
|
2630 |
+
jQuery.contains = Sizzle.contains;
|
2631 |
+
|
2632 |
+
|
2633 |
+
|
2634 |
+
var rneedsContext = jQuery.expr.match.needsContext;
|
2635 |
+
|
2636 |
+
var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
|
2637 |
+
|
2638 |
+
|
2639 |
+
|
2640 |
+
var risSimple = /^.[^:#\[\.,]*$/;
|
2641 |
+
|
2642 |
+
// Implement the identical functionality for filter and not
|
2643 |
+
function winnow( elements, qualifier, not ) {
|
2644 |
+
if ( jQuery.isFunction( qualifier ) ) {
|
2645 |
+
return jQuery.grep( elements, function( elem, i ) {
|
2646 |
+
/* jshint -W018 */
|
2647 |
+
return !!qualifier.call( elem, i, elem ) !== not;
|
2648 |
+
});
|
2649 |
+
|
2650 |
+
}
|
2651 |
+
|
2652 |
+
if ( qualifier.nodeType ) {
|
2653 |
+
return jQuery.grep( elements, function( elem ) {
|
2654 |
+
return ( elem === qualifier ) !== not;
|
2655 |
+
});
|
2656 |
+
|
2657 |
+
}
|
2658 |
+
|
2659 |
+
if ( typeof qualifier === "string" ) {
|
2660 |
+
if ( risSimple.test( qualifier ) ) {
|
2661 |
+
return jQuery.filter( qualifier, elements, not );
|
2662 |
+
}
|
2663 |
+
|
2664 |
+
qualifier = jQuery.filter( qualifier, elements );
|
2665 |
+
}
|
2666 |
+
|
2667 |
+
return jQuery.grep( elements, function( elem ) {
|
2668 |
+
return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;
|
2669 |
+
});
|
2670 |
+
}
|
2671 |
+
|
2672 |
+
jQuery.filter = function( expr, elems, not ) {
|
2673 |
+
var elem = elems[ 0 ];
|
2674 |
+
|
2675 |
+
if ( not ) {
|
2676 |
+
expr = ":not(" + expr + ")";
|
2677 |
+
}
|
2678 |
+
|
2679 |
+
return elems.length === 1 && elem.nodeType === 1 ?
|
2680 |
+
jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
|
2681 |
+
jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
|
2682 |
+
return elem.nodeType === 1;
|
2683 |
+
}));
|
2684 |
+
};
|
2685 |
+
|
2686 |
+
jQuery.fn.extend({
|
2687 |
+
find: function( selector ) {
|
2688 |
+
var i,
|
2689 |
+
ret = [],
|
2690 |
+
self = this,
|
2691 |
+
len = self.length;
|
2692 |
+
|
2693 |
+
if ( typeof selector !== "string" ) {
|
2694 |
+
return this.pushStack( jQuery( selector ).filter(function() {
|
2695 |
+
for ( i = 0; i < len; i++ ) {
|
2696 |
+
if ( jQuery.contains( self[ i ], this ) ) {
|
2697 |
+
return true;
|
2698 |
+
}
|
2699 |
+
}
|
2700 |
+
}) );
|
2701 |
+
}
|
2702 |
+
|
2703 |
+
for ( i = 0; i < len; i++ ) {
|
2704 |
+
jQuery.find( selector, self[ i ], ret );
|
2705 |
+
}
|
2706 |
+
|
2707 |
+
// Needed because $( selector, context ) becomes $( context ).find( selector )
|
2708 |
+
ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
|
2709 |
+
ret.selector = this.selector ? this.selector + " " + selector : selector;
|
2710 |
+
return ret;
|
2711 |
+
},
|
2712 |
+
filter: function( selector ) {
|
2713 |
+
return this.pushStack( winnow(this, selector || [], false) );
|
2714 |
+
},
|
2715 |
+
not: function( selector ) {
|
2716 |
+
return this.pushStack( winnow(this, selector || [], true) );
|
2717 |
+
},
|
2718 |
+
is: function( selector ) {
|
2719 |
+
return !!winnow(
|
2720 |
+
this,
|
2721 |
+
|
2722 |
+
// If this is a positional/relative selector, check membership in the returned set
|
2723 |
+
// so $("p:first").is("p:last") won't return true for a doc with two "p".
|
2724 |
+
typeof selector === "string" && rneedsContext.test( selector ) ?
|
2725 |
+
jQuery( selector ) :
|
2726 |
+
selector || [],
|
2727 |
+
false
|
2728 |
+
).length;
|
2729 |
+
}
|
2730 |
+
});
|
2731 |
+
|
2732 |
+
|
2733 |
+
// Initialize a jQuery object
|
2734 |
+
|
2735 |
+
|
2736 |
+
// A central reference to the root jQuery(document)
|
2737 |
+
var rootjQuery,
|
2738 |
+
|
2739 |
+
// Use the correct document accordingly with window argument (sandbox)
|
2740 |
+
document = window.document,
|
2741 |
+
|
2742 |
+
// A simple way to check for HTML strings
|
2743 |
+
// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
|
2744 |
+
// Strict HTML recognition (#11290: must start with <)
|
2745 |
+
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
|
2746 |
+
|
2747 |
+
init = jQuery.fn.init = function( selector, context ) {
|
2748 |
+
var match, elem;
|
2749 |
+
|
2750 |
+
// HANDLE: $(""), $(null), $(undefined), $(false)
|
2751 |
+
if ( !selector ) {
|
2752 |
+
return this;
|
2753 |
+
}
|
2754 |
+
|
2755 |
+
// Handle HTML strings
|
2756 |
+
if ( typeof selector === "string" ) {
|
2757 |
+
if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
|
2758 |
+
// Assume that strings that start and end with <> are HTML and skip the regex check
|
2759 |
+
match = [ null, selector, null ];
|
2760 |
+
|
2761 |
+
} else {
|
2762 |
+
match = rquickExpr.exec( selector );
|
2763 |
+
}
|
2764 |
+
|
2765 |
+
// Match html or make sure no context is specified for #id
|
2766 |
+
if ( match && (match[1] || !context) ) {
|
2767 |
+
|
2768 |
+
// HANDLE: $(html) -> $(array)
|
2769 |
+
if ( match[1] ) {
|
2770 |
+
context = context instanceof jQuery ? context[0] : context;
|
2771 |
+
|
2772 |
+
// scripts is true for back-compat
|
2773 |
+
// Intentionally let the error be thrown if parseHTML is not present
|
2774 |
+
jQuery.merge( this, jQuery.parseHTML(
|
2775 |
+
match[1],
|
2776 |
+
context && context.nodeType ? context.ownerDocument || context : document,
|
2777 |
+
true
|
2778 |
+
) );
|
2779 |
+
|
2780 |
+
// HANDLE: $(html, props)
|
2781 |
+
if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
|
2782 |
+
for ( match in context ) {
|
2783 |
+
// Properties of context are called as methods if possible
|
2784 |
+
if ( jQuery.isFunction( this[ match ] ) ) {
|
2785 |
+
this[ match ]( context[ match ] );
|
2786 |
+
|
2787 |
+
// ...and otherwise set as attributes
|
2788 |
+
} else {
|
2789 |
+
this.attr( match, context[ match ] );
|
2790 |
+
}
|
2791 |
+
}
|
2792 |
+
}
|
2793 |
+
|
2794 |
+
return this;
|
2795 |
+
|
2796 |
+
// HANDLE: $(#id)
|
2797 |
+
} else {
|
2798 |
+
elem = document.getElementById( match[2] );
|
2799 |
+
|
2800 |
+
// Check parentNode to catch when Blackberry 4.6 returns
|
2801 |
+
// nodes that are no longer in the document #6963
|
2802 |
+
if ( elem && elem.parentNode ) {
|
2803 |
+
// Handle the case where IE and Opera return items
|
2804 |
+
// by name instead of ID
|
2805 |
+
if ( elem.id !== match[2] ) {
|
2806 |
+
return rootjQuery.find( selector );
|
2807 |
+
}
|
2808 |
+
|
2809 |
+
// Otherwise, we inject the element directly into the jQuery object
|
2810 |
+
this.length = 1;
|
2811 |
+
this[0] = elem;
|
2812 |
+
}
|
2813 |
+
|
2814 |
+
this.context = document;
|
2815 |
+
this.selector = selector;
|
2816 |
+
return this;
|
2817 |
+
}
|
2818 |
+
|
2819 |
+
// HANDLE: $(expr, $(...))
|
2820 |
+
} else if ( !context || context.jquery ) {
|
2821 |
+
return ( context || rootjQuery ).find( selector );
|
2822 |
+
|
2823 |
+
// HANDLE: $(expr, context)
|
2824 |
+
// (which is just equivalent to: $(context).find(expr)
|
2825 |
+
} else {
|
2826 |
+
return this.constructor( context ).find( selector );
|
2827 |
+
}
|
2828 |
+
|
2829 |
+
// HANDLE: $(DOMElement)
|
2830 |
+
} else if ( selector.nodeType ) {
|
2831 |
+
this.context = this[0] = selector;
|
2832 |
+
this.length = 1;
|
2833 |
+
return this;
|
2834 |
+
|
2835 |
+
// HANDLE: $(function)
|
2836 |
+
// Shortcut for document ready
|
2837 |
+
} else if ( jQuery.isFunction( selector ) ) {
|
2838 |
+
return typeof rootjQuery.ready !== "undefined" ?
|
2839 |
+
rootjQuery.ready( selector ) :
|
2840 |
+
// Execute immediately if ready is not present
|
2841 |
+
selector( jQuery );
|
2842 |
+
}
|
2843 |
+
|
2844 |
+
if ( selector.selector !== undefined ) {
|
2845 |
+
this.selector = selector.selector;
|
2846 |
+
this.context = selector.context;
|
2847 |
+
}
|
2848 |
+
|
2849 |
+
return jQuery.makeArray( selector, this );
|
2850 |
+
};
|
2851 |
+
|
2852 |
+
// Give the init function the jQuery prototype for later instantiation
|
2853 |
+
init.prototype = jQuery.fn;
|
2854 |
+
|
2855 |
+
// Initialize central reference
|
2856 |
+
rootjQuery = jQuery( document );
|
2857 |
+
|
2858 |
+
|
2859 |
+
var rparentsprev = /^(?:parents|prev(?:Until|All))/,
|
2860 |
+
// methods guaranteed to produce a unique set when starting from a unique set
|
2861 |
+
guaranteedUnique = {
|
2862 |
+
children: true,
|
2863 |
+
contents: true,
|
2864 |
+
next: true,
|
2865 |
+
prev: true
|
2866 |
+
};
|
2867 |
+
|
2868 |
+
jQuery.extend({
|
2869 |
+
dir: function( elem, dir, until ) {
|
2870 |
+
var matched = [],
|
2871 |
+
cur = elem[ dir ];
|
2872 |
+
|
2873 |
+
while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
|
2874 |
+
if ( cur.nodeType === 1 ) {
|
2875 |
+
matched.push( cur );
|
2876 |
+
}
|
2877 |
+
cur = cur[dir];
|
2878 |
+
}
|
2879 |
+
return matched;
|
2880 |
+
},
|
2881 |
+
|
2882 |
+
sibling: function( n, elem ) {
|
2883 |
+
var r = [];
|
2884 |
+
|
2885 |
+
for ( ; n; n = n.nextSibling ) {
|
2886 |
+
if ( n.nodeType === 1 && n !== elem ) {
|
2887 |
+
r.push( n );
|
2888 |
+
}
|
2889 |
+
}
|
2890 |
+
|
2891 |
+
return r;
|
2892 |
+
}
|
2893 |
+
});
|
2894 |
+
|
2895 |
+
jQuery.fn.extend({
|
2896 |
+
has: function( target ) {
|
2897 |
+
var i,
|
2898 |
+
targets = jQuery( target, this ),
|
2899 |
+
len = targets.length;
|
2900 |
+
|
2901 |
+
return this.filter(function() {
|
2902 |
+
for ( i = 0; i < len; i++ ) {
|
2903 |
+
if ( jQuery.contains( this, targets[i] ) ) {
|
2904 |
+
return true;
|
2905 |
+
}
|
2906 |
+
}
|
2907 |
+
});
|
2908 |
+
},
|
2909 |
+
|
2910 |
+
closest: function( selectors, context ) {
|
2911 |
+
var cur,
|
2912 |
+
i = 0,
|
2913 |
+
l = this.length,
|
2914 |
+
matched = [],
|
2915 |
+
pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
|
2916 |
+
jQuery( selectors, context || this.context ) :
|
2917 |
+
0;
|
2918 |
+
|
2919 |
+
for ( ; i < l; i++ ) {
|
2920 |
+
for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
|
2921 |
+
// Always skip document fragments
|
2922 |
+
if ( cur.nodeType < 11 && (pos ?
|
2923 |
+
pos.index(cur) > -1 :
|
2924 |
+
|
2925 |
+
// Don't pass non-elements to Sizzle
|
2926 |
+
cur.nodeType === 1 &&
|
2927 |
+
jQuery.find.matchesSelector(cur, selectors)) ) {
|
2928 |
+
|
2929 |
+
matched.push( cur );
|
2930 |
+
break;
|
2931 |
+
}
|
2932 |
+
}
|
2933 |
+
}
|
2934 |
+
|
2935 |
+
return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
|
2936 |
+
},
|
2937 |
+
|
2938 |
+
// Determine the position of an element within
|
2939 |
+
// the matched set of elements
|
2940 |
+
index: function( elem ) {
|
2941 |
+
|
2942 |
+
// No argument, return index in parent
|
2943 |
+
if ( !elem ) {
|
2944 |
+
return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
|
2945 |
+
}
|
2946 |
+
|
2947 |
+
// index in selector
|
2948 |
+
if ( typeof elem === "string" ) {
|
2949 |
+
return jQuery.inArray( this[0], jQuery( elem ) );
|
2950 |
+
}
|
2951 |
+
|
2952 |
+
// Locate the position of the desired element
|
2953 |
+
return jQuery.inArray(
|
2954 |
+
// If it receives a jQuery object, the first element is used
|
2955 |
+
elem.jquery ? elem[0] : elem, this );
|
2956 |
+
},
|
2957 |
+
|
2958 |
+
add: function( selector, context ) {
|
2959 |
+
return this.pushStack(
|
2960 |
+
jQuery.unique(
|
2961 |
+
jQuery.merge( this.get(), jQuery( selector, context ) )
|
2962 |
+
)
|
2963 |
+
);
|
2964 |
+
},
|
2965 |
+
|
2966 |
+
addBack: function( selector ) {
|
2967 |
+
return this.add( selector == null ?
|
2968 |
+
this.prevObject : this.prevObject.filter(selector)
|
2969 |
+
);
|
2970 |
+
}
|
2971 |
+
});
|
2972 |
+
|
2973 |
+
function sibling( cur, dir ) {
|
2974 |
+
do {
|
2975 |
+
cur = cur[ dir ];
|
2976 |
+
} while ( cur && cur.nodeType !== 1 );
|
2977 |
+
|
2978 |
+
return cur;
|
2979 |
+
}
|
2980 |
+
|
2981 |
+
jQuery.each({
|
2982 |
+
parent: function( elem ) {
|
2983 |
+
var parent = elem.parentNode;
|
2984 |
+
return parent && parent.nodeType !== 11 ? parent : null;
|
2985 |
+
},
|
2986 |
+
parents: function( elem ) {
|
2987 |
+
return jQuery.dir( elem, "parentNode" );
|
2988 |
+
},
|
2989 |
+
parentsUntil: function( elem, i, until ) {
|
2990 |
+
return jQuery.dir( elem, "parentNode", until );
|
2991 |
+
},
|
2992 |
+
next: function( elem ) {
|
2993 |
+
return sibling( elem, "nextSibling" );
|
2994 |
+
},
|
2995 |
+
prev: function( elem ) {
|
2996 |
+
return sibling( elem, "previousSibling" );
|
2997 |
+
},
|
2998 |
+
nextAll: function( elem ) {
|
2999 |
+
return jQuery.dir( elem, "nextSibling" );
|
3000 |
+
},
|
3001 |
+
prevAll: function( elem ) {
|
3002 |
+
return jQuery.dir( elem, "previousSibling" );
|
3003 |
+
},
|
3004 |
+
nextUntil: function( elem, i, until ) {
|
3005 |
+
return jQuery.dir( elem, "nextSibling", until );
|
3006 |
+
},
|
3007 |
+
prevUntil: function( elem, i, until ) {
|
3008 |
+
return jQuery.dir( elem, "previousSibling", until );
|
3009 |
+
},
|
3010 |
+
siblings: function( elem ) {
|
3011 |
+
return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
|
3012 |
+
},
|
3013 |
+
children: function( elem ) {
|
3014 |
+
return jQuery.sibling( elem.firstChild );
|
3015 |
+
},
|
3016 |
+
contents: function( elem ) {
|
3017 |
+
return jQuery.nodeName( elem, "iframe" ) ?
|
3018 |
+
elem.contentDocument || elem.contentWindow.document :
|
3019 |
+
jQuery.merge( [], elem.childNodes );
|
3020 |
+
}
|
3021 |
+
}, function( name, fn ) {
|
3022 |
+
jQuery.fn[ name ] = function( until, selector ) {
|
3023 |
+
var ret = jQuery.map( this, fn, until );
|
3024 |
+
|
3025 |
+
if ( name.slice( -5 ) !== "Until" ) {
|
3026 |
+
selector = until;
|
3027 |
+
}
|
3028 |
+
|
3029 |
+
if ( selector && typeof selector === "string" ) {
|
3030 |
+
ret = jQuery.filter( selector, ret );
|
3031 |
+
}
|
3032 |
+
|
3033 |
+
if ( this.length > 1 ) {
|
3034 |
+
// Remove duplicates
|
3035 |
+
if ( !guaranteedUnique[ name ] ) {
|
3036 |
+
ret = jQuery.unique( ret );
|
3037 |
+
}
|
3038 |
+
|
3039 |
+
// Reverse order for parents* and prev-derivatives
|
3040 |
+
if ( rparentsprev.test( name ) ) {
|
3041 |
+
ret = ret.reverse();
|
3042 |
+
}
|
3043 |
+
}
|
3044 |
+
|
3045 |
+
return this.pushStack( ret );
|
3046 |
+
};
|
3047 |
+
});
|
3048 |
+
var rnotwhite = (/\S+/g);
|
3049 |
+
|
3050 |
+
|
3051 |
+
|
3052 |
+
// String to Object options format cache
|
3053 |
+
var optionsCache = {};
|
3054 |
+
|
3055 |
+
// Convert String-formatted options into Object-formatted ones and store in cache
|
3056 |
+
function createOptions( options ) {
|
3057 |
+
var object = optionsCache[ options ] = {};
|
3058 |
+
jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
|
3059 |
+
object[ flag ] = true;
|
3060 |
+
});
|
3061 |
+
return object;
|
3062 |
+
}
|
3063 |
+
|
3064 |
+
/*
|
3065 |
+
* Create a callback list using the following parameters:
|
3066 |
+
*
|
3067 |
+
* options: an optional list of space-separated options that will change how
|
3068 |
+
* the callback list behaves or a more traditional option object
|
3069 |
+
*
|
3070 |
+
* By default a callback list will act like an event callback list and can be
|
3071 |
+
* "fired" multiple times.
|
3072 |
+
*
|
3073 |
+
* Possible options:
|
3074 |
+
*
|
3075 |
+
* once: will ensure the callback list can only be fired once (like a Deferred)
|
3076 |
+
*
|
3077 |
+
* memory: will keep track of previous values and will call any callback added
|
3078 |
+
* after the list has been fired right away with the latest "memorized"
|
3079 |
+
* values (like a Deferred)
|
3080 |
+
*
|
3081 |
+
* unique: will ensure a callback can only be added once (no duplicate in the list)
|
3082 |
+
*
|
3083 |
+
* stopOnFalse: interrupt callings when a callback returns false
|
3084 |
+
*
|
3085 |
+
*/
|
3086 |
+
jQuery.Callbacks = function( options ) {
|
3087 |
+
|
3088 |
+
// Convert options from String-formatted to Object-formatted if needed
|
3089 |
+
// (we check in cache first)
|
3090 |
+
options = typeof options === "string" ?
|
3091 |
+
( optionsCache[ options ] || createOptions( options ) ) :
|
3092 |
+
jQuery.extend( {}, options );
|
3093 |
+
|
3094 |
+
var // Flag to know if list is currently firing
|
3095 |
+
firing,
|
3096 |
+
// Last fire value (for non-forgettable lists)
|
3097 |
+
memory,
|
3098 |
+
// Flag to know if list was already fired
|
3099 |
+
fired,
|
3100 |
+
// End of the loop when firing
|
3101 |
+
firingLength,
|
3102 |
+
// Index of currently firing callback (modified by remove if needed)
|
3103 |
+
firingIndex,
|
3104 |
+
// First callback to fire (used internally by add and fireWith)
|
3105 |
+
firingStart,
|
3106 |
+
// Actual callback list
|
3107 |
+
list = [],
|
3108 |
+
// Stack of fire calls for repeatable lists
|
3109 |
+
stack = !options.once && [],
|
3110 |
+
// Fire callbacks
|
3111 |
+
fire = function( data ) {
|
3112 |
+
memory = options.memory && data;
|
3113 |
+
fired = true;
|
3114 |
+
firingIndex = firingStart || 0;
|
3115 |
+
firingStart = 0;
|
3116 |
+
firingLength = list.length;
|
3117 |
+
firing = true;
|
3118 |
+
for ( ; list && firingIndex < firingLength; firingIndex++ ) {
|
3119 |
+
if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
|
3120 |
+
memory = false; // To prevent further calls using add
|
3121 |
+
break;
|
3122 |
+
}
|
3123 |
+
}
|
3124 |
+
firing = false;
|
3125 |
+
if ( list ) {
|
3126 |
+
if ( stack ) {
|
3127 |
+
if ( stack.length ) {
|
3128 |
+
fire( stack.shift() );
|
3129 |
+
}
|
3130 |
+
} else if ( memory ) {
|
3131 |
+
list = [];
|
3132 |
+
} else {
|
3133 |
+
self.disable();
|
3134 |
+
}
|
3135 |
+
}
|
3136 |
+
},
|
3137 |
+
// Actual Callbacks object
|
3138 |
+
self = {
|
3139 |
+
// Add a callback or a collection of callbacks to the list
|
3140 |
+
add: function() {
|
3141 |
+
if ( list ) {
|
3142 |
+
// First, we save the current length
|
3143 |
+
var start = list.length;
|
3144 |
+
(function add( args ) {
|
3145 |
+
jQuery.each( args, function( _, arg ) {
|
3146 |
+
var type = jQuery.type( arg );
|
3147 |
+
if ( type === "function" ) {
|
3148 |
+
if ( !options.unique || !self.has( arg ) ) {
|
3149 |
+
list.push( arg );
|
3150 |
+
}
|
3151 |
+
} else if ( arg && arg.length && type !== "string" ) {
|
3152 |
+
// Inspect recursively
|
3153 |
+
add( arg );
|
3154 |
+
}
|
3155 |
+
});
|
3156 |
+
})( arguments );
|
3157 |
+
// Do we need to add the callbacks to the
|
3158 |
+
// current firing batch?
|
3159 |
+
if ( firing ) {
|
3160 |
+
firingLength = list.length;
|
3161 |
+
// With memory, if we're not firing then
|
3162 |
+
// we should call right away
|
3163 |
+
} else if ( memory ) {
|
3164 |
+
firingStart = start;
|
3165 |
+
fire( memory );
|
3166 |
+
}
|
3167 |
+
}
|
3168 |
+
return this;
|
3169 |
+
},
|
3170 |
+
// Remove a callback from the list
|
3171 |
+
remove: function() {
|
3172 |
+
if ( list ) {
|
3173 |
+
jQuery.each( arguments, function( _, arg ) {
|
3174 |
+
var index;
|
3175 |
+
while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
|
3176 |
+
list.splice( index, 1 );
|
3177 |
+
// Handle firing indexes
|
3178 |
+
if ( firing ) {
|
3179 |
+
if ( index <= firingLength ) {
|
3180 |
+
firingLength--;
|
3181 |
+
}
|
3182 |
+
if ( index <= firingIndex ) {
|
3183 |
+
firingIndex--;
|
3184 |
+
}
|
3185 |
+
}
|
3186 |
+
}
|
3187 |
+
});
|
3188 |
+
}
|
3189 |
+
return this;
|
3190 |
+
},
|
3191 |
+
// Check if a given callback is in the list.
|
3192 |
+
// If no argument is given, return whether or not list has callbacks attached.
|
3193 |
+
has: function( fn ) {
|
3194 |
+
return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
|
3195 |
+
},
|
3196 |
+
// Remove all callbacks from the list
|
3197 |
+
empty: function() {
|
3198 |
+
list = [];
|
3199 |
+
firingLength = 0;
|
3200 |
+
return this;
|
3201 |
+
},
|
3202 |
+
// Have the list do nothing anymore
|
3203 |
+
disable: function() {
|
3204 |
+
list = stack = memory = undefined;
|
3205 |
+
return this;
|
3206 |
+
},
|
3207 |
+
// Is it disabled?
|
3208 |
+
disabled: function() {
|
3209 |
+
return !list;
|
3210 |
+
},
|
3211 |
+
// Lock the list in its current state
|
3212 |
+
lock: function() {
|
3213 |
+
stack = undefined;
|
3214 |
+
if ( !memory ) {
|
3215 |
+
self.disable();
|
3216 |
+
}
|
3217 |
+
return this;
|
3218 |
+
},
|
3219 |
+
// Is it locked?
|
3220 |
+
locked: function() {
|
3221 |
+
return !stack;
|
3222 |
+
},
|
3223 |
+
// Call all callbacks with the given context and arguments
|
3224 |
+
fireWith: function( context, args ) {
|
3225 |
+
if ( list && ( !fired || stack ) ) {
|
3226 |
+
args = args || [];
|
3227 |
+
args = [ context, args.slice ? args.slice() : args ];
|
3228 |
+
if ( firing ) {
|
3229 |
+
stack.push( args );
|
3230 |
+
} else {
|
3231 |
+
fire( args );
|
3232 |
+
}
|
3233 |
+
}
|
3234 |
+
return this;
|
3235 |
+
},
|
3236 |
+
// Call all the callbacks with the given arguments
|
3237 |
+
fire: function() {
|
3238 |
+
self.fireWith( this, arguments );
|
3239 |
+
return this;
|
3240 |
+
},
|
3241 |
+
// To know if the callbacks have already been called at least once
|
3242 |
+
fired: function() {
|
3243 |
+
return !!fired;
|
3244 |
+
}
|
3245 |
+
};
|
3246 |
+
|
3247 |
+
return self;
|
3248 |
+
};
|
3249 |
+
|
3250 |
+
|
3251 |
+
jQuery.extend({
|
3252 |
+
|
3253 |
+
Deferred: function( func ) {
|
3254 |
+
var tuples = [
|
3255 |
+
// action, add listener, listener list, final state
|
3256 |
+
[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
|
3257 |
+
[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
|
3258 |
+
[ "notify", "progress", jQuery.Callbacks("memory") ]
|
3259 |
+
],
|
3260 |
+
state = "pending",
|
3261 |
+
promise = {
|
3262 |
+
state: function() {
|
3263 |
+
return state;
|
3264 |
+
},
|
3265 |
+
always: function() {
|
3266 |
+
deferred.done( arguments ).fail( arguments );
|
3267 |
+
return this;
|
3268 |
+
},
|
3269 |
+
then: function( /* fnDone, fnFail, fnProgress */ ) {
|
3270 |
+
var fns = arguments;
|
3271 |
+
return jQuery.Deferred(function( newDefer ) {
|
3272 |
+
jQuery.each( tuples, function( i, tuple ) {
|
3273 |
+
var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
|
3274 |
+
// deferred[ done | fail | progress ] for forwarding actions to newDefer
|
3275 |
+
deferred[ tuple[1] ](function() {
|
3276 |
+
var returned = fn && fn.apply( this, arguments );
|
3277 |
+
if ( returned && jQuery.isFunction( returned.promise ) ) {
|
3278 |
+
returned.promise()
|
3279 |
+
.done( newDefer.resolve )
|
3280 |
+
.fail( newDefer.reject )
|
3281 |
+
.progress( newDefer.notify );
|
3282 |
+
} else {
|
3283 |
+
newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
|
3284 |
+
}
|
3285 |
+
});
|
3286 |
+
});
|
3287 |
+
fns = null;
|
3288 |
+
}).promise();
|
3289 |
+
},
|
3290 |
+
// Get a promise for this deferred
|
3291 |
+
// If obj is provided, the promise aspect is added to the object
|
3292 |
+
promise: function( obj ) {
|
3293 |
+
return obj != null ? jQuery.extend( obj, promise ) : promise;
|
3294 |
+
}
|
3295 |
+
},
|
3296 |
+
deferred = {};
|
3297 |
+
|
3298 |
+
// Keep pipe for back-compat
|
3299 |
+
promise.pipe = promise.then;
|
3300 |
+
|
3301 |
+
// Add list-specific methods
|
3302 |
+
jQuery.each( tuples, function( i, tuple ) {
|
3303 |
+
var list = tuple[ 2 ],
|
3304 |
+
stateString = tuple[ 3 ];
|
3305 |
+
|
3306 |
+
// promise[ done | fail | progress ] = list.add
|
3307 |
+
promise[ tuple[1] ] = list.add;
|
3308 |
+
|
3309 |
+
// Handle state
|
3310 |
+
if ( stateString ) {
|
3311 |
+
list.add(function() {
|
3312 |
+
// state = [ resolved | rejected ]
|
3313 |
+
state = stateString;
|
3314 |
+
|
3315 |
+
// [ reject_list | resolve_list ].disable; progress_list.lock
|
3316 |
+
}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
|
3317 |
+
}
|
3318 |
+
|
3319 |
+
// deferred[ resolve | reject | notify ]
|
3320 |
+
deferred[ tuple[0] ] = function() {
|
3321 |
+
deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
|
3322 |
+
return this;
|
3323 |
+
};
|
3324 |
+
deferred[ tuple[0] + "With" ] = list.fireWith;
|
3325 |
+
});
|
3326 |
+
|
3327 |
+
// Make the deferred a promise
|
3328 |
+
promise.promise( deferred );
|
3329 |
+
|
3330 |
+
// Call given func if any
|
3331 |
+
if ( func ) {
|
3332 |
+
func.call( deferred, deferred );
|
3333 |
+
}
|
3334 |
+
|
3335 |
+
// All done!
|
3336 |
+
return deferred;
|
3337 |
+
},
|
3338 |
+
|
3339 |
+
// Deferred helper
|
3340 |
+
when: function( subordinate /* , ..., subordinateN */ ) {
|
3341 |
+
var i = 0,
|
3342 |
+
resolveValues = slice.call( arguments ),
|
3343 |
+
length = resolveValues.length,
|
3344 |
+
|
3345 |
+
// the count of uncompleted subordinates
|
3346 |
+
remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
|
3347 |
+
|
3348 |
+
// the master Deferred. If resolveValues consist of only a single Deferred, just use that.
|
3349 |
+
deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
|
3350 |
+
|
3351 |
+
// Update function for both resolve and progress values
|
3352 |
+
updateFunc = function( i, contexts, values ) {
|
3353 |
+
return function( value ) {
|
3354 |
+
contexts[ i ] = this;
|
3355 |
+
values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
|
3356 |
+
if ( values === progressValues ) {
|
3357 |
+
deferred.notifyWith( contexts, values );
|
3358 |
+
|
3359 |
+
} else if ( !(--remaining) ) {
|
3360 |
+
deferred.resolveWith( contexts, values );
|
3361 |
+
}
|
3362 |
+
};
|
3363 |
+
},
|
3364 |
+
|
3365 |
+
progressValues, progressContexts, resolveContexts;
|
3366 |
+
|
3367 |
+
// add listeners to Deferred subordinates; treat others as resolved
|
3368 |
+
if ( length > 1 ) {
|
3369 |
+
progressValues = new Array( length );
|
3370 |
+
progressContexts = new Array( length );
|
3371 |
+
resolveContexts = new Array( length );
|
3372 |
+
for ( ; i < length; i++ ) {
|
3373 |
+
if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
|
3374 |
+
resolveValues[ i ].promise()
|
3375 |
+
.done( updateFunc( i, resolveContexts, resolveValues ) )
|
3376 |
+
.fail( deferred.reject )
|
3377 |
+
.progress( updateFunc( i, progressContexts, progressValues ) );
|
3378 |
+
} else {
|
3379 |
+
--remaining;
|
3380 |
+
}
|
3381 |
+
}
|
3382 |
+
}
|
3383 |
+
|
3384 |
+
// if we're not waiting on anything, resolve the master
|
3385 |
+
if ( !remaining ) {
|
3386 |
+
deferred.resolveWith( resolveContexts, resolveValues );
|
3387 |
+
}
|
3388 |
+
|
3389 |
+
return deferred.promise();
|
3390 |
+
}
|
3391 |
+
});
|
3392 |
+
|
3393 |
+
|
3394 |
+
// The deferred used on DOM ready
|
3395 |
+
var readyList;
|
3396 |
+
|
3397 |
+
jQuery.fn.ready = function( fn ) {
|
3398 |
+
// Add the callback
|
3399 |
+
jQuery.ready.promise().done( fn );
|
3400 |
+
|
3401 |
+
return this;
|
3402 |
+
};
|
3403 |
+
|
3404 |
+
jQuery.extend({
|
3405 |
+
// Is the DOM ready to be used? Set to true once it occurs.
|
3406 |
+
isReady: false,
|
3407 |
+
|
3408 |
+
// A counter to track how many items to wait for before
|
3409 |
+
// the ready event fires. See #6781
|
3410 |
+
readyWait: 1,
|
3411 |
+
|
3412 |
+
// Hold (or release) the ready event
|
3413 |
+
holdReady: function( hold ) {
|
3414 |
+
if ( hold ) {
|
3415 |
+
jQuery.readyWait++;
|
3416 |
+
} else {
|
3417 |
+
jQuery.ready( true );
|
3418 |
+
}
|
3419 |
+
},
|
3420 |
+
|
3421 |
+
// Handle when the DOM is ready
|
3422 |
+
ready: function( wait ) {
|
3423 |
+
|
3424 |
+
// Abort if there are pending holds or we're already ready
|
3425 |
+
if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
|
3426 |
+
return;
|
3427 |
+
}
|
3428 |
+
|
3429 |
+
// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
|
3430 |
+
if ( !document.body ) {
|
3431 |
+
return setTimeout( jQuery.ready );
|
3432 |
+
}
|
3433 |
+
|
3434 |
+
// Remember that the DOM is ready
|
3435 |
+
jQuery.isReady = true;
|
3436 |
+
|
3437 |
+
// If a normal DOM Ready event fired, decrement, and wait if need be
|
3438 |
+
if ( wait !== true && --jQuery.readyWait > 0 ) {
|
3439 |
+
return;
|
3440 |
+
}
|
3441 |
+
|
3442 |
+
// If there are functions bound, to execute
|
3443 |
+
readyList.resolveWith( document, [ jQuery ] );
|
3444 |
+
|
3445 |
+
// Trigger any bound ready events
|
3446 |
+
if ( jQuery.fn.triggerHandler ) {
|
3447 |
+
jQuery( document ).triggerHandler( "ready" );
|
3448 |
+
jQuery( document ).off( "ready" );
|
3449 |
+
}
|
3450 |
+
}
|
3451 |
+
});
|
3452 |
+
|
3453 |
+
/**
|
3454 |
+
* Clean-up method for dom ready events
|
3455 |
+
*/
|
3456 |
+
function detach() {
|
3457 |
+
if ( document.addEventListener ) {
|
3458 |
+
document.removeEventListener( "DOMContentLoaded", completed, false );
|
3459 |
+
window.removeEventListener( "load", completed, false );
|
3460 |
+
|
3461 |
+
} else {
|
3462 |
+
document.detachEvent( "onreadystatechange", completed );
|
3463 |
+
window.detachEvent( "onload", completed );
|
3464 |
+
}
|
3465 |
+
}
|
3466 |
+
|
3467 |
+
/**
|
3468 |
+
* The ready event handler and self cleanup method
|
3469 |
+
*/
|
3470 |
+
function completed() {
|
3471 |
+
// readyState === "complete" is good enough for us to call the dom ready in oldIE
|
3472 |
+
if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
|
3473 |
+
detach();
|
3474 |
+
jQuery.ready();
|
3475 |
+
}
|
3476 |
+
}
|
3477 |
+
|
3478 |
+
jQuery.ready.promise = function( obj ) {
|
3479 |
+
if ( !readyList ) {
|
3480 |
+
|
3481 |
+
readyList = jQuery.Deferred();
|
3482 |
+
|
3483 |
+
// Catch cases where $(document).ready() is called after the browser event has already occurred.
|
3484 |
+
// we once tried to use readyState "interactive" here, but it caused issues like the one
|
3485 |
+
// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
|
3486 |
+
if ( document.readyState === "complete" ) {
|
3487 |
+
// Handle it asynchronously to allow scripts the opportunity to delay ready
|
3488 |
+
setTimeout( jQuery.ready );
|
3489 |
+
|
3490 |
+
// Standards-based browsers support DOMContentLoaded
|
3491 |
+
} else if ( document.addEventListener ) {
|
3492 |
+
// Use the handy event callback
|
3493 |
+
document.addEventListener( "DOMContentLoaded", completed, false );
|
3494 |
+
|
3495 |
+
// A fallback to window.onload, that will always work
|
3496 |
+
window.addEventListener( "load", completed, false );
|
3497 |
+
|
3498 |
+
// If IE event model is used
|
3499 |
+
} else {
|
3500 |
+
// Ensure firing before onload, maybe late but safe also for iframes
|
3501 |
+
document.attachEvent( "onreadystatechange", completed );
|
3502 |
+
|
3503 |
+
// A fallback to window.onload, that will always work
|
3504 |
+
window.attachEvent( "onload", completed );
|
3505 |
+
|
3506 |
+
// If IE and not a frame
|
3507 |
+
// continually check to see if the document is ready
|
3508 |
+
var top = false;
|
3509 |
+
|
3510 |
+
try {
|
3511 |
+
top = window.frameElement == null && document.documentElement;
|
3512 |
+
} catch(e) {}
|
3513 |
+
|
3514 |
+
if ( top && top.doScroll ) {
|
3515 |
+
(function doScrollCheck() {
|
3516 |
+
if ( !jQuery.isReady ) {
|
3517 |
+
|
3518 |
+
try {
|
3519 |
+
// Use the trick by Diego Perini
|
3520 |
+
// http://javascript.nwbox.com/IEContentLoaded/
|
3521 |
+
top.doScroll("left");
|
3522 |
+
} catch(e) {
|
3523 |
+
return setTimeout( doScrollCheck, 50 );
|
3524 |
+
}
|
3525 |
+
|
3526 |
+
// detach all dom ready events
|
3527 |
+
detach();
|
3528 |
+
|
3529 |
+
// and execute any waiting functions
|
3530 |
+
jQuery.ready();
|
3531 |
+
}
|
3532 |
+
})();
|
3533 |
+
}
|
3534 |
+
}
|
3535 |
+
}
|
3536 |
+
return readyList.promise( obj );
|
3537 |
+
};
|
3538 |
+
|
3539 |
+
|
3540 |
+
var strundefined = typeof undefined;
|
3541 |
+
|
3542 |
+
|
3543 |
+
|
3544 |
+
// Support: IE<9
|
3545 |
+
// Iteration over object's inherited properties before its own
|
3546 |
+
var i;
|
3547 |
+
for ( i in jQuery( support ) ) {
|
3548 |
+
break;
|
3549 |
+
}
|
3550 |
+
support.ownLast = i !== "0";
|
3551 |
+
|
3552 |
+
// Note: most support tests are defined in their respective modules.
|
3553 |
+
// false until the test is run
|
3554 |
+
support.inlineBlockNeedsLayout = false;
|
3555 |
+
|
3556 |
+
// Execute ASAP in case we need to set body.style.zoom
|
3557 |
+
jQuery(function() {
|
3558 |
+
// Minified: var a,b,c,d
|
3559 |
+
var val, div, body, container;
|
3560 |
+
|
3561 |
+
body = document.getElementsByTagName( "body" )[ 0 ];
|
3562 |
+
if ( !body || !body.style ) {
|
3563 |
+
// Return for frameset docs that don't have a body
|
3564 |
+
return;
|
3565 |
+
}
|
3566 |
+
|
3567 |
+
// Setup
|
3568 |
+
div = document.createElement( "div" );
|
3569 |
+
container = document.createElement( "div" );
|
3570 |
+
container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px";
|
3571 |
+
body.appendChild( container ).appendChild( div );
|
3572 |
+
|
3573 |
+
if ( typeof div.style.zoom !== strundefined ) {
|
3574 |
+
// Support: IE<8
|
3575 |
+
// Check if natively block-level elements act like inline-block
|
3576 |
+
// elements when setting their display to 'inline' and giving
|
3577 |
+
// them layout
|
3578 |
+
div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1";
|
3579 |
+
|
3580 |
+
support.inlineBlockNeedsLayout = val = div.offsetWidth === 3;
|
3581 |
+
if ( val ) {
|
3582 |
+
// Prevent IE 6 from affecting layout for positioned elements #11048
|
3583 |
+
// Prevent IE from shrinking the body in IE 7 mode #12869
|
3584 |
+
// Support: IE<8
|
3585 |
+
body.style.zoom = 1;
|
3586 |
+
}
|
3587 |
+
}
|
3588 |
+
|
3589 |
+
body.removeChild( container );
|
3590 |
+
});
|
3591 |
+
|
3592 |
+
|
3593 |
+
|
3594 |
+
|
3595 |
+
(function() {
|
3596 |
+
var div = document.createElement( "div" );
|
3597 |
+
|
3598 |
+
// Execute the test only if not already executed in another module.
|
3599 |
+
if (support.deleteExpando == null) {
|
3600 |
+
// Support: IE<9
|
3601 |
+
support.deleteExpando = true;
|
3602 |
+
try {
|
3603 |
+
delete div.test;
|
3604 |
+
} catch( e ) {
|
3605 |
+
support.deleteExpando = false;
|
3606 |
+
}
|
3607 |
+
}
|
3608 |
+
|
3609 |
+
// Null elements to avoid leaks in IE.
|
3610 |
+
div = null;
|
3611 |
+
})();
|
3612 |
+
|
3613 |
+
|
3614 |
+
/**
|
3615 |
+
* Determines whether an object can have data
|
3616 |
+
*/
|
3617 |
+
jQuery.acceptData = function( elem ) {
|
3618 |
+
var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ],
|
3619 |
+
nodeType = +elem.nodeType || 1;
|
3620 |
+
|
3621 |
+
// Do not set data on non-element DOM nodes because it will not be cleared (#8335).
|
3622 |
+
return nodeType !== 1 && nodeType !== 9 ?
|
3623 |
+
false :
|
3624 |
+
|
3625 |
+
// Nodes accept data unless otherwise specified; rejection can be conditional
|
3626 |
+
!noData || noData !== true && elem.getAttribute("classid") === noData;
|
3627 |
+
};
|
3628 |
+
|
3629 |
+
|
3630 |
+
var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
|
3631 |
+
rmultiDash = /([A-Z])/g;
|
3632 |
+
|
3633 |
+
function dataAttr( elem, key, data ) {
|
3634 |
+
// If nothing was found internally, try to fetch any
|
3635 |
+
// data from the HTML5 data-* attribute
|
3636 |
+
if ( data === undefined && elem.nodeType === 1 ) {
|
3637 |
+
|
3638 |
+
var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
|
3639 |
+
|
3640 |
+
data = elem.getAttribute( name );
|
3641 |
+
|
3642 |
+
if ( typeof data === "string" ) {
|
3643 |
+
try {
|
3644 |
+
data = data === "true" ? true :
|
3645 |
+
data === "false" ? false :
|
3646 |
+
data === "null" ? null :
|
3647 |
+
// Only convert to a number if it doesn't change the string
|
3648 |
+
+data + "" === data ? +data :
|
3649 |
+
rbrace.test( data ) ? jQuery.parseJSON( data ) :
|
3650 |
+
data;
|
3651 |
+
} catch( e ) {}
|
3652 |
+
|
3653 |
+
// Make sure we set the data so it isn't changed later
|
3654 |
+
jQuery.data( elem, key, data );
|
3655 |
+
|
3656 |
+
} else {
|
3657 |
+
data = undefined;
|
3658 |
+
}
|
3659 |
+
}
|
3660 |
+
|
3661 |
+
return data;
|
3662 |
+
}
|
3663 |
+
|
3664 |
+
// checks a cache object for emptiness
|
3665 |
+
function isEmptyDataObject( obj ) {
|
3666 |
+
var name;
|
3667 |
+
for ( name in obj ) {
|
3668 |
+
|
3669 |
+
// if the public data object is empty, the private is still empty
|
3670 |
+
if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
|
3671 |
+
continue;
|
3672 |
+
}
|
3673 |
+
if ( name !== "toJSON" ) {
|
3674 |
+
return false;
|
3675 |
+
}
|
3676 |
+
}
|
3677 |
+
|
3678 |
+
return true;
|
3679 |
+
}
|
3680 |
+
|
3681 |
+
function internalData( elem, name, data, pvt /* Internal Use Only */ ) {
|
3682 |
+
if ( !jQuery.acceptData( elem ) ) {
|
3683 |
+
return;
|
3684 |
+
}
|
3685 |
+
|
3686 |
+
var ret, thisCache,
|
3687 |
+
internalKey = jQuery.expando,
|
3688 |
+
|
3689 |
+
// We have to handle DOM nodes and JS objects differently because IE6-7
|
3690 |
+
// can't GC object references properly across the DOM-JS boundary
|
3691 |
+
isNode = elem.nodeType,
|
3692 |
+
|
3693 |
+
// Only DOM nodes need the global jQuery cache; JS object data is
|
3694 |
+
// attached directly to the object so GC can occur automatically
|
3695 |
+
cache = isNode ? jQuery.cache : elem,
|
3696 |
+
|
3697 |
+
// Only defining an ID for JS objects if its cache already exists allows
|
3698 |
+
// the code to shortcut on the same path as a DOM node with no cache
|
3699 |
+
id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
|
3700 |
+
|
3701 |
+
// Avoid doing any more work than we need to when trying to get data on an
|
3702 |
+
// object that has no data at all
|
3703 |
+
if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) {
|
3704 |
+
return;
|
3705 |
+
}
|
3706 |
+
|
3707 |
+
if ( !id ) {
|
3708 |
+
// Only DOM nodes need a new unique ID for each element since their data
|
3709 |
+
// ends up in the global cache
|
3710 |
+
if ( isNode ) {
|
3711 |
+
id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;
|
3712 |
+
} else {
|
3713 |
+
id = internalKey;
|
3714 |
+
}
|
3715 |
+
}
|
3716 |
+
|
3717 |
+
if ( !cache[ id ] ) {
|
3718 |
+
// Avoid exposing jQuery metadata on plain JS objects when the object
|
3719 |
+
// is serialized using JSON.stringify
|
3720 |
+
cache[ id ] = isNode ? {} : { toJSON: jQuery.noop };
|
3721 |
+
}
|
3722 |
+
|
3723 |
+
// An object can be passed to jQuery.data instead of a key/value pair; this gets
|
3724 |
+
// shallow copied over onto the existing cache
|
3725 |
+
if ( typeof name === "object" || typeof name === "function" ) {
|
3726 |
+
if ( pvt ) {
|
3727 |
+
cache[ id ] = jQuery.extend( cache[ id ], name );
|
3728 |
+
} else {
|
3729 |
+
cache[ id ].data = jQuery.extend( cache[ id ].data, name );
|
3730 |
+
}
|
3731 |
+
}
|
3732 |
+
|
3733 |
+
thisCache = cache[ id ];
|
3734 |
+
|
3735 |
+
// jQuery data() is stored in a separate object inside the object's internal data
|
3736 |
+
// cache in order to avoid key collisions between internal data and user-defined
|
3737 |
+
// data.
|
3738 |
+
if ( !pvt ) {
|
3739 |
+
if ( !thisCache.data ) {
|
3740 |
+
thisCache.data = {};
|
3741 |
+
}
|
3742 |
+
|
3743 |
+
thisCache = thisCache.data;
|
3744 |
+
}
|
3745 |
+
|
3746 |
+
if ( data !== undefined ) {
|
3747 |
+
thisCache[ jQuery.camelCase( name ) ] = data;
|
3748 |
+
}
|
3749 |
+
|
3750 |
+
// Check for both converted-to-camel and non-converted data property names
|
3751 |
+
// If a data property was specified
|
3752 |
+
if ( typeof name === "string" ) {
|
3753 |
+
|
3754 |
+
// First Try to find as-is property data
|
3755 |
+
ret = thisCache[ name ];
|
3756 |
+
|
3757 |
+
// Test for null|undefined property data
|
3758 |
+
if ( ret == null ) {
|
3759 |
+
|
3760 |
+
// Try to find the camelCased property
|
3761 |
+
ret = thisCache[ jQuery.camelCase( name ) ];
|
3762 |
+
}
|
3763 |
+
} else {
|
3764 |
+
ret = thisCache;
|
3765 |
+
}
|
3766 |
+
|
3767 |
+
return ret;
|
3768 |
+
}
|
3769 |
+
|
3770 |
+
function internalRemoveData( elem, name, pvt ) {
|
3771 |
+
if ( !jQuery.acceptData( elem ) ) {
|
3772 |
+
return;
|
3773 |
+
}
|
3774 |
+
|
3775 |
+
var thisCache, i,
|
3776 |
+
isNode = elem.nodeType,
|
3777 |
+
|
3778 |
+
// See jQuery.data for more information
|
3779 |
+
cache = isNode ? jQuery.cache : elem,
|
3780 |
+
id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
|
3781 |
+
|
3782 |
+
// If there is already no cache entry for this object, there is no
|
3783 |
+
// purpose in continuing
|
3784 |
+
if ( !cache[ id ] ) {
|
3785 |
+
return;
|
3786 |
+
}
|
3787 |
+
|
3788 |
+
if ( name ) {
|
3789 |
+
|
3790 |
+
thisCache = pvt ? cache[ id ] : cache[ id ].data;
|
3791 |
+
|
3792 |
+
if ( thisCache ) {
|
3793 |
+
|
3794 |
+
// Support array or space separated string names for data keys
|
3795 |
+
if ( !jQuery.isArray( name ) ) {
|
3796 |
+
|
3797 |
+
// try the string as a key before any manipulation
|
3798 |
+
if ( name in thisCache ) {
|
3799 |
+
name = [ name ];
|
3800 |
+
} else {
|
3801 |
+
|
3802 |
+
// split the camel cased version by spaces unless a key with the spaces exists
|
3803 |
+
name = jQuery.camelCase( name );
|
3804 |
+
if ( name in thisCache ) {
|
3805 |
+
name = [ name ];
|
3806 |
+
} else {
|
3807 |
+
name = name.split(" ");
|
3808 |
+
}
|
3809 |
+
}
|
3810 |
+
} else {
|
3811 |
+
// If "name" is an array of keys...
|
3812 |
+
// When data is initially created, via ("key", "val") signature,
|
3813 |
+
// keys will be converted to camelCase.
|
3814 |
+
// Since there is no way to tell _how_ a key was added, remove
|
3815 |
+
// both plain key and camelCase key. #12786
|
3816 |
+
// This will only penalize the array argument path.
|
3817 |
+
name = name.concat( jQuery.map( name, jQuery.camelCase ) );
|
3818 |
+
}
|
3819 |
+
|
3820 |
+
i = name.length;
|
3821 |
+
while ( i-- ) {
|
3822 |
+
delete thisCache[ name[i] ];
|
3823 |
+
}
|
3824 |
+
|
3825 |
+
// If there is no data left in the cache, we want to continue
|
3826 |
+
// and let the cache object itself get destroyed
|
3827 |
+
if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {
|
3828 |
+
return;
|
3829 |
+
}
|
3830 |
+
}
|
3831 |
+
}
|
3832 |
+
|
3833 |
+
// See jQuery.data for more information
|
3834 |
+
if ( !pvt ) {
|
3835 |
+
delete cache[ id ].data;
|
3836 |
+
|
3837 |
+
// Don't destroy the parent cache unless the internal data object
|
3838 |
+
// had been the only thing left in it
|
3839 |
+
if ( !isEmptyDataObject( cache[ id ] ) ) {
|
3840 |
+
return;
|
3841 |
+
}
|
3842 |
+
}
|
3843 |
+
|
3844 |
+
// Destroy the cache
|
3845 |
+
if ( isNode ) {
|
3846 |
+
jQuery.cleanData( [ elem ], true );
|
3847 |
+
|
3848 |
+
// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
|
3849 |
+
/* jshint eqeqeq: false */
|
3850 |
+
} else if ( support.deleteExpando || cache != cache.window ) {
|
3851 |
+
/* jshint eqeqeq: true */
|
3852 |
+
delete cache[ id ];
|
3853 |
+
|
3854 |
+
// When all else fails, null
|
3855 |
+
} else {
|
3856 |
+
cache[ id ] = null;
|
3857 |
+
}
|
3858 |
+
}
|
3859 |
+
|
3860 |
+
jQuery.extend({
|
3861 |
+
cache: {},
|
3862 |
+
|
3863 |
+
// The following elements (space-suffixed to avoid Object.prototype collisions)
|
3864 |
+
// throw uncatchable exceptions if you attempt to set expando properties
|
3865 |
+
noData: {
|
3866 |
+
"applet ": true,
|
3867 |
+
"embed ": true,
|
3868 |
+
// ...but Flash objects (which have this classid) *can* handle expandos
|
3869 |
+
"object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
|
3870 |
+
},
|
3871 |
+
|
3872 |
+
hasData: function( elem ) {
|
3873 |
+
elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
|
3874 |
+
return !!elem && !isEmptyDataObject( elem );
|
3875 |
+
},
|
3876 |
+
|
3877 |
+
data: function( elem, name, data ) {
|
3878 |
+
return internalData( elem, name, data );
|
3879 |
+
},
|
3880 |
+
|
3881 |
+
removeData: function( elem, name ) {
|
3882 |
+
return internalRemoveData( elem, name );
|
3883 |
+
},
|
3884 |
+
|
3885 |
+
// For internal use only.
|
3886 |
+
_data: function( elem, name, data ) {
|
3887 |
+
return internalData( elem, name, data, true );
|
3888 |
+
},
|
3889 |
+
|
3890 |
+
_removeData: function( elem, name ) {
|
3891 |
+
return internalRemoveData( elem, name, true );
|
3892 |
+
}
|
3893 |
+
});
|
3894 |
+
|
3895 |
+
jQuery.fn.extend({
|
3896 |
+
data: function( key, value ) {
|
3897 |
+
var i, name, data,
|
3898 |
+
elem = this[0],
|
3899 |
+
attrs = elem && elem.attributes;
|
3900 |
+
|
3901 |
+
// Special expections of .data basically thwart jQuery.access,
|
3902 |
+
// so implement the relevant behavior ourselves
|
3903 |
+
|
3904 |
+
// Gets all values
|
3905 |
+
if ( key === undefined ) {
|
3906 |
+
if ( this.length ) {
|
3907 |
+
data = jQuery.data( elem );
|
3908 |
+
|
3909 |
+
if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
|
3910 |
+
i = attrs.length;
|
3911 |
+
while ( i-- ) {
|
3912 |
+
|
3913 |
+
// Support: IE11+
|
3914 |
+
// The attrs elements can be null (#14894)
|
3915 |
+
if ( attrs[ i ] ) {
|
3916 |
+
name = attrs[ i ].name;
|
3917 |
+
if ( name.indexOf( "data-" ) === 0 ) {
|
3918 |
+
name = jQuery.camelCase( name.slice(5) );
|
3919 |
+
dataAttr( elem, name, data[ name ] );
|
3920 |
+
}
|
3921 |
+
}
|
3922 |
+
}
|
3923 |
+
jQuery._data( elem, "parsedAttrs", true );
|
3924 |
+
}
|
3925 |
+
}
|
3926 |
+
|
3927 |
+
return data;
|
3928 |
+
}
|
3929 |
+
|
3930 |
+
// Sets multiple values
|
3931 |
+
if ( typeof key === "object" ) {
|
3932 |
+
return this.each(function() {
|
3933 |
+
jQuery.data( this, key );
|
3934 |
+
});
|
3935 |
+
}
|
3936 |
+
|
3937 |
+
return arguments.length > 1 ?
|
3938 |
+
|
3939 |
+
// Sets one value
|
3940 |
+
this.each(function() {
|
3941 |
+
jQuery.data( this, key, value );
|
3942 |
+
}) :
|
3943 |
+
|
3944 |
+
// Gets one value
|
3945 |
+
// Try to fetch any internally stored data first
|
3946 |
+
elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;
|
3947 |
+
},
|
3948 |
+
|
3949 |
+
removeData: function( key ) {
|
3950 |
+
return this.each(function() {
|
3951 |
+
jQuery.removeData( this, key );
|
3952 |
+
});
|
3953 |
+
}
|
3954 |
+
});
|
3955 |
+
|
3956 |
+
|
3957 |
+
jQuery.extend({
|
3958 |
+
queue: function( elem, type, data ) {
|
3959 |
+
var queue;
|
3960 |
+
|
3961 |
+
if ( elem ) {
|
3962 |
+
type = ( type || "fx" ) + "queue";
|
3963 |
+
queue = jQuery._data( elem, type );
|
3964 |
+
|
3965 |
+
// Speed up dequeue by getting out quickly if this is just a lookup
|
3966 |
+
if ( data ) {
|
3967 |
+
if ( !queue || jQuery.isArray(data) ) {
|
3968 |
+
queue = jQuery._data( elem, type, jQuery.makeArray(data) );
|
3969 |
+
} else {
|
3970 |
+
queue.push( data );
|
3971 |
+
}
|
3972 |
+
}
|
3973 |
+
return queue || [];
|
3974 |
+
}
|
3975 |
+
},
|
3976 |
+
|
3977 |
+
dequeue: function( elem, type ) {
|
3978 |
+
type = type || "fx";
|
3979 |
+
|
3980 |
+
var queue = jQuery.queue( elem, type ),
|
3981 |
+
startLength = queue.length,
|
3982 |
+
fn = queue.shift(),
|
3983 |
+
hooks = jQuery._queueHooks( elem, type ),
|
3984 |
+
next = function() {
|
3985 |
+
jQuery.dequeue( elem, type );
|
3986 |
+
};
|
3987 |
+
|
3988 |
+
// If the fx queue is dequeued, always remove the progress sentinel
|
3989 |
+
if ( fn === "inprogress" ) {
|
3990 |
+
fn = queue.shift();
|
3991 |
+
startLength--;
|
3992 |
+
}
|
3993 |
+
|
3994 |
+
if ( fn ) {
|
3995 |
+
|
3996 |
+
// Add a progress sentinel to prevent the fx queue from being
|
3997 |
+
// automatically dequeued
|
3998 |
+
if ( type === "fx" ) {
|
3999 |
+
queue.unshift( "inprogress" );
|
4000 |
+
}
|
4001 |
+
|
4002 |
+
// clear up the last queue stop function
|
4003 |
+
delete hooks.stop;
|
4004 |
+
fn.call( elem, next, hooks );
|
4005 |
+
}
|
4006 |
+
|
4007 |
+
if ( !startLength && hooks ) {
|
4008 |
+
hooks.empty.fire();
|
4009 |
+
}
|
4010 |
+
},
|
4011 |
+
|
4012 |
+
// not intended for public consumption - generates a queueHooks object, or returns the current one
|
4013 |
+
_queueHooks: function( elem, type ) {
|
4014 |
+
var key = type + "queueHooks";
|
4015 |
+
return jQuery._data( elem, key ) || jQuery._data( elem, key, {
|
4016 |
+
empty: jQuery.Callbacks("once memory").add(function() {
|
4017 |
+
jQuery._removeData( elem, type + "queue" );
|
4018 |
+
jQuery._removeData( elem, key );
|
4019 |
+
})
|
4020 |
+
});
|
4021 |
+
}
|
4022 |
+
});
|
4023 |
+
|
4024 |
+
jQuery.fn.extend({
|
4025 |
+
queue: function( type, data ) {
|
4026 |
+
var setter = 2;
|
4027 |
+
|
4028 |
+
if ( typeof type !== "string" ) {
|
4029 |
+
data = type;
|
4030 |
+
type = "fx";
|
4031 |
+
setter--;
|
4032 |
+
}
|
4033 |
+
|
4034 |
+
if ( arguments.length < setter ) {
|
4035 |
+
return jQuery.queue( this[0], type );
|
4036 |
+
}
|
4037 |
+
|
4038 |
+
return data === undefined ?
|
4039 |
+
this :
|
4040 |
+
this.each(function() {
|
4041 |
+
var queue = jQuery.queue( this, type, data );
|
4042 |
+
|
4043 |
+
// ensure a hooks for this queue
|
4044 |
+
jQuery._queueHooks( this, type );
|
4045 |
+
|
4046 |
+
if ( type === "fx" && queue[0] !== "inprogress" ) {
|
4047 |
+
jQuery.dequeue( this, type );
|
4048 |
+
}
|
4049 |
+
});
|
4050 |
+
},
|
4051 |
+
dequeue: function( type ) {
|
4052 |
+
return this.each(function() {
|
4053 |
+
jQuery.dequeue( this, type );
|
4054 |
+
});
|
4055 |
+
},
|
4056 |
+
clearQueue: function( type ) {
|
4057 |
+
return this.queue( type || "fx", [] );
|
4058 |
+
},
|
4059 |
+
// Get a promise resolved when queues of a certain type
|
4060 |
+
// are emptied (fx is the type by default)
|
4061 |
+
promise: function( type, obj ) {
|
4062 |
+
var tmp,
|
4063 |
+
count = 1,
|
4064 |
+
defer = jQuery.Deferred(),
|
4065 |
+
elements = this,
|
4066 |
+
i = this.length,
|
4067 |
+
resolve = function() {
|
4068 |
+
if ( !( --count ) ) {
|
4069 |
+
defer.resolveWith( elements, [ elements ] );
|
4070 |
+
}
|
4071 |
+
};
|
4072 |
+
|
4073 |
+
if ( typeof type !== "string" ) {
|
4074 |
+
obj = type;
|
4075 |
+
type = undefined;
|
4076 |
+
}
|
4077 |
+
type = type || "fx";
|
4078 |
+
|
4079 |
+
while ( i-- ) {
|
4080 |
+
tmp = jQuery._data( elements[ i ], type + "queueHooks" );
|
4081 |
+
if ( tmp && tmp.empty ) {
|
4082 |
+
count++;
|
4083 |
+
tmp.empty.add( resolve );
|
4084 |
+
}
|
4085 |
+
}
|
4086 |
+
resolve();
|
4087 |
+
return defer.promise( obj );
|
4088 |
+
}
|
4089 |
+
});
|
4090 |
+
var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
|
4091 |
+
|
4092 |
+
var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
|
4093 |
+
|
4094 |
+
var isHidden = function( elem, el ) {
|
4095 |
+
// isHidden might be called from jQuery#filter function;
|
4096 |
+
// in that case, element will be second argument
|
4097 |
+
elem = el || elem;
|
4098 |
+
return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
|
4099 |
+
};
|
4100 |
+
|
4101 |
+
|
4102 |
+
|
4103 |
+
// Multifunctional method to get and set values of a collection
|
4104 |
+
// The value/s can optionally be executed if it's a function
|
4105 |
+
var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
|
4106 |
+
var i = 0,
|
4107 |
+
length = elems.length,
|
4108 |
+
bulk = key == null;
|
4109 |
+
|
4110 |
+
// Sets many values
|
4111 |
+
if ( jQuery.type( key ) === "object" ) {
|
4112 |
+
chainable = true;
|
4113 |
+
for ( i in key ) {
|
4114 |
+
jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
|
4115 |
+
}
|
4116 |
+
|
4117 |
+
// Sets one value
|
4118 |
+
} else if ( value !== undefined ) {
|
4119 |
+
chainable = true;
|
4120 |
+
|
4121 |
+
if ( !jQuery.isFunction( value ) ) {
|
4122 |
+
raw = true;
|
4123 |
+
}
|
4124 |
+
|
4125 |
+
if ( bulk ) {
|
4126 |
+
// Bulk operations run against the entire set
|
4127 |
+
if ( raw ) {
|
4128 |
+
fn.call( elems, value );
|
4129 |
+
fn = null;
|
4130 |
+
|
4131 |
+
// ...except when executing function values
|
4132 |
+
} else {
|
4133 |
+
bulk = fn;
|
4134 |
+
fn = function( elem, key, value ) {
|
4135 |
+
return bulk.call( jQuery( elem ), value );
|
4136 |
+
};
|
4137 |
+
}
|
4138 |
+
}
|
4139 |
+
|
4140 |
+
if ( fn ) {
|
4141 |
+
for ( ; i < length; i++ ) {
|
4142 |
+
fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
|
4143 |
+
}
|
4144 |
+
}
|
4145 |
+
}
|
4146 |
+
|
4147 |
+
return chainable ?
|
4148 |
+
elems :
|
4149 |
+
|
4150 |
+
// Gets
|
4151 |
+
bulk ?
|
4152 |
+
fn.call( elems ) :
|
4153 |
+
length ? fn( elems[0], key ) : emptyGet;
|
4154 |
+
};
|
4155 |
+
var rcheckableType = (/^(?:checkbox|radio)$/i);
|
4156 |
+
|
4157 |
+
|
4158 |
+
|
4159 |
+
(function() {
|
4160 |
+
// Minified: var a,b,c
|
4161 |
+
var input = document.createElement( "input" ),
|
4162 |
+
div = document.createElement( "div" ),
|
4163 |
+
fragment = document.createDocumentFragment();
|
4164 |
+
|
4165 |
+
// Setup
|
4166 |
+
div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
|
4167 |
+
|
4168 |
+
// IE strips leading whitespace when .innerHTML is used
|
4169 |
+
support.leadingWhitespace = div.firstChild.nodeType === 3;
|
4170 |
+
|
4171 |
+
// Make sure that tbody elements aren't automatically inserted
|
4172 |
+
// IE will insert them into empty tables
|
4173 |
+
support.tbody = !div.getElementsByTagName( "tbody" ).length;
|
4174 |
+
|
4175 |
+
// Make sure that link elements get serialized correctly by innerHTML
|
4176 |
+
// This requires a wrapper element in IE
|
4177 |
+
support.htmlSerialize = !!div.getElementsByTagName( "link" ).length;
|
4178 |
+
|
4179 |
+
// Makes sure cloning an html5 element does not cause problems
|
4180 |
+
// Where outerHTML is undefined, this still works
|
4181 |
+
support.html5Clone =
|
4182 |
+
document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav></:nav>";
|
4183 |
+
|
4184 |
+
// Check if a disconnected checkbox will retain its checked
|
4185 |
+
// value of true after appended to the DOM (IE6/7)
|
4186 |
+
input.type = "checkbox";
|
4187 |
+
input.checked = true;
|
4188 |
+
fragment.appendChild( input );
|
4189 |
+
support.appendChecked = input.checked;
|
4190 |
+
|
4191 |
+
// Make sure textarea (and checkbox) defaultValue is properly cloned
|
4192 |
+
// Support: IE6-IE11+
|
4193 |
+
div.innerHTML = "<textarea>x</textarea>";
|
4194 |
+
support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
|
4195 |
+
|
4196 |
+
// #11217 - WebKit loses check when the name is after the checked attribute
|
4197 |
+
fragment.appendChild( div );
|
4198 |
+
div.innerHTML = "<input type='radio' checked='checked' name='t'/>";
|
4199 |
+
|
4200 |
+
// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3
|
4201 |
+
// old WebKit doesn't clone checked state correctly in fragments
|
4202 |
+
support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
|
4203 |
+
|
4204 |
+
// Support: IE<9
|
4205 |
+
// Opera does not clone events (and typeof div.attachEvent === undefined).
|
4206 |
+
// IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
|
4207 |
+
support.noCloneEvent = true;
|
4208 |
+
if ( div.attachEvent ) {
|
4209 |
+
div.attachEvent( "onclick", function() {
|
4210 |
+
support.noCloneEvent = false;
|
4211 |
+
});
|
4212 |
+
|
4213 |
+
div.cloneNode( true ).click();
|
4214 |
+
}
|
4215 |
+
|
4216 |
+
// Execute the test only if not already executed in another module.
|
4217 |
+
if (support.deleteExpando == null) {
|
4218 |
+
// Support: IE<9
|
4219 |
+
support.deleteExpando = true;
|
4220 |
+
try {
|
4221 |
+
delete div.test;
|
4222 |
+
} catch( e ) {
|
4223 |
+
support.deleteExpando = false;
|
4224 |
+
}
|
4225 |
+
}
|
4226 |
+
})();
|
4227 |
+
|
4228 |
+
|
4229 |
+
(function() {
|
4230 |
+
var i, eventName,
|
4231 |
+
div = document.createElement( "div" );
|
4232 |
+
|
4233 |
+
// Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event)
|
4234 |
+
for ( i in { submit: true, change: true, focusin: true }) {
|
4235 |
+
eventName = "on" + i;
|
4236 |
+
|
4237 |
+
if ( !(support[ i + "Bubbles" ] = eventName in window) ) {
|
4238 |
+
// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)
|
4239 |
+
div.setAttribute( eventName, "t" );
|
4240 |
+
support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false;
|
4241 |
+
}
|
4242 |
+
}
|
4243 |
+
|
4244 |
+
// Null elements to avoid leaks in IE.
|
4245 |
+
div = null;
|
4246 |
+
})();
|
4247 |
+
|
4248 |
+
|
4249 |
+
var rformElems = /^(?:input|select|textarea)$/i,
|
4250 |
+
rkeyEvent = /^key/,
|
4251 |
+
rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
|
4252 |
+
rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
|
4253 |
+
rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
|
4254 |
+
|
4255 |
+
function returnTrue() {
|
4256 |
+
return true;
|
4257 |
+
}
|
4258 |
+
|
4259 |
+
function returnFalse() {
|
4260 |
+
return false;
|
4261 |
+
}
|
4262 |
+
|
4263 |
+
function safeActiveElement() {
|
4264 |
+
try {
|
4265 |
+
return document.activeElement;
|
4266 |
+
} catch ( err ) { }
|
4267 |
+
}
|
4268 |
+
|
4269 |
+
/*
|
4270 |
+
* Helper functions for managing events -- not part of the public interface.
|
4271 |
+
* Props to Dean Edwards' addEvent library for many of the ideas.
|
4272 |
+
*/
|
4273 |
+
jQuery.event = {
|
4274 |
+
|
4275 |
+
global: {},
|
4276 |
+
|
4277 |
+
add: function( elem, types, handler, data, selector ) {
|
4278 |
+
var tmp, events, t, handleObjIn,
|
4279 |
+
special, eventHandle, handleObj,
|
4280 |
+
handlers, type, namespaces, origType,
|
4281 |
+
elemData = jQuery._data( elem );
|
4282 |
+
|
4283 |
+
// Don't attach events to noData or text/comment nodes (but allow plain objects)
|
4284 |
+
if ( !elemData ) {
|
4285 |
+
return;
|
4286 |
+
}
|
4287 |
+
|
4288 |
+
// Caller can pass in an object of custom data in lieu of the handler
|
4289 |
+
if ( handler.handler ) {
|
4290 |
+
handleObjIn = handler;
|
4291 |
+
handler = handleObjIn.handler;
|
4292 |
+
selector = handleObjIn.selector;
|
4293 |
+
}
|
4294 |
+
|
4295 |
+
// Make sure that the handler has a unique ID, used to find/remove it later
|
4296 |
+
if ( !handler.guid ) {
|
4297 |
+
handler.guid = jQuery.guid++;
|
4298 |
+
}
|
4299 |
+
|
4300 |
+
// Init the element's event structure and main handler, if this is the first
|
4301 |
+
if ( !(events = elemData.events) ) {
|
4302 |
+
events = elemData.events = {};
|
4303 |
+
}
|
4304 |
+
if ( !(eventHandle = elemData.handle) ) {
|
4305 |
+
eventHandle = elemData.handle = function( e ) {
|
4306 |
+
// Discard the second event of a jQuery.event.trigger() and
|
4307 |
+
// when an event is called after a page has unloaded
|
4308 |
+
return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ?
|
4309 |
+
jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
|
4310 |
+
undefined;
|
4311 |
+
};
|
4312 |
+
// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
|
4313 |
+
eventHandle.elem = elem;
|
4314 |
+
}
|
4315 |
+
|
4316 |
+
// Handle multiple events separated by a space
|
4317 |
+
types = ( types || "" ).match( rnotwhite ) || [ "" ];
|
4318 |
+
t = types.length;
|
4319 |
+
while ( t-- ) {
|
4320 |
+
tmp = rtypenamespace.exec( types[t] ) || [];
|
4321 |
+
type = origType = tmp[1];
|
4322 |
+
namespaces = ( tmp[2] || "" ).split( "." ).sort();
|
4323 |
+
|
4324 |
+
// There *must* be a type, no attaching namespace-only handlers
|
4325 |
+
if ( !type ) {
|
4326 |
+
continue;
|
4327 |
+
}
|
4328 |
+
|
4329 |
+
// If event changes its type, use the special event handlers for the changed type
|
4330 |
+
special = jQuery.event.special[ type ] || {};
|
4331 |
+
|
4332 |
+
// If selector defined, determine special event api type, otherwise given type
|
4333 |
+
type = ( selector ? special.delegateType : special.bindType ) || type;
|
4334 |
+
|
4335 |
+
// Update special based on newly reset type
|
4336 |
+
special = jQuery.event.special[ type ] || {};
|
4337 |
+
|
4338 |
+
// handleObj is passed to all event handlers
|
4339 |
+
handleObj = jQuery.extend({
|
4340 |
+
type: type,
|
4341 |
+
origType: origType,
|
4342 |
+
data: data,
|
4343 |
+
handler: handler,
|
4344 |
+
guid: handler.guid,
|
4345 |
+
selector: selector,
|
4346 |
+
needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
|
4347 |
+
namespace: namespaces.join(".")
|
4348 |
+
}, handleObjIn );
|
4349 |
+
|
4350 |
+
// Init the event handler queue if we're the first
|
4351 |
+
if ( !(handlers = events[ type ]) ) {
|
4352 |
+
handlers = events[ type ] = [];
|
4353 |
+
handlers.delegateCount = 0;
|
4354 |
+
|
4355 |
+
// Only use addEventListener/attachEvent if the special events handler returns false
|
4356 |
+
if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
|
4357 |
+
// Bind the global event handler to the element
|
4358 |
+
if ( elem.addEventListener ) {
|
4359 |
+
elem.addEventListener( type, eventHandle, false );
|
4360 |
+
|
4361 |
+
} else if ( elem.attachEvent ) {
|
4362 |
+
elem.attachEvent( "on" + type, eventHandle );
|
4363 |
+
}
|
4364 |
+
}
|
4365 |
+
}
|
4366 |
+
|
4367 |
+
if ( special.add ) {
|
4368 |
+
special.add.call( elem, handleObj );
|
4369 |
+
|
4370 |
+
if ( !handleObj.handler.guid ) {
|
4371 |
+
handleObj.handler.guid = handler.guid;
|
4372 |
+
}
|
4373 |
+
}
|
4374 |
+
|
4375 |
+
// Add to the element's handler list, delegates in front
|
4376 |
+
if ( selector ) {
|
4377 |
+
handlers.splice( handlers.delegateCount++, 0, handleObj );
|
4378 |
+
} else {
|
4379 |
+
handlers.push( handleObj );
|
4380 |
+
}
|
4381 |
+
|
4382 |
+
// Keep track of which events have ever been used, for event optimization
|
4383 |
+
jQuery.event.global[ type ] = true;
|
4384 |
+
}
|
4385 |
+
|
4386 |
+
// Nullify elem to prevent memory leaks in IE
|
4387 |
+
elem = null;
|
4388 |
+
},
|
4389 |
+
|
4390 |
+
// Detach an event or set of events from an element
|
4391 |
+
remove: function( elem, types, handler, selector, mappedTypes ) {
|
4392 |
+
var j, handleObj, tmp,
|
4393 |
+
origCount, t, events,
|
4394 |
+
special, handlers, type,
|
4395 |
+
namespaces, origType,
|
4396 |
+
elemData = jQuery.hasData( elem ) && jQuery._data( elem );
|
4397 |
+
|
4398 |
+
if ( !elemData || !(events = elemData.events) ) {
|
4399 |
+
return;
|
4400 |
+
}
|
4401 |
+
|
4402 |
+
// Once for each type.namespace in types; type may be omitted
|
4403 |
+
types = ( types || "" ).match( rnotwhite ) || [ "" ];
|
4404 |
+
t = types.length;
|
4405 |
+
while ( t-- ) {
|
4406 |
+
tmp = rtypenamespace.exec( types[t] ) || [];
|
4407 |
+
type = origType = tmp[1];
|
4408 |
+
namespaces = ( tmp[2] || "" ).split( "." ).sort();
|
4409 |
+
|
4410 |
+
// Unbind all events (on this namespace, if provided) for the element
|
4411 |
+
if ( !type ) {
|
4412 |
+
for ( type in events ) {
|
4413 |
+
jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
|
4414 |
+
}
|
4415 |
+
continue;
|
4416 |
+
}
|
4417 |
+
|
4418 |
+
special = jQuery.event.special[ type ] || {};
|
4419 |
+
type = ( selector ? special.delegateType : special.bindType ) || type;
|
4420 |
+
handlers = events[ type ] || [];
|
4421 |
+
tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
|
4422 |
+
|
4423 |
+
// Remove matching events
|
4424 |
+
origCount = j = handlers.length;
|
4425 |
+
while ( j-- ) {
|
4426 |
+
handleObj = handlers[ j ];
|
4427 |
+
|
4428 |
+
if ( ( mappedTypes || origType === handleObj.origType ) &&
|
4429 |
+
( !handler || handler.guid === handleObj.guid ) &&
|
4430 |
+
( !tmp || tmp.test( handleObj.namespace ) ) &&
|
4431 |
+
( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
|
4432 |
+
handlers.splice( j, 1 );
|
4433 |
+
|
4434 |
+
if ( handleObj.selector ) {
|
4435 |
+
handlers.delegateCount--;
|
4436 |
+
}
|
4437 |
+
if ( special.remove ) {
|
4438 |
+
special.remove.call( elem, handleObj );
|
4439 |
+
}
|
4440 |
+
}
|
4441 |
+
}
|
4442 |
+
|
4443 |
+
// Remove generic event handler if we removed something and no more handlers exist
|
4444 |
+
// (avoids potential for endless recursion during removal of special event handlers)
|
4445 |
+
if ( origCount && !handlers.length ) {
|
4446 |
+
if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
|
4447 |
+
jQuery.removeEvent( elem, type, elemData.handle );
|
4448 |
+
}
|
4449 |
+
|
4450 |
+
delete events[ type ];
|
4451 |
+
}
|
4452 |
+
}
|
4453 |
+
|
4454 |
+
// Remove the expando if it's no longer used
|
4455 |
+
if ( jQuery.isEmptyObject( events ) ) {
|
4456 |
+
delete elemData.handle;
|
4457 |
+
|
4458 |
+
// removeData also checks for emptiness and clears the expando if empty
|
4459 |
+
// so use it instead of delete
|
4460 |
+
jQuery._removeData( elem, "events" );
|
4461 |
+
}
|
4462 |
+
},
|
4463 |
+
|
4464 |
+
trigger: function( event, data, elem, onlyHandlers ) {
|
4465 |
+
var handle, ontype, cur,
|
4466 |
+
bubbleType, special, tmp, i,
|
4467 |
+
eventPath = [ elem || document ],
|
4468 |
+
type = hasOwn.call( event, "type" ) ? event.type : event,
|
4469 |
+
namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
|
4470 |
+
|
4471 |
+
cur = tmp = elem = elem || document;
|
4472 |
+
|
4473 |
+
// Don't do events on text and comment nodes
|
4474 |
+
if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
|
4475 |
+
return;
|
4476 |
+
}
|
4477 |
+
|
4478 |
+
// focus/blur morphs to focusin/out; ensure we're not firing them right now
|
4479 |
+
if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
|
4480 |
+
return;
|
4481 |
+
}
|
4482 |
+
|
4483 |
+
if ( type.indexOf(".") >= 0 ) {
|
4484 |
+
// Namespaced trigger; create a regexp to match event type in handle()
|
4485 |
+
namespaces = type.split(".");
|
4486 |
+
type = namespaces.shift();
|
4487 |
+
namespaces.sort();
|
4488 |
+
}
|
4489 |
+
ontype = type.indexOf(":") < 0 && "on" + type;
|
4490 |
+
|
4491 |
+
// Caller can pass in a jQuery.Event object, Object, or just an event type string
|
4492 |
+
event = event[ jQuery.expando ] ?
|
4493 |
+
event :
|
4494 |
+
new jQuery.Event( type, typeof event === "object" && event );
|
4495 |
+
|
4496 |
+
// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
|
4497 |
+
event.isTrigger = onlyHandlers ? 2 : 3;
|
4498 |
+
event.namespace = namespaces.join(".");
|
4499 |
+
event.namespace_re = event.namespace ?
|
4500 |
+
new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
|
4501 |
+
null;
|
4502 |
+
|
4503 |
+
// Clean up the event in case it is being reused
|
4504 |
+
event.result = undefined;
|
4505 |
+
if ( !event.target ) {
|
4506 |
+
event.target = elem;
|
4507 |
+
}
|
4508 |
+
|
4509 |
+
// Clone any incoming data and prepend the event, creating the handler arg list
|
4510 |
+
data = data == null ?
|
4511 |
+
[ event ] :
|
4512 |
+
jQuery.makeArray( data, [ event ] );
|
4513 |
+
|
4514 |
+
// Allow special events to draw outside the lines
|
4515 |
+
special = jQuery.event.special[ type ] || {};
|
4516 |
+
if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
|
4517 |
+
return;
|
4518 |
+
}
|
4519 |
+
|
4520 |
+
// Determine event propagation path in advance, per W3C events spec (#9951)
|
4521 |
+
// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
|
4522 |
+
if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
|
4523 |
+
|
4524 |
+
bubbleType = special.delegateType || type;
|
4525 |
+
if ( !rfocusMorph.test( bubbleType + type ) ) {
|
4526 |
+
cur = cur.parentNode;
|
4527 |
+
}
|
4528 |
+
for ( ; cur; cur = cur.parentNode ) {
|
4529 |
+
eventPath.push( cur );
|
4530 |
+
tmp = cur;
|
4531 |
+
}
|
4532 |
+
|
4533 |
+
// Only add window if we got to document (e.g., not plain obj or detached DOM)
|
4534 |
+
if ( tmp === (elem.ownerDocument || document) ) {
|
4535 |
+
eventPath.push( tmp.defaultView || tmp.parentWindow || window );
|
4536 |
+
}
|
4537 |
+
}
|
4538 |
+
|
4539 |
+
// Fire handlers on the event path
|
4540 |
+
i = 0;
|
4541 |
+
while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
|
4542 |
+
|
4543 |
+
event.type = i > 1 ?
|
4544 |
+
bubbleType :
|
4545 |
+
special.bindType || type;
|
4546 |
+
|
4547 |
+
// jQuery handler
|
4548 |
+
handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
|
4549 |
+
if ( handle ) {
|
4550 |
+
handle.apply( cur, data );
|
4551 |
+
}
|
4552 |
+
|
4553 |
+
// Native handler
|
4554 |
+
handle = ontype && cur[ ontype ];
|
4555 |
+
if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
|
4556 |
+
event.result = handle.apply( cur, data );
|
4557 |
+
if ( event.result === false ) {
|
4558 |
+
event.preventDefault();
|
4559 |
+
}
|
4560 |
+
}
|
4561 |
+
}
|
4562 |
+
event.type = type;
|
4563 |
+
|
4564 |
+
// If nobody prevented the default action, do it now
|
4565 |
+
if ( !onlyHandlers && !event.isDefaultPrevented() ) {
|
4566 |
+
|
4567 |
+
if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
|
4568 |
+
jQuery.acceptData( elem ) ) {
|
4569 |
+
|
4570 |
+
// Call a native DOM method on the target with the same name name as the event.
|
4571 |
+
// Can't use an .isFunction() check here because IE6/7 fails that test.
|
4572 |
+
// Don't do default actions on window, that's where global variables be (#6170)
|
4573 |
+
if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
|
4574 |
+
|
4575 |
+
// Don't re-trigger an onFOO event when we call its FOO() method
|
4576 |
+
tmp = elem[ ontype ];
|
4577 |
+
|
4578 |
+
if ( tmp ) {
|
4579 |
+
elem[ ontype ] = null;
|
4580 |
+
}
|
4581 |
+
|
4582 |
+
// Prevent re-triggering of the same event, since we already bubbled it above
|
4583 |
+
jQuery.event.triggered = type;
|
4584 |
+
try {
|
4585 |
+
elem[ type ]();
|
4586 |
+
} catch ( e ) {
|
4587 |
+
// IE<9 dies on focus/blur to hidden element (#1486,#12518)
|
4588 |
+
// only reproducible on winXP IE8 native, not IE9 in IE8 mode
|
4589 |
+
}
|
4590 |
+
jQuery.event.triggered = undefined;
|
4591 |
+
|
4592 |
+
if ( tmp ) {
|
4593 |
+
elem[ ontype ] = tmp;
|
4594 |
+
}
|
4595 |
+
}
|
4596 |
+
}
|
4597 |
+
}
|
4598 |
+
|
4599 |
+
return event.result;
|
4600 |
+
},
|
4601 |
+
|
4602 |
+
dispatch: function( event ) {
|
4603 |
+
|
4604 |
+
// Make a writable jQuery.Event from the native event object
|
4605 |
+
event = jQuery.event.fix( event );
|
4606 |
+
|
4607 |
+
var i, ret, handleObj, matched, j,
|
4608 |
+
handlerQueue = [],
|
4609 |
+
args = slice.call( arguments ),
|
4610 |
+
handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
|
4611 |
+
special = jQuery.event.special[ event.type ] || {};
|
4612 |
+
|
4613 |
+
// Use the fix-ed jQuery.Event rather than the (read-only) native event
|
4614 |
+
args[0] = event;
|
4615 |
+
event.delegateTarget = this;
|
4616 |
+
|
4617 |
+
// Call the preDispatch hook for the mapped type, and let it bail if desired
|
4618 |
+
if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
|
4619 |
+
return;
|
4620 |
+
}
|
4621 |
+
|
4622 |
+
// Determine handlers
|
4623 |
+
handlerQueue = jQuery.event.handlers.call( this, event, handlers );
|
4624 |
+
|
4625 |
+
// Run delegates first; they may want to stop propagation beneath us
|
4626 |
+
i = 0;
|
4627 |
+
while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
|
4628 |
+
event.currentTarget = matched.elem;
|
4629 |
+
|
4630 |
+
j = 0;
|
4631 |
+
while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
|
4632 |
+
|
4633 |
+
// Triggered event must either 1) have no namespace, or
|
4634 |
+
// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
|
4635 |
+
if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
|
4636 |
+
|
4637 |
+
event.handleObj = handleObj;
|
4638 |
+
event.data = handleObj.data;
|
4639 |
+
|
4640 |
+
ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
|
4641 |
+
.apply( matched.elem, args );
|
4642 |
+
|
4643 |
+
if ( ret !== undefined ) {
|
4644 |
+
if ( (event.result = ret) === false ) {
|
4645 |
+
event.preventDefault();
|
4646 |
+
event.stopPropagation();
|
4647 |
+
}
|
4648 |
+
}
|
4649 |
+
}
|
4650 |
+
}
|
4651 |
+
}
|
4652 |
+
|
4653 |
+
// Call the postDispatch hook for the mapped type
|
4654 |
+
if ( special.postDispatch ) {
|
4655 |
+
special.postDispatch.call( this, event );
|
4656 |
+
}
|
4657 |
+
|
4658 |
+
return event.result;
|
4659 |
+
},
|
4660 |
+
|
4661 |
+
handlers: function( event, handlers ) {
|
4662 |
+
var sel, handleObj, matches, i,
|
4663 |
+
handlerQueue = [],
|
4664 |
+
delegateCount = handlers.delegateCount,
|
4665 |
+
cur = event.target;
|
4666 |
+
|
4667 |
+
// Find delegate handlers
|
4668 |
+
// Black-hole SVG <use> instance trees (#13180)
|
4669 |
+
// Avoid non-left-click bubbling in Firefox (#3861)
|
4670 |
+
if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
|
4671 |
+
|
4672 |
+
/* jshint eqeqeq: false */
|
4673 |
+
for ( ; cur != this; cur = cur.parentNode || this ) {
|
4674 |
+
/* jshint eqeqeq: true */
|
4675 |
+
|
4676 |
+
// Don't check non-elements (#13208)
|
4677 |
+
// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
|
4678 |
+
if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
|
4679 |
+
matches = [];
|
4680 |
+
for ( i = 0; i < delegateCount; i++ ) {
|
4681 |
+
handleObj = handlers[ i ];
|
4682 |
+
|
4683 |
+
// Don't conflict with Object.prototype properties (#13203)
|
4684 |
+
sel = handleObj.selector + " ";
|
4685 |
+
|
4686 |
+
if ( matches[ sel ] === undefined ) {
|
4687 |
+
matches[ sel ] = handleObj.needsContext ?
|
4688 |
+
jQuery( sel, this ).index( cur ) >= 0 :
|
4689 |
+
jQuery.find( sel, this, null, [ cur ] ).length;
|
4690 |
+
}
|
4691 |
+
if ( matches[ sel ] ) {
|
4692 |
+
matches.push( handleObj );
|
4693 |
+
}
|
4694 |
+
}
|
4695 |
+
if ( matches.length ) {
|
4696 |
+
handlerQueue.push({ elem: cur, handlers: matches });
|
4697 |
+
}
|
4698 |
+
}
|
4699 |
+
}
|
4700 |
+
}
|
4701 |
+
|
4702 |
+
// Add the remaining (directly-bound) handlers
|
4703 |
+
if ( delegateCount < handlers.length ) {
|
4704 |
+
handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
|
4705 |
+
}
|
4706 |
+
|
4707 |
+
return handlerQueue;
|
4708 |
+
},
|
4709 |
+
|
4710 |
+
fix: function( event ) {
|
4711 |
+
if ( event[ jQuery.expando ] ) {
|
4712 |
+
return event;
|
4713 |
+
}
|
4714 |
+
|
4715 |
+
// Create a writable copy of the event object and normalize some properties
|
4716 |
+
var i, prop, copy,
|
4717 |
+
type = event.type,
|
4718 |
+
originalEvent = event,
|
4719 |
+
fixHook = this.fixHooks[ type ];
|
4720 |
+
|
4721 |
+
if ( !fixHook ) {
|
4722 |
+
this.fixHooks[ type ] = fixHook =
|
4723 |
+
rmouseEvent.test( type ) ? this.mouseHooks :
|
4724 |
+
rkeyEvent.test( type ) ? this.keyHooks :
|
4725 |
+
{};
|
4726 |
+
}
|
4727 |
+
copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
|
4728 |
+
|
4729 |
+
event = new jQuery.Event( originalEvent );
|
4730 |
+
|
4731 |
+
i = copy.length;
|
4732 |
+
while ( i-- ) {
|
4733 |
+
prop = copy[ i ];
|
4734 |
+
event[ prop ] = originalEvent[ prop ];
|
4735 |
+
}
|
4736 |
+
|
4737 |
+
// Support: IE<9
|
4738 |
+
// Fix target property (#1925)
|
4739 |
+
if ( !event.target ) {
|
4740 |
+
event.target = originalEvent.srcElement || document;
|
4741 |
+
}
|
4742 |
+
|
4743 |
+
// Support: Chrome 23+, Safari?
|
4744 |
+
// Target should not be a text node (#504, #13143)
|
4745 |
+
if ( event.target.nodeType === 3 ) {
|
4746 |
+
event.target = event.target.parentNode;
|
4747 |
+
}
|
4748 |
+
|
4749 |
+
// Support: IE<9
|
4750 |
+
// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
|
4751 |
+
event.metaKey = !!event.metaKey;
|
4752 |
+
|
4753 |
+
return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
|
4754 |
+
},
|
4755 |
+
|
4756 |
+
// Includes some event props shared by KeyEvent and MouseEvent
|
4757 |
+
props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
|
4758 |
+
|
4759 |
+
fixHooks: {},
|
4760 |
+
|
4761 |
+
keyHooks: {
|
4762 |
+
props: "char charCode key keyCode".split(" "),
|
4763 |
+
filter: function( event, original ) {
|
4764 |
+
|
4765 |
+
// Add which for key events
|
4766 |
+
if ( event.which == null ) {
|
4767 |
+
event.which = original.charCode != null ? original.charCode : original.keyCode;
|
4768 |
+
}
|
4769 |
+
|
4770 |
+
return event;
|
4771 |
+
}
|
4772 |
+
},
|
4773 |
+
|
4774 |
+
mouseHooks: {
|
4775 |
+
props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
|
4776 |
+
filter: function( event, original ) {
|
4777 |
+
var body, eventDoc, doc,
|
4778 |
+
button = original.button,
|
4779 |
+
fromElement = original.fromElement;
|
4780 |
+
|
4781 |
+
// Calculate pageX/Y if missing and clientX/Y available
|
4782 |
+
if ( event.pageX == null && original.clientX != null ) {
|
4783 |
+
eventDoc = event.target.ownerDocument || document;
|
4784 |
+
doc = eventDoc.documentElement;
|
4785 |
+
body = eventDoc.body;
|
4786 |
+
|
4787 |
+
event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
|
4788 |
+
event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
|
4789 |
+
}
|
4790 |
+
|
4791 |
+
// Add relatedTarget, if necessary
|
4792 |
+
if ( !event.relatedTarget && fromElement ) {
|
4793 |
+
event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
|
4794 |
+
}
|
4795 |
+
|
4796 |
+
// Add which for click: 1 === left; 2 === middle; 3 === right
|
4797 |
+
// Note: button is not normalized, so don't use it
|
4798 |
+
if ( !event.which && button !== undefined ) {
|
4799 |
+
event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
|
4800 |
+
}
|
4801 |
+
|
4802 |
+
return event;
|
4803 |
+
}
|
4804 |
+
},
|
4805 |
+
|
4806 |
+
special: {
|
4807 |
+
load: {
|
4808 |
+
// Prevent triggered image.load events from bubbling to window.load
|
4809 |
+
noBubble: true
|
4810 |
+
},
|
4811 |
+
focus: {
|
4812 |
+
// Fire native event if possible so blur/focus sequence is correct
|
4813 |
+
trigger: function() {
|
4814 |
+
if ( this !== safeActiveElement() && this.focus ) {
|
4815 |
+
try {
|
4816 |
+
this.focus();
|
4817 |
+
return false;
|
4818 |
+
} catch ( e ) {
|
4819 |
+
// Support: IE<9
|
4820 |
+
// If we error on focus to hidden element (#1486, #12518),
|
4821 |
+
// let .trigger() run the handlers
|
4822 |
+
}
|
4823 |
+
}
|
4824 |
+
},
|
4825 |
+
delegateType: "focusin"
|
4826 |
+
},
|
4827 |
+
blur: {
|
4828 |
+
trigger: function() {
|
4829 |
+
if ( this === safeActiveElement() && this.blur ) {
|
4830 |
+
this.blur();
|
4831 |
+
return false;
|
4832 |
+
}
|
4833 |
+
},
|
4834 |
+
delegateType: "focusout"
|
4835 |
+
},
|
4836 |
+
click: {
|
4837 |
+
// For checkbox, fire native event so checked state will be right
|
4838 |
+
trigger: function() {
|
4839 |
+
if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
|
4840 |
+
this.click();
|
4841 |
+
return false;
|
4842 |
+
}
|
4843 |
+
},
|
4844 |
+
|
4845 |
+
// For cross-browser consistency, don't fire native .click() on links
|
4846 |
+
_default: function( event ) {
|
4847 |
+
return jQuery.nodeName( event.target, "a" );
|
4848 |
+
}
|
4849 |
+
},
|
4850 |
+
|
4851 |
+
beforeunload: {
|
4852 |
+
postDispatch: function( event ) {
|
4853 |
+
|
4854 |
+
// Support: Firefox 20+
|
4855 |
+
// Firefox doesn't alert if the returnValue field is not set.
|
4856 |
+
if ( event.result !== undefined && event.originalEvent ) {
|
4857 |
+
event.originalEvent.returnValue = event.result;
|
4858 |
+
}
|
4859 |
+
}
|
4860 |
+
}
|
4861 |
+
},
|
4862 |
+
|
4863 |
+
simulate: function( type, elem, event, bubble ) {
|
4864 |
+
// Piggyback on a donor event to simulate a different one.
|
4865 |
+
// Fake originalEvent to avoid donor's stopPropagation, but if the
|
4866 |
+
// simulated event prevents default then we do the same on the donor.
|
4867 |
+
var e = jQuery.extend(
|
4868 |
+
new jQuery.Event(),
|
4869 |
+
event,
|
4870 |
+
{
|
4871 |
+
type: type,
|
4872 |
+
isSimulated: true,
|
4873 |
+
originalEvent: {}
|
4874 |
+
}
|
4875 |
+
);
|
4876 |
+
if ( bubble ) {
|
4877 |
+
jQuery.event.trigger( e, null, elem );
|
4878 |
+
} else {
|
4879 |
+
jQuery.event.dispatch.call( elem, e );
|
4880 |
+
}
|
4881 |
+
if ( e.isDefaultPrevented() ) {
|
4882 |
+
event.preventDefault();
|
4883 |
+
}
|
4884 |
+
}
|
4885 |
+
};
|
4886 |
+
|
4887 |
+
jQuery.removeEvent = document.removeEventListener ?
|
4888 |
+
function( elem, type, handle ) {
|
4889 |
+
if ( elem.removeEventListener ) {
|
4890 |
+
elem.removeEventListener( type, handle, false );
|
4891 |
+
}
|
4892 |
+
} :
|
4893 |
+
function( elem, type, handle ) {
|
4894 |
+
var name = "on" + type;
|
4895 |
+
|
4896 |
+
if ( elem.detachEvent ) {
|
4897 |
+
|
4898 |
+
// #8545, #7054, preventing memory leaks for custom events in IE6-8
|
4899 |
+
// detachEvent needed property on element, by name of that event, to properly expose it to GC
|
4900 |
+
if ( typeof elem[ name ] === strundefined ) {
|
4901 |
+
elem[ name ] = null;
|
4902 |
+
}
|
4903 |
+
|
4904 |
+
elem.detachEvent( name, handle );
|
4905 |
+
}
|
4906 |
+
};
|
4907 |
+
|
4908 |
+
jQuery.Event = function( src, props ) {
|
4909 |
+
// Allow instantiation without the 'new' keyword
|
4910 |
+
if ( !(this instanceof jQuery.Event) ) {
|
4911 |
+
return new jQuery.Event( src, props );
|
4912 |
+
}
|
4913 |
+
|
4914 |
+
// Event object
|
4915 |
+
if ( src && src.type ) {
|
4916 |
+
this.originalEvent = src;
|
4917 |
+
this.type = src.type;
|
4918 |
+
|
4919 |
+
// Events bubbling up the document may have been marked as prevented
|
4920 |
+
// by a handler lower down the tree; reflect the correct value.
|
4921 |
+
this.isDefaultPrevented = src.defaultPrevented ||
|
4922 |
+
src.defaultPrevented === undefined &&
|
4923 |
+
// Support: IE < 9, Android < 4.0
|
4924 |
+
src.returnValue === false ?
|
4925 |
+
returnTrue :
|
4926 |
+
returnFalse;
|
4927 |
+
|
4928 |
+
// Event type
|
4929 |
+
} else {
|
4930 |
+
this.type = src;
|
4931 |
+
}
|
4932 |
+
|
4933 |
+
// Put explicitly provided properties onto the event object
|
4934 |
+
if ( props ) {
|
4935 |
+
jQuery.extend( this, props );
|
4936 |
+
}
|
4937 |
+
|
4938 |
+
// Create a timestamp if incoming event doesn't have one
|
4939 |
+
this.timeStamp = src && src.timeStamp || jQuery.now();
|
4940 |
+
|
4941 |
+
// Mark it as fixed
|
4942 |
+
this[ jQuery.expando ] = true;
|
4943 |
+
};
|
4944 |
+
|
4945 |
+
// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
|
4946 |
+
// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
|
4947 |
+
jQuery.Event.prototype = {
|
4948 |
+
isDefaultPrevented: returnFalse,
|
4949 |
+
isPropagationStopped: returnFalse,
|
4950 |
+
isImmediatePropagationStopped: returnFalse,
|
4951 |
+
|
4952 |
+
preventDefault: function() {
|
4953 |
+
var e = this.originalEvent;
|
4954 |
+
|
4955 |
+
this.isDefaultPrevented = returnTrue;
|
4956 |
+
if ( !e ) {
|
4957 |
+
return;
|
4958 |
+
}
|
4959 |
+
|
4960 |
+
// If preventDefault exists, run it on the original event
|
4961 |
+
if ( e.preventDefault ) {
|
4962 |
+
e.preventDefault();
|
4963 |
+
|
4964 |
+
// Support: IE
|
4965 |
+
// Otherwise set the returnValue property of the original event to false
|
4966 |
+
} else {
|
4967 |
+
e.returnValue = false;
|
4968 |
+
}
|
4969 |
+
},
|
4970 |
+
stopPropagation: function() {
|
4971 |
+
var e = this.originalEvent;
|
4972 |
+
|
4973 |
+
this.isPropagationStopped = returnTrue;
|
4974 |
+
if ( !e ) {
|
4975 |
+
return;
|
4976 |
+
}
|
4977 |
+
// If stopPropagation exists, run it on the original event
|
4978 |
+
if ( e.stopPropagation ) {
|
4979 |
+
e.stopPropagation();
|
4980 |
+
}
|
4981 |
+
|
4982 |
+
// Support: IE
|
4983 |
+
// Set the cancelBubble property of the original event to true
|
4984 |
+
e.cancelBubble = true;
|
4985 |
+
},
|
4986 |
+
stopImmediatePropagation: function() {
|
4987 |
+
var e = this.originalEvent;
|
4988 |
+
|
4989 |
+
this.isImmediatePropagationStopped = returnTrue;
|
4990 |
+
|
4991 |
+
if ( e && e.stopImmediatePropagation ) {
|
4992 |
+
e.stopImmediatePropagation();
|
4993 |
+
}
|
4994 |
+
|
4995 |
+
this.stopPropagation();
|
4996 |
+
}
|
4997 |
+
};
|
4998 |
+
|
4999 |
+
// Create mouseenter/leave events using mouseover/out and event-time checks
|
5000 |
+
jQuery.each({
|
5001 |
+
mouseenter: "mouseover",
|
5002 |
+
mouseleave: "mouseout",
|
5003 |
+
pointerenter: "pointerover",
|
5004 |
+
pointerleave: "pointerout"
|
5005 |
+
}, function( orig, fix ) {
|
5006 |
+
jQuery.event.special[ orig ] = {
|
5007 |
+
delegateType: fix,
|
5008 |
+
bindType: fix,
|
5009 |
+
|
5010 |
+
handle: function( event ) {
|
5011 |
+
var ret,
|
5012 |
+
target = this,
|
5013 |
+
related = event.relatedTarget,
|
5014 |
+
handleObj = event.handleObj;
|
5015 |
+
|
5016 |
+
// For mousenter/leave call the handler if related is outside the target.
|
5017 |
+
// NB: No relatedTarget if the mouse left/entered the browser window
|
5018 |
+
if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
|
5019 |
+
event.type = handleObj.origType;
|
5020 |
+
ret = handleObj.handler.apply( this, arguments );
|
5021 |
+
event.type = fix;
|
5022 |
+
}
|
5023 |
+
return ret;
|
5024 |
+
}
|
5025 |
+
};
|
5026 |
+
});
|
5027 |
+
|
5028 |
+
// IE submit delegation
|
5029 |
+
if ( !support.submitBubbles ) {
|
5030 |
+
|
5031 |
+
jQuery.event.special.submit = {
|
5032 |
+
setup: function() {
|
5033 |
+
// Only need this for delegated form submit events
|
5034 |
+
if ( jQuery.nodeName( this, "form" ) ) {
|
5035 |
+
return false;
|
5036 |
+
}
|
5037 |
+
|
5038 |
+
// Lazy-add a submit handler when a descendant form may potentially be submitted
|
5039 |
+
jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
|
5040 |
+
// Node name check avoids a VML-related crash in IE (#9807)
|
5041 |
+
var elem = e.target,
|
5042 |
+
form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
|
5043 |
+
if ( form && !jQuery._data( form, "submitBubbles" ) ) {
|
5044 |
+
jQuery.event.add( form, "submit._submit", function( event ) {
|
5045 |
+
event._submit_bubble = true;
|
5046 |
+
});
|
5047 |
+
jQuery._data( form, "submitBubbles", true );
|
5048 |
+
}
|
5049 |
+
});
|
5050 |
+
// return undefined since we don't need an event listener
|
5051 |
+
},
|
5052 |
+
|
5053 |
+
postDispatch: function( event ) {
|
5054 |
+
// If form was submitted by the user, bubble the event up the tree
|
5055 |
+
if ( event._submit_bubble ) {
|
5056 |
+
delete event._submit_bubble;
|
5057 |
+
if ( this.parentNode && !event.isTrigger ) {
|
5058 |
+
jQuery.event.simulate( "submit", this.parentNode, event, true );
|
5059 |
+
}
|
5060 |
+
}
|
5061 |
+
},
|
5062 |
+
|
5063 |
+
teardown: function() {
|
5064 |
+
// Only need this for delegated form submit events
|
5065 |
+
if ( jQuery.nodeName( this, "form" ) ) {
|
5066 |
+
return false;
|
5067 |
+
}
|
5068 |
+
|
5069 |
+
// Remove delegated handlers; cleanData eventually reaps submit handlers attached above
|
5070 |
+
jQuery.event.remove( this, "._submit" );
|
5071 |
+
}
|
5072 |
+
};
|
5073 |
+
}
|
5074 |
+
|
5075 |
+
// IE change delegation and checkbox/radio fix
|
5076 |
+
if ( !support.changeBubbles ) {
|
5077 |
+
|
5078 |
+
jQuery.event.special.change = {
|
5079 |
+
|
5080 |
+
setup: function() {
|
5081 |
+
|
5082 |
+
if ( rformElems.test( this.nodeName ) ) {
|
5083 |
+
// IE doesn't fire change on a check/radio until blur; trigger it on click
|
5084 |
+
// after a propertychange. Eat the blur-change in special.change.handle.
|
5085 |
+
// This still fires onchange a second time for check/radio after blur.
|
5086 |
+
if ( this.type === "checkbox" || this.type === "radio" ) {
|
5087 |
+
jQuery.event.add( this, "propertychange._change", function( event ) {
|
5088 |
+
if ( event.originalEvent.propertyName === "checked" ) {
|
5089 |
+
this._just_changed = true;
|
5090 |
+
}
|
5091 |
+
});
|
5092 |
+
jQuery.event.add( this, "click._change", function( event ) {
|
5093 |
+
if ( this._just_changed && !event.isTrigger ) {
|
5094 |
+
this._just_changed = false;
|
5095 |
+
}
|
5096 |
+
// Allow triggered, simulated change events (#11500)
|
5097 |
+
jQuery.event.simulate( "change", this, event, true );
|
5098 |
+
});
|
5099 |
+
}
|
5100 |
+
return false;
|
5101 |
+
}
|
5102 |
+
// Delegated event; lazy-add a change handler on descendant inputs
|
5103 |
+
jQuery.event.add( this, "beforeactivate._change", function( e ) {
|
5104 |
+
var elem = e.target;
|
5105 |
+
|
5106 |
+
if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
|
5107 |
+
jQuery.event.add( elem, "change._change", function( event ) {
|
5108 |
+
if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
|
5109 |
+
jQuery.event.simulate( "change", this.parentNode, event, true );
|
5110 |
+
}
|
5111 |
+
});
|
5112 |
+
jQuery._data( elem, "changeBubbles", true );
|
5113 |
+
}
|
5114 |
+
});
|
5115 |
+
},
|
5116 |
+
|
5117 |
+
handle: function( event ) {
|
5118 |
+
var elem = event.target;
|
5119 |
+
|
5120 |
+
// Swallow native change events from checkbox/radio, we already triggered them above
|
5121 |
+
if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
|
5122 |
+
return event.handleObj.handler.apply( this, arguments );
|
5123 |
+
}
|
5124 |
+
},
|
5125 |
+
|
5126 |
+
teardown: function() {
|
5127 |
+
jQuery.event.remove( this, "._change" );
|
5128 |
+
|
5129 |
+
return !rformElems.test( this.nodeName );
|
5130 |
+
}
|
5131 |
+
};
|
5132 |
+
}
|
5133 |
+
|
5134 |
+
// Create "bubbling" focus and blur events
|
5135 |
+
if ( !support.focusinBubbles ) {
|
5136 |
+
jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
|
5137 |
+
|
5138 |
+
// Attach a single capturing handler on the document while someone wants focusin/focusout
|
5139 |
+
var handler = function( event ) {
|
5140 |
+
jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
|
5141 |
+
};
|
5142 |
+
|
5143 |
+
jQuery.event.special[ fix ] = {
|
5144 |
+
setup: function() {
|
5145 |
+
var doc = this.ownerDocument || this,
|
5146 |
+
attaches = jQuery._data( doc, fix );
|
5147 |
+
|
5148 |
+
if ( !attaches ) {
|
5149 |
+
doc.addEventListener( orig, handler, true );
|
5150 |
+
}
|
5151 |
+
jQuery._data( doc, fix, ( attaches || 0 ) + 1 );
|
5152 |
+
},
|
5153 |
+
teardown: function() {
|
5154 |
+
var doc = this.ownerDocument || this,
|
5155 |
+
attaches = jQuery._data( doc, fix ) - 1;
|
5156 |
+
|
5157 |
+
if ( !attaches ) {
|
5158 |
+
doc.removeEventListener( orig, handler, true );
|
5159 |
+
jQuery._removeData( doc, fix );
|
5160 |
+
} else {
|
5161 |
+
jQuery._data( doc, fix, attaches );
|
5162 |
+
}
|
5163 |
+
}
|
5164 |
+
};
|
5165 |
+
});
|
5166 |
+
}
|
5167 |
+
|
5168 |
+
jQuery.fn.extend({
|
5169 |
+
|
5170 |
+
on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
|
5171 |
+
var type, origFn;
|
5172 |
+
|
5173 |
+
// Types can be a map of types/handlers
|
5174 |
+
if ( typeof types === "object" ) {
|
5175 |
+
// ( types-Object, selector, data )
|
5176 |
+
if ( typeof selector !== "string" ) {
|
5177 |
+
// ( types-Object, data )
|
5178 |
+
data = data || selector;
|
5179 |
+
selector = undefined;
|
5180 |
+
}
|
5181 |
+
for ( type in types ) {
|
5182 |
+
this.on( type, selector, data, types[ type ], one );
|
5183 |
+
}
|
5184 |
+
return this;
|
5185 |
+
}
|
5186 |
+
|
5187 |
+
if ( data == null && fn == null ) {
|
5188 |
+
// ( types, fn )
|
5189 |
+
fn = selector;
|
5190 |
+
data = selector = undefined;
|
5191 |
+
} else if ( fn == null ) {
|
5192 |
+
if ( typeof selector === "string" ) {
|
5193 |
+
// ( types, selector, fn )
|
5194 |
+
fn = data;
|
5195 |
+
data = undefined;
|
5196 |
+
} else {
|
5197 |
+
// ( types, data, fn )
|
5198 |
+
fn = data;
|
5199 |
+
data = selector;
|
5200 |
+
selector = undefined;
|
5201 |
+
}
|
5202 |
+
}
|
5203 |
+
if ( fn === false ) {
|
5204 |
+
fn = returnFalse;
|
5205 |
+
} else if ( !fn ) {
|
5206 |
+
return this;
|
5207 |
+
}
|
5208 |
+
|
5209 |
+
if ( one === 1 ) {
|
5210 |
+
origFn = fn;
|
5211 |
+
fn = function( event ) {
|
5212 |
+
// Can use an empty set, since event contains the info
|
5213 |
+
jQuery().off( event );
|
5214 |
+
return origFn.apply( this, arguments );
|
5215 |
+
};
|
5216 |
+
// Use same guid so caller can remove using origFn
|
5217 |
+
fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
|
5218 |
+
}
|
5219 |
+
return this.each( function() {
|
5220 |
+
jQuery.event.add( this, types, fn, data, selector );
|
5221 |
+
});
|
5222 |
+
},
|
5223 |
+
one: function( types, selector, data, fn ) {
|
5224 |
+
return this.on( types, selector, data, fn, 1 );
|
5225 |
+
},
|
5226 |
+
off: function( types, selector, fn ) {
|
5227 |
+
var handleObj, type;
|
5228 |
+
if ( types && types.preventDefault && types.handleObj ) {
|
5229 |
+
// ( event ) dispatched jQuery.Event
|
5230 |
+
handleObj = types.handleObj;
|
5231 |
+
jQuery( types.delegateTarget ).off(
|
5232 |
+
handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
|
5233 |
+
handleObj.selector,
|
5234 |
+
handleObj.handler
|
5235 |
+
);
|
5236 |
+
return this;
|
5237 |
+
}
|
5238 |
+
if ( typeof types === "object" ) {
|
5239 |
+
// ( types-object [, selector] )
|
5240 |
+
for ( type in types ) {
|
5241 |
+
this.off( type, selector, types[ type ] );
|
5242 |
+
}
|
5243 |
+
return this;
|
5244 |
+
}
|
5245 |
+
if ( selector === false || typeof selector === "function" ) {
|
5246 |
+
// ( types [, fn] )
|
5247 |
+
fn = selector;
|
5248 |
+
selector = undefined;
|
5249 |
+
}
|
5250 |
+
if ( fn === false ) {
|
5251 |
+
fn = returnFalse;
|
5252 |
+
}
|
5253 |
+
return this.each(function() {
|
5254 |
+
jQuery.event.remove( this, types, fn, selector );
|
5255 |
+
});
|
5256 |
+
},
|
5257 |
+
|
5258 |
+
trigger: function( type, data ) {
|
5259 |
+
return this.each(function() {
|
5260 |
+
jQuery.event.trigger( type, data, this );
|
5261 |
+
});
|
5262 |
+
},
|
5263 |
+
triggerHandler: function( type, data ) {
|
5264 |
+
var elem = this[0];
|
5265 |
+
if ( elem ) {
|
5266 |
+
return jQuery.event.trigger( type, data, elem, true );
|
5267 |
+
}
|
5268 |
+
}
|
5269 |
+
});
|
5270 |
+
|
5271 |
+
|
5272 |
+
function createSafeFragment( document ) {
|
5273 |
+
var list = nodeNames.split( "|" ),
|
5274 |
+
safeFrag = document.createDocumentFragment();
|
5275 |
+
|
5276 |
+
if ( safeFrag.createElement ) {
|
5277 |
+
while ( list.length ) {
|
5278 |
+
safeFrag.createElement(
|
5279 |
+
list.pop()
|
5280 |
+
);
|
5281 |
+
}
|
5282 |
+
}
|
5283 |
+
return safeFrag;
|
5284 |
+
}
|
5285 |
+
|
5286 |
+
var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
|
5287 |
+
"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
|
5288 |
+
rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
|
5289 |
+
rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
|
5290 |
+
rleadingWhitespace = /^\s+/,
|
5291 |
+
rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
|
5292 |
+
rtagName = /<([\w:]+)/,
|
5293 |
+
rtbody = /<tbody/i,
|
5294 |
+
rhtml = /<|&#?\w+;/,
|
5295 |
+
rnoInnerhtml = /<(?:script|style|link)/i,
|
5296 |
+
// checked="checked" or checked
|
5297 |
+
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
|
5298 |
+
rscriptType = /^$|\/(?:java|ecma)script/i,
|
5299 |
+
rscriptTypeMasked = /^true\/(.*)/,
|
5300 |
+
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
|
5301 |
+
|
5302 |
+
// We have to close these tags to support XHTML (#13200)
|
5303 |
+
wrapMap = {
|
5304 |
+
option: [ 1, "<select multiple='multiple'>", "</select>" ],
|
5305 |
+
legend: [ 1, "<fieldset>", "</fieldset>" ],
|
5306 |
+
area: [ 1, "<map>", "</map>" ],
|
5307 |
+
param: [ 1, "<object>", "</object>" ],
|
5308 |
+
thead: [ 1, "<table>", "</table>" ],
|
5309 |
+
tr: [ 2, "<table><tbody>", "</tbody></table>" ],
|
5310 |
+
col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
|
5311 |
+
td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
|
5312 |
+
|
5313 |
+
// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
|
5314 |
+
// unless wrapped in a div with non-breaking characters in front of it.
|
5315 |
+
_default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>" ]
|
5316 |
+
},
|
5317 |
+
safeFragment = createSafeFragment( document ),
|
5318 |
+
fragmentDiv = safeFragment.appendChild( document.createElement("div") );
|
5319 |
+
|
5320 |
+
wrapMap.optgroup = wrapMap.option;
|
5321 |
+
wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
|
5322 |
+
wrapMap.th = wrapMap.td;
|
5323 |
+
|
5324 |
+
function getAll( context, tag ) {
|
5325 |
+
var elems, elem,
|
5326 |
+
i = 0,
|
5327 |
+
found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || "*" ) :
|
5328 |
+
typeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || "*" ) :
|
5329 |
+
undefined;
|
5330 |
+
|
5331 |
+
if ( !found ) {
|
5332 |
+
for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {
|
5333 |
+
if ( !tag || jQuery.nodeName( elem, tag ) ) {
|
5334 |
+
found.push( elem );
|
5335 |
+
} else {
|
5336 |
+
jQuery.merge( found, getAll( elem, tag ) );
|
5337 |
+
}
|
5338 |
+
}
|
5339 |
+
}
|
5340 |
+
|
5341 |
+
return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
|
5342 |
+
jQuery.merge( [ context ], found ) :
|
5343 |
+
found;
|
5344 |
+
}
|
5345 |
+
|
5346 |
+
// Used in buildFragment, fixes the defaultChecked property
|
5347 |
+
function fixDefaultChecked( elem ) {
|
5348 |
+
if ( rcheckableType.test( elem.type ) ) {
|
5349 |
+
elem.defaultChecked = elem.checked;
|
5350 |
+
}
|
5351 |
+
}
|
5352 |
+
|
5353 |
+
// Support: IE<8
|
5354 |
+
// Manipulating tables requires a tbody
|
5355 |
+
function manipulationTarget( elem, content ) {
|
5356 |
+
return jQuery.nodeName( elem, "table" ) &&
|
5357 |
+
jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
|
5358 |
+
|
5359 |
+
elem.getElementsByTagName("tbody")[0] ||
|
5360 |
+
elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
|
5361 |
+
elem;
|
5362 |
+
}
|
5363 |
+
|
5364 |
+
// Replace/restore the type attribute of script elements for safe DOM manipulation
|
5365 |
+
function disableScript( elem ) {
|
5366 |
+
elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type;
|
5367 |
+
return elem;
|
5368 |
+
}
|
5369 |
+
function restoreScript( elem ) {
|
5370 |
+
var match = rscriptTypeMasked.exec( elem.type );
|
5371 |
+
if ( match ) {
|
5372 |
+
elem.type = match[1];
|
5373 |
+
} else {
|
5374 |
+
elem.removeAttribute("type");
|
5375 |
+
}
|
5376 |
+
return elem;
|
5377 |
+
}
|
5378 |
+
|
5379 |
+
// Mark scripts as having already been evaluated
|
5380 |
+
function setGlobalEval( elems, refElements ) {
|
5381 |
+
var elem,
|
5382 |
+
i = 0;
|
5383 |
+
for ( ; (elem = elems[i]) != null; i++ ) {
|
5384 |
+
jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );
|
5385 |
+
}
|
5386 |
+
}
|
5387 |
+
|
5388 |
+
function cloneCopyEvent( src, dest ) {
|
5389 |
+
|
5390 |
+
if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
|
5391 |
+
return;
|
5392 |
+
}
|
5393 |
+
|
5394 |
+
var type, i, l,
|
5395 |
+
oldData = jQuery._data( src ),
|
5396 |
+
curData = jQuery._data( dest, oldData ),
|
5397 |
+
events = oldData.events;
|
5398 |
+
|
5399 |
+
if ( events ) {
|
5400 |
+
delete curData.handle;
|
5401 |
+
curData.events = {};
|
5402 |
+
|
5403 |
+
for ( type in events ) {
|
5404 |
+
for ( i = 0, l = events[ type ].length; i < l; i++ ) {
|
5405 |
+
jQuery.event.add( dest, type, events[ type ][ i ] );
|
5406 |
+
}
|
5407 |
+
}
|
5408 |
+
}
|
5409 |
+
|
5410 |
+
// make the cloned public data object a copy from the original
|
5411 |
+
if ( curData.data ) {
|
5412 |
+
curData.data = jQuery.extend( {}, curData.data );
|
5413 |
+
}
|
5414 |
+
}
|
5415 |
+
|
5416 |
+
function fixCloneNodeIssues( src, dest ) {
|
5417 |
+
var nodeName, e, data;
|
5418 |
+
|
5419 |
+
// We do not need to do anything for non-Elements
|
5420 |
+
if ( dest.nodeType !== 1 ) {
|
5421 |
+
return;
|
5422 |
+
}
|
5423 |
+
|
5424 |
+
nodeName = dest.nodeName.toLowerCase();
|
5425 |
+
|
5426 |
+
// IE6-8 copies events bound via attachEvent when using cloneNode.
|
5427 |
+
if ( !support.noCloneEvent && dest[ jQuery.expando ] ) {
|
5428 |
+
data = jQuery._data( dest );
|
5429 |
+
|
5430 |
+
for ( e in data.events ) {
|
5431 |
+
jQuery.removeEvent( dest, e, data.handle );
|
5432 |
+
}
|
5433 |
+
|
5434 |
+
// Event data gets referenced instead of copied if the expando gets copied too
|
5435 |
+
dest.removeAttribute( jQuery.expando );
|
5436 |
+
}
|
5437 |
+
|
5438 |
+
// IE blanks contents when cloning scripts, and tries to evaluate newly-set text
|
5439 |
+
if ( nodeName === "script" && dest.text !== src.text ) {
|
5440 |
+
disableScript( dest ).text = src.text;
|
5441 |
+
restoreScript( dest );
|
5442 |
+
|
5443 |
+
// IE6-10 improperly clones children of object elements using classid.
|
5444 |
+
// IE10 throws NoModificationAllowedError if parent is null, #12132.
|
5445 |
+
} else if ( nodeName === "object" ) {
|
5446 |
+
if ( dest.parentNode ) {
|
5447 |
+
dest.outerHTML = src.outerHTML;
|
5448 |
+
}
|
5449 |
+
|
5450 |
+
// This path appears unavoidable for IE9. When cloning an object
|
5451 |
+
// element in IE9, the outerHTML strategy above is not sufficient.
|
5452 |
+
// If the src has innerHTML and the destination does not,
|
5453 |
+
// copy the src.innerHTML into the dest.innerHTML. #10324
|
5454 |
+
if ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {
|
5455 |
+
dest.innerHTML = src.innerHTML;
|
5456 |
+
}
|
5457 |
+
|
5458 |
+
} else if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
|
5459 |
+
// IE6-8 fails to persist the checked state of a cloned checkbox
|
5460 |
+
// or radio button. Worse, IE6-7 fail to give the cloned element
|
5461 |
+
// a checked appearance if the defaultChecked value isn't also set
|
5462 |
+
|
5463 |
+
dest.defaultChecked = dest.checked = src.checked;
|
5464 |
+
|
5465 |
+
// IE6-7 get confused and end up setting the value of a cloned
|
5466 |
+
// checkbox/radio button to an empty string instead of "on"
|
5467 |
+
if ( dest.value !== src.value ) {
|
5468 |
+
dest.value = src.value;
|
5469 |
+
}
|
5470 |
+
|
5471 |
+
// IE6-8 fails to return the selected option to the default selected
|
5472 |
+
// state when cloning options
|
5473 |
+
} else if ( nodeName === "option" ) {
|
5474 |
+
dest.defaultSelected = dest.selected = src.defaultSelected;
|
5475 |
+
|
5476 |
+
// IE6-8 fails to set the defaultValue to the correct value when
|
5477 |
+
// cloning other types of input fields
|
5478 |
+
} else if ( nodeName === "input" || nodeName === "textarea" ) {
|
5479 |
+
dest.defaultValue = src.defaultValue;
|
5480 |
+
}
|
5481 |
+
}
|
5482 |
+
|
5483 |
+
jQuery.extend({
|
5484 |
+
clone: function( elem, dataAndEvents, deepDataAndEvents ) {
|
5485 |
+
var destElements, node, clone, i, srcElements,
|
5486 |
+
inPage = jQuery.contains( elem.ownerDocument, elem );
|
5487 |
+
|
5488 |
+
if ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
|
5489 |
+
clone = elem.cloneNode( true );
|
5490 |
+
|
5491 |
+
// IE<=8 does not properly clone detached, unknown element nodes
|
5492 |
+
} else {
|
5493 |
+
fragmentDiv.innerHTML = elem.outerHTML;
|
5494 |
+
fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
|
5495 |
+
}
|
5496 |
+
|
5497 |
+
if ( (!support.noCloneEvent || !support.noCloneChecked) &&
|
5498 |
+
(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
|
5499 |
+
|
5500 |
+
// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
|
5501 |
+
destElements = getAll( clone );
|
5502 |
+
srcElements = getAll( elem );
|
5503 |
+
|
5504 |
+
// Fix all IE cloning issues
|
5505 |
+
for ( i = 0; (node = srcElements[i]) != null; ++i ) {
|
5506 |
+
// Ensure that the destination node is not null; Fixes #9587
|
5507 |
+
if ( destElements[i] ) {
|
5508 |
+
fixCloneNodeIssues( node, destElements[i] );
|
5509 |
+
}
|
5510 |
+
}
|
5511 |
+
}
|
5512 |
+
|
5513 |
+
// Copy the events from the original to the clone
|
5514 |
+
if ( dataAndEvents ) {
|
5515 |
+
if ( deepDataAndEvents ) {
|
5516 |
+
srcElements = srcElements || getAll( elem );
|
5517 |
+
destElements = destElements || getAll( clone );
|
5518 |
+
|
5519 |
+
for ( i = 0; (node = srcElements[i]) != null; i++ ) {
|
5520 |
+
cloneCopyEvent( node, destElements[i] );
|
5521 |
+
}
|
5522 |
+
} else {
|
5523 |
+
cloneCopyEvent( elem, clone );
|
5524 |
+
}
|
5525 |
+
}
|
5526 |
+
|
5527 |
+
// Preserve script evaluation history
|
5528 |
+
destElements = getAll( clone, "script" );
|
5529 |
+
if ( destElements.length > 0 ) {
|
5530 |
+
setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
|
5531 |
+
}
|
5532 |
+
|
5533 |
+
destElements = srcElements = node = null;
|
5534 |
+
|
5535 |
+
// Return the cloned set
|
5536 |
+
return clone;
|
5537 |
+
},
|
5538 |
+
|
5539 |
+
buildFragment: function( elems, context, scripts, selection ) {
|
5540 |
+
var j, elem, contains,
|
5541 |
+
tmp, tag, tbody, wrap,
|
5542 |
+
l = elems.length,
|
5543 |
+
|
5544 |
+
// Ensure a safe fragment
|
5545 |
+
safe = createSafeFragment( context ),
|
5546 |
+
|
5547 |
+
nodes = [],
|
5548 |
+
i = 0;
|
5549 |
+
|
5550 |
+
for ( ; i < l; i++ ) {
|
5551 |
+
elem = elems[ i ];
|
5552 |
+
|
5553 |
+
if ( elem || elem === 0 ) {
|
5554 |
+
|
5555 |
+
// Add nodes directly
|
5556 |
+
if ( jQuery.type( elem ) === "object" ) {
|
5557 |
+
jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
|
5558 |
+
|
5559 |
+
// Convert non-html into a text node
|
5560 |
+
} else if ( !rhtml.test( elem ) ) {
|
5561 |
+
nodes.push( context.createTextNode( elem ) );
|
5562 |
+
|
5563 |
+
// Convert html into DOM nodes
|
5564 |
+
} else {
|
5565 |
+
tmp = tmp || safe.appendChild( context.createElement("div") );
|
5566 |
+
|
5567 |
+
// Deserialize a standard representation
|
5568 |
+
tag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase();
|
5569 |
+
wrap = wrapMap[ tag ] || wrapMap._default;
|
5570 |
+
|
5571 |
+
tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];
|
5572 |
+
|
5573 |
+
// Descend through wrappers to the right content
|
5574 |
+
j = wrap[0];
|
5575 |
+
while ( j-- ) {
|
5576 |
+
tmp = tmp.lastChild;
|
5577 |
+
}
|
5578 |
+
|
5579 |
+
// Manually add leading whitespace removed by IE
|
5580 |
+
if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
|
5581 |
+
nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );
|
5582 |
+
}
|
5583 |
+
|
5584 |
+
// Remove IE's autoinserted <tbody> from table fragments
|
5585 |
+
if ( !support.tbody ) {
|
5586 |
+
|
5587 |
+
// String was a <table>, *may* have spurious <tbody>
|
5588 |
+
elem = tag === "table" && !rtbody.test( elem ) ?
|
5589 |
+
tmp.firstChild :
|
5590 |
+
|
5591 |
+
// String was a bare <thead> or <tfoot>
|
5592 |
+
wrap[1] === "<table>" && !rtbody.test( elem ) ?
|
5593 |
+
tmp :
|
5594 |
+
0;
|
5595 |
+
|
5596 |
+
j = elem && elem.childNodes.length;
|
5597 |
+
while ( j-- ) {
|
5598 |
+
if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {
|
5599 |
+
elem.removeChild( tbody );
|
5600 |
+
}
|
5601 |
+
}
|
5602 |
+
}
|
5603 |
+
|
5604 |
+
jQuery.merge( nodes, tmp.childNodes );
|
5605 |
+
|
5606 |
+
// Fix #12392 for WebKit and IE > 9
|
5607 |
+
tmp.textContent = "";
|
5608 |
+
|
5609 |
+
// Fix #12392 for oldIE
|
5610 |
+
while ( tmp.firstChild ) {
|
5611 |
+
tmp.removeChild( tmp.firstChild );
|
5612 |
+
}
|
5613 |
+
|
5614 |
+
// Remember the top-level container for proper cleanup
|
5615 |
+
tmp = safe.lastChild;
|
5616 |
+
}
|
5617 |
+
}
|
5618 |
+
}
|
5619 |
+
|
5620 |
+
// Fix #11356: Clear elements from fragment
|
5621 |
+
if ( tmp ) {
|
5622 |
+
safe.removeChild( tmp );
|
5623 |
+
}
|
5624 |
+
|
5625 |
+
// Reset defaultChecked for any radios and checkboxes
|
5626 |
+
// about to be appended to the DOM in IE 6/7 (#8060)
|
5627 |
+
if ( !support.appendChecked ) {
|
5628 |
+
jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );
|
5629 |
+
}
|
5630 |
+
|
5631 |
+
i = 0;
|
5632 |
+
while ( (elem = nodes[ i++ ]) ) {
|
5633 |
+
|
5634 |
+
// #4087 - If origin and destination elements are the same, and this is
|
5635 |
+
// that element, do not do anything
|
5636 |
+
if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
|
5637 |
+
continue;
|
5638 |
+
}
|
5639 |
+
|
5640 |
+
contains = jQuery.contains( elem.ownerDocument, elem );
|
5641 |
+
|
5642 |
+
// Append to fragment
|
5643 |
+
tmp = getAll( safe.appendChild( elem ), "script" );
|
5644 |
+
|
5645 |
+
// Preserve script evaluation history
|
5646 |
+
if ( contains ) {
|
5647 |
+
setGlobalEval( tmp );
|
5648 |
+
}
|
5649 |
+
|
5650 |
+
// Capture executables
|
5651 |
+
if ( scripts ) {
|
5652 |
+
j = 0;
|
5653 |
+
while ( (elem = tmp[ j++ ]) ) {
|
5654 |
+
if ( rscriptType.test( elem.type || "" ) ) {
|
5655 |
+
scripts.push( elem );
|
5656 |
+
}
|
5657 |
+
}
|
5658 |
+
}
|
5659 |
+
}
|
5660 |
+
|
5661 |
+
tmp = null;
|
5662 |
+
|
5663 |
+
return safe;
|
5664 |
+
},
|
5665 |
+
|
5666 |
+
cleanData: function( elems, /* internal */ acceptData ) {
|
5667 |
+
var elem, type, id, data,
|
5668 |
+
i = 0,
|
5669 |
+
internalKey = jQuery.expando,
|
5670 |
+
cache = jQuery.cache,
|
5671 |
+
deleteExpando = support.deleteExpando,
|
5672 |
+
special = jQuery.event.special;
|
5673 |
+
|
5674 |
+
for ( ; (elem = elems[i]) != null; i++ ) {
|
5675 |
+
if ( acceptData || jQuery.acceptData( elem ) ) {
|
5676 |
+
|
5677 |
+
id = elem[ internalKey ];
|
5678 |
+
data = id && cache[ id ];
|
5679 |
+
|
5680 |
+
if ( data ) {
|
5681 |
+
if ( data.events ) {
|
5682 |
+
for ( type in data.events ) {
|
5683 |
+
if ( special[ type ] ) {
|
5684 |
+
jQuery.event.remove( elem, type );
|
5685 |
+
|
5686 |
+
// This is a shortcut to avoid jQuery.event.remove's overhead
|
5687 |
+
} else {
|
5688 |
+
jQuery.removeEvent( elem, type, data.handle );
|
5689 |
+
}
|
5690 |
+
}
|
5691 |
+
}
|
5692 |
+
|
5693 |
+
// Remove cache only if it was not already removed by jQuery.event.remove
|
5694 |
+
if ( cache[ id ] ) {
|
5695 |
+
|
5696 |
+
delete cache[ id ];
|
5697 |
+
|
5698 |
+
// IE does not allow us to delete expando properties from nodes,
|
5699 |
+
// nor does it have a removeAttribute function on Document nodes;
|
5700 |
+
// we must handle all of these cases
|
5701 |
+
if ( deleteExpando ) {
|
5702 |
+
delete elem[ internalKey ];
|
5703 |
+
|
5704 |
+
} else if ( typeof elem.removeAttribute !== strundefined ) {
|
5705 |
+
elem.removeAttribute( internalKey );
|
5706 |
+
|
5707 |
+
} else {
|
5708 |
+
elem[ internalKey ] = null;
|
5709 |
+
}
|
5710 |
+
|
5711 |
+
deletedIds.push( id );
|
5712 |
+
}
|
5713 |
+
}
|
5714 |
+
}
|
5715 |
+
}
|
5716 |
+
}
|
5717 |
+
});
|
5718 |
+
|
5719 |
+
jQuery.fn.extend({
|
5720 |
+
text: function( value ) {
|
5721 |
+
return access( this, function( value ) {
|
5722 |
+
return value === undefined ?
|
5723 |
+
jQuery.text( this ) :
|
5724 |
+
this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
|
5725 |
+
}, null, value, arguments.length );
|
5726 |
+
},
|
5727 |
+
|
5728 |
+
append: function() {
|
5729 |
+
return this.domManip( arguments, function( elem ) {
|
5730 |
+
if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
|
5731 |
+
var target = manipulationTarget( this, elem );
|
5732 |
+
target.appendChild( elem );
|
5733 |
+
}
|
5734 |
+
});
|
5735 |
+
},
|
5736 |
+
|
5737 |
+
prepend: function() {
|
5738 |
+
return this.domManip( arguments, function( elem ) {
|
5739 |
+
if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
|
5740 |
+
var target = manipulationTarget( this, elem );
|
5741 |
+
target.insertBefore( elem, target.firstChild );
|
5742 |
+
}
|
5743 |
+
});
|
5744 |
+
},
|
5745 |
+
|
5746 |
+
before: function() {
|
5747 |
+
return this.domManip( arguments, function( elem ) {
|
5748 |
+
if ( this.parentNode ) {
|
5749 |
+
this.parentNode.insertBefore( elem, this );
|
5750 |
+
}
|
5751 |
+
});
|
5752 |
+
},
|
5753 |
+
|
5754 |
+
after: function() {
|
5755 |
+
return this.domManip( arguments, function( elem ) {
|
5756 |
+
if ( this.parentNode ) {
|
5757 |
+
this.parentNode.insertBefore( elem, this.nextSibling );
|
5758 |
+
}
|
5759 |
+
});
|
5760 |
+
},
|
5761 |
+
|
5762 |
+
remove: function( selector, keepData /* Internal Use Only */ ) {
|
5763 |
+
var elem,
|
5764 |
+
elems = selector ? jQuery.filter( selector, this ) : this,
|
5765 |
+
i = 0;
|
5766 |
+
|
5767 |
+
for ( ; (elem = elems[i]) != null; i++ ) {
|
5768 |
+
|
5769 |
+
if ( !keepData && elem.nodeType === 1 ) {
|
5770 |
+
jQuery.cleanData( getAll( elem ) );
|
5771 |
+
}
|
5772 |
+
|
5773 |
+
if ( elem.parentNode ) {
|
5774 |
+
if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
|
5775 |
+
setGlobalEval( getAll( elem, "script" ) );
|
5776 |
+
}
|
5777 |
+
elem.parentNode.removeChild( elem );
|
5778 |
+
}
|
5779 |
+
}
|
5780 |
+
|
5781 |
+
return this;
|
5782 |
+
},
|
5783 |
+
|
5784 |
+
empty: function() {
|
5785 |
+
var elem,
|
5786 |
+
i = 0;
|
5787 |
+
|
5788 |
+
for ( ; (elem = this[i]) != null; i++ ) {
|
5789 |
+
// Remove element nodes and prevent memory leaks
|
5790 |
+
if ( elem.nodeType === 1 ) {
|
5791 |
+
jQuery.cleanData( getAll( elem, false ) );
|
5792 |
+
}
|
5793 |
+
|
5794 |
+
// Remove any remaining nodes
|
5795 |
+
while ( elem.firstChild ) {
|
5796 |
+
elem.removeChild( elem.firstChild );
|
5797 |
+
}
|
5798 |
+
|
5799 |
+
// If this is a select, ensure that it displays empty (#12336)
|
5800 |
+
// Support: IE<9
|
5801 |
+
if ( elem.options && jQuery.nodeName( elem, "select" ) ) {
|
5802 |
+
elem.options.length = 0;
|
5803 |
+
}
|
5804 |
+
}
|
5805 |
+
|
5806 |
+
return this;
|
5807 |
+
},
|
5808 |
+
|
5809 |
+
clone: function( dataAndEvents, deepDataAndEvents ) {
|
5810 |
+
dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
|
5811 |
+
deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
|
5812 |
+
|
5813 |
+
return this.map(function() {
|
5814 |
+
return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
|
5815 |
+
});
|
5816 |
+
},
|
5817 |
+
|
5818 |
+
html: function( value ) {
|
5819 |
+
return access( this, function( value ) {
|
5820 |
+
var elem = this[ 0 ] || {},
|
5821 |
+
i = 0,
|
5822 |
+
l = this.length;
|
5823 |
+
|
5824 |
+
if ( value === undefined ) {
|
5825 |
+
return elem.nodeType === 1 ?
|
5826 |
+
elem.innerHTML.replace( rinlinejQuery, "" ) :
|
5827 |
+
undefined;
|
5828 |
+
}
|
5829 |
+
|
5830 |
+
// See if we can take a shortcut and just use innerHTML
|
5831 |
+
if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
|
5832 |
+
( support.htmlSerialize || !rnoshimcache.test( value ) ) &&
|
5833 |
+
( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
|
5834 |
+
!wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) {
|
5835 |
+
|
5836 |
+
value = value.replace( rxhtmlTag, "<$1></$2>" );
|
5837 |
+
|
5838 |
+
try {
|
5839 |
+
for (; i < l; i++ ) {
|
5840 |
+
// Remove element nodes and prevent memory leaks
|
5841 |
+
elem = this[i] || {};
|
5842 |
+
if ( elem.nodeType === 1 ) {
|
5843 |
+
jQuery.cleanData( getAll( elem, false ) );
|
5844 |
+
elem.innerHTML = value;
|
5845 |
+
}
|
5846 |
+
}
|
5847 |
+
|
5848 |
+
elem = 0;
|
5849 |
+
|
5850 |
+
// If using innerHTML throws an exception, use the fallback method
|
5851 |
+
} catch(e) {}
|
5852 |
+
}
|
5853 |
+
|
5854 |
+
if ( elem ) {
|
5855 |
+
this.empty().append( value );
|
5856 |
+
}
|
5857 |
+
}, null, value, arguments.length );
|
5858 |
+
},
|
5859 |
+
|
5860 |
+
replaceWith: function() {
|
5861 |
+
var arg = arguments[ 0 ];
|
5862 |
+
|
5863 |
+
// Make the changes, replacing each context element with the new content
|
5864 |
+
this.domManip( arguments, function( elem ) {
|
5865 |
+
arg = this.parentNode;
|
5866 |
+
|
5867 |
+
jQuery.cleanData( getAll( this ) );
|
5868 |
+
|
5869 |
+
if ( arg ) {
|
5870 |
+
arg.replaceChild( elem, this );
|
5871 |
+
}
|
5872 |
+
});
|
5873 |
+
|
5874 |
+
// Force removal if there was no new content (e.g., from empty arguments)
|
5875 |
+
return arg && (arg.length || arg.nodeType) ? this : this.remove();
|
5876 |
+
},
|
5877 |
+
|
5878 |
+
detach: function( selector ) {
|
5879 |
+
return this.remove( selector, true );
|
5880 |
+
},
|
5881 |
+
|
5882 |
+
domManip: function( args, callback ) {
|
5883 |
+
|
5884 |
+
// Flatten any nested arrays
|
5885 |
+
args = concat.apply( [], args );
|
5886 |
+
|
5887 |
+
var first, node, hasScripts,
|
5888 |
+
scripts, doc, fragment,
|
5889 |
+
i = 0,
|
5890 |
+
l = this.length,
|
5891 |
+
set = this,
|
5892 |
+
iNoClone = l - 1,
|
5893 |
+
value = args[0],
|
5894 |
+
isFunction = jQuery.isFunction( value );
|
5895 |
+
|
5896 |
+
// We can't cloneNode fragments that contain checked, in WebKit
|
5897 |
+
if ( isFunction ||
|
5898 |
+
( l > 1 && typeof value === "string" &&
|
5899 |
+
!support.checkClone && rchecked.test( value ) ) ) {
|
5900 |
+
return this.each(function( index ) {
|
5901 |
+
var self = set.eq( index );
|
5902 |
+
if ( isFunction ) {
|
5903 |
+
args[0] = value.call( this, index, self.html() );
|
5904 |
+
}
|
5905 |
+
self.domManip( args, callback );
|
5906 |
+
});
|
5907 |
+
}
|
5908 |
+
|
5909 |
+
if ( l ) {
|
5910 |
+
fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
|
5911 |
+
first = fragment.firstChild;
|
5912 |
+
|
5913 |
+
if ( fragment.childNodes.length === 1 ) {
|
5914 |
+
fragment = first;
|
5915 |
+
}
|
5916 |
+
|
5917 |
+
if ( first ) {
|
5918 |
+
scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
|
5919 |
+
hasScripts = scripts.length;
|
5920 |
+
|
5921 |
+
// Use the original fragment for the last item instead of the first because it can end up
|
5922 |
+
// being emptied incorrectly in certain situations (#8070).
|
5923 |
+
for ( ; i < l; i++ ) {
|
5924 |
+
node = fragment;
|
5925 |
+
|
5926 |
+
if ( i !== iNoClone ) {
|
5927 |
+
node = jQuery.clone( node, true, true );
|
5928 |
+
|
5929 |
+
// Keep references to cloned scripts for later restoration
|
5930 |
+
if ( hasScripts ) {
|
5931 |
+
jQuery.merge( scripts, getAll( node, "script" ) );
|
5932 |
+
}
|
5933 |
+
}
|
5934 |
+
|
5935 |
+
callback.call( this[i], node, i );
|
5936 |
+
}
|
5937 |
+
|
5938 |
+
if ( hasScripts ) {
|
5939 |
+
doc = scripts[ scripts.length - 1 ].ownerDocument;
|
5940 |
+
|
5941 |
+
// Reenable scripts
|
5942 |
+
jQuery.map( scripts, restoreScript );
|
5943 |
+
|
5944 |
+
// Evaluate executable scripts on first document insertion
|
5945 |
+
for ( i = 0; i < hasScripts; i++ ) {
|
5946 |
+
node = scripts[ i ];
|
5947 |
+
if ( rscriptType.test( node.type || "" ) &&
|
5948 |
+
!jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
|
5949 |
+
|
5950 |
+
if ( node.src ) {
|
5951 |
+
// Optional AJAX dependency, but won't run scripts if not present
|
5952 |
+
if ( jQuery._evalUrl ) {
|
5953 |
+
jQuery._evalUrl( node.src );
|
5954 |
+
}
|
5955 |
+
} else {
|
5956 |
+
jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );
|
5957 |
+
}
|
5958 |
+
}
|
5959 |
+
}
|
5960 |
+
}
|
5961 |
+
|
5962 |
+
// Fix #11809: Avoid leaking memory
|
5963 |
+
fragment = first = null;
|
5964 |
+
}
|
5965 |
+
}
|
5966 |
+
|
5967 |
+
return this;
|
5968 |
+
}
|
5969 |
+
});
|
5970 |
+
|
5971 |
+
jQuery.each({
|
5972 |
+
appendTo: "append",
|
5973 |
+
prependTo: "prepend",
|
5974 |
+
insertBefore: "before",
|
5975 |
+
insertAfter: "after",
|
5976 |
+
replaceAll: "replaceWith"
|
5977 |
+
}, function( name, original ) {
|
5978 |
+
jQuery.fn[ name ] = function( selector ) {
|
5979 |
+
var elems,
|
5980 |
+
i = 0,
|
5981 |
+
ret = [],
|
5982 |
+
insert = jQuery( selector ),
|
5983 |
+
last = insert.length - 1;
|
5984 |
+
|
5985 |
+
for ( ; i <= last; i++ ) {
|
5986 |
+
elems = i === last ? this : this.clone(true);
|
5987 |
+
jQuery( insert[i] )[ original ]( elems );
|
5988 |
+
|
5989 |
+
// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()
|
5990 |
+
push.apply( ret, elems.get() );
|
5991 |
+
}
|
5992 |
+
|
5993 |
+
return this.pushStack( ret );
|
5994 |
+
};
|
5995 |
+
});
|
5996 |
+
|
5997 |
+
|
5998 |
+
var iframe,
|
5999 |
+
elemdisplay = {};
|
6000 |
+
|
6001 |
+
/**
|
6002 |
+
* Retrieve the actual display of a element
|
6003 |
+
* @param {String} name nodeName of the element
|
6004 |
+
* @param {Object} doc Document object
|
6005 |
+
*/
|
6006 |
+
// Called only from within defaultDisplay
|
6007 |
+
function actualDisplay( name, doc ) {
|
6008 |
+
var style,
|
6009 |
+
elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
|
6010 |
+
|
6011 |
+
// getDefaultComputedStyle might be reliably used only on attached element
|
6012 |
+
display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
|
6013 |
+
|
6014 |
+
// Use of this method is a temporary fix (more like optmization) until something better comes along,
|
6015 |
+
// since it was removed from specification and supported only in FF
|
6016 |
+
style.display : jQuery.css( elem[ 0 ], "display" );
|
6017 |
+
|
6018 |
+
// We don't have any data stored on the element,
|
6019 |
+
// so use "detach" method as fast way to get rid of the element
|
6020 |
+
elem.detach();
|
6021 |
+
|
6022 |
+
return display;
|
6023 |
+
}
|
6024 |
+
|
6025 |
+
/**
|
6026 |
+
* Try to determine the default display value of an element
|
6027 |
+
* @param {String} nodeName
|
6028 |
+
*/
|
6029 |
+
function defaultDisplay( nodeName ) {
|
6030 |
+
var doc = document,
|
6031 |
+
display = elemdisplay[ nodeName ];
|
6032 |
+
|
6033 |
+
if ( !display ) {
|
6034 |
+
display = actualDisplay( nodeName, doc );
|
6035 |
+
|
6036 |
+
// If the simple way fails, read from inside an iframe
|
6037 |
+
if ( display === "none" || !display ) {
|
6038 |
+
|
6039 |
+
// Use the already-created iframe if possible
|
6040 |
+
iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
|
6041 |
+
|
6042 |
+
// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
|
6043 |
+
doc = ( iframe[ 0 ].contentWindow || iframe[ 0 ].contentDocument ).document;
|
6044 |
+
|
6045 |
+
// Support: IE
|
6046 |
+
doc.write();
|
6047 |
+
doc.close();
|
6048 |
+
|
6049 |
+
display = actualDisplay( nodeName, doc );
|
6050 |
+
iframe.detach();
|
6051 |
+
}
|
6052 |
+
|
6053 |
+
// Store the correct default display
|
6054 |
+
elemdisplay[ nodeName ] = display;
|
6055 |
+
}
|
6056 |
+
|
6057 |
+
return display;
|
6058 |
+
}
|
6059 |
+
|
6060 |
+
|
6061 |
+
(function() {
|
6062 |
+
var shrinkWrapBlocksVal;
|
6063 |
+
|
6064 |
+
support.shrinkWrapBlocks = function() {
|
6065 |
+
if ( shrinkWrapBlocksVal != null ) {
|
6066 |
+
return shrinkWrapBlocksVal;
|
6067 |
+
}
|
6068 |
+
|
6069 |
+
// Will be changed later if needed.
|
6070 |
+
shrinkWrapBlocksVal = false;
|
6071 |
+
|
6072 |
+
// Minified: var b,c,d
|
6073 |
+
var div, body, container;
|
6074 |
+
|
6075 |
+
body = document.getElementsByTagName( "body" )[ 0 ];
|
6076 |
+
if ( !body || !body.style ) {
|
6077 |
+
// Test fired too early or in an unsupported environment, exit.
|
6078 |
+
return;
|
6079 |
+
}
|
6080 |
+
|
6081 |
+
// Setup
|
6082 |
+
div = document.createElement( "div" );
|
6083 |
+
container = document.createElement( "div" );
|
6084 |
+
container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px";
|
6085 |
+
body.appendChild( container ).appendChild( div );
|
6086 |
+
|
6087 |
+
// Support: IE6
|
6088 |
+
// Check if elements with layout shrink-wrap their children
|
6089 |
+
if ( typeof div.style.zoom !== strundefined ) {
|
6090 |
+
// Reset CSS: box-sizing; display; margin; border
|
6091 |
+
div.style.cssText =
|
6092 |
+
// Support: Firefox<29, Android 2.3
|
6093 |
+
// Vendor-prefix box-sizing
|
6094 |
+
"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
|
6095 |
+
"box-sizing:content-box;display:block;margin:0;border:0;" +
|
6096 |
+
"padding:1px;width:1px;zoom:1";
|
6097 |
+
div.appendChild( document.createElement( "div" ) ).style.width = "5px";
|
6098 |
+
shrinkWrapBlocksVal = div.offsetWidth !== 3;
|
6099 |
+
}
|
6100 |
+
|
6101 |
+
body.removeChild( container );
|
6102 |
+
|
6103 |
+
return shrinkWrapBlocksVal;
|
6104 |
+
};
|
6105 |
+
|
6106 |
+
})();
|
6107 |
+
var rmargin = (/^margin/);
|
6108 |
+
|
6109 |
+
var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
|
6110 |
+
|
6111 |
+
|
6112 |
+
|
6113 |
+
var getStyles, curCSS,
|
6114 |
+
rposition = /^(top|right|bottom|left)$/;
|
6115 |
+
|
6116 |
+
if ( window.getComputedStyle ) {
|
6117 |
+
getStyles = function( elem ) {
|
6118 |
+
return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
|
6119 |
+
};
|
6120 |
+
|
6121 |
+
curCSS = function( elem, name, computed ) {
|
6122 |
+
var width, minWidth, maxWidth, ret,
|
6123 |
+
style = elem.style;
|
6124 |
+
|
6125 |
+
computed = computed || getStyles( elem );
|
6126 |
+
|
6127 |
+
// getPropertyValue is only needed for .css('filter') in IE9, see #12537
|
6128 |
+
ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined;
|
6129 |
+
|
6130 |
+
if ( computed ) {
|
6131 |
+
|
6132 |
+
if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
|
6133 |
+
ret = jQuery.style( elem, name );
|
6134 |
+
}
|
6135 |
+
|
6136 |
+
// A tribute to the "awesome hack by Dean Edwards"
|
6137 |
+
// Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
|
6138 |
+
// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
|
6139 |
+
// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
|
6140 |
+
if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
|
6141 |
+
|
6142 |
+
// Remember the original values
|
6143 |
+
width = style.width;
|
6144 |
+
minWidth = style.minWidth;
|
6145 |
+
maxWidth = style.maxWidth;
|
6146 |
+
|
6147 |
+
// Put in the new values to get a computed value out
|
6148 |
+
style.minWidth = style.maxWidth = style.width = ret;
|
6149 |
+
ret = computed.width;
|
6150 |
+
|
6151 |
+
// Revert the changed values
|
6152 |
+
style.width = width;
|
6153 |
+
style.minWidth = minWidth;
|
6154 |
+
style.maxWidth = maxWidth;
|
6155 |
+
}
|
6156 |
+
}
|
6157 |
+
|
6158 |
+
// Support: IE
|
6159 |
+
// IE returns zIndex value as an integer.
|
6160 |
+
return ret === undefined ?
|
6161 |
+
ret :
|
6162 |
+
ret + "";
|
6163 |
+
};
|
6164 |
+
} else if ( document.documentElement.currentStyle ) {
|
6165 |
+
getStyles = function( elem ) {
|
6166 |
+
return elem.currentStyle;
|
6167 |
+
};
|
6168 |
+
|
6169 |
+
curCSS = function( elem, name, computed ) {
|
6170 |
+
var left, rs, rsLeft, ret,
|
6171 |
+
style = elem.style;
|
6172 |
+
|
6173 |
+
computed = computed || getStyles( elem );
|
6174 |
+
ret = computed ? computed[ name ] : undefined;
|
6175 |
+
|
6176 |
+
// Avoid setting ret to empty string here
|
6177 |
+
// so we don't default to auto
|
6178 |
+
if ( ret == null && style && style[ name ] ) {
|
6179 |
+
ret = style[ name ];
|
6180 |
+
}
|
6181 |
+
|
6182 |
+
// From the awesome hack by Dean Edwards
|
6183 |
+
// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
|
6184 |
+
|
6185 |
+
// If we're not dealing with a regular pixel number
|
6186 |
+
// but a number that has a weird ending, we need to convert it to pixels
|
6187 |
+
// but not position css attributes, as those are proportional to the parent element instead
|
6188 |
+
// and we can't measure the parent instead because it might trigger a "stacking dolls" problem
|
6189 |
+
if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
|
6190 |
+
|
6191 |
+
// Remember the original values
|
6192 |
+
left = style.left;
|
6193 |
+
rs = elem.runtimeStyle;
|
6194 |
+
rsLeft = rs && rs.left;
|
6195 |
+
|
6196 |
+
// Put in the new values to get a computed value out
|
6197 |
+
if ( rsLeft ) {
|
6198 |
+
rs.left = elem.currentStyle.left;
|
6199 |
+
}
|
6200 |
+
style.left = name === "fontSize" ? "1em" : ret;
|
6201 |
+
ret = style.pixelLeft + "px";
|
6202 |
+
|
6203 |
+
// Revert the changed values
|
6204 |
+
style.left = left;
|
6205 |
+
if ( rsLeft ) {
|
6206 |
+
rs.left = rsLeft;
|
6207 |
+
}
|
6208 |
+
}
|
6209 |
+
|
6210 |
+
// Support: IE
|
6211 |
+
// IE returns zIndex value as an integer.
|
6212 |
+
return ret === undefined ?
|
6213 |
+
ret :
|
6214 |
+
ret + "" || "auto";
|
6215 |
+
};
|
6216 |
+
}
|
6217 |
+
|
6218 |
+
|
6219 |
+
|
6220 |
+
|
6221 |
+
function addGetHookIf( conditionFn, hookFn ) {
|
6222 |
+
// Define the hook, we'll check on the first run if it's really needed.
|
6223 |
+
return {
|
6224 |
+
get: function() {
|
6225 |
+
var condition = conditionFn();
|
6226 |
+
|
6227 |
+
if ( condition == null ) {
|
6228 |
+
// The test was not ready at this point; screw the hook this time
|
6229 |
+
// but check again when needed next time.
|
6230 |
+
return;
|
6231 |
+
}
|
6232 |
+
|
6233 |
+
if ( condition ) {
|
6234 |
+
// Hook not needed (or it's not possible to use it due to missing dependency),
|
6235 |
+
// remove it.
|
6236 |
+
// Since there are no other hooks for marginRight, remove the whole object.
|
6237 |
+
delete this.get;
|
6238 |
+
return;
|
6239 |
+
}
|
6240 |
+
|
6241 |
+
// Hook needed; redefine it so that the support test is not executed again.
|
6242 |
+
|
6243 |
+
return (this.get = hookFn).apply( this, arguments );
|
6244 |
+
}
|
6245 |
+
};
|
6246 |
+
}
|
6247 |
+
|
6248 |
+
|
6249 |
+
(function() {
|
6250 |
+
// Minified: var b,c,d,e,f,g, h,i
|
6251 |
+
var div, style, a, pixelPositionVal, boxSizingReliableVal,
|
6252 |
+
reliableHiddenOffsetsVal, reliableMarginRightVal;
|
6253 |
+
|
6254 |
+
// Setup
|
6255 |
+
div = document.createElement( "div" );
|
6256 |
+
div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
|
6257 |
+
a = div.getElementsByTagName( "a" )[ 0 ];
|
6258 |
+
style = a && a.style;
|
6259 |
+
|
6260 |
+
// Finish early in limited (non-browser) environments
|
6261 |
+
if ( !style ) {
|
6262 |
+
return;
|
6263 |
+
}
|
6264 |
+
|
6265 |
+
style.cssText = "float:left;opacity:.5";
|
6266 |
+
|
6267 |
+
// Support: IE<9
|
6268 |
+
// Make sure that element opacity exists (as opposed to filter)
|
6269 |
+
support.opacity = style.opacity === "0.5";
|
6270 |
+
|
6271 |
+
// Verify style float existence
|
6272 |
+
// (IE uses styleFloat instead of cssFloat)
|
6273 |
+
support.cssFloat = !!style.cssFloat;
|
6274 |
+
|
6275 |
+
div.style.backgroundClip = "content-box";
|
6276 |
+
div.cloneNode( true ).style.backgroundClip = "";
|
6277 |
+
support.clearCloneStyle = div.style.backgroundClip === "content-box";
|
6278 |
+
|
6279 |
+
// Support: Firefox<29, Android 2.3
|
6280 |
+
// Vendor-prefix box-sizing
|
6281 |
+
support.boxSizing = style.boxSizing === "" || style.MozBoxSizing === "" ||
|
6282 |
+
style.WebkitBoxSizing === "";
|
6283 |
+
|
6284 |
+
jQuery.extend(support, {
|
6285 |
+
reliableHiddenOffsets: function() {
|
6286 |
+
if ( reliableHiddenOffsetsVal == null ) {
|
6287 |
+
computeStyleTests();
|
6288 |
+
}
|
6289 |
+
return reliableHiddenOffsetsVal;
|
6290 |
+
},
|
6291 |
+
|
6292 |
+
boxSizingReliable: function() {
|
6293 |
+
if ( boxSizingReliableVal == null ) {
|
6294 |
+
computeStyleTests();
|
6295 |
+
}
|
6296 |
+
return boxSizingReliableVal;
|
6297 |
+
},
|
6298 |
+
|
6299 |
+
pixelPosition: function() {
|
6300 |
+
if ( pixelPositionVal == null ) {
|
6301 |
+
computeStyleTests();
|
6302 |
+
}
|
6303 |
+
return pixelPositionVal;
|
6304 |
+
},
|
6305 |
+
|
6306 |
+
// Support: Android 2.3
|
6307 |
+
reliableMarginRight: function() {
|
6308 |
+
if ( reliableMarginRightVal == null ) {
|
6309 |
+
computeStyleTests();
|
6310 |
+
}
|
6311 |
+
return reliableMarginRightVal;
|
6312 |
+
}
|
6313 |
+
});
|
6314 |
+
|
6315 |
+
function computeStyleTests() {
|
6316 |
+
// Minified: var b,c,d,j
|
6317 |
+
var div, body, container, contents;
|
6318 |
+
|
6319 |
+
body = document.getElementsByTagName( "body" )[ 0 ];
|
6320 |
+
if ( !body || !body.style ) {
|
6321 |
+
// Test fired too early or in an unsupported environment, exit.
|
6322 |
+
return;
|
6323 |
+
}
|
6324 |
+
|
6325 |
+
// Setup
|
6326 |
+
div = document.createElement( "div" );
|
6327 |
+
container = document.createElement( "div" );
|
6328 |
+
container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px";
|
6329 |
+
body.appendChild( container ).appendChild( div );
|
6330 |
+
|
6331 |
+
div.style.cssText =
|
6332 |
+
// Support: Firefox<29, Android 2.3
|
6333 |
+
// Vendor-prefix box-sizing
|
6334 |
+
"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
|
6335 |
+
"box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
|
6336 |
+
"border:1px;padding:1px;width:4px;position:absolute";
|
6337 |
+
|
6338 |
+
// Support: IE<9
|
6339 |
+
// Assume reasonable values in the absence of getComputedStyle
|
6340 |
+
pixelPositionVal = boxSizingReliableVal = false;
|
6341 |
+
reliableMarginRightVal = true;
|
6342 |
+
|
6343 |
+
// Check for getComputedStyle so that this code is not run in IE<9.
|
6344 |
+
if ( window.getComputedStyle ) {
|
6345 |
+
pixelPositionVal = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
|
6346 |
+
boxSizingReliableVal =
|
6347 |
+
( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
|
6348 |
+
|
6349 |
+
// Support: Android 2.3
|
6350 |
+
// Div with explicit width and no margin-right incorrectly
|
6351 |
+
// gets computed margin-right based on width of container (#3333)
|
6352 |
+
// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
|
6353 |
+
contents = div.appendChild( document.createElement( "div" ) );
|
6354 |
+
|
6355 |
+
// Reset CSS: box-sizing; display; margin; border; padding
|
6356 |
+
contents.style.cssText = div.style.cssText =
|
6357 |
+
// Support: Firefox<29, Android 2.3
|
6358 |
+
// Vendor-prefix box-sizing
|
6359 |
+
"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
|
6360 |
+
"box-sizing:content-box;display:block;margin:0;border:0;padding:0";
|
6361 |
+
contents.style.marginRight = contents.style.width = "0";
|
6362 |
+
div.style.width = "1px";
|
6363 |
+
|
6364 |
+
reliableMarginRightVal =
|
6365 |
+
!parseFloat( ( window.getComputedStyle( contents, null ) || {} ).marginRight );
|
6366 |
+
}
|
6367 |
+
|
6368 |
+
// Support: IE8
|
6369 |
+
// Check if table cells still have offsetWidth/Height when they are set
|
6370 |
+
// to display:none and there are still other visible table cells in a
|
6371 |
+
// table row; if so, offsetWidth/Height are not reliable for use when
|
6372 |
+
// determining if an element has been hidden directly using
|
6373 |
+
// display:none (it is still safe to use offsets if a parent element is
|
6374 |
+
// hidden; don safety goggles and see bug #4512 for more information).
|
6375 |
+
div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
|
6376 |
+
contents = div.getElementsByTagName( "td" );
|
6377 |
+
contents[ 0 ].style.cssText = "margin:0;border:0;padding:0;display:none";
|
6378 |
+
reliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;
|
6379 |
+
if ( reliableHiddenOffsetsVal ) {
|
6380 |
+
contents[ 0 ].style.display = "";
|
6381 |
+
contents[ 1 ].style.display = "none";
|
6382 |
+
reliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;
|
6383 |
+
}
|
6384 |
+
|
6385 |
+
body.removeChild( container );
|
6386 |
+
}
|
6387 |
+
|
6388 |
+
})();
|
6389 |
+
|
6390 |
+
|
6391 |
+
// A method for quickly swapping in/out CSS properties to get correct calculations.
|
6392 |
+
jQuery.swap = function( elem, options, callback, args ) {
|
6393 |
+
var ret, name,
|
6394 |
+
old = {};
|
6395 |
+
|
6396 |
+
// Remember the old values, and insert the new ones
|
6397 |
+
for ( name in options ) {
|
6398 |
+
old[ name ] = elem.style[ name ];
|
6399 |
+
elem.style[ name ] = options[ name ];
|
6400 |
+
}
|
6401 |
+
|
6402 |
+
ret = callback.apply( elem, args || [] );
|
6403 |
+
|
6404 |
+
// Revert the old values
|
6405 |
+
for ( name in options ) {
|
6406 |
+
elem.style[ name ] = old[ name ];
|
6407 |
+
}
|
6408 |
+
|
6409 |
+
return ret;
|
6410 |
+
};
|
6411 |
+
|
6412 |
+
|
6413 |
+
var
|
6414 |
+
ralpha = /alpha\([^)]*\)/i,
|
6415 |
+
ropacity = /opacity\s*=\s*([^)]*)/,
|
6416 |
+
|
6417 |
+
// swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
|
6418 |
+
// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
|
6419 |
+
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
|
6420 |
+
rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
|
6421 |
+
rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
|
6422 |
+
|
6423 |
+
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
|
6424 |
+
cssNormalTransform = {
|
6425 |
+
letterSpacing: "0",
|
6426 |
+
fontWeight: "400"
|
6427 |
+
},
|
6428 |
+
|
6429 |
+
cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
|
6430 |
+
|
6431 |
+
|
6432 |
+
// return a css property mapped to a potentially vendor prefixed property
|
6433 |
+
function vendorPropName( style, name ) {
|
6434 |
+
|
6435 |
+
// shortcut for names that are not vendor prefixed
|
6436 |
+
if ( name in style ) {
|
6437 |
+
return name;
|
6438 |
+
}
|
6439 |
+
|
6440 |
+
// check for vendor prefixed names
|
6441 |
+
var capName = name.charAt(0).toUpperCase() + name.slice(1),
|
6442 |
+
origName = name,
|
6443 |
+
i = cssPrefixes.length;
|
6444 |
+
|
6445 |
+
while ( i-- ) {
|
6446 |
+
name = cssPrefixes[ i ] + capName;
|
6447 |
+
if ( name in style ) {
|
6448 |
+
return name;
|
6449 |
+
}
|
6450 |
+
}
|
6451 |
+
|
6452 |
+
return origName;
|
6453 |
+
}
|
6454 |
+
|
6455 |
+
function showHide( elements, show ) {
|
6456 |
+
var display, elem, hidden,
|
6457 |
+
values = [],
|
6458 |
+
index = 0,
|
6459 |
+
length = elements.length;
|
6460 |
+
|
6461 |
+
for ( ; index < length; index++ ) {
|
6462 |
+
elem = elements[ index ];
|
6463 |
+
if ( !elem.style ) {
|
6464 |
+
continue;
|
6465 |
+
}
|
6466 |
+
|
6467 |
+
values[ index ] = jQuery._data( elem, "olddisplay" );
|
6468 |
+
display = elem.style.display;
|
6469 |
+
if ( show ) {
|
6470 |
+
// Reset the inline display of this element to learn if it is
|
6471 |
+
// being hidden by cascaded rules or not
|
6472 |
+
if ( !values[ index ] && display === "none" ) {
|
6473 |
+
elem.style.display = "";
|
6474 |
+
}
|
6475 |
+
|
6476 |
+
// Set elements which have been overridden with display: none
|
6477 |
+
// in a stylesheet to whatever the default browser style is
|
6478 |
+
// for such an element
|
6479 |
+
if ( elem.style.display === "" && isHidden( elem ) ) {
|
6480 |
+
values[ index ] = jQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) );
|
6481 |
+
}
|
6482 |
+
} else {
|
6483 |
+
hidden = isHidden( elem );
|
6484 |
+
|
6485 |
+
if ( display && display !== "none" || !hidden ) {
|
6486 |
+
jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
|
6487 |
+
}
|
6488 |
+
}
|
6489 |
+
}
|
6490 |
+
|
6491 |
+
// Set the display of most of the elements in a second loop
|
6492 |
+
// to avoid the constant reflow
|
6493 |
+
for ( index = 0; index < length; index++ ) {
|
6494 |
+
elem = elements[ index ];
|
6495 |
+
if ( !elem.style ) {
|
6496 |
+
continue;
|
6497 |
+
}
|
6498 |
+
if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
|
6499 |
+
elem.style.display = show ? values[ index ] || "" : "none";
|
6500 |
+
}
|
6501 |
+
}
|
6502 |
+
|
6503 |
+
return elements;
|
6504 |
+
}
|
6505 |
+
|
6506 |
+
function setPositiveNumber( elem, value, subtract ) {
|
6507 |
+
var matches = rnumsplit.exec( value );
|
6508 |
+
return matches ?
|
6509 |
+
// Guard against undefined "subtract", e.g., when used as in cssHooks
|
6510 |
+
Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
|
6511 |
+
value;
|
6512 |
+
}
|
6513 |
+
|
6514 |
+
function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
|
6515 |
+
var i = extra === ( isBorderBox ? "border" : "content" ) ?
|
6516 |
+
// If we already have the right measurement, avoid augmentation
|
6517 |
+
4 :
|
6518 |
+
// Otherwise initialize for horizontal or vertical properties
|
6519 |
+
name === "width" ? 1 : 0,
|
6520 |
+
|
6521 |
+
val = 0;
|
6522 |
+
|
6523 |
+
for ( ; i < 4; i += 2 ) {
|
6524 |
+
// both box models exclude margin, so add it if we want it
|
6525 |
+
if ( extra === "margin" ) {
|
6526 |
+
val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
|
6527 |
+
}
|
6528 |
+
|
6529 |
+
if ( isBorderBox ) {
|
6530 |
+
// border-box includes padding, so remove it if we want content
|
6531 |
+
if ( extra === "content" ) {
|
6532 |
+
val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
|
6533 |
+
}
|
6534 |
+
|
6535 |
+
// at this point, extra isn't border nor margin, so remove border
|
6536 |
+
if ( extra !== "margin" ) {
|
6537 |
+
val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
|
6538 |
+
}
|
6539 |
+
} else {
|
6540 |
+
// at this point, extra isn't content, so add padding
|
6541 |
+
val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
|
6542 |
+
|
6543 |
+
// at this point, extra isn't content nor padding, so add border
|
6544 |
+
if ( extra !== "padding" ) {
|
6545 |
+
val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
|
6546 |
+
}
|
6547 |
+
}
|
6548 |
+
}
|
6549 |
+
|
6550 |
+
return val;
|
6551 |
+
}
|
6552 |
+
|
6553 |
+
function getWidthOrHeight( elem, name, extra ) {
|
6554 |
+
|
6555 |
+
// Start with offset property, which is equivalent to the border-box value
|
6556 |
+
var valueIsBorderBox = true,
|
6557 |
+
val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
|
6558 |
+
styles = getStyles( elem ),
|
6559 |
+
isBorderBox = support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
|
6560 |
+
|
6561 |
+
// some non-html elements return undefined for offsetWidth, so check for null/undefined
|
6562 |
+
// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
|
6563 |
+
// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
|
6564 |
+
if ( val <= 0 || val == null ) {
|
6565 |
+
// Fall back to computed then uncomputed css if necessary
|
6566 |
+
val = curCSS( elem, name, styles );
|
6567 |
+
if ( val < 0 || val == null ) {
|
6568 |
+
val = elem.style[ name ];
|
6569 |
+
}
|
6570 |
+
|
6571 |
+
// Computed unit is not pixels. Stop here and return.
|
6572 |
+
if ( rnumnonpx.test(val) ) {
|
6573 |
+
return val;
|
6574 |
+
}
|
6575 |
+
|
6576 |
+
// we need the check for style in case a browser which returns unreliable values
|
6577 |
+
// for getComputedStyle silently falls back to the reliable elem.style
|
6578 |
+
valueIsBorderBox = isBorderBox && ( support.boxSizingReliable() || val === elem.style[ name ] );
|
6579 |
+
|
6580 |
+
// Normalize "", auto, and prepare for extra
|
6581 |
+
val = parseFloat( val ) || 0;
|
6582 |
+
}
|
6583 |
+
|
6584 |
+
// use the active box-sizing model to add/subtract irrelevant styles
|
6585 |
+
return ( val +
|
6586 |
+
augmentWidthOrHeight(
|
6587 |
+
elem,
|
6588 |
+
name,
|
6589 |
+
extra || ( isBorderBox ? "border" : "content" ),
|
6590 |
+
valueIsBorderBox,
|
6591 |
+
styles
|
6592 |
+
)
|
6593 |
+
) + "px";
|
6594 |
+
}
|
6595 |
+
|
6596 |
+
jQuery.extend({
|
6597 |
+
// Add in style property hooks for overriding the default
|
6598 |
+
// behavior of getting and setting a style property
|
6599 |
+
cssHooks: {
|
6600 |
+
opacity: {
|
6601 |
+
get: function( elem, computed ) {
|
6602 |
+
if ( computed ) {
|
6603 |
+
// We should always get a number back from opacity
|
6604 |
+
var ret = curCSS( elem, "opacity" );
|
6605 |
+
return ret === "" ? "1" : ret;
|
6606 |
+
}
|
6607 |
+
}
|
6608 |
+
}
|
6609 |
+
},
|
6610 |
+
|
6611 |
+
// Don't automatically add "px" to these possibly-unitless properties
|
6612 |
+
cssNumber: {
|
6613 |
+
"columnCount": true,
|
6614 |
+
"fillOpacity": true,
|
6615 |
+
"flexGrow": true,
|
6616 |
+
"flexShrink": true,
|
6617 |
+
"fontWeight": true,
|
6618 |
+
"lineHeight": true,
|
6619 |
+
"opacity": true,
|
6620 |
+
"order": true,
|
6621 |
+
"orphans": true,
|
6622 |
+
"widows": true,
|
6623 |
+
"zIndex": true,
|
6624 |
+
"zoom": true
|
6625 |
+
},
|
6626 |
+
|
6627 |
+
// Add in properties whose names you wish to fix before
|
6628 |
+
// setting or getting the value
|
6629 |
+
cssProps: {
|
6630 |
+
// normalize float css property
|
6631 |
+
"float": support.cssFloat ? "cssFloat" : "styleFloat"
|
6632 |
+
},
|
6633 |
+
|
6634 |
+
// Get and set the style property on a DOM Node
|
6635 |
+
style: function( elem, name, value, extra ) {
|
6636 |
+
// Don't set styles on text and comment nodes
|
6637 |
+
if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
|
6638 |
+
return;
|
6639 |
+
}
|
6640 |
+
|
6641 |
+
// Make sure that we're working with the right name
|
6642 |
+
var ret, type, hooks,
|
6643 |
+
origName = jQuery.camelCase( name ),
|
6644 |
+
style = elem.style;
|
6645 |
+
|
6646 |
+
name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
|
6647 |
+
|
6648 |
+
// gets hook for the prefixed version
|
6649 |
+
// followed by the unprefixed version
|
6650 |
+
hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
|
6651 |
+
|
6652 |
+
// Check if we're setting a value
|
6653 |
+
if ( value !== undefined ) {
|
6654 |
+
type = typeof value;
|
6655 |
+
|
6656 |
+
// convert relative number strings (+= or -=) to relative numbers. #7345
|
6657 |
+
if ( type === "string" && (ret = rrelNum.exec( value )) ) {
|
6658 |
+
value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
|
6659 |
+
// Fixes bug #9237
|
6660 |
+
type = "number";
|
6661 |
+
}
|
6662 |
+
|
6663 |
+
// Make sure that null and NaN values aren't set. See: #7116
|
6664 |
+
if ( value == null || value !== value ) {
|
6665 |
+
return;
|
6666 |
+
}
|
6667 |
+
|
6668 |
+
// If a number was passed in, add 'px' to the (except for certain CSS properties)
|
6669 |
+
if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
|
6670 |
+
value += "px";
|
6671 |
+
}
|
6672 |
+
|
6673 |
+
// Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
|
6674 |
+
// but it would mean to define eight (for every problematic property) identical functions
|
6675 |
+
if ( !support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
|
6676 |
+
style[ name ] = "inherit";
|
6677 |
+
}
|
6678 |
+
|
6679 |
+
// If a hook was provided, use that value, otherwise just set the specified value
|
6680 |
+
if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
|
6681 |
+
|
6682 |
+
// Support: IE
|
6683 |
+
// Swallow errors from 'invalid' CSS values (#5509)
|
6684 |
+
try {
|
6685 |
+
style[ name ] = value;
|
6686 |
+
} catch(e) {}
|
6687 |
+
}
|
6688 |
+
|
6689 |
+
} else {
|
6690 |
+
// If a hook was provided get the non-computed value from there
|
6691 |
+
if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
|
6692 |
+
return ret;
|
6693 |
+
}
|
6694 |
+
|
6695 |
+
// Otherwise just get the value from the style object
|
6696 |
+
return style[ name ];
|
6697 |
+
}
|
6698 |
+
},
|
6699 |
+
|
6700 |
+
css: function( elem, name, extra, styles ) {
|
6701 |
+
var num, val, hooks,
|
6702 |
+
origName = jQuery.camelCase( name );
|
6703 |
+
|
6704 |
+
// Make sure that we're working with the right name
|
6705 |
+
name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
|
6706 |
+
|
6707 |
+
// gets hook for the prefixed version
|
6708 |
+
// followed by the unprefixed version
|
6709 |
+
hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
|
6710 |
+
|
6711 |
+
// If a hook was provided get the computed value from there
|
6712 |
+
if ( hooks && "get" in hooks ) {
|
6713 |
+
val = hooks.get( elem, true, extra );
|
6714 |
+
}
|
6715 |
+
|
6716 |
+
// Otherwise, if a way to get the computed value exists, use that
|
6717 |
+
if ( val === undefined ) {
|
6718 |
+
val = curCSS( elem, name, styles );
|
6719 |
+
}
|
6720 |
+
|
6721 |
+
//convert "normal" to computed value
|
6722 |
+
if ( val === "normal" && name in cssNormalTransform ) {
|
6723 |
+
val = cssNormalTransform[ name ];
|
6724 |
+
}
|
6725 |
+
|
6726 |
+
// Return, converting to number if forced or a qualifier was provided and val looks numeric
|
6727 |
+
if ( extra === "" || extra ) {
|
6728 |
+
num = parseFloat( val );
|
6729 |
+
return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
|
6730 |
+
}
|
6731 |
+
return val;
|
6732 |
+
}
|
6733 |
+
});
|
6734 |
+
|
6735 |
+
jQuery.each([ "height", "width" ], function( i, name ) {
|
6736 |
+
jQuery.cssHooks[ name ] = {
|
6737 |
+
get: function( elem, computed, extra ) {
|
6738 |
+
if ( computed ) {
|
6739 |
+
// certain elements can have dimension info if we invisibly show them
|
6740 |
+
// however, it must have a current display style that would benefit from this
|
6741 |
+
return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?
|
6742 |
+
jQuery.swap( elem, cssShow, function() {
|
6743 |
+
return getWidthOrHeight( elem, name, extra );
|
6744 |
+
}) :
|
6745 |
+
getWidthOrHeight( elem, name, extra );
|
6746 |
+
}
|
6747 |
+
},
|
6748 |
+
|
6749 |
+
set: function( elem, value, extra ) {
|
6750 |
+
var styles = extra && getStyles( elem );
|
6751 |
+
return setPositiveNumber( elem, value, extra ?
|
6752 |
+
augmentWidthOrHeight(
|
6753 |
+
elem,
|
6754 |
+
name,
|
6755 |
+
extra,
|
6756 |
+
support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
|
6757 |
+
styles
|
6758 |
+
) : 0
|
6759 |
+
);
|
6760 |
+
}
|
6761 |
+
};
|
6762 |
+
});
|
6763 |
+
|
6764 |
+
if ( !support.opacity ) {
|
6765 |
+
jQuery.cssHooks.opacity = {
|
6766 |
+
get: function( elem, computed ) {
|
6767 |
+
// IE uses filters for opacity
|
6768 |
+
return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
|
6769 |
+
( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
|
6770 |
+
computed ? "1" : "";
|
6771 |
+
},
|
6772 |
+
|
6773 |
+
set: function( elem, value ) {
|
6774 |
+
var style = elem.style,
|
6775 |
+
currentStyle = elem.currentStyle,
|
6776 |
+
opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
|
6777 |
+
filter = currentStyle && currentStyle.filter || style.filter || "";
|
6778 |
+
|
6779 |
+
// IE has trouble with opacity if it does not have layout
|
6780 |
+
// Force it by setting the zoom level
|
6781 |
+
style.zoom = 1;
|
6782 |
+
|
6783 |
+
// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
|
6784 |
+
// if value === "", then remove inline opacity #12685
|
6785 |
+
if ( ( value >= 1 || value === "" ) &&
|
6786 |
+
jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
|
6787 |
+
style.removeAttribute ) {
|
6788 |
+
|
6789 |
+
// Setting style.filter to null, "" & " " still leave "filter:" in the cssText
|
6790 |
+
// if "filter:" is present at all, clearType is disabled, we want to avoid this
|
6791 |
+
// style.removeAttribute is IE Only, but so apparently is this code path...
|
6792 |
+
style.removeAttribute( "filter" );
|
6793 |
+
|
6794 |
+
// if there is no filter style applied in a css rule or unset inline opacity, we are done
|
6795 |
+
if ( value === "" || currentStyle && !currentStyle.filter ) {
|
6796 |
+
return;
|
6797 |
+
}
|
6798 |
+
}
|
6799 |
+
|
6800 |
+
// otherwise, set new filter values
|
6801 |
+
style.filter = ralpha.test( filter ) ?
|
6802 |
+
filter.replace( ralpha, opacity ) :
|
6803 |
+
filter + " " + opacity;
|
6804 |
+
}
|
6805 |
+
};
|
6806 |
+
}
|
6807 |
+
|
6808 |
+
jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
|
6809 |
+
function( elem, computed ) {
|
6810 |
+
if ( computed ) {
|
6811 |
+
// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
|
6812 |
+
// Work around by temporarily setting element display to inline-block
|
6813 |
+
return jQuery.swap( elem, { "display": "inline-block" },
|
6814 |
+
curCSS, [ elem, "marginRight" ] );
|
6815 |
+
}
|
6816 |
+
}
|
6817 |
+
);
|
6818 |
+
|
6819 |
+
// These hooks are used by animate to expand properties
|
6820 |
+
jQuery.each({
|
6821 |
+
margin: "",
|
6822 |
+
padding: "",
|
6823 |
+
border: "Width"
|
6824 |
+
}, function( prefix, suffix ) {
|
6825 |
+
jQuery.cssHooks[ prefix + suffix ] = {
|
6826 |
+
expand: function( value ) {
|
6827 |
+
var i = 0,
|
6828 |
+
expanded = {},
|
6829 |
+
|
6830 |
+
// assumes a single number if not a string
|
6831 |
+
parts = typeof value === "string" ? value.split(" ") : [ value ];
|
6832 |
+
|
6833 |
+
for ( ; i < 4; i++ ) {
|
6834 |
+
expanded[ prefix + cssExpand[ i ] + suffix ] =
|
6835 |
+
parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
|
6836 |
+
}
|
6837 |
+
|
6838 |
+
return expanded;
|
6839 |
+
}
|
6840 |
+
};
|
6841 |
+
|
6842 |
+
if ( !rmargin.test( prefix ) ) {
|
6843 |
+
jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
|
6844 |
+
}
|
6845 |
+
});
|
6846 |
+
|
6847 |
+
jQuery.fn.extend({
|
6848 |
+
css: function( name, value ) {
|
6849 |
+
return access( this, function( elem, name, value ) {
|
6850 |
+
var styles, len,
|
6851 |
+
map = {},
|
6852 |
+
i = 0;
|
6853 |
+
|
6854 |
+
if ( jQuery.isArray( name ) ) {
|
6855 |
+
styles = getStyles( elem );
|
6856 |
+
len = name.length;
|
6857 |
+
|
6858 |
+
for ( ; i < len; i++ ) {
|
6859 |
+
map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
|
6860 |
+
}
|
6861 |
+
|
6862 |
+
return map;
|
6863 |
+
}
|
6864 |
+
|
6865 |
+
return value !== undefined ?
|
6866 |
+
jQuery.style( elem, name, value ) :
|
6867 |
+
jQuery.css( elem, name );
|
6868 |
+
}, name, value, arguments.length > 1 );
|
6869 |
+
},
|
6870 |
+
show: function() {
|
6871 |
+
return showHide( this, true );
|
6872 |
+
},
|
6873 |
+
hide: function() {
|
6874 |
+
return showHide( this );
|
6875 |
+
},
|
6876 |
+
toggle: function( state ) {
|
6877 |
+
if ( typeof state === "boolean" ) {
|
6878 |
+
return state ? this.show() : this.hide();
|
6879 |
+
}
|
6880 |
+
|
6881 |
+
return this.each(function() {
|
6882 |
+
if ( isHidden( this ) ) {
|
6883 |
+
jQuery( this ).show();
|
6884 |
+
} else {
|
6885 |
+
jQuery( this ).hide();
|
6886 |
+
}
|
6887 |
+
});
|
6888 |
+
}
|
6889 |
+
});
|
6890 |
+
|
6891 |
+
|
6892 |
+
function Tween( elem, options, prop, end, easing ) {
|
6893 |
+
return new Tween.prototype.init( elem, options, prop, end, easing );
|
6894 |
+
}
|
6895 |
+
jQuery.Tween = Tween;
|
6896 |
+
|
6897 |
+
Tween.prototype = {
|
6898 |
+
constructor: Tween,
|
6899 |
+
init: function( elem, options, prop, end, easing, unit ) {
|
6900 |
+
this.elem = elem;
|
6901 |
+
this.prop = prop;
|
6902 |
+
this.easing = easing || "swing";
|
6903 |
+
this.options = options;
|
6904 |
+
this.start = this.now = this.cur();
|
6905 |
+
this.end = end;
|
6906 |
+
this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
|
6907 |
+
},
|
6908 |
+
cur: function() {
|
6909 |
+
var hooks = Tween.propHooks[ this.prop ];
|
6910 |
+
|
6911 |
+
return hooks && hooks.get ?
|
6912 |
+
hooks.get( this ) :
|
6913 |
+
Tween.propHooks._default.get( this );
|
6914 |
+
},
|
6915 |
+
run: function( percent ) {
|
6916 |
+
var eased,
|
6917 |
+
hooks = Tween.propHooks[ this.prop ];
|
6918 |
+
|
6919 |
+
if ( this.options.duration ) {
|
6920 |
+
this.pos = eased = jQuery.easing[ this.easing ](
|
6921 |
+
percent, this.options.duration * percent, 0, 1, this.options.duration
|
6922 |
+
);
|
6923 |
+
} else {
|
6924 |
+
this.pos = eased = percent;
|
6925 |
+
}
|
6926 |
+
this.now = ( this.end - this.start ) * eased + this.start;
|
6927 |
+
|
6928 |
+
if ( this.options.step ) {
|
6929 |
+
this.options.step.call( this.elem, this.now, this );
|
6930 |
+
}
|
6931 |
+
|
6932 |
+
if ( hooks && hooks.set ) {
|
6933 |
+
hooks.set( this );
|
6934 |
+
} else {
|
6935 |
+
Tween.propHooks._default.set( this );
|
6936 |
+
}
|
6937 |
+
return this;
|
6938 |
+
}
|
6939 |
+
};
|
6940 |
+
|
6941 |
+
Tween.prototype.init.prototype = Tween.prototype;
|
6942 |
+
|
6943 |
+
Tween.propHooks = {
|
6944 |
+
_default: {
|
6945 |
+
get: function( tween ) {
|
6946 |
+
var result;
|
6947 |
+
|
6948 |
+
if ( tween.elem[ tween.prop ] != null &&
|
6949 |
+
(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
|
6950 |
+
return tween.elem[ tween.prop ];
|
6951 |
+
}
|
6952 |
+
|
6953 |
+
// passing an empty string as a 3rd parameter to .css will automatically
|
6954 |
+
// attempt a parseFloat and fallback to a string if the parse fails
|
6955 |
+
// so, simple values such as "10px" are parsed to Float.
|
6956 |
+
// complex values such as "rotate(1rad)" are returned as is.
|
6957 |
+
result = jQuery.css( tween.elem, tween.prop, "" );
|
6958 |
+
// Empty strings, null, undefined and "auto" are converted to 0.
|
6959 |
+
return !result || result === "auto" ? 0 : result;
|
6960 |
+
},
|
6961 |
+
set: function( tween ) {
|
6962 |
+
// use step hook for back compat - use cssHook if its there - use .style if its
|
6963 |
+
// available and use plain properties where available
|
6964 |
+
if ( jQuery.fx.step[ tween.prop ] ) {
|
6965 |
+
jQuery.fx.step[ tween.prop ]( tween );
|
6966 |
+
} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
|
6967 |
+
jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
|
6968 |
+
} else {
|
6969 |
+
tween.elem[ tween.prop ] = tween.now;
|
6970 |
+
}
|
6971 |
+
}
|
6972 |
+
}
|
6973 |
+
};
|
6974 |
+
|
6975 |
+
// Support: IE <=9
|
6976 |
+
// Panic based approach to setting things on disconnected nodes
|
6977 |
+
|
6978 |
+
Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
|
6979 |
+
set: function( tween ) {
|
6980 |
+
if ( tween.elem.nodeType && tween.elem.parentNode ) {
|
6981 |
+
tween.elem[ tween.prop ] = tween.now;
|
6982 |
+
}
|
6983 |
+
}
|
6984 |
+
};
|
6985 |
+
|
6986 |
+
jQuery.easing = {
|
6987 |
+
linear: function( p ) {
|
6988 |
+
return p;
|
6989 |
+
},
|
6990 |
+
swing: function( p ) {
|
6991 |
+
return 0.5 - Math.cos( p * Math.PI ) / 2;
|
6992 |
+
}
|
6993 |
+
};
|
6994 |
+
|
6995 |
+
jQuery.fx = Tween.prototype.init;
|
6996 |
+
|
6997 |
+
// Back Compat <1.8 extension point
|
6998 |
+
jQuery.fx.step = {};
|
6999 |
+
|
7000 |
+
|
7001 |
+
|
7002 |
+
|
7003 |
+
var
|
7004 |
+
fxNow, timerId,
|
7005 |
+
rfxtypes = /^(?:toggle|show|hide)$/,
|
7006 |
+
rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
|
7007 |
+
rrun = /queueHooks$/,
|
7008 |
+
animationPrefilters = [ defaultPrefilter ],
|
7009 |
+
tweeners = {
|
7010 |
+
"*": [ function( prop, value ) {
|
7011 |
+
var tween = this.createTween( prop, value ),
|
7012 |
+
target = tween.cur(),
|
7013 |
+
parts = rfxnum.exec( value ),
|
7014 |
+
unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
|
7015 |
+
|
7016 |
+
// Starting value computation is required for potential unit mismatches
|
7017 |
+
start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
|
7018 |
+
rfxnum.exec( jQuery.css( tween.elem, prop ) ),
|
7019 |
+
scale = 1,
|
7020 |
+
maxIterations = 20;
|
7021 |
+
|
7022 |
+
if ( start && start[ 3 ] !== unit ) {
|
7023 |
+
// Trust units reported by jQuery.css
|
7024 |
+
unit = unit || start[ 3 ];
|
7025 |
+
|
7026 |
+
// Make sure we update the tween properties later on
|
7027 |
+
parts = parts || [];
|
7028 |
+
|
7029 |
+
// Iteratively approximate from a nonzero starting point
|
7030 |
+
start = +target || 1;
|
7031 |
+
|
7032 |
+
do {
|
7033 |
+
// If previous iteration zeroed out, double until we get *something*
|
7034 |
+
// Use a string for doubling factor so we don't accidentally see scale as unchanged below
|
7035 |
+
scale = scale || ".5";
|
7036 |
+
|
7037 |
+
// Adjust and apply
|
7038 |
+
start = start / scale;
|
7039 |
+
jQuery.style( tween.elem, prop, start + unit );
|
7040 |
+
|
7041 |
+
// Update scale, tolerating zero or NaN from tween.cur()
|
7042 |
+
// And breaking the loop if scale is unchanged or perfect, or if we've just had enough
|
7043 |
+
} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
|
7044 |
+
}
|
7045 |
+
|
7046 |
+
// Update tween properties
|
7047 |
+
if ( parts ) {
|
7048 |
+
start = tween.start = +start || +target || 0;
|
7049 |
+
tween.unit = unit;
|
7050 |
+
// If a +=/-= token was provided, we're doing a relative animation
|
7051 |
+
tween.end = parts[ 1 ] ?
|
7052 |
+
start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
|
7053 |
+
+parts[ 2 ];
|
7054 |
+
}
|
7055 |
+
|
7056 |
+
return tween;
|
7057 |
+
} ]
|
7058 |
+
};
|
7059 |
+
|
7060 |
+
// Animations created synchronously will run synchronously
|
7061 |
+
function createFxNow() {
|
7062 |
+
setTimeout(function() {
|
7063 |
+
fxNow = undefined;
|
7064 |
+
});
|
7065 |
+
return ( fxNow = jQuery.now() );
|
7066 |
+
}
|
7067 |
+
|
7068 |
+
// Generate parameters to create a standard animation
|
7069 |
+
function genFx( type, includeWidth ) {
|
7070 |
+
var which,
|
7071 |
+
attrs = { height: type },
|
7072 |
+
i = 0;
|
7073 |
+
|
7074 |
+
// if we include width, step value is 1 to do all cssExpand values,
|
7075 |
+
// if we don't include width, step value is 2 to skip over Left and Right
|
7076 |
+
includeWidth = includeWidth ? 1 : 0;
|
7077 |
+
for ( ; i < 4 ; i += 2 - includeWidth ) {
|
7078 |
+
which = cssExpand[ i ];
|
7079 |
+
attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
|
7080 |
+
}
|
7081 |
+
|
7082 |
+
if ( includeWidth ) {
|
7083 |
+
attrs.opacity = attrs.width = type;
|
7084 |
+
}
|
7085 |
+
|
7086 |
+
return attrs;
|
7087 |
+
}
|
7088 |
+
|
7089 |
+
function createTween( value, prop, animation ) {
|
7090 |
+
var tween,
|
7091 |
+
collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
|
7092 |
+
index = 0,
|
7093 |
+
length = collection.length;
|
7094 |
+
for ( ; index < length; index++ ) {
|
7095 |
+
if ( (tween = collection[ index ].call( animation, prop, value )) ) {
|
7096 |
+
|
7097 |
+
// we're done with this property
|
7098 |
+
return tween;
|
7099 |
+
}
|
7100 |
+
}
|
7101 |
+
}
|
7102 |
+
|
7103 |
+
function defaultPrefilter( elem, props, opts ) {
|
7104 |
+
/* jshint validthis: true */
|
7105 |
+
var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
|
7106 |
+
anim = this,
|
7107 |
+
orig = {},
|
7108 |
+
style = elem.style,
|
7109 |
+
hidden = elem.nodeType && isHidden( elem ),
|
7110 |
+
dataShow = jQuery._data( elem, "fxshow" );
|
7111 |
+
|
7112 |
+
// handle queue: false promises
|
7113 |
+
if ( !opts.queue ) {
|
7114 |
+
hooks = jQuery._queueHooks( elem, "fx" );
|
7115 |
+
if ( hooks.unqueued == null ) {
|
7116 |
+
hooks.unqueued = 0;
|
7117 |
+
oldfire = hooks.empty.fire;
|
7118 |
+
hooks.empty.fire = function() {
|
7119 |
+
if ( !hooks.unqueued ) {
|
7120 |
+
oldfire();
|
7121 |
+
}
|
7122 |
+
};
|
7123 |
+
}
|
7124 |
+
hooks.unqueued++;
|
7125 |
+
|
7126 |
+
anim.always(function() {
|
7127 |
+
// doing this makes sure that the complete handler will be called
|
7128 |
+
// before this completes
|
7129 |
+
anim.always(function() {
|
7130 |
+
hooks.unqueued--;
|
7131 |
+
if ( !jQuery.queue( elem, "fx" ).length ) {
|
7132 |
+
hooks.empty.fire();
|
7133 |
+
}
|
7134 |
+
});
|
7135 |
+
});
|
7136 |
+
}
|
7137 |
+
|
7138 |
+
// height/width overflow pass
|
7139 |
+
if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
|
7140 |
+
// Make sure that nothing sneaks out
|
7141 |
+
// Record all 3 overflow attributes because IE does not
|
7142 |
+
// change the overflow attribute when overflowX and
|
7143 |
+
// overflowY are set to the same value
|
7144 |
+
opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
|
7145 |
+
|
7146 |
+
// Set display property to inline-block for height/width
|
7147 |
+
// animations on inline elements that are having width/height animated
|
7148 |
+
display = jQuery.css( elem, "display" );
|
7149 |
+
|
7150 |
+
// Test default display if display is currently "none"
|
7151 |
+
checkDisplay = display === "none" ?
|
7152 |
+
jQuery._data( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
|
7153 |
+
|
7154 |
+
if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
|
7155 |
+
|
7156 |
+
// inline-level elements accept inline-block;
|
7157 |
+
// block-level elements need to be inline with layout
|
7158 |
+
if ( !support.inlineBlockNeedsLayout || defaultDisplay( elem.nodeName ) === "inline" ) {
|
7159 |
+
style.display = "inline-block";
|
7160 |
+
} else {
|
7161 |
+
style.zoom = 1;
|
7162 |
+
}
|
7163 |
+
}
|
7164 |
+
}
|
7165 |
+
|
7166 |
+
if ( opts.overflow ) {
|
7167 |
+
style.overflow = "hidden";
|
7168 |
+
if ( !support.shrinkWrapBlocks() ) {
|
7169 |
+
anim.always(function() {
|
7170 |
+
style.overflow = opts.overflow[ 0 ];
|
7171 |
+
style.overflowX = opts.overflow[ 1 ];
|
7172 |
+
style.overflowY = opts.overflow[ 2 ];
|
7173 |
+
});
|
7174 |
+
}
|
7175 |
+
}
|
7176 |
+
|
7177 |
+
// show/hide pass
|
7178 |
+
for ( prop in props ) {
|
7179 |
+
value = props[ prop ];
|
7180 |
+
if ( rfxtypes.exec( value ) ) {
|
7181 |
+
delete props[ prop ];
|
7182 |
+
toggle = toggle || value === "toggle";
|
7183 |
+
if ( value === ( hidden ? "hide" : "show" ) ) {
|
7184 |
+
|
7185 |
+
// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
|
7186 |
+
if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
|
7187 |
+
hidden = true;
|
7188 |
+
} else {
|
7189 |
+
continue;
|
7190 |
+
}
|
7191 |
+
}
|
7192 |
+
orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
|
7193 |
+
|
7194 |
+
// Any non-fx value stops us from restoring the original display value
|
7195 |
+
} else {
|
7196 |
+
display = undefined;
|
7197 |
+
}
|
7198 |
+
}
|
7199 |
+
|
7200 |
+
if ( !jQuery.isEmptyObject( orig ) ) {
|
7201 |
+
if ( dataShow ) {
|
7202 |
+
if ( "hidden" in dataShow ) {
|
7203 |
+
hidden = dataShow.hidden;
|
7204 |
+
}
|
7205 |
+
} else {
|
7206 |
+
dataShow = jQuery._data( elem, "fxshow", {} );
|
7207 |
+
}
|
7208 |
+
|
7209 |
+
// store state if its toggle - enables .stop().toggle() to "reverse"
|
7210 |
+
if ( toggle ) {
|
7211 |
+
dataShow.hidden = !hidden;
|
7212 |
+
}
|
7213 |
+
if ( hidden ) {
|
7214 |
+
jQuery( elem ).show();
|
7215 |
+
} else {
|
7216 |
+
anim.done(function() {
|
7217 |
+
jQuery( elem ).hide();
|
7218 |
+
});
|
7219 |
+
}
|
7220 |
+
anim.done(function() {
|
7221 |
+
var prop;
|
7222 |
+
jQuery._removeData( elem, "fxshow" );
|
7223 |
+
for ( prop in orig ) {
|
7224 |
+
jQuery.style( elem, prop, orig[ prop ] );
|
7225 |
+
}
|
7226 |
+
});
|
7227 |
+
for ( prop in orig ) {
|
7228 |
+
tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
|
7229 |
+
|
7230 |
+
if ( !( prop in dataShow ) ) {
|
7231 |
+
dataShow[ prop ] = tween.start;
|
7232 |
+
if ( hidden ) {
|
7233 |
+
tween.end = tween.start;
|
7234 |
+
tween.start = prop === "width" || prop === "height" ? 1 : 0;
|
7235 |
+
}
|
7236 |
+
}
|
7237 |
+
}
|
7238 |
+
|
7239 |
+
// If this is a noop like .hide().hide(), restore an overwritten display value
|
7240 |
+
} else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
|
7241 |
+
style.display = display;
|
7242 |
+
}
|
7243 |
+
}
|
7244 |
+
|
7245 |
+
function propFilter( props, specialEasing ) {
|
7246 |
+
var index, name, easing, value, hooks;
|
7247 |
+
|
7248 |
+
// camelCase, specialEasing and expand cssHook pass
|
7249 |
+
for ( index in props ) {
|
7250 |
+
name = jQuery.camelCase( index );
|
7251 |
+
easing = specialEasing[ name ];
|
7252 |
+
value = props[ index ];
|
7253 |
+
if ( jQuery.isArray( value ) ) {
|
7254 |
+
easing = value[ 1 ];
|
7255 |
+
value = props[ index ] = value[ 0 ];
|
7256 |
+
}
|
7257 |
+
|
7258 |
+
if ( index !== name ) {
|
7259 |
+
props[ name ] = value;
|
7260 |
+
delete props[ index ];
|
7261 |
+
}
|
7262 |
+
|
7263 |
+
hooks = jQuery.cssHooks[ name ];
|
7264 |
+
if ( hooks && "expand" in hooks ) {
|
7265 |
+
value = hooks.expand( value );
|
7266 |
+
delete props[ name ];
|
7267 |
+
|
7268 |
+
// not quite $.extend, this wont overwrite keys already present.
|
7269 |
+
// also - reusing 'index' from above because we have the correct "name"
|
7270 |
+
for ( index in value ) {
|
7271 |
+
if ( !( index in props ) ) {
|
7272 |
+
props[ index ] = value[ index ];
|
7273 |
+
specialEasing[ index ] = easing;
|
7274 |
+
}
|
7275 |
+
}
|
7276 |
+
} else {
|
7277 |
+
specialEasing[ name ] = easing;
|
7278 |
+
}
|
7279 |
+
}
|
7280 |
+
}
|
7281 |
+
|
7282 |
+
function Animation( elem, properties, options ) {
|
7283 |
+
var result,
|
7284 |
+
stopped,
|
7285 |
+
index = 0,
|
7286 |
+
length = animationPrefilters.length,
|
7287 |
+
deferred = jQuery.Deferred().always( function() {
|
7288 |
+
// don't match elem in the :animated selector
|
7289 |
+
delete tick.elem;
|
7290 |
+
}),
|
7291 |
+
tick = function() {
|
7292 |
+
if ( stopped ) {
|
7293 |
+
return false;
|
7294 |
+
}
|
7295 |
+
var currentTime = fxNow || createFxNow(),
|
7296 |
+
remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
|
7297 |
+
// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
|
7298 |
+
temp = remaining / animation.duration || 0,
|
7299 |
+
percent = 1 - temp,
|
7300 |
+
index = 0,
|
7301 |
+
length = animation.tweens.length;
|
7302 |
+
|
7303 |
+
for ( ; index < length ; index++ ) {
|
7304 |
+
animation.tweens[ index ].run( percent );
|
7305 |
+
}
|
7306 |
+
|
7307 |
+
deferred.notifyWith( elem, [ animation, percent, remaining ]);
|
7308 |
+
|
7309 |
+
if ( percent < 1 && length ) {
|
7310 |
+
return remaining;
|
7311 |
+
} else {
|
7312 |
+
deferred.resolveWith( elem, [ animation ] );
|
7313 |
+
return false;
|
7314 |
+
}
|
7315 |
+
},
|
7316 |
+
animation = deferred.promise({
|
7317 |
+
elem: elem,
|
7318 |
+
props: jQuery.extend( {}, properties ),
|
7319 |
+
opts: jQuery.extend( true, { specialEasing: {} }, options ),
|
7320 |
+
originalProperties: properties,
|
7321 |
+
originalOptions: options,
|
7322 |
+
startTime: fxNow || createFxNow(),
|
7323 |
+
duration: options.duration,
|
7324 |
+
tweens: [],
|
7325 |
+
createTween: function( prop, end ) {
|
7326 |
+
var tween = jQuery.Tween( elem, animation.opts, prop, end,
|
7327 |
+
animation.opts.specialEasing[ prop ] || animation.opts.easing );
|
7328 |
+
animation.tweens.push( tween );
|
7329 |
+
return tween;
|
7330 |
+
},
|
7331 |
+
stop: function( gotoEnd ) {
|
7332 |
+
var index = 0,
|
7333 |
+
// if we are going to the end, we want to run all the tweens
|
7334 |
+
// otherwise we skip this part
|
7335 |
+
length = gotoEnd ? animation.tweens.length : 0;
|
7336 |
+
if ( stopped ) {
|
7337 |
+
return this;
|
7338 |
+
}
|
7339 |
+
stopped = true;
|
7340 |
+
for ( ; index < length ; index++ ) {
|
7341 |
+
animation.tweens[ index ].run( 1 );
|
7342 |
+
}
|
7343 |
+
|
7344 |
+
// resolve when we played the last frame
|
7345 |
+
// otherwise, reject
|
7346 |
+
if ( gotoEnd ) {
|
7347 |
+
deferred.resolveWith( elem, [ animation, gotoEnd ] );
|
7348 |
+
} else {
|
7349 |
+
deferred.rejectWith( elem, [ animation, gotoEnd ] );
|
7350 |
+
}
|
7351 |
+
return this;
|
7352 |
+
}
|
7353 |
+
}),
|
7354 |
+
props = animation.props;
|
7355 |
+
|
7356 |
+
propFilter( props, animation.opts.specialEasing );
|
7357 |
+
|
7358 |
+
for ( ; index < length ; index++ ) {
|
7359 |
+
result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
|
7360 |
+
if ( result ) {
|
7361 |
+
return result;
|
7362 |
+
}
|
7363 |
+
}
|
7364 |
+
|
7365 |
+
jQuery.map( props, createTween, animation );
|
7366 |
+
|
7367 |
+
if ( jQuery.isFunction( animation.opts.start ) ) {
|
7368 |
+
animation.opts.start.call( elem, animation );
|
7369 |
+
}
|
7370 |
+
|
7371 |
+
jQuery.fx.timer(
|
7372 |
+
jQuery.extend( tick, {
|
7373 |
+
elem: elem,
|
7374 |
+
anim: animation,
|
7375 |
+
queue: animation.opts.queue
|
7376 |
+
})
|
7377 |
+
);
|
7378 |
+
|
7379 |
+
// attach callbacks from options
|
7380 |
+
return animation.progress( animation.opts.progress )
|
7381 |
+
.done( animation.opts.done, animation.opts.complete )
|
7382 |
+
.fail( animation.opts.fail )
|
7383 |
+
.always( animation.opts.always );
|
7384 |
+
}
|
7385 |
+
|
7386 |
+
jQuery.Animation = jQuery.extend( Animation, {
|
7387 |
+
tweener: function( props, callback ) {
|
7388 |
+
if ( jQuery.isFunction( props ) ) {
|
7389 |
+
callback = props;
|
7390 |
+
props = [ "*" ];
|
7391 |
+
} else {
|
7392 |
+
props = props.split(" ");
|
7393 |
+
}
|
7394 |
+
|
7395 |
+
var prop,
|
7396 |
+
index = 0,
|
7397 |
+
length = props.length;
|
7398 |
+
|
7399 |
+
for ( ; index < length ; index++ ) {
|
7400 |
+
prop = props[ index ];
|
7401 |
+
tweeners[ prop ] = tweeners[ prop ] || [];
|
7402 |
+
tweeners[ prop ].unshift( callback );
|
7403 |
+
}
|
7404 |
+
},
|
7405 |
+
|
7406 |
+
prefilter: function( callback, prepend ) {
|
7407 |
+
if ( prepend ) {
|
7408 |
+
animationPrefilters.unshift( callback );
|
7409 |
+
} else {
|
7410 |
+
animationPrefilters.push( callback );
|
7411 |
+
}
|
7412 |
+
}
|
7413 |
+
});
|
7414 |
+
|
7415 |
+
jQuery.speed = function( speed, easing, fn ) {
|
7416 |
+
var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
|
7417 |
+
complete: fn || !fn && easing ||
|
7418 |
+
jQuery.isFunction( speed ) && speed,
|
7419 |
+
duration: speed,
|
7420 |
+
easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
|
7421 |
+
};
|
7422 |
+
|
7423 |
+
opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
|
7424 |
+
opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
|
7425 |
+
|
7426 |
+
// normalize opt.queue - true/undefined/null -> "fx"
|
7427 |
+
if ( opt.queue == null || opt.queue === true ) {
|
7428 |
+
opt.queue = "fx";
|
7429 |
+
}
|
7430 |
+
|
7431 |
+
// Queueing
|
7432 |
+
opt.old = opt.complete;
|
7433 |
+
|
7434 |
+
opt.complete = function() {
|
7435 |
+
if ( jQuery.isFunction( opt.old ) ) {
|
7436 |
+
opt.old.call( this );
|
7437 |
+
}
|
7438 |
+
|
7439 |
+
if ( opt.queue ) {
|
7440 |
+
jQuery.dequeue( this, opt.queue );
|
7441 |
+
}
|
7442 |
+
};
|
7443 |
+
|
7444 |
+
return opt;
|
7445 |
+
};
|
7446 |
+
|
7447 |
+
jQuery.fn.extend({
|
7448 |
+
fadeTo: function( speed, to, easing, callback ) {
|
7449 |
+
|
7450 |
+
// show any hidden elements after setting opacity to 0
|
7451 |
+
return this.filter( isHidden ).css( "opacity", 0 ).show()
|
7452 |
+
|
7453 |
+
// animate to the value specified
|
7454 |
+
.end().animate({ opacity: to }, speed, easing, callback );
|
7455 |
+
},
|
7456 |
+
animate: function( prop, speed, easing, callback ) {
|
7457 |
+
var empty = jQuery.isEmptyObject( prop ),
|
7458 |
+
optall = jQuery.speed( speed, easing, callback ),
|
7459 |
+
doAnimation = function() {
|
7460 |
+
// Operate on a copy of prop so per-property easing won't be lost
|
7461 |
+
var anim = Animation( this, jQuery.extend( {}, prop ), optall );
|
7462 |
+
|
7463 |
+
// Empty animations, or finishing resolves immediately
|
7464 |
+
if ( empty || jQuery._data( this, "finish" ) ) {
|
7465 |
+
anim.stop( true );
|
7466 |
+
}
|
7467 |
+
};
|
7468 |
+
doAnimation.finish = doAnimation;
|
7469 |
+
|
7470 |
+
return empty || optall.queue === false ?
|
7471 |
+
this.each( doAnimation ) :
|
7472 |
+
this.queue( optall.queue, doAnimation );
|
7473 |
+
},
|
7474 |
+
stop: function( type, clearQueue, gotoEnd ) {
|
7475 |
+
var stopQueue = function( hooks ) {
|
7476 |
+
var stop = hooks.stop;
|
7477 |
+
delete hooks.stop;
|
7478 |
+
stop( gotoEnd );
|
7479 |
+
};
|
7480 |
+
|
7481 |
+
if ( typeof type !== "string" ) {
|
7482 |
+
gotoEnd = clearQueue;
|
7483 |
+
clearQueue = type;
|
7484 |
+
type = undefined;
|
7485 |
+
}
|
7486 |
+
if ( clearQueue && type !== false ) {
|
7487 |
+
this.queue( type || "fx", [] );
|
7488 |
+
}
|
7489 |
+
|
7490 |
+
return this.each(function() {
|
7491 |
+
var dequeue = true,
|
7492 |
+
index = type != null && type + "queueHooks",
|
7493 |
+
timers = jQuery.timers,
|
7494 |
+
data = jQuery._data( this );
|
7495 |
+
|
7496 |
+
if ( index ) {
|
7497 |
+
if ( data[ index ] && data[ index ].stop ) {
|
7498 |
+
stopQueue( data[ index ] );
|
7499 |
+
}
|
7500 |
+
} else {
|
7501 |
+
for ( index in data ) {
|
7502 |
+
if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
|
7503 |
+
stopQueue( data[ index ] );
|
7504 |
+
}
|
7505 |
+
}
|
7506 |
+
}
|
7507 |
+
|
7508 |
+
for ( index = timers.length; index--; ) {
|
7509 |
+
if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
|
7510 |
+
timers[ index ].anim.stop( gotoEnd );
|
7511 |
+
dequeue = false;
|
7512 |
+
timers.splice( index, 1 );
|
7513 |
+
}
|
7514 |
+
}
|
7515 |
+
|
7516 |
+
// start the next in the queue if the last step wasn't forced
|
7517 |
+
// timers currently will call their complete callbacks, which will dequeue
|
7518 |
+
// but only if they were gotoEnd
|
7519 |
+
if ( dequeue || !gotoEnd ) {
|
7520 |
+
jQuery.dequeue( this, type );
|
7521 |
+
}
|
7522 |
+
});
|
7523 |
+
},
|
7524 |
+
finish: function( type ) {
|
7525 |
+
if ( type !== false ) {
|
7526 |
+
type = type || "fx";
|
7527 |
+
}
|
7528 |
+
return this.each(function() {
|
7529 |
+
var index,
|
7530 |
+
data = jQuery._data( this ),
|
7531 |
+
queue = data[ type + "queue" ],
|
7532 |
+
hooks = data[ type + "queueHooks" ],
|
7533 |
+
timers = jQuery.timers,
|
7534 |
+
length = queue ? queue.length : 0;
|
7535 |
+
|
7536 |
+
// enable finishing flag on private data
|
7537 |
+
data.finish = true;
|
7538 |
+
|
7539 |
+
// empty the queue first
|
7540 |
+
jQuery.queue( this, type, [] );
|
7541 |
+
|
7542 |
+
if ( hooks && hooks.stop ) {
|
7543 |
+
hooks.stop.call( this, true );
|
7544 |
+
}
|
7545 |
+
|
7546 |
+
// look for any active animations, and finish them
|
7547 |
+
for ( index = timers.length; index--; ) {
|
7548 |
+
if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
|
7549 |
+
timers[ index ].anim.stop( true );
|
7550 |
+
timers.splice( index, 1 );
|
7551 |
+
}
|
7552 |
+
}
|
7553 |
+
|
7554 |
+
// look for any animations in the old queue and finish them
|
7555 |
+
for ( index = 0; index < length; index++ ) {
|
7556 |
+
if ( queue[ index ] && queue[ index ].finish ) {
|
7557 |
+
queue[ index ].finish.call( this );
|
7558 |
+
}
|
7559 |
+
}
|
7560 |
+
|
7561 |
+
// turn off finishing flag
|
7562 |
+
delete data.finish;
|
7563 |
+
});
|
7564 |
+
}
|
7565 |
+
});
|
7566 |
+
|
7567 |
+
jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
|
7568 |
+
var cssFn = jQuery.fn[ name ];
|
7569 |
+
jQuery.fn[ name ] = function( speed, easing, callback ) {
|
7570 |
+
return speed == null || typeof speed === "boolean" ?
|
7571 |
+
cssFn.apply( this, arguments ) :
|
7572 |
+
this.animate( genFx( name, true ), speed, easing, callback );
|
7573 |
+
};
|
7574 |
+
});
|
7575 |
+
|
7576 |
+
// Generate shortcuts for custom animations
|
7577 |
+
jQuery.each({
|
7578 |
+
slideDown: genFx("show"),
|
7579 |
+
slideUp: genFx("hide"),
|
7580 |
+
slideToggle: genFx("toggle"),
|
7581 |
+
fadeIn: { opacity: "show" },
|
7582 |
+
fadeOut: { opacity: "hide" },
|
7583 |
+
fadeToggle: { opacity: "toggle" }
|
7584 |
+
}, function( name, props ) {
|
7585 |
+
jQuery.fn[ name ] = function( speed, easing, callback ) {
|
7586 |
+
return this.animate( props, speed, easing, callback );
|
7587 |
+
};
|
7588 |
+
});
|
7589 |
+
|
7590 |
+
jQuery.timers = [];
|
7591 |
+
jQuery.fx.tick = function() {
|
7592 |
+
var timer,
|
7593 |
+
timers = jQuery.timers,
|
7594 |
+
i = 0;
|
7595 |
+
|
7596 |
+
fxNow = jQuery.now();
|
7597 |
+
|
7598 |
+
for ( ; i < timers.length; i++ ) {
|
7599 |
+
timer = timers[ i ];
|
7600 |
+
// Checks the timer has not already been removed
|
7601 |
+
if ( !timer() && timers[ i ] === timer ) {
|
7602 |
+
timers.splice( i--, 1 );
|
7603 |
+
}
|
7604 |
+
}
|
7605 |
+
|
7606 |
+
if ( !timers.length ) {
|
7607 |
+
jQuery.fx.stop();
|
7608 |
+
}
|
7609 |
+
fxNow = undefined;
|
7610 |
+
};
|
7611 |
+
|
7612 |
+
jQuery.fx.timer = function( timer ) {
|
7613 |
+
jQuery.timers.push( timer );
|
7614 |
+
if ( timer() ) {
|
7615 |
+
jQuery.fx.start();
|
7616 |
+
} else {
|
7617 |
+
jQuery.timers.pop();
|
7618 |
+
}
|
7619 |
+
};
|
7620 |
+
|
7621 |
+
jQuery.fx.interval = 13;
|
7622 |
+
|
7623 |
+
jQuery.fx.start = function() {
|
7624 |
+
if ( !timerId ) {
|
7625 |
+
timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
|
7626 |
+
}
|
7627 |
+
};
|
7628 |
+
|
7629 |
+
jQuery.fx.stop = function() {
|
7630 |
+
clearInterval( timerId );
|
7631 |
+
timerId = null;
|
7632 |
+
};
|
7633 |
+
|
7634 |
+
jQuery.fx.speeds = {
|
7635 |
+
slow: 600,
|
7636 |
+
fast: 200,
|
7637 |
+
// Default speed
|
7638 |
+
_default: 400
|
7639 |
+
};
|
7640 |
+
|
7641 |
+
|
7642 |
+
// Based off of the plugin by Clint Helfers, with permission.
|
7643 |
+
// http://blindsignals.com/index.php/2009/07/jquery-delay/
|
7644 |
+
jQuery.fn.delay = function( time, type ) {
|
7645 |
+
time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
|
7646 |
+
type = type || "fx";
|
7647 |
+
|
7648 |
+
return this.queue( type, function( next, hooks ) {
|
7649 |
+
var timeout = setTimeout( next, time );
|
7650 |
+
hooks.stop = function() {
|
7651 |
+
clearTimeout( timeout );
|
7652 |
+
};
|
7653 |
+
});
|
7654 |
+
};
|
7655 |
+
|
7656 |
+
|
7657 |
+
(function() {
|
7658 |
+
// Minified: var a,b,c,d,e
|
7659 |
+
var input, div, select, a, opt;
|
7660 |
+
|
7661 |
+
// Setup
|
7662 |
+
div = document.createElement( "div" );
|
7663 |
+
div.setAttribute( "className", "t" );
|
7664 |
+
div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
|
7665 |
+
a = div.getElementsByTagName("a")[ 0 ];
|
7666 |
+
|
7667 |
+
// First batch of tests.
|
7668 |
+
select = document.createElement("select");
|
7669 |
+
opt = select.appendChild( document.createElement("option") );
|
7670 |
+
input = div.getElementsByTagName("input")[ 0 ];
|
7671 |
+
|
7672 |
+
a.style.cssText = "top:1px";
|
7673 |
+
|
7674 |
+
// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
|
7675 |
+
support.getSetAttribute = div.className !== "t";
|
7676 |
+
|
7677 |
+
// Get the style information from getAttribute
|
7678 |
+
// (IE uses .cssText instead)
|
7679 |
+
support.style = /top/.test( a.getAttribute("style") );
|
7680 |
+
|
7681 |
+
// Make sure that URLs aren't manipulated
|
7682 |
+
// (IE normalizes it by default)
|
7683 |
+
support.hrefNormalized = a.getAttribute("href") === "/a";
|
7684 |
+
|
7685 |
+
// Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
|
7686 |
+
support.checkOn = !!input.value;
|
7687 |
+
|
7688 |
+
// Make sure that a selected-by-default option has a working selected property.
|
7689 |
+
// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
|
7690 |
+
support.optSelected = opt.selected;
|
7691 |
+
|
7692 |
+
// Tests for enctype support on a form (#6743)
|
7693 |
+
support.enctype = !!document.createElement("form").enctype;
|
7694 |
+
|
7695 |
+
// Make sure that the options inside disabled selects aren't marked as disabled
|
7696 |
+
// (WebKit marks them as disabled)
|
7697 |
+
select.disabled = true;
|
7698 |
+
support.optDisabled = !opt.disabled;
|
7699 |
+
|
7700 |
+
// Support: IE8 only
|
7701 |
+
// Check if we can trust getAttribute("value")
|
7702 |
+
input = document.createElement( "input" );
|
7703 |
+
input.setAttribute( "value", "" );
|
7704 |
+
support.input = input.getAttribute( "value" ) === "";
|
7705 |
+
|
7706 |
+
// Check if an input maintains its value after becoming a radio
|
7707 |
+
input.value = "t";
|
7708 |
+
input.setAttribute( "type", "radio" );
|
7709 |
+
support.radioValue = input.value === "t";
|
7710 |
+
})();
|
7711 |
+
|
7712 |
+
|
7713 |
+
var rreturn = /\r/g;
|
7714 |
+
|
7715 |
+
jQuery.fn.extend({
|
7716 |
+
val: function( value ) {
|
7717 |
+
var hooks, ret, isFunction,
|
7718 |
+
elem = this[0];
|
7719 |
+
|
7720 |
+
if ( !arguments.length ) {
|
7721 |
+
if ( elem ) {
|
7722 |
+
hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
|
7723 |
+
|
7724 |
+
if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
|
7725 |
+
return ret;
|
7726 |
+
}
|
7727 |
+
|
7728 |
+
ret = elem.value;
|
7729 |
+
|
7730 |
+
return typeof ret === "string" ?
|
7731 |
+
// handle most common string cases
|
7732 |
+
ret.replace(rreturn, "") :
|
7733 |
+
// handle cases where value is null/undef or number
|
7734 |
+
ret == null ? "" : ret;
|
7735 |
+
}
|
7736 |
+
|
7737 |
+
return;
|
7738 |
+
}
|
7739 |
+
|
7740 |
+
isFunction = jQuery.isFunction( value );
|
7741 |
+
|
7742 |
+
return this.each(function( i ) {
|
7743 |
+
var val;
|
7744 |
+
|
7745 |
+
if ( this.nodeType !== 1 ) {
|
7746 |
+
return;
|
7747 |
+
}
|
7748 |
+
|
7749 |
+
if ( isFunction ) {
|
7750 |
+
val = value.call( this, i, jQuery( this ).val() );
|
7751 |
+
} else {
|
7752 |
+
val = value;
|
7753 |
+
}
|
7754 |
+
|
7755 |
+
// Treat null/undefined as ""; convert numbers to string
|
7756 |
+
if ( val == null ) {
|
7757 |
+
val = "";
|
7758 |
+
} else if ( typeof val === "number" ) {
|
7759 |
+
val += "";
|
7760 |
+
} else if ( jQuery.isArray( val ) ) {
|
7761 |
+
val = jQuery.map( val, function( value ) {
|
7762 |
+
return value == null ? "" : value + "";
|
7763 |
+
});
|
7764 |
+
}
|
7765 |
+
|
7766 |
+
hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
|
7767 |
+
|
7768 |
+
// If set returns undefined, fall back to normal setting
|
7769 |
+
if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
|
7770 |
+
this.value = val;
|
7771 |
+
}
|
7772 |
+
});
|
7773 |
+
}
|
7774 |
+
});
|
7775 |
+
|
7776 |
+
jQuery.extend({
|
7777 |
+
valHooks: {
|
7778 |
+
option: {
|
7779 |
+
get: function( elem ) {
|
7780 |
+
var val = jQuery.find.attr( elem, "value" );
|
7781 |
+
return val != null ?
|
7782 |
+
val :
|
7783 |
+
// Support: IE10-11+
|
7784 |
+
// option.text throws exceptions (#14686, #14858)
|
7785 |
+
jQuery.trim( jQuery.text( elem ) );
|
7786 |
+
}
|
7787 |
+
},
|
7788 |
+
select: {
|
7789 |
+
get: function( elem ) {
|
7790 |
+
var value, option,
|
7791 |
+
options = elem.options,
|
7792 |
+
index = elem.selectedIndex,
|
7793 |
+
one = elem.type === "select-one" || index < 0,
|
7794 |
+
values = one ? null : [],
|
7795 |
+
max = one ? index + 1 : options.length,
|
7796 |
+
i = index < 0 ?
|
7797 |
+
max :
|
7798 |
+
one ? index : 0;
|
7799 |
+
|
7800 |
+
// Loop through all the selected options
|
7801 |
+
for ( ; i < max; i++ ) {
|
7802 |
+
option = options[ i ];
|
7803 |
+
|
7804 |
+
// oldIE doesn't update selected after form reset (#2551)
|
7805 |
+
if ( ( option.selected || i === index ) &&
|
7806 |
+
// Don't return options that are disabled or in a disabled optgroup
|
7807 |
+
( support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
|
7808 |
+
( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
|
7809 |
+
|
7810 |
+
// Get the specific value for the option
|
7811 |
+
value = jQuery( option ).val();
|
7812 |
+
|
7813 |
+
// We don't need an array for one selects
|
7814 |
+
if ( one ) {
|
7815 |
+
return value;
|
7816 |
+
}
|
7817 |
+
|
7818 |
+
// Multi-Selects return an array
|
7819 |
+
values.push( value );
|
7820 |
+
}
|
7821 |
+
}
|
7822 |
+
|
7823 |
+
return values;
|
7824 |
+
},
|
7825 |
+
|
7826 |
+
set: function( elem, value ) {
|
7827 |
+
var optionSet, option,
|
7828 |
+
options = elem.options,
|
7829 |
+
values = jQuery.makeArray( value ),
|
7830 |
+
i = options.length;
|
7831 |
+
|
7832 |
+
while ( i-- ) {
|
7833 |
+
option = options[ i ];
|
7834 |
+
|
7835 |
+
if ( jQuery.inArray( jQuery.valHooks.option.get( option ), values ) >= 0 ) {
|
7836 |
+
|
7837 |
+
// Support: IE6
|
7838 |
+
// When new option element is added to select box we need to
|
7839 |
+
// force reflow of newly added node in order to workaround delay
|
7840 |
+
// of initialization properties
|
7841 |
+
try {
|
7842 |
+
option.selected = optionSet = true;
|
7843 |
+
|
7844 |
+
} catch ( _ ) {
|
7845 |
+
|
7846 |
+
// Will be executed only in IE6
|
7847 |
+
option.scrollHeight;
|
7848 |
+
}
|
7849 |
+
|
7850 |
+
} else {
|
7851 |
+
option.selected = false;
|
7852 |
+
}
|
7853 |
+
}
|
7854 |
+
|
7855 |
+
// Force browsers to behave consistently when non-matching value is set
|
7856 |
+
if ( !optionSet ) {
|
7857 |
+
elem.selectedIndex = -1;
|
7858 |
+
}
|
7859 |
+
|
7860 |
+
return options;
|
7861 |
+
}
|
7862 |
+
}
|
7863 |
+
}
|
7864 |
+
});
|
7865 |
+
|
7866 |
+
// Radios and checkboxes getter/setter
|
7867 |
+
jQuery.each([ "radio", "checkbox" ], function() {
|
7868 |
+
jQuery.valHooks[ this ] = {
|
7869 |
+
set: function( elem, value ) {
|
7870 |
+
if ( jQuery.isArray( value ) ) {
|
7871 |
+
return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
|
7872 |
+
}
|
7873 |
+
}
|
7874 |
+
};
|
7875 |
+
if ( !support.checkOn ) {
|
7876 |
+
jQuery.valHooks[ this ].get = function( elem ) {
|
7877 |
+
// Support: Webkit
|
7878 |
+
// "" is returned instead of "on" if a value isn't specified
|
7879 |
+
return elem.getAttribute("value") === null ? "on" : elem.value;
|
7880 |
+
};
|
7881 |
+
}
|
7882 |
+
});
|
7883 |
+
|
7884 |
+
|
7885 |
+
|
7886 |
+
|
7887 |
+
var nodeHook, boolHook,
|
7888 |
+
attrHandle = jQuery.expr.attrHandle,
|
7889 |
+
ruseDefault = /^(?:checked|selected)$/i,
|
7890 |
+
getSetAttribute = support.getSetAttribute,
|
7891 |
+
getSetInput = support.input;
|
7892 |
+
|
7893 |
+
jQuery.fn.extend({
|
7894 |
+
attr: function( name, value ) {
|
7895 |
+
return access( this, jQuery.attr, name, value, arguments.length > 1 );
|
7896 |
+
},
|
7897 |
+
|
7898 |
+
removeAttr: function( name ) {
|
7899 |
+
return this.each(function() {
|
7900 |
+
jQuery.removeAttr( this, name );
|
7901 |
+
});
|
7902 |
+
}
|
7903 |
+
});
|
7904 |
+
|
7905 |
+
jQuery.extend({
|
7906 |
+
attr: function( elem, name, value ) {
|
7907 |
+
var hooks, ret,
|
7908 |
+
nType = elem.nodeType;
|
7909 |
+
|
7910 |
+
// don't get/set attributes on text, comment and attribute nodes
|
7911 |
+
if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
|
7912 |
+
return;
|
7913 |
+
}
|
7914 |
+
|
7915 |
+
// Fallback to prop when attributes are not supported
|
7916 |
+
if ( typeof elem.getAttribute === strundefined ) {
|
7917 |
+
return jQuery.prop( elem, name, value );
|
7918 |
+
}
|
7919 |
+
|
7920 |
+
// All attributes are lowercase
|
7921 |
+
// Grab necessary hook if one is defined
|
7922 |
+
if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
|
7923 |
+
name = name.toLowerCase();
|
7924 |
+
hooks = jQuery.attrHooks[ name ] ||
|
7925 |
+
( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
|
7926 |
+
}
|
7927 |
+
|
7928 |
+
if ( value !== undefined ) {
|
7929 |
+
|
7930 |
+
if ( value === null ) {
|
7931 |
+
jQuery.removeAttr( elem, name );
|
7932 |
+
|
7933 |
+
} else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
|
7934 |
+
return ret;
|
7935 |
+
|
7936 |
+
} else {
|
7937 |
+
elem.setAttribute( name, value + "" );
|
7938 |
+
return value;
|
7939 |
+
}
|
7940 |
+
|
7941 |
+
} else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
|
7942 |
+
return ret;
|
7943 |
+
|
7944 |
+
} else {
|
7945 |
+
ret = jQuery.find.attr( elem, name );
|
7946 |
+
|
7947 |
+
// Non-existent attributes return null, we normalize to undefined
|
7948 |
+
return ret == null ?
|
7949 |
+
undefined :
|
7950 |
+
ret;
|
7951 |
+
}
|
7952 |
+
},
|
7953 |
+
|
7954 |
+
removeAttr: function( elem, value ) {
|
7955 |
+
var name, propName,
|
7956 |
+
i = 0,
|
7957 |
+
attrNames = value && value.match( rnotwhite );
|
7958 |
+
|
7959 |
+
if ( attrNames && elem.nodeType === 1 ) {
|
7960 |
+
while ( (name = attrNames[i++]) ) {
|
7961 |
+
propName = jQuery.propFix[ name ] || name;
|
7962 |
+
|
7963 |
+
// Boolean attributes get special treatment (#10870)
|
7964 |
+
if ( jQuery.expr.match.bool.test( name ) ) {
|
7965 |
+
// Set corresponding property to false
|
7966 |
+
if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
|
7967 |
+
elem[ propName ] = false;
|
7968 |
+
// Support: IE<9
|
7969 |
+
// Also clear defaultChecked/defaultSelected (if appropriate)
|
7970 |
+
} else {
|
7971 |
+
elem[ jQuery.camelCase( "default-" + name ) ] =
|
7972 |
+
elem[ propName ] = false;
|
7973 |
+
}
|
7974 |
+
|
7975 |
+
// See #9699 for explanation of this approach (setting first, then removal)
|
7976 |
+
} else {
|
7977 |
+
jQuery.attr( elem, name, "" );
|
7978 |
+
}
|
7979 |
+
|
7980 |
+
elem.removeAttribute( getSetAttribute ? name : propName );
|
7981 |
+
}
|
7982 |
+
}
|
7983 |
+
},
|
7984 |
+
|
7985 |
+
attrHooks: {
|
7986 |
+
type: {
|
7987 |
+
set: function( elem, value ) {
|
7988 |
+
if ( !support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
|
7989 |
+
// Setting the type on a radio button after the value resets the value in IE6-9
|
7990 |
+
// Reset value to default in case type is set after value during creation
|
7991 |
+
var val = elem.value;
|
7992 |
+
elem.setAttribute( "type", value );
|
7993 |
+
if ( val ) {
|
7994 |
+
elem.value = val;
|
7995 |
+
}
|
7996 |
+
return value;
|
7997 |
+
}
|
7998 |
+
}
|
7999 |
+
}
|
8000 |
+
}
|
8001 |
+
});
|
8002 |
+
|
8003 |
+
// Hook for boolean attributes
|
8004 |
+
boolHook = {
|
8005 |
+
set: function( elem, value, name ) {
|
8006 |
+
if ( value === false ) {
|
8007 |
+
// Remove boolean attributes when set to false
|
8008 |
+
jQuery.removeAttr( elem, name );
|
8009 |
+
} else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
|
8010 |
+
// IE<8 needs the *property* name
|
8011 |
+
elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );
|
8012 |
+
|
8013 |
+
// Use defaultChecked and defaultSelected for oldIE
|
8014 |
+
} else {
|
8015 |
+
elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
|
8016 |
+
}
|
8017 |
+
|
8018 |
+
return name;
|
8019 |
+
}
|
8020 |
+
};
|
8021 |
+
|
8022 |
+
// Retrieve booleans specially
|
8023 |
+
jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
|
8024 |
+
|
8025 |
+
var getter = attrHandle[ name ] || jQuery.find.attr;
|
8026 |
+
|
8027 |
+
attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?
|
8028 |
+
function( elem, name, isXML ) {
|
8029 |
+
var ret, handle;
|
8030 |
+
if ( !isXML ) {
|
8031 |
+
// Avoid an infinite loop by temporarily removing this function from the getter
|
8032 |
+
handle = attrHandle[ name ];
|
8033 |
+
attrHandle[ name ] = ret;
|
8034 |
+
ret = getter( elem, name, isXML ) != null ?
|
8035 |
+
name.toLowerCase() :
|
8036 |
+
null;
|
8037 |
+
attrHandle[ name ] = handle;
|
8038 |
+
}
|
8039 |
+
return ret;
|
8040 |
+
} :
|
8041 |
+
function( elem, name, isXML ) {
|
8042 |
+
if ( !isXML ) {
|
8043 |
+
return elem[ jQuery.camelCase( "default-" + name ) ] ?
|
8044 |
+
name.toLowerCase() :
|
8045 |
+
null;
|
8046 |
+
}
|
8047 |
+
};
|
8048 |
+
});
|
8049 |
+
|
8050 |
+
// fix oldIE attroperties
|
8051 |
+
if ( !getSetInput || !getSetAttribute ) {
|
8052 |
+
jQuery.attrHooks.value = {
|
8053 |
+
set: function( elem, value, name ) {
|
8054 |
+
if ( jQuery.nodeName( elem, "input" ) ) {
|
8055 |
+
// Does not return so that setAttribute is also used
|
8056 |
+
elem.defaultValue = value;
|
8057 |
+
} else {
|
8058 |
+
// Use nodeHook if defined (#1954); otherwise setAttribute is fine
|
8059 |
+
return nodeHook && nodeHook.set( elem, value, name );
|
8060 |
+
}
|
8061 |
+
}
|
8062 |
+
};
|
8063 |
+
}
|
8064 |
+
|
8065 |
+
// IE6/7 do not support getting/setting some attributes with get/setAttribute
|
8066 |
+
if ( !getSetAttribute ) {
|
8067 |
+
|
8068 |
+
// Use this for any attribute in IE6/7
|
8069 |
+
// This fixes almost every IE6/7 issue
|
8070 |
+
nodeHook = {
|
8071 |
+
set: function( elem, value, name ) {
|
8072 |
+
// Set the existing or create a new attribute node
|
8073 |
+
var ret = elem.getAttributeNode( name );
|
8074 |
+
if ( !ret ) {
|
8075 |
+
elem.setAttributeNode(
|
8076 |
+
(ret = elem.ownerDocument.createAttribute( name ))
|
8077 |
+
);
|
8078 |
+
}
|
8079 |
+
|
8080 |
+
ret.value = value += "";
|
8081 |
+
|
8082 |
+
// Break association with cloned elements by also using setAttribute (#9646)
|
8083 |
+
if ( name === "value" || value === elem.getAttribute( name ) ) {
|
8084 |
+
return value;
|
8085 |
+
}
|
8086 |
+
}
|
8087 |
+
};
|
8088 |
+
|
8089 |
+
// Some attributes are constructed with empty-string values when not defined
|
8090 |
+
attrHandle.id = attrHandle.name = attrHandle.coords =
|
8091 |
+
function( elem, name, isXML ) {
|
8092 |
+
var ret;
|
8093 |
+
if ( !isXML ) {
|
8094 |
+
return (ret = elem.getAttributeNode( name )) && ret.value !== "" ?
|
8095 |
+
ret.value :
|
8096 |
+
null;
|
8097 |
+
}
|
8098 |
+
};
|
8099 |
+
|
8100 |
+
// Fixing value retrieval on a button requires this module
|
8101 |
+
jQuery.valHooks.button = {
|
8102 |
+
get: function( elem, name ) {
|
8103 |
+
var ret = elem.getAttributeNode( name );
|
8104 |
+
if ( ret && ret.specified ) {
|
8105 |
+
return ret.value;
|
8106 |
+
}
|
8107 |
+
},
|
8108 |
+
set: nodeHook.set
|
8109 |
+
};
|
8110 |
+
|
8111 |
+
// Set contenteditable to false on removals(#10429)
|
8112 |
+
// Setting to empty string throws an error as an invalid value
|
8113 |
+
jQuery.attrHooks.contenteditable = {
|
8114 |
+
set: function( elem, value, name ) {
|
8115 |
+
nodeHook.set( elem, value === "" ? false : value, name );
|
8116 |
+
}
|
8117 |
+
};
|
8118 |
+
|
8119 |
+
// Set width and height to auto instead of 0 on empty string( Bug #8150 )
|
8120 |
+
// This is for removals
|
8121 |
+
jQuery.each([ "width", "height" ], function( i, name ) {
|
8122 |
+
jQuery.attrHooks[ name ] = {
|
8123 |
+
set: function( elem, value ) {
|
8124 |
+
if ( value === "" ) {
|
8125 |
+
elem.setAttribute( name, "auto" );
|
8126 |
+
return value;
|
8127 |
+
}
|
8128 |
+
}
|
8129 |
+
};
|
8130 |
+
});
|
8131 |
+
}
|
8132 |
+
|
8133 |
+
if ( !support.style ) {
|
8134 |
+
jQuery.attrHooks.style = {
|
8135 |
+
get: function( elem ) {
|
8136 |
+
// Return undefined in the case of empty string
|
8137 |
+
// Note: IE uppercases css property names, but if we were to .toLowerCase()
|
8138 |
+
// .cssText, that would destroy case senstitivity in URL's, like in "background"
|
8139 |
+
return elem.style.cssText || undefined;
|
8140 |
+
},
|
8141 |
+
set: function( elem, value ) {
|
8142 |
+
return ( elem.style.cssText = value + "" );
|
8143 |
+
}
|
8144 |
+
};
|
8145 |
+
}
|
8146 |
+
|
8147 |
+
|
8148 |
+
|
8149 |
+
|
8150 |
+
var rfocusable = /^(?:input|select|textarea|button|object)$/i,
|
8151 |
+
rclickable = /^(?:a|area)$/i;
|
8152 |
+
|
8153 |
+
jQuery.fn.extend({
|
8154 |
+
prop: function( name, value ) {
|
8155 |
+
return access( this, jQuery.prop, name, value, arguments.length > 1 );
|
8156 |
+
},
|
8157 |
+
|
8158 |
+
removeProp: function( name ) {
|
8159 |
+
name = jQuery.propFix[ name ] || name;
|
8160 |
+
return this.each(function() {
|
8161 |
+
// try/catch handles cases where IE balks (such as removing a property on window)
|
8162 |
+
try {
|
8163 |
+
this[ name ] = undefined;
|
8164 |
+
delete this[ name ];
|
8165 |
+
} catch( e ) {}
|
8166 |
+
});
|
8167 |
+
}
|
8168 |
+
});
|
8169 |
+
|
8170 |
+
jQuery.extend({
|
8171 |
+
propFix: {
|
8172 |
+
"for": "htmlFor",
|
8173 |
+
"class": "className"
|
8174 |
+
},
|
8175 |
+
|
8176 |
+
prop: function( elem, name, value ) {
|
8177 |
+
var ret, hooks, notxml,
|
8178 |
+
nType = elem.nodeType;
|
8179 |
+
|
8180 |
+
// don't get/set properties on text, comment and attribute nodes
|
8181 |
+
if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
|
8182 |
+
return;
|
8183 |
+
}
|
8184 |
+
|
8185 |
+
notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
|
8186 |
+
|
8187 |
+
if ( notxml ) {
|
8188 |
+
// Fix name and attach hooks
|
8189 |
+
name = jQuery.propFix[ name ] || name;
|
8190 |
+
hooks = jQuery.propHooks[ name ];
|
8191 |
+
}
|
8192 |
+
|
8193 |
+
if ( value !== undefined ) {
|
8194 |
+
return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
|
8195 |
+
ret :
|
8196 |
+
( elem[ name ] = value );
|
8197 |
+
|
8198 |
+
} else {
|
8199 |
+
return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
|
8200 |
+
ret :
|
8201 |
+
elem[ name ];
|
8202 |
+
}
|
8203 |
+
},
|
8204 |
+
|
8205 |
+
propHooks: {
|
8206 |
+
tabIndex: {
|
8207 |
+
get: function( elem ) {
|
8208 |
+
// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
|
8209 |
+
// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
|
8210 |
+
// Use proper attribute retrieval(#12072)
|
8211 |
+
var tabindex = jQuery.find.attr( elem, "tabindex" );
|
8212 |
+
|
8213 |
+
return tabindex ?
|
8214 |
+
parseInt( tabindex, 10 ) :
|
8215 |
+
rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
|
8216 |
+
0 :
|
8217 |
+
-1;
|
8218 |
+
}
|
8219 |
+
}
|
8220 |
+
}
|
8221 |
+
});
|
8222 |
+
|
8223 |
+
// Some attributes require a special call on IE
|
8224 |
+
// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
|
8225 |
+
if ( !support.hrefNormalized ) {
|
8226 |
+
// href/src property should get the full normalized URL (#10299/#12915)
|
8227 |
+
jQuery.each([ "href", "src" ], function( i, name ) {
|
8228 |
+
jQuery.propHooks[ name ] = {
|
8229 |
+
get: function( elem ) {
|
8230 |
+
return elem.getAttribute( name, 4 );
|
8231 |
+
}
|
8232 |
+
};
|
8233 |
+
});
|
8234 |
+
}
|
8235 |
+
|
8236 |
+
// Support: Safari, IE9+
|
8237 |
+
// mis-reports the default selected property of an option
|
8238 |
+
// Accessing the parent's selectedIndex property fixes it
|
8239 |
+
if ( !support.optSelected ) {
|
8240 |
+
jQuery.propHooks.selected = {
|
8241 |
+
get: function( elem ) {
|
8242 |
+
var parent = elem.parentNode;
|
8243 |
+
|
8244 |
+
if ( parent ) {
|
8245 |
+
parent.selectedIndex;
|
8246 |
+
|
8247 |
+
// Make sure that it also works with optgroups, see #5701
|
8248 |
+
if ( parent.parentNode ) {
|
8249 |
+
parent.parentNode.selectedIndex;
|
8250 |
+
}
|
8251 |
+
}
|
8252 |
+
return null;
|
8253 |
+
}
|
8254 |
+
};
|
8255 |
+
}
|
8256 |
+
|
8257 |
+
jQuery.each([
|
8258 |
+
"tabIndex",
|
8259 |
+
"readOnly",
|
8260 |
+
"maxLength",
|
8261 |
+
"cellSpacing",
|
8262 |
+
"cellPadding",
|
8263 |
+
"rowSpan",
|
8264 |
+
"colSpan",
|
8265 |
+
"useMap",
|
8266 |
+
"frameBorder",
|
8267 |
+
"contentEditable"
|
8268 |
+
], function() {
|
8269 |
+
jQuery.propFix[ this.toLowerCase() ] = this;
|
8270 |
+
});
|
8271 |
+
|
8272 |
+
// IE6/7 call enctype encoding
|
8273 |
+
if ( !support.enctype ) {
|
8274 |
+
jQuery.propFix.enctype = "encoding";
|
8275 |
+
}
|
8276 |
+
|
8277 |
+
|
8278 |
+
|
8279 |
+
|
8280 |
+
var rclass = /[\t\r\n\f]/g;
|
8281 |
+
|
8282 |
+
jQuery.fn.extend({
|
8283 |
+
addClass: function( value ) {
|
8284 |
+
var classes, elem, cur, clazz, j, finalValue,
|
8285 |
+
i = 0,
|
8286 |
+
len = this.length,
|
8287 |
+
proceed = typeof value === "string" && value;
|
8288 |
+
|
8289 |
+
if ( jQuery.isFunction( value ) ) {
|
8290 |
+
return this.each(function( j ) {
|
8291 |
+
jQuery( this ).addClass( value.call( this, j, this.className ) );
|
8292 |
+
});
|
8293 |
+
}
|
8294 |
+
|
8295 |
+
if ( proceed ) {
|
8296 |
+
// The disjunction here is for better compressibility (see removeClass)
|
8297 |
+
classes = ( value || "" ).match( rnotwhite ) || [];
|
8298 |
+
|
8299 |
+
for ( ; i < len; i++ ) {
|
8300 |
+
elem = this[ i ];
|
8301 |
+
cur = elem.nodeType === 1 && ( elem.className ?
|
8302 |
+
( " " + elem.className + " " ).replace( rclass, " " ) :
|
8303 |
+
" "
|
8304 |
+
);
|
8305 |
+
|
8306 |
+
if ( cur ) {
|
8307 |
+
j = 0;
|
8308 |
+
while ( (clazz = classes[j++]) ) {
|
8309 |
+
if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
|
8310 |
+
cur += clazz + " ";
|
8311 |
+
}
|
8312 |
+
}
|
8313 |
+
|
8314 |
+
// only assign if different to avoid unneeded rendering.
|
8315 |
+
finalValue = jQuery.trim( cur );
|
8316 |
+
if ( elem.className !== finalValue ) {
|
8317 |
+
elem.className = finalValue;
|
8318 |
+
}
|
8319 |
+
}
|
8320 |
+
}
|
8321 |
+
}
|
8322 |
+
|
8323 |
+
return this;
|
8324 |
+
},
|
8325 |
+
|
8326 |
+
removeClass: function( value ) {
|
8327 |
+
var classes, elem, cur, clazz, j, finalValue,
|
8328 |
+
i = 0,
|
8329 |
+
len = this.length,
|
8330 |
+
proceed = arguments.length === 0 || typeof value === "string" && value;
|
8331 |
+
|
8332 |
+
if ( jQuery.isFunction( value ) ) {
|
8333 |
+
return this.each(function( j ) {
|
8334 |
+
jQuery( this ).removeClass( value.call( this, j, this.className ) );
|
8335 |
+
});
|
8336 |
+
}
|
8337 |
+
if ( proceed ) {
|
8338 |
+
classes = ( value || "" ).match( rnotwhite ) || [];
|
8339 |
+
|
8340 |
+
for ( ; i < len; i++ ) {
|
8341 |
+
elem = this[ i ];
|
8342 |
+
// This expression is here for better compressibility (see addClass)
|
8343 |
+
cur = elem.nodeType === 1 && ( elem.className ?
|
8344 |
+
( " " + elem.className + " " ).replace( rclass, " " ) :
|
8345 |
+
""
|
8346 |
+
);
|
8347 |
+
|
8348 |
+
if ( cur ) {
|
8349 |
+
j = 0;
|
8350 |
+
while ( (clazz = classes[j++]) ) {
|
8351 |
+
// Remove *all* instances
|
8352 |
+
while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
|
8353 |
+
cur = cur.replace( " " + clazz + " ", " " );
|
8354 |
+
}
|
8355 |
+
}
|
8356 |
+
|
8357 |
+
// only assign if different to avoid unneeded rendering.
|
8358 |
+
finalValue = value ? jQuery.trim( cur ) : "";
|
8359 |
+
if ( elem.className !== finalValue ) {
|
8360 |
+
elem.className = finalValue;
|
8361 |
+
}
|
8362 |
+
}
|
8363 |
+
}
|
8364 |
+
}
|
8365 |
+
|
8366 |
+
return this;
|
8367 |
+
},
|
8368 |
+
|
8369 |
+
toggleClass: function( value, stateVal ) {
|
8370 |
+
var type = typeof value;
|
8371 |
+
|
8372 |
+
if ( typeof stateVal === "boolean" && type === "string" ) {
|
8373 |
+
return stateVal ? this.addClass( value ) : this.removeClass( value );
|
8374 |
+
}
|
8375 |
+
|
8376 |
+
if ( jQuery.isFunction( value ) ) {
|
8377 |
+
return this.each(function( i ) {
|
8378 |
+
jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
|
8379 |
+
});
|
8380 |
+
}
|
8381 |
+
|
8382 |
+
return this.each(function() {
|
8383 |
+
if ( type === "string" ) {
|
8384 |
+
// toggle individual class names
|
8385 |
+
var className,
|
8386 |
+
i = 0,
|
8387 |
+
self = jQuery( this ),
|
8388 |
+
classNames = value.match( rnotwhite ) || [];
|
8389 |
+
|
8390 |
+
while ( (className = classNames[ i++ ]) ) {
|
8391 |
+
// check each className given, space separated list
|
8392 |
+
if ( self.hasClass( className ) ) {
|
8393 |
+
self.removeClass( className );
|
8394 |
+
} else {
|
8395 |
+
self.addClass( className );
|
8396 |
+
}
|
8397 |
+
}
|
8398 |
+
|
8399 |
+
// Toggle whole class name
|
8400 |
+
} else if ( type === strundefined || type === "boolean" ) {
|
8401 |
+
if ( this.className ) {
|
8402 |
+
// store className if set
|
8403 |
+
jQuery._data( this, "__className__", this.className );
|
8404 |
+
}
|
8405 |
+
|
8406 |
+
// If the element has a class name or if we're passed "false",
|
8407 |
+
// then remove the whole classname (if there was one, the above saved it).
|
8408 |
+
// Otherwise bring back whatever was previously saved (if anything),
|
8409 |
+
// falling back to the empty string if nothing was stored.
|
8410 |
+
this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
|
8411 |
+
}
|
8412 |
+
});
|
8413 |
+
},
|
8414 |
+
|
8415 |
+
hasClass: function( selector ) {
|
8416 |
+
var className = " " + selector + " ",
|
8417 |
+
i = 0,
|
8418 |
+
l = this.length;
|
8419 |
+
for ( ; i < l; i++ ) {
|
8420 |
+
if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
|
8421 |
+
return true;
|
8422 |
+
}
|
8423 |
+
}
|
8424 |
+
|
8425 |
+
return false;
|
8426 |
+
}
|
8427 |
+
});
|
8428 |
+
|
8429 |
+
|
8430 |
+
|
8431 |
+
|
8432 |
+
// Return jQuery for attributes-only inclusion
|
8433 |
+
|
8434 |
+
|
8435 |
+
jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
|
8436 |
+
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
|
8437 |
+
"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
|
8438 |
+
|
8439 |
+
// Handle event binding
|
8440 |
+
jQuery.fn[ name ] = function( data, fn ) {
|
8441 |
+
return arguments.length > 0 ?
|
8442 |
+
this.on( name, null, data, fn ) :
|
8443 |
+
this.trigger( name );
|
8444 |
+
};
|
8445 |
+
});
|
8446 |
+
|
8447 |
+
jQuery.fn.extend({
|
8448 |
+
hover: function( fnOver, fnOut ) {
|
8449 |
+
return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
|
8450 |
+
},
|
8451 |
+
|
8452 |
+
bind: function( types, data, fn ) {
|
8453 |
+
return this.on( types, null, data, fn );
|
8454 |
+
},
|
8455 |
+
unbind: function( types, fn ) {
|
8456 |
+
return this.off( types, null, fn );
|
8457 |
+
},
|
8458 |
+
|
8459 |
+
delegate: function( selector, types, data, fn ) {
|
8460 |
+
return this.on( types, selector, data, fn );
|
8461 |
+
},
|
8462 |
+
undelegate: function( selector, types, fn ) {
|
8463 |
+
// ( namespace ) or ( selector, types [, fn] )
|
8464 |
+
return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
|
8465 |
+
}
|
8466 |
+
});
|
8467 |
+
|
8468 |
+
|
8469 |
+
var nonce = jQuery.now();
|
8470 |
+
|
8471 |
+
var rquery = (/\?/);
|
8472 |
+
|
8473 |
+
|
8474 |
+
|
8475 |
+
var rvalidtokens = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;
|
8476 |
+
|
8477 |
+
jQuery.parseJSON = function( data ) {
|
8478 |
+
// Attempt to parse using the native JSON parser first
|
8479 |
+
if ( window.JSON && window.JSON.parse ) {
|
8480 |
+
// Support: Android 2.3
|
8481 |
+
// Workaround failure to string-cast null input
|
8482 |
+
return window.JSON.parse( data + "" );
|
8483 |
+
}
|
8484 |
+
|
8485 |
+
var requireNonComma,
|
8486 |
+
depth = null,
|
8487 |
+
str = jQuery.trim( data + "" );
|
8488 |
+
|
8489 |
+
// Guard against invalid (and possibly dangerous) input by ensuring that nothing remains
|
8490 |
+
// after removing valid tokens
|
8491 |
+
return str && !jQuery.trim( str.replace( rvalidtokens, function( token, comma, open, close ) {
|
8492 |
+
|
8493 |
+
// Force termination if we see a misplaced comma
|
8494 |
+
if ( requireNonComma && comma ) {
|
8495 |
+
depth = 0;
|
8496 |
+
}
|
8497 |
+
|
8498 |
+
// Perform no more replacements after returning to outermost depth
|
8499 |
+
if ( depth === 0 ) {
|
8500 |
+
return token;
|
8501 |
+
}
|
8502 |
+
|
8503 |
+
// Commas must not follow "[", "{", or ","
|
8504 |
+
requireNonComma = open || comma;
|
8505 |
+
|
8506 |
+
// Determine new depth
|
8507 |
+
// array/object open ("[" or "{"): depth += true - false (increment)
|
8508 |
+
// array/object close ("]" or "}"): depth += false - true (decrement)
|
8509 |
+
// other cases ("," or primitive): depth += true - true (numeric cast)
|
8510 |
+
depth += !close - !open;
|
8511 |
+
|
8512 |
+
// Remove this token
|
8513 |
+
return "";
|
8514 |
+
}) ) ?
|
8515 |
+
( Function( "return " + str ) )() :
|
8516 |
+
jQuery.error( "Invalid JSON: " + data );
|
8517 |
+
};
|
8518 |
+
|
8519 |
+
|
8520 |
+
// Cross-browser xml parsing
|
8521 |
+
jQuery.parseXML = function( data ) {
|
8522 |
+
var xml, tmp;
|
8523 |
+
if ( !data || typeof data !== "string" ) {
|
8524 |
+
return null;
|
8525 |
+
}
|
8526 |
+
try {
|
8527 |
+
if ( window.DOMParser ) { // Standard
|
8528 |
+
tmp = new DOMParser();
|
8529 |
+
xml = tmp.parseFromString( data, "text/xml" );
|
8530 |
+
} else { // IE
|
8531 |
+
xml = new ActiveXObject( "Microsoft.XMLDOM" );
|
8532 |
+
xml.async = "false";
|
8533 |
+
xml.loadXML( data );
|
8534 |
+
}
|
8535 |
+
} catch( e ) {
|
8536 |
+
xml = undefined;
|
8537 |
+
}
|
8538 |
+
if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
|
8539 |
+
jQuery.error( "Invalid XML: " + data );
|
8540 |
+
}
|
8541 |
+
return xml;
|
8542 |
+
};
|
8543 |
+
|
8544 |
+
|
8545 |
+
var
|
8546 |
+
// Document location
|
8547 |
+
ajaxLocParts,
|
8548 |
+
ajaxLocation,
|
8549 |
+
|
8550 |
+
rhash = /#.*$/,
|
8551 |
+
rts = /([?&])_=[^&]*/,
|
8552 |
+
rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
|
8553 |
+
// #7653, #8125, #8152: local protocol detection
|
8554 |
+
rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
|
8555 |
+
rnoContent = /^(?:GET|HEAD)$/,
|
8556 |
+
rprotocol = /^\/\//,
|
8557 |
+
rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
|
8558 |
+
|
8559 |
+
/* Prefilters
|
8560 |
+
* 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
|
8561 |
+
* 2) These are called:
|
8562 |
+
* - BEFORE asking for a transport
|
8563 |
+
* - AFTER param serialization (s.data is a string if s.processData is true)
|
8564 |
+
* 3) key is the dataType
|
8565 |
+
* 4) the catchall symbol "*" can be used
|
8566 |
+
* 5) execution will start with transport dataType and THEN continue down to "*" if needed
|
8567 |
+
*/
|
8568 |
+
prefilters = {},
|
8569 |
+
|
8570 |
+
/* Transports bindings
|
8571 |
+
* 1) key is the dataType
|
8572 |
+
* 2) the catchall symbol "*" can be used
|
8573 |
+
* 3) selection will start with transport dataType and THEN go to "*" if needed
|
8574 |
+
*/
|
8575 |
+
transports = {},
|
8576 |
+
|
8577 |
+
// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
|
8578 |
+
allTypes = "*/".concat("*");
|
8579 |
+
|
8580 |
+
// #8138, IE may throw an exception when accessing
|
8581 |
+
// a field from window.location if document.domain has been set
|
8582 |
+
try {
|
8583 |
+
ajaxLocation = location.href;
|
8584 |
+
} catch( e ) {
|
8585 |
+
// Use the href attribute of an A element
|
8586 |
+
// since IE will modify it given document.location
|
8587 |
+
ajaxLocation = document.createElement( "a" );
|
8588 |
+
ajaxLocation.href = "";
|
8589 |
+
ajaxLocation = ajaxLocation.href;
|
8590 |
+
}
|
8591 |
+
|
8592 |
+
// Segment location into parts
|
8593 |
+
ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
|
8594 |
+
|
8595 |
+
// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
|
8596 |
+
function addToPrefiltersOrTransports( structure ) {
|
8597 |
+
|
8598 |
+
// dataTypeExpression is optional and defaults to "*"
|
8599 |
+
return function( dataTypeExpression, func ) {
|
8600 |
+
|
8601 |
+
if ( typeof dataTypeExpression !== "string" ) {
|
8602 |
+
func = dataTypeExpression;
|
8603 |
+
dataTypeExpression = "*";
|
8604 |
+
}
|
8605 |
+
|
8606 |
+
var dataType,
|
8607 |
+
i = 0,
|
8608 |
+
dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
|
8609 |
+
|
8610 |
+
if ( jQuery.isFunction( func ) ) {
|
8611 |
+
// For each dataType in the dataTypeExpression
|
8612 |
+
while ( (dataType = dataTypes[i++]) ) {
|
8613 |
+
// Prepend if requested
|
8614 |
+
if ( dataType.charAt( 0 ) === "+" ) {
|
8615 |
+
dataType = dataType.slice( 1 ) || "*";
|
8616 |
+
(structure[ dataType ] = structure[ dataType ] || []).unshift( func );
|
8617 |
+
|
8618 |
+
// Otherwise append
|
8619 |
+
} else {
|
8620 |
+
(structure[ dataType ] = structure[ dataType ] || []).push( func );
|
8621 |
+
}
|
8622 |
+
}
|
8623 |
+
}
|
8624 |
+
};
|
8625 |
+
}
|
8626 |
+
|
8627 |
+
// Base inspection function for prefilters and transports
|
8628 |
+
function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
|
8629 |
+
|
8630 |
+
var inspected = {},
|
8631 |
+
seekingTransport = ( structure === transports );
|
8632 |
+
|
8633 |
+
function inspect( dataType ) {
|
8634 |
+
var selected;
|
8635 |
+
inspected[ dataType ] = true;
|
8636 |
+
jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
|
8637 |
+
var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
|
8638 |
+
if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
|
8639 |
+
options.dataTypes.unshift( dataTypeOrTransport );
|
8640 |
+
inspect( dataTypeOrTransport );
|
8641 |
+
return false;
|
8642 |
+
} else if ( seekingTransport ) {
|
8643 |
+
return !( selected = dataTypeOrTransport );
|
8644 |
+
}
|
8645 |
+
});
|
8646 |
+
return selected;
|
8647 |
+
}
|
8648 |
+
|
8649 |
+
return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
|
8650 |
+
}
|
8651 |
+
|
8652 |
+
// A special extend for ajax options
|
8653 |
+
// that takes "flat" options (not to be deep extended)
|
8654 |
+
// Fixes #9887
|
8655 |
+
function ajaxExtend( target, src ) {
|
8656 |
+
var deep, key,
|
8657 |
+
flatOptions = jQuery.ajaxSettings.flatOptions || {};
|
8658 |
+
|
8659 |
+
for ( key in src ) {
|
8660 |
+
if ( src[ key ] !== undefined ) {
|
8661 |
+
( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
|
8662 |
+
}
|
8663 |
+
}
|
8664 |
+
if ( deep ) {
|
8665 |
+
jQuery.extend( true, target, deep );
|
8666 |
+
}
|
8667 |
+
|
8668 |
+
return target;
|
8669 |
+
}
|
8670 |
+
|
8671 |
+
/* Handles responses to an ajax request:
|
8672 |
+
* - finds the right dataType (mediates between content-type and expected dataType)
|
8673 |
+
* - returns the corresponding response
|
8674 |
+
*/
|
8675 |
+
function ajaxHandleResponses( s, jqXHR, responses ) {
|
8676 |
+
var firstDataType, ct, finalDataType, type,
|
8677 |
+
contents = s.contents,
|
8678 |
+
dataTypes = s.dataTypes;
|
8679 |
+
|
8680 |
+
// Remove auto dataType and get content-type in the process
|
8681 |
+
while ( dataTypes[ 0 ] === "*" ) {
|
8682 |
+
dataTypes.shift();
|
8683 |
+
if ( ct === undefined ) {
|
8684 |
+
ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
|
8685 |
+
}
|
8686 |
+
}
|
8687 |
+
|
8688 |
+
// Check if we're dealing with a known content-type
|
8689 |
+
if ( ct ) {
|
8690 |
+
for ( type in contents ) {
|
8691 |
+
if ( contents[ type ] && contents[ type ].test( ct ) ) {
|
8692 |
+
dataTypes.unshift( type );
|
8693 |
+
break;
|
8694 |
+
}
|
8695 |
+
}
|
8696 |
+
}
|
8697 |
+
|
8698 |
+
// Check to see if we have a response for the expected dataType
|
8699 |
+
if ( dataTypes[ 0 ] in responses ) {
|
8700 |
+
finalDataType = dataTypes[ 0 ];
|
8701 |
+
} else {
|
8702 |
+
// Try convertible dataTypes
|
8703 |
+
for ( type in responses ) {
|
8704 |
+
if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
|
8705 |
+
finalDataType = type;
|
8706 |
+
break;
|
8707 |
+
}
|
8708 |
+
if ( !firstDataType ) {
|
8709 |
+
firstDataType = type;
|
8710 |
+
}
|
8711 |
+
}
|
8712 |
+
// Or just use first one
|
8713 |
+
finalDataType = finalDataType || firstDataType;
|
8714 |
+
}
|
8715 |
+
|
8716 |
+
// If we found a dataType
|
8717 |
+
// We add the dataType to the list if needed
|
8718 |
+
// and return the corresponding response
|
8719 |
+
if ( finalDataType ) {
|
8720 |
+
if ( finalDataType !== dataTypes[ 0 ] ) {
|
8721 |
+
dataTypes.unshift( finalDataType );
|
8722 |
+
}
|
8723 |
+
return responses[ finalDataType ];
|
8724 |
+
}
|
8725 |
+
}
|
8726 |
+
|
8727 |
+
/* Chain conversions given the request and the original response
|
8728 |
+
* Also sets the responseXXX fields on the jqXHR instance
|
8729 |
+
*/
|
8730 |
+
function ajaxConvert( s, response, jqXHR, isSuccess ) {
|
8731 |
+
var conv2, current, conv, tmp, prev,
|
8732 |
+
converters = {},
|
8733 |
+
// Work with a copy of dataTypes in case we need to modify it for conversion
|
8734 |
+
dataTypes = s.dataTypes.slice();
|
8735 |
+
|
8736 |
+
// Create converters map with lowercased keys
|
8737 |
+
if ( dataTypes[ 1 ] ) {
|
8738 |
+
for ( conv in s.converters ) {
|
8739 |
+
converters[ conv.toLowerCase() ] = s.converters[ conv ];
|
8740 |
+
}
|
8741 |
+
}
|
8742 |
+
|
8743 |
+
current = dataTypes.shift();
|
8744 |
+
|
8745 |
+
// Convert to each sequential dataType
|
8746 |
+
while ( current ) {
|
8747 |
+
|
8748 |
+
if ( s.responseFields[ current ] ) {
|
8749 |
+
jqXHR[ s.responseFields[ current ] ] = response;
|
8750 |
+
}
|
8751 |
+
|
8752 |
+
// Apply the dataFilter if provided
|
8753 |
+
if ( !prev && isSuccess && s.dataFilter ) {
|
8754 |
+
response = s.dataFilter( response, s.dataType );
|
8755 |
+
}
|
8756 |
+
|
8757 |
+
prev = current;
|
8758 |
+
current = dataTypes.shift();
|
8759 |
+
|
8760 |
+
if ( current ) {
|
8761 |
+
|
8762 |
+
// There's only work to do if current dataType is non-auto
|
8763 |
+
if ( current === "*" ) {
|
8764 |
+
|
8765 |
+
current = prev;
|
8766 |
+
|
8767 |
+
// Convert response if prev dataType is non-auto and differs from current
|
8768 |
+
} else if ( prev !== "*" && prev !== current ) {
|
8769 |
+
|
8770 |
+
// Seek a direct converter
|
8771 |
+
conv = converters[ prev + " " + current ] || converters[ "* " + current ];
|
8772 |
+
|
8773 |
+
// If none found, seek a pair
|
8774 |
+
if ( !conv ) {
|
8775 |
+
for ( conv2 in converters ) {
|
8776 |
+
|
8777 |
+
// If conv2 outputs current
|
8778 |
+
tmp = conv2.split( " " );
|
8779 |
+
if ( tmp[ 1 ] === current ) {
|
8780 |
+
|
8781 |
+
// If prev can be converted to accepted input
|
8782 |
+
conv = converters[ prev + " " + tmp[ 0 ] ] ||
|
8783 |
+
converters[ "* " + tmp[ 0 ] ];
|
8784 |
+
if ( conv ) {
|
8785 |
+
// Condense equivalence converters
|
8786 |
+
if ( conv === true ) {
|
8787 |
+
conv = converters[ conv2 ];
|
8788 |
+
|
8789 |
+
// Otherwise, insert the intermediate dataType
|
8790 |
+
} else if ( converters[ conv2 ] !== true ) {
|
8791 |
+
current = tmp[ 0 ];
|
8792 |
+
dataTypes.unshift( tmp[ 1 ] );
|
8793 |
+
}
|
8794 |
+
break;
|
8795 |
+
}
|
8796 |
+
}
|
8797 |
+
}
|
8798 |
+
}
|
8799 |
+
|
8800 |
+
// Apply converter (if not an equivalence)
|
8801 |
+
if ( conv !== true ) {
|
8802 |
+
|
8803 |
+
// Unless errors are allowed to bubble, catch and return them
|
8804 |
+
if ( conv && s[ "throws" ] ) {
|
8805 |
+
response = conv( response );
|
8806 |
+
} else {
|
8807 |
+
try {
|
8808 |
+
response = conv( response );
|
8809 |
+
} catch ( e ) {
|
8810 |
+
return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
|
8811 |
+
}
|
8812 |
+
}
|
8813 |
+
}
|
8814 |
+
}
|
8815 |
+
}
|
8816 |
+
}
|
8817 |
+
|
8818 |
+
return { state: "success", data: response };
|
8819 |
+
}
|
8820 |
+
|
8821 |
+
jQuery.extend({
|
8822 |
+
|
8823 |
+
// Counter for holding the number of active queries
|
8824 |
+
active: 0,
|
8825 |
+
|
8826 |
+
// Last-Modified header cache for next request
|
8827 |
+
lastModified: {},
|
8828 |
+
etag: {},
|
8829 |
+
|
8830 |
+
ajaxSettings: {
|
8831 |
+
url: ajaxLocation,
|
8832 |
+
type: "GET",
|
8833 |
+
isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
|
8834 |
+
global: true,
|
8835 |
+
processData: true,
|
8836 |
+
async: true,
|
8837 |
+
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
|
8838 |
+
/*
|
8839 |
+
timeout: 0,
|
8840 |
+
data: null,
|
8841 |
+
dataType: null,
|
8842 |
+
username: null,
|
8843 |
+
password: null,
|
8844 |
+
cache: null,
|
8845 |
+
throws: false,
|
8846 |
+
traditional: false,
|
8847 |
+
headers: {},
|
8848 |
+
*/
|
8849 |
+
|
8850 |
+
accepts: {
|
8851 |
+
"*": allTypes,
|
8852 |
+
text: "text/plain",
|
8853 |
+
html: "text/html",
|
8854 |
+
xml: "application/xml, text/xml",
|
8855 |
+
json: "application/json, text/javascript"
|
8856 |
+
},
|
8857 |
+
|
8858 |
+
contents: {
|
8859 |
+
xml: /xml/,
|
8860 |
+
html: /html/,
|
8861 |
+
json: /json/
|
8862 |
+
},
|
8863 |
+
|
8864 |
+
responseFields: {
|
8865 |
+
xml: "responseXML",
|
8866 |
+
text: "responseText",
|
8867 |
+
json: "responseJSON"
|
8868 |
+
},
|
8869 |
+
|
8870 |
+
// Data converters
|
8871 |
+
// Keys separate source (or catchall "*") and destination types with a single space
|
8872 |
+
converters: {
|
8873 |
+
|
8874 |
+
// Convert anything to text
|
8875 |
+
"* text": String,
|
8876 |
+
|
8877 |
+
// Text to html (true = no transformation)
|
8878 |
+
"text html": true,
|
8879 |
+
|
8880 |
+
// Evaluate text as a json expression
|
8881 |
+
"text json": jQuery.parseJSON,
|
8882 |
+
|
8883 |
+
// Parse text as xml
|
8884 |
+
"text xml": jQuery.parseXML
|
8885 |
+
},
|
8886 |
+
|
8887 |
+
// For options that shouldn't be deep extended:
|
8888 |
+
// you can add your own custom options here if
|
8889 |
+
// and when you create one that shouldn't be
|
8890 |
+
// deep extended (see ajaxExtend)
|
8891 |
+
flatOptions: {
|
8892 |
+
url: true,
|
8893 |
+
context: true
|
8894 |
+
}
|
8895 |
+
},
|
8896 |
+
|
8897 |
+
// Creates a full fledged settings object into target
|
8898 |
+
// with both ajaxSettings and settings fields.
|
8899 |
+
// If target is omitted, writes into ajaxSettings.
|
8900 |
+
ajaxSetup: function( target, settings ) {
|
8901 |
+
return settings ?
|
8902 |
+
|
8903 |
+
// Building a settings object
|
8904 |
+
ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
|
8905 |
+
|
8906 |
+
// Extending ajaxSettings
|
8907 |
+
ajaxExtend( jQuery.ajaxSettings, target );
|
8908 |
+
},
|
8909 |
+
|
8910 |
+
ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
|
8911 |
+
ajaxTransport: addToPrefiltersOrTransports( transports ),
|
8912 |
+
|
8913 |
+
// Main method
|
8914 |
+
ajax: function( url, options ) {
|
8915 |
+
|
8916 |
+
// If url is an object, simulate pre-1.5 signature
|
8917 |
+
if ( typeof url === "object" ) {
|
8918 |
+
options = url;
|
8919 |
+
url = undefined;
|
8920 |
+
}
|
8921 |
+
|
8922 |
+
// Force options to be an object
|
8923 |
+
options = options || {};
|
8924 |
+
|
8925 |
+
var // Cross-domain detection vars
|
8926 |
+
parts,
|
8927 |
+
// Loop variable
|
8928 |
+
i,
|
8929 |
+
// URL without anti-cache param
|
8930 |
+
cacheURL,
|
8931 |
+
// Response headers as string
|
8932 |
+
responseHeadersString,
|
8933 |
+
// timeout handle
|
8934 |
+
timeoutTimer,
|
8935 |
+
|
8936 |
+
// To know if global events are to be dispatched
|
8937 |
+
fireGlobals,
|
8938 |
+
|
8939 |
+
transport,
|
8940 |
+
// Response headers
|
8941 |
+
responseHeaders,
|
8942 |
+
// Create the final options object
|
8943 |
+
s = jQuery.ajaxSetup( {}, options ),
|
8944 |
+
// Callbacks context
|
8945 |
+
callbackContext = s.context || s,
|
8946 |
+
// Context for global events is callbackContext if it is a DOM node or jQuery collection
|
8947 |
+
globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
|
8948 |
+
jQuery( callbackContext ) :
|
8949 |
+
jQuery.event,
|
8950 |
+
// Deferreds
|
8951 |
+
deferred = jQuery.Deferred(),
|
8952 |
+
completeDeferred = jQuery.Callbacks("once memory"),
|
8953 |
+
// Status-dependent callbacks
|
8954 |
+
statusCode = s.statusCode || {},
|
8955 |
+
// Headers (they are sent all at once)
|
8956 |
+
requestHeaders = {},
|
8957 |
+
requestHeadersNames = {},
|
8958 |
+
// The jqXHR state
|
8959 |
+
state = 0,
|
8960 |
+
// Default abort message
|
8961 |
+
strAbort = "canceled",
|
8962 |
+
// Fake xhr
|
8963 |
+
jqXHR = {
|
8964 |
+
readyState: 0,
|
8965 |
+
|
8966 |
+
// Builds headers hashtable if needed
|
8967 |
+
getResponseHeader: function( key ) {
|
8968 |
+
var match;
|
8969 |
+
if ( state === 2 ) {
|
8970 |
+
if ( !responseHeaders ) {
|
8971 |
+
responseHeaders = {};
|
8972 |
+
while ( (match = rheaders.exec( responseHeadersString )) ) {
|
8973 |
+
responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
|
8974 |
+
}
|
8975 |
+
}
|
8976 |
+
match = responseHeaders[ key.toLowerCase() ];
|
8977 |
+
}
|
8978 |
+
return match == null ? null : match;
|
8979 |
+
},
|
8980 |
+
|
8981 |
+
// Raw string
|
8982 |
+
getAllResponseHeaders: function() {
|
8983 |
+
return state === 2 ? responseHeadersString : null;
|
8984 |
+
},
|
8985 |
+
|
8986 |
+
// Caches the header
|
8987 |
+
setRequestHeader: function( name, value ) {
|
8988 |
+
var lname = name.toLowerCase();
|
8989 |
+
if ( !state ) {
|
8990 |
+
name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
|
8991 |
+
requestHeaders[ name ] = value;
|
8992 |
+
}
|
8993 |
+
return this;
|
8994 |
+
},
|
8995 |
+
|
8996 |
+
// Overrides response content-type header
|
8997 |
+
overrideMimeType: function( type ) {
|
8998 |
+
if ( !state ) {
|
8999 |
+
s.mimeType = type;
|
9000 |
+
}
|
9001 |
+
return this;
|
9002 |
+
},
|
9003 |
+
|
9004 |
+
// Status-dependent callbacks
|
9005 |
+
statusCode: function( map ) {
|
9006 |
+
var code;
|
9007 |
+
if ( map ) {
|
9008 |
+
if ( state < 2 ) {
|
9009 |
+
for ( code in map ) {
|
9010 |
+
// Lazy-add the new callback in a way that preserves old ones
|
9011 |
+
statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
|
9012 |
+
}
|
9013 |
+
} else {
|
9014 |
+
// Execute the appropriate callbacks
|
9015 |
+
jqXHR.always( map[ jqXHR.status ] );
|
9016 |
+
}
|
9017 |
+
}
|
9018 |
+
return this;
|
9019 |
+
},
|
9020 |
+
|
9021 |
+
// Cancel the request
|
9022 |
+
abort: function( statusText ) {
|
9023 |
+
var finalText = statusText || strAbort;
|
9024 |
+
if ( transport ) {
|
9025 |
+
transport.abort( finalText );
|
9026 |
+
}
|
9027 |
+
done( 0, finalText );
|
9028 |
+
return this;
|
9029 |
+
}
|
9030 |
+
};
|
9031 |
+
|
9032 |
+
// Attach deferreds
|
9033 |
+
deferred.promise( jqXHR ).complete = completeDeferred.add;
|
9034 |
+
jqXHR.success = jqXHR.done;
|
9035 |
+
jqXHR.error = jqXHR.fail;
|
9036 |
+
|
9037 |
+
// Remove hash character (#7531: and string promotion)
|
9038 |
+
// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
|
9039 |
+
// Handle falsy url in the settings object (#10093: consistency with old signature)
|
9040 |
+
// We also use the url parameter if available
|
9041 |
+
s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
|
9042 |
+
|
9043 |
+
// Alias method option to type as per ticket #12004
|
9044 |
+
s.type = options.method || options.type || s.method || s.type;
|
9045 |
+
|
9046 |
+
// Extract dataTypes list
|
9047 |
+
s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
|
9048 |
+
|
9049 |
+
// A cross-domain request is in order when we have a protocol:host:port mismatch
|
9050 |
+
if ( s.crossDomain == null ) {
|
9051 |
+
parts = rurl.exec( s.url.toLowerCase() );
|
9052 |
+
s.crossDomain = !!( parts &&
|
9053 |
+
( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
|
9054 |
+
( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
|
9055 |
+
( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
|
9056 |
+
);
|
9057 |
+
}
|
9058 |
+
|
9059 |
+
// Convert data if not already a string
|
9060 |
+
if ( s.data && s.processData && typeof s.data !== "string" ) {
|
9061 |
+
s.data = jQuery.param( s.data, s.traditional );
|
9062 |
+
}
|
9063 |
+
|
9064 |
+
// Apply prefilters
|
9065 |
+
inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
|
9066 |
+
|
9067 |
+
// If request was aborted inside a prefilter, stop there
|
9068 |
+
if ( state === 2 ) {
|
9069 |
+
return jqXHR;
|
9070 |
+
}
|
9071 |
+
|
9072 |
+
// We can fire global events as of now if asked to
|
9073 |
+
fireGlobals = s.global;
|
9074 |
+
|
9075 |
+
// Watch for a new set of requests
|
9076 |
+
if ( fireGlobals && jQuery.active++ === 0 ) {
|
9077 |
+
jQuery.event.trigger("ajaxStart");
|
9078 |
+
}
|
9079 |
+
|
9080 |
+
// Uppercase the type
|
9081 |
+
s.type = s.type.toUpperCase();
|
9082 |
+
|
9083 |
+
// Determine if request has content
|
9084 |
+
s.hasContent = !rnoContent.test( s.type );
|
9085 |
+
|
9086 |
+
// Save the URL in case we're toying with the If-Modified-Since
|
9087 |
+
// and/or If-None-Match header later on
|
9088 |
+
cacheURL = s.url;
|
9089 |
+
|
9090 |
+
// More options handling for requests with no content
|
9091 |
+
if ( !s.hasContent ) {
|
9092 |
+
|
9093 |
+
// If data is available, append data to url
|
9094 |
+
if ( s.data ) {
|
9095 |
+
cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
|
9096 |
+
// #9682: remove data so that it's not used in an eventual retry
|
9097 |
+
delete s.data;
|
9098 |
+
}
|
9099 |
+
|
9100 |
+
// Add anti-cache in url if needed
|
9101 |
+
if ( s.cache === false ) {
|
9102 |
+
s.url = rts.test( cacheURL ) ?
|
9103 |
+
|
9104 |
+
// If there is already a '_' parameter, set its value
|
9105 |
+
cacheURL.replace( rts, "$1_=" + nonce++ ) :
|
9106 |
+
|
9107 |
+
// Otherwise add one to the end
|
9108 |
+
cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
|
9109 |
+
}
|
9110 |
+
}
|
9111 |
+
|
9112 |
+
// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
|
9113 |
+
if ( s.ifModified ) {
|
9114 |
+
if ( jQuery.lastModified[ cacheURL ] ) {
|
9115 |
+
jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
|
9116 |
+
}
|
9117 |
+
if ( jQuery.etag[ cacheURL ] ) {
|
9118 |
+
jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
|
9119 |
+
}
|
9120 |
+
}
|
9121 |
+
|
9122 |
+
// Set the correct header, if data is being sent
|
9123 |
+
if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
|
9124 |
+
jqXHR.setRequestHeader( "Content-Type", s.contentType );
|
9125 |
+
}
|
9126 |
+
|
9127 |
+
// Set the Accepts header for the server, depending on the dataType
|
9128 |
+
jqXHR.setRequestHeader(
|
9129 |
+
"Accept",
|
9130 |
+
s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
|
9131 |
+
s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
|
9132 |
+
s.accepts[ "*" ]
|
9133 |
+
);
|
9134 |
+
|
9135 |
+
// Check for headers option
|
9136 |
+
for ( i in s.headers ) {
|
9137 |
+
jqXHR.setRequestHeader( i, s.headers[ i ] );
|
9138 |
+
}
|
9139 |
+
|
9140 |
+
// Allow custom headers/mimetypes and early abort
|
9141 |
+
if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
|
9142 |
+
// Abort if not done already and return
|
9143 |
+
return jqXHR.abort();
|
9144 |
+
}
|
9145 |
+
|
9146 |
+
// aborting is no longer a cancellation
|
9147 |
+
strAbort = "abort";
|
9148 |
+
|
9149 |
+
// Install callbacks on deferreds
|
9150 |
+
for ( i in { success: 1, error: 1, complete: 1 } ) {
|
9151 |
+
jqXHR[ i ]( s[ i ] );
|
9152 |
+
}
|
9153 |
+
|
9154 |
+
// Get transport
|
9155 |
+
transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
|
9156 |
+
|
9157 |
+
// If no transport, we auto-abort
|
9158 |
+
if ( !transport ) {
|
9159 |
+
done( -1, "No Transport" );
|
9160 |
+
} else {
|
9161 |
+
jqXHR.readyState = 1;
|
9162 |
+
|
9163 |
+
// Send global event
|
9164 |
+
if ( fireGlobals ) {
|
9165 |
+
globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
|
9166 |
+
}
|
9167 |
+
// Timeout
|
9168 |
+
if ( s.async && s.timeout > 0 ) {
|
9169 |
+
timeoutTimer = setTimeout(function() {
|
9170 |
+
jqXHR.abort("timeout");
|
9171 |
+
}, s.timeout );
|
9172 |
+
}
|
9173 |
+
|
9174 |
+
try {
|
9175 |
+
state = 1;
|
9176 |
+
transport.send( requestHeaders, done );
|
9177 |
+
} catch ( e ) {
|
9178 |
+
// Propagate exception as error if not done
|
9179 |
+
if ( state < 2 ) {
|
9180 |
+
done( -1, e );
|
9181 |
+
// Simply rethrow otherwise
|
9182 |
+
} else {
|
9183 |
+
throw e;
|
9184 |
+
}
|
9185 |
+
}
|
9186 |
+
}
|
9187 |
+
|
9188 |
+
// Callback for when everything is done
|
9189 |
+
function done( status, nativeStatusText, responses, headers ) {
|
9190 |
+
var isSuccess, success, error, response, modified,
|
9191 |
+
statusText = nativeStatusText;
|
9192 |
+
|
9193 |
+
// Called once
|
9194 |
+
if ( state === 2 ) {
|
9195 |
+
return;
|
9196 |
+
}
|
9197 |
+
|
9198 |
+
// State is "done" now
|
9199 |
+
state = 2;
|
9200 |
+
|
9201 |
+
// Clear timeout if it exists
|
9202 |
+
if ( timeoutTimer ) {
|
9203 |
+
clearTimeout( timeoutTimer );
|
9204 |
+
}
|
9205 |
+
|
9206 |
+
// Dereference transport for early garbage collection
|
9207 |
+
// (no matter how long the jqXHR object will be used)
|
9208 |
+
transport = undefined;
|
9209 |
+
|
9210 |
+
// Cache response headers
|
9211 |
+
responseHeadersString = headers || "";
|
9212 |
+
|
9213 |
+
// Set readyState
|
9214 |
+
jqXHR.readyState = status > 0 ? 4 : 0;
|
9215 |
+
|
9216 |
+
// Determine if successful
|
9217 |
+
isSuccess = status >= 200 && status < 300 || status === 304;
|
9218 |
+
|
9219 |
+
// Get response data
|
9220 |
+
if ( responses ) {
|
9221 |
+
response = ajaxHandleResponses( s, jqXHR, responses );
|
9222 |
+
}
|
9223 |
+
|
9224 |
+
// Convert no matter what (that way responseXXX fields are always set)
|
9225 |
+
response = ajaxConvert( s, response, jqXHR, isSuccess );
|
9226 |
+
|
9227 |
+
// If successful, handle type chaining
|
9228 |
+
if ( isSuccess ) {
|
9229 |
+
|
9230 |
+
// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
|
9231 |
+
if ( s.ifModified ) {
|
9232 |
+
modified = jqXHR.getResponseHeader("Last-Modified");
|
9233 |
+
if ( modified ) {
|
9234 |
+
jQuery.lastModified[ cacheURL ] = modified;
|
9235 |
+
}
|
9236 |
+
modified = jqXHR.getResponseHeader("etag");
|
9237 |
+
if ( modified ) {
|
9238 |
+
jQuery.etag[ cacheURL ] = modified;
|
9239 |
+
}
|
9240 |
+
}
|
9241 |
+
|
9242 |
+
// if no content
|
9243 |
+
if ( status === 204 || s.type === "HEAD" ) {
|
9244 |
+
statusText = "nocontent";
|
9245 |
+
|
9246 |
+
// if not modified
|
9247 |
+
} else if ( status === 304 ) {
|
9248 |
+
statusText = "notmodified";
|
9249 |
+
|
9250 |
+
// If we have data, let's convert it
|
9251 |
+
} else {
|
9252 |
+
statusText = response.state;
|
9253 |
+
success = response.data;
|
9254 |
+
error = response.error;
|
9255 |
+
isSuccess = !error;
|
9256 |
+
}
|
9257 |
+
} else {
|
9258 |
+
// We extract error from statusText
|
9259 |
+
// then normalize statusText and status for non-aborts
|
9260 |
+
error = statusText;
|
9261 |
+
if ( status || !statusText ) {
|
9262 |
+
statusText = "error";
|
9263 |
+
if ( status < 0 ) {
|
9264 |
+
status = 0;
|
9265 |
+
}
|
9266 |
+
}
|
9267 |
+
}
|
9268 |
+
|
9269 |
+
// Set data for the fake xhr object
|
9270 |
+
jqXHR.status = status;
|
9271 |
+
jqXHR.statusText = ( nativeStatusText || statusText ) + "";
|
9272 |
+
|
9273 |
+
// Success/Error
|
9274 |
+
if ( isSuccess ) {
|
9275 |
+
deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
|
9276 |
+
} else {
|
9277 |
+
deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
|
9278 |
+
}
|
9279 |
+
|
9280 |
+
// Status-dependent callbacks
|
9281 |
+
jqXHR.statusCode( statusCode );
|
9282 |
+
statusCode = undefined;
|
9283 |
+
|
9284 |
+
if ( fireGlobals ) {
|
9285 |
+
globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
|
9286 |
+
[ jqXHR, s, isSuccess ? success : error ] );
|
9287 |
+
}
|
9288 |
+
|
9289 |
+
// Complete
|
9290 |
+
completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
|
9291 |
+
|
9292 |
+
if ( fireGlobals ) {
|
9293 |
+
globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
|
9294 |
+
// Handle the global AJAX counter
|
9295 |
+
if ( !( --jQuery.active ) ) {
|
9296 |
+
jQuery.event.trigger("ajaxStop");
|
9297 |
+
}
|
9298 |
+
}
|
9299 |
+
}
|
9300 |
+
|
9301 |
+
return jqXHR;
|
9302 |
+
},
|
9303 |
+
|
9304 |
+
getJSON: function( url, data, callback ) {
|
9305 |
+
return jQuery.get( url, data, callback, "json" );
|
9306 |
+
},
|
9307 |
+
|
9308 |
+
getScript: function( url, callback ) {
|
9309 |
+
return jQuery.get( url, undefined, callback, "script" );
|
9310 |
+
}
|
9311 |
+
});
|
9312 |
+
|
9313 |
+
jQuery.each( [ "get", "post" ], function( i, method ) {
|
9314 |
+
jQuery[ method ] = function( url, data, callback, type ) {
|
9315 |
+
// shift arguments if data argument was omitted
|
9316 |
+
if ( jQuery.isFunction( data ) ) {
|
9317 |
+
type = type || callback;
|
9318 |
+
callback = data;
|
9319 |
+
data = undefined;
|
9320 |
+
}
|
9321 |
+
|
9322 |
+
return jQuery.ajax({
|
9323 |
+
url: url,
|
9324 |
+
type: method,
|
9325 |
+
dataType: type,
|
9326 |
+
data: data,
|
9327 |
+
success: callback
|
9328 |
+
});
|
9329 |
+
};
|
9330 |
+
});
|
9331 |
+
|
9332 |
+
// Attach a bunch of functions for handling common AJAX events
|
9333 |
+
jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
|
9334 |
+
jQuery.fn[ type ] = function( fn ) {
|
9335 |
+
return this.on( type, fn );
|
9336 |
+
};
|
9337 |
+
});
|
9338 |
+
|
9339 |
+
|
9340 |
+
jQuery._evalUrl = function( url ) {
|
9341 |
+
return jQuery.ajax({
|
9342 |
+
url: url,
|
9343 |
+
type: "GET",
|
9344 |
+
dataType: "script",
|
9345 |
+
async: false,
|
9346 |
+
global: false,
|
9347 |
+
"throws": true
|
9348 |
+
});
|
9349 |
+
};
|
9350 |
+
|
9351 |
+
|
9352 |
+
jQuery.fn.extend({
|
9353 |
+
wrapAll: function( html ) {
|
9354 |
+
if ( jQuery.isFunction( html ) ) {
|
9355 |
+
return this.each(function(i) {
|
9356 |
+
jQuery(this).wrapAll( html.call(this, i) );
|
9357 |
+
});
|
9358 |
+
}
|
9359 |
+
|
9360 |
+
if ( this[0] ) {
|
9361 |
+
// The elements to wrap the target around
|
9362 |
+
var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
|
9363 |
+
|
9364 |
+
if ( this[0].parentNode ) {
|
9365 |
+
wrap.insertBefore( this[0] );
|
9366 |
+
}
|
9367 |
+
|
9368 |
+
wrap.map(function() {
|
9369 |
+
var elem = this;
|
9370 |
+
|
9371 |
+
while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
|
9372 |
+
elem = elem.firstChild;
|
9373 |
+
}
|
9374 |
+
|
9375 |
+
return elem;
|
9376 |
+
}).append( this );
|
9377 |
+
}
|
9378 |
+
|
9379 |
+
return this;
|
9380 |
+
},
|
9381 |
+
|
9382 |
+
wrapInner: function( html ) {
|
9383 |
+
if ( jQuery.isFunction( html ) ) {
|
9384 |
+
return this.each(function(i) {
|
9385 |
+
jQuery(this).wrapInner( html.call(this, i) );
|
9386 |
+
});
|
9387 |
+
}
|
9388 |
+
|
9389 |
+
return this.each(function() {
|
9390 |
+
var self = jQuery( this ),
|
9391 |
+
contents = self.contents();
|
9392 |
+
|
9393 |
+
if ( contents.length ) {
|
9394 |
+
contents.wrapAll( html );
|
9395 |
+
|
9396 |
+
} else {
|
9397 |
+
self.append( html );
|
9398 |
+
}
|
9399 |
+
});
|
9400 |
+
},
|
9401 |
+
|
9402 |
+
wrap: function( html ) {
|
9403 |
+
var isFunction = jQuery.isFunction( html );
|
9404 |
+
|
9405 |
+
return this.each(function(i) {
|
9406 |
+
jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
|
9407 |
+
});
|
9408 |
+
},
|
9409 |
+
|
9410 |
+
unwrap: function() {
|
9411 |
+
return this.parent().each(function() {
|
9412 |
+
if ( !jQuery.nodeName( this, "body" ) ) {
|
9413 |
+
jQuery( this ).replaceWith( this.childNodes );
|
9414 |
+
}
|
9415 |
+
}).end();
|
9416 |
+
}
|
9417 |
+
});
|
9418 |
+
|
9419 |
+
|
9420 |
+
jQuery.expr.filters.hidden = function( elem ) {
|
9421 |
+
// Support: Opera <= 12.12
|
9422 |
+
// Opera reports offsetWidths and offsetHeights less than zero on some elements
|
9423 |
+
return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||
|
9424 |
+
(!support.reliableHiddenOffsets() &&
|
9425 |
+
((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
|
9426 |
+
};
|
9427 |
+
|
9428 |
+
jQuery.expr.filters.visible = function( elem ) {
|
9429 |
+
return !jQuery.expr.filters.hidden( elem );
|
9430 |
+
};
|
9431 |
+
|
9432 |
+
|
9433 |
+
|
9434 |
+
|
9435 |
+
var r20 = /%20/g,
|
9436 |
+
rbracket = /\[\]$/,
|
9437 |
+
rCRLF = /\r?\n/g,
|
9438 |
+
rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
|
9439 |
+
rsubmittable = /^(?:input|select|textarea|keygen)/i;
|
9440 |
+
|
9441 |
+
function buildParams( prefix, obj, traditional, add ) {
|
9442 |
+
var name;
|
9443 |
+
|
9444 |
+
if ( jQuery.isArray( obj ) ) {
|
9445 |
+
// Serialize array item.
|
9446 |
+
jQuery.each( obj, function( i, v ) {
|
9447 |
+
if ( traditional || rbracket.test( prefix ) ) {
|
9448 |
+
// Treat each array item as a scalar.
|
9449 |
+
add( prefix, v );
|
9450 |
+
|
9451 |
+
} else {
|
9452 |
+
// Item is non-scalar (array or object), encode its numeric index.
|
9453 |
+
buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
|
9454 |
+
}
|
9455 |
+
});
|
9456 |
+
|
9457 |
+
} else if ( !traditional && jQuery.type( obj ) === "object" ) {
|
9458 |
+
// Serialize object item.
|
9459 |
+
for ( name in obj ) {
|
9460 |
+
buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
|
9461 |
+
}
|
9462 |
+
|
9463 |
+
} else {
|
9464 |
+
// Serialize scalar item.
|
9465 |
+
add( prefix, obj );
|
9466 |
+
}
|
9467 |
+
}
|
9468 |
+
|
9469 |
+
// Serialize an array of form elements or a set of
|
9470 |
+
// key/values into a query string
|
9471 |
+
jQuery.param = function( a, traditional ) {
|
9472 |
+
var prefix,
|
9473 |
+
s = [],
|
9474 |
+
add = function( key, value ) {
|
9475 |
+
// If value is a function, invoke it and return its value
|
9476 |
+
value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
|
9477 |
+
s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
|
9478 |
+
};
|
9479 |
+
|
9480 |
+
// Set traditional to true for jQuery <= 1.3.2 behavior.
|
9481 |
+
if ( traditional === undefined ) {
|
9482 |
+
traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
|
9483 |
+
}
|
9484 |
+
|
9485 |
+
// If an array was passed in, assume that it is an array of form elements.
|
9486 |
+
if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
|
9487 |
+
// Serialize the form elements
|
9488 |
+
jQuery.each( a, function() {
|
9489 |
+
add( this.name, this.value );
|
9490 |
+
});
|
9491 |
+
|
9492 |
+
} else {
|
9493 |
+
// If traditional, encode the "old" way (the way 1.3.2 or older
|
9494 |
+
// did it), otherwise encode params recursively.
|
9495 |
+
for ( prefix in a ) {
|
9496 |
+
buildParams( prefix, a[ prefix ], traditional, add );
|
9497 |
+
}
|
9498 |
+
}
|
9499 |
+
|
9500 |
+
// Return the resulting serialization
|
9501 |
+
return s.join( "&" ).replace( r20, "+" );
|
9502 |
+
};
|
9503 |
+
|
9504 |
+
jQuery.fn.extend({
|
9505 |
+
serialize: function() {
|
9506 |
+
return jQuery.param( this.serializeArray() );
|
9507 |
+
},
|
9508 |
+
serializeArray: function() {
|
9509 |
+
return this.map(function() {
|
9510 |
+
// Can add propHook for "elements" to filter or add form elements
|
9511 |
+
var elements = jQuery.prop( this, "elements" );
|
9512 |
+
return elements ? jQuery.makeArray( elements ) : this;
|
9513 |
+
})
|
9514 |
+
.filter(function() {
|
9515 |
+
var type = this.type;
|
9516 |
+
// Use .is(":disabled") so that fieldset[disabled] works
|
9517 |
+
return this.name && !jQuery( this ).is( ":disabled" ) &&
|
9518 |
+
rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
|
9519 |
+
( this.checked || !rcheckableType.test( type ) );
|
9520 |
+
})
|
9521 |
+
.map(function( i, elem ) {
|
9522 |
+
var val = jQuery( this ).val();
|
9523 |
+
|
9524 |
+
return val == null ?
|
9525 |
+
null :
|
9526 |
+
jQuery.isArray( val ) ?
|
9527 |
+
jQuery.map( val, function( val ) {
|
9528 |
+
return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
|
9529 |
+
}) :
|
9530 |
+
{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
|
9531 |
+
}).get();
|
9532 |
+
}
|
9533 |
+
});
|
9534 |
+
|
9535 |
+
|
9536 |
+
// Create the request object
|
9537 |
+
// (This is still attached to ajaxSettings for backward compatibility)
|
9538 |
+
jQuery.ajaxSettings.xhr = window.ActiveXObject !== undefined ?
|
9539 |
+
// Support: IE6+
|
9540 |
+
function() {
|
9541 |
+
|
9542 |
+
// XHR cannot access local files, always use ActiveX for that case
|
9543 |
+
return !this.isLocal &&
|
9544 |
+
|
9545 |
+
// Support: IE7-8
|
9546 |
+
// oldIE XHR does not support non-RFC2616 methods (#13240)
|
9547 |
+
// See http://msdn.microsoft.com/en-us/library/ie/ms536648(v=vs.85).aspx
|
9548 |
+
// and http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9
|
9549 |
+
// Although this check for six methods instead of eight
|
9550 |
+
// since IE also does not support "trace" and "connect"
|
9551 |
+
/^(get|post|head|put|delete|options)$/i.test( this.type ) &&
|
9552 |
+
|
9553 |
+
createStandardXHR() || createActiveXHR();
|
9554 |
+
} :
|
9555 |
+
// For all other browsers, use the standard XMLHttpRequest object
|
9556 |
+
createStandardXHR;
|
9557 |
+
|
9558 |
+
var xhrId = 0,
|
9559 |
+
xhrCallbacks = {},
|
9560 |
+
xhrSupported = jQuery.ajaxSettings.xhr();
|
9561 |
+
|
9562 |
+
// Support: IE<10
|
9563 |
+
// Open requests must be manually aborted on unload (#5280)
|
9564 |
+
if ( window.ActiveXObject ) {
|
9565 |
+
jQuery( window ).on( "unload", function() {
|
9566 |
+
for ( var key in xhrCallbacks ) {
|
9567 |
+
xhrCallbacks[ key ]( undefined, true );
|
9568 |
+
}
|
9569 |
+
});
|
9570 |
+
}
|
9571 |
+
|
9572 |
+
// Determine support properties
|
9573 |
+
support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
|
9574 |
+
xhrSupported = support.ajax = !!xhrSupported;
|
9575 |
+
|
9576 |
+
// Create transport if the browser can provide an xhr
|
9577 |
+
if ( xhrSupported ) {
|
9578 |
+
|
9579 |
+
jQuery.ajaxTransport(function( options ) {
|
9580 |
+
// Cross domain only allowed if supported through XMLHttpRequest
|
9581 |
+
if ( !options.crossDomain || support.cors ) {
|
9582 |
+
|
9583 |
+
var callback;
|
9584 |
+
|
9585 |
+
return {
|
9586 |
+
send: function( headers, complete ) {
|
9587 |
+
var i,
|
9588 |
+
xhr = options.xhr(),
|
9589 |
+
id = ++xhrId;
|
9590 |
+
|
9591 |
+
// Open the socket
|
9592 |
+
xhr.open( options.type, options.url, options.async, options.username, options.password );
|
9593 |
+
|
9594 |
+
// Apply custom fields if provided
|
9595 |
+
if ( options.xhrFields ) {
|
9596 |
+
for ( i in options.xhrFields ) {
|
9597 |
+
xhr[ i ] = options.xhrFields[ i ];
|
9598 |
+
}
|
9599 |
+
}
|
9600 |
+
|
9601 |
+
// Override mime type if needed
|
9602 |
+
if ( options.mimeType && xhr.overrideMimeType ) {
|
9603 |
+
xhr.overrideMimeType( options.mimeType );
|
9604 |
+
}
|
9605 |
+
|
9606 |
+
// X-Requested-With header
|
9607 |
+
// For cross-domain requests, seeing as conditions for a preflight are
|
9608 |
+
// akin to a jigsaw puzzle, we simply never set it to be sure.
|
9609 |
+
// (it can always be set on a per-request basis or even using ajaxSetup)
|
9610 |
+
// For same-domain requests, won't change header if already provided.
|
9611 |
+
if ( !options.crossDomain && !headers["X-Requested-With"] ) {
|
9612 |
+
headers["X-Requested-With"] = "XMLHttpRequest";
|
9613 |
+
}
|
9614 |
+
|
9615 |
+
// Set headers
|
9616 |
+
for ( i in headers ) {
|
9617 |
+
// Support: IE<9
|
9618 |
+
// IE's ActiveXObject throws a 'Type Mismatch' exception when setting
|
9619 |
+
// request header to a null-value.
|
9620 |
+
//
|
9621 |
+
// To keep consistent with other XHR implementations, cast the value
|
9622 |
+
// to string and ignore `undefined`.
|
9623 |
+
if ( headers[ i ] !== undefined ) {
|
9624 |
+
xhr.setRequestHeader( i, headers[ i ] + "" );
|
9625 |
+
}
|
9626 |
+
}
|
9627 |
+
|
9628 |
+
// Do send the request
|
9629 |
+
// This may raise an exception which is actually
|
9630 |
+
// handled in jQuery.ajax (so no try/catch here)
|
9631 |
+
xhr.send( ( options.hasContent && options.data ) || null );
|
9632 |
+
|
9633 |
+
// Listener
|
9634 |
+
callback = function( _, isAbort ) {
|
9635 |
+
var status, statusText, responses;
|
9636 |
+
|
9637 |
+
// Was never called and is aborted or complete
|
9638 |
+
if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
|
9639 |
+
// Clean up
|
9640 |
+
delete xhrCallbacks[ id ];
|
9641 |
+
callback = undefined;
|
9642 |
+
xhr.onreadystatechange = jQuery.noop;
|
9643 |
+
|
9644 |
+
// Abort manually if needed
|
9645 |
+
if ( isAbort ) {
|
9646 |
+
if ( xhr.readyState !== 4 ) {
|
9647 |
+
xhr.abort();
|
9648 |
+
}
|
9649 |
+
} else {
|
9650 |
+
responses = {};
|
9651 |
+
status = xhr.status;
|
9652 |
+
|
9653 |
+
// Support: IE<10
|
9654 |
+
// Accessing binary-data responseText throws an exception
|
9655 |
+
// (#11426)
|
9656 |
+
if ( typeof xhr.responseText === "string" ) {
|
9657 |
+
responses.text = xhr.responseText;
|
9658 |
+
}
|
9659 |
+
|
9660 |
+
// Firefox throws an exception when accessing
|
9661 |
+
// statusText for faulty cross-domain requests
|
9662 |
+
try {
|
9663 |
+
statusText = xhr.statusText;
|
9664 |
+
} catch( e ) {
|
9665 |
+
// We normalize with Webkit giving an empty statusText
|
9666 |
+
statusText = "";
|
9667 |
+
}
|
9668 |
+
|
9669 |
+
// Filter status for non standard behaviors
|
9670 |
+
|
9671 |
+
// If the request is local and we have data: assume a success
|
9672 |
+
// (success with no data won't get notified, that's the best we
|
9673 |
+
// can do given current implementations)
|
9674 |
+
if ( !status && options.isLocal && !options.crossDomain ) {
|
9675 |
+
status = responses.text ? 200 : 404;
|
9676 |
+
// IE - #1450: sometimes returns 1223 when it should be 204
|
9677 |
+
} else if ( status === 1223 ) {
|
9678 |
+
status = 204;
|
9679 |
+
}
|
9680 |
+
}
|
9681 |
+
}
|
9682 |
+
|
9683 |
+
// Call complete if needed
|
9684 |
+
if ( responses ) {
|
9685 |
+
complete( status, statusText, responses, xhr.getAllResponseHeaders() );
|
9686 |
+
}
|
9687 |
+
};
|
9688 |
+
|
9689 |
+
if ( !options.async ) {
|
9690 |
+
// if we're in sync mode we fire the callback
|
9691 |
+
callback();
|
9692 |
+
} else if ( xhr.readyState === 4 ) {
|
9693 |
+
// (IE6 & IE7) if it's in cache and has been
|
9694 |
+
// retrieved directly we need to fire the callback
|
9695 |
+
setTimeout( callback );
|
9696 |
+
} else {
|
9697 |
+
// Add to the list of active xhr callbacks
|
9698 |
+
xhr.onreadystatechange = xhrCallbacks[ id ] = callback;
|
9699 |
+
}
|
9700 |
+
},
|
9701 |
+
|
9702 |
+
abort: function() {
|
9703 |
+
if ( callback ) {
|
9704 |
+
callback( undefined, true );
|
9705 |
+
}
|
9706 |
+
}
|
9707 |
+
};
|
9708 |
+
}
|
9709 |
+
});
|
9710 |
+
}
|
9711 |
+
|
9712 |
+
// Functions to create xhrs
|
9713 |
+
function createStandardXHR() {
|
9714 |
+
try {
|
9715 |
+
return new window.XMLHttpRequest();
|
9716 |
+
} catch( e ) {}
|
9717 |
+
}
|
9718 |
+
|
9719 |
+
function createActiveXHR() {
|
9720 |
+
try {
|
9721 |
+
return new window.ActiveXObject( "Microsoft.XMLHTTP" );
|
9722 |
+
} catch( e ) {}
|
9723 |
+
}
|
9724 |
+
|
9725 |
+
|
9726 |
+
|
9727 |
+
|
9728 |
+
// Install script dataType
|
9729 |
+
jQuery.ajaxSetup({
|
9730 |
+
accepts: {
|
9731 |
+
script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
|
9732 |
+
},
|
9733 |
+
contents: {
|
9734 |
+
script: /(?:java|ecma)script/
|
9735 |
+
},
|
9736 |
+
converters: {
|
9737 |
+
"text script": function( text ) {
|
9738 |
+
jQuery.globalEval( text );
|
9739 |
+
return text;
|
9740 |
+
}
|
9741 |
+
}
|
9742 |
+
});
|
9743 |
+
|
9744 |
+
// Handle cache's special case and global
|
9745 |
+
jQuery.ajaxPrefilter( "script", function( s ) {
|
9746 |
+
if ( s.cache === undefined ) {
|
9747 |
+
s.cache = false;
|
9748 |
+
}
|
9749 |
+
if ( s.crossDomain ) {
|
9750 |
+
s.type = "GET";
|
9751 |
+
s.global = false;
|
9752 |
+
}
|
9753 |
+
});
|
9754 |
+
|
9755 |
+
// Bind script tag hack transport
|
9756 |
+
jQuery.ajaxTransport( "script", function(s) {
|
9757 |
+
|
9758 |
+
// This transport only deals with cross domain requests
|
9759 |
+
if ( s.crossDomain ) {
|
9760 |
+
|
9761 |
+
var script,
|
9762 |
+
head = document.head || jQuery("head")[0] || document.documentElement;
|
9763 |
+
|
9764 |
+
return {
|
9765 |
+
|
9766 |
+
send: function( _, callback ) {
|
9767 |
+
|
9768 |
+
script = document.createElement("script");
|
9769 |
+
|
9770 |
+
script.async = true;
|
9771 |
+
|
9772 |
+
if ( s.scriptCharset ) {
|
9773 |
+
script.charset = s.scriptCharset;
|
9774 |
+
}
|
9775 |
+
|
9776 |
+
script.src = s.url;
|
9777 |
+
|
9778 |
+
// Attach handlers for all browsers
|
9779 |
+
script.onload = script.onreadystatechange = function( _, isAbort ) {
|
9780 |
+
|
9781 |
+
if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
|
9782 |
+
|
9783 |
+
// Handle memory leak in IE
|
9784 |
+
script.onload = script.onreadystatechange = null;
|
9785 |
+
|
9786 |
+
// Remove the script
|
9787 |
+
if ( script.parentNode ) {
|
9788 |
+
script.parentNode.removeChild( script );
|
9789 |
+
}
|
9790 |
+
|
9791 |
+
// Dereference the script
|
9792 |
+
script = null;
|
9793 |
+
|
9794 |
+
// Callback if not abort
|
9795 |
+
if ( !isAbort ) {
|
9796 |
+
callback( 200, "success" );
|
9797 |
+
}
|
9798 |
+
}
|
9799 |
+
};
|
9800 |
+
|
9801 |
+
// Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
|
9802 |
+
// Use native DOM manipulation to avoid our domManip AJAX trickery
|
9803 |
+
head.insertBefore( script, head.firstChild );
|
9804 |
+
},
|
9805 |
+
|
9806 |
+
abort: function() {
|
9807 |
+
if ( script ) {
|
9808 |
+
script.onload( undefined, true );
|
9809 |
+
}
|
9810 |
+
}
|
9811 |
+
};
|
9812 |
+
}
|
9813 |
+
});
|
9814 |
+
|
9815 |
+
|
9816 |
+
|
9817 |
+
|
9818 |
+
var oldCallbacks = [],
|
9819 |
+
rjsonp = /(=)\?(?=&|$)|\?\?/;
|
9820 |
+
|
9821 |
+
// Default jsonp settings
|
9822 |
+
jQuery.ajaxSetup({
|
9823 |
+
jsonp: "callback",
|
9824 |
+
jsonpCallback: function() {
|
9825 |
+
var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
|
9826 |
+
this[ callback ] = true;
|
9827 |
+
return callback;
|
9828 |
+
}
|
9829 |
+
});
|
9830 |
+
|
9831 |
+
// Detect, normalize options and install callbacks for jsonp requests
|
9832 |
+
jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
|
9833 |
+
|
9834 |
+
var callbackName, overwritten, responseContainer,
|
9835 |
+
jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
|
9836 |
+
"url" :
|
9837 |
+
typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
|
9838 |
+
);
|
9839 |
+
|
9840 |
+
// Handle iff the expected data type is "jsonp" or we have a parameter to set
|
9841 |
+
if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
|
9842 |
+
|
9843 |
+
// Get callback name, remembering preexisting value associated with it
|
9844 |
+
callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
|
9845 |
+
s.jsonpCallback() :
|
9846 |
+
s.jsonpCallback;
|
9847 |
+
|
9848 |
+
// Insert callback into url or form data
|
9849 |
+
if ( jsonProp ) {
|
9850 |
+
s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
|
9851 |
+
} else if ( s.jsonp !== false ) {
|
9852 |
+
s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
|
9853 |
+
}
|
9854 |
+
|
9855 |
+
// Use data converter to retrieve json after script execution
|
9856 |
+
s.converters["script json"] = function() {
|
9857 |
+
if ( !responseContainer ) {
|
9858 |
+
jQuery.error( callbackName + " was not called" );
|
9859 |
+
}
|
9860 |
+
return responseContainer[ 0 ];
|
9861 |
+
};
|
9862 |
+
|
9863 |
+
// force json dataType
|
9864 |
+
s.dataTypes[ 0 ] = "json";
|
9865 |
+
|
9866 |
+
// Install callback
|
9867 |
+
overwritten = window[ callbackName ];
|
9868 |
+
window[ callbackName ] = function() {
|
9869 |
+
responseContainer = arguments;
|
9870 |
+
};
|
9871 |
+
|
9872 |
+
// Clean-up function (fires after converters)
|
9873 |
+
jqXHR.always(function() {
|
9874 |
+
// Restore preexisting value
|
9875 |
+
window[ callbackName ] = overwritten;
|
9876 |
+
|
9877 |
+
// Save back as free
|
9878 |
+
if ( s[ callbackName ] ) {
|
9879 |
+
// make sure that re-using the options doesn't screw things around
|
9880 |
+
s.jsonpCallback = originalSettings.jsonpCallback;
|
9881 |
+
|
9882 |
+
// save the callback name for future use
|
9883 |
+
oldCallbacks.push( callbackName );
|
9884 |
+
}
|
9885 |
+
|
9886 |
+
// Call if it was a function and we have a response
|
9887 |
+
if ( responseContainer && jQuery.isFunction( overwritten ) ) {
|
9888 |
+
overwritten( responseContainer[ 0 ] );
|
9889 |
+
}
|
9890 |
+
|
9891 |
+
responseContainer = overwritten = undefined;
|
9892 |
+
});
|
9893 |
+
|
9894 |
+
// Delegate to script
|
9895 |
+
return "script";
|
9896 |
+
}
|
9897 |
+
});
|
9898 |
+
|
9899 |
+
|
9900 |
+
|
9901 |
+
|
9902 |
+
// data: string of html
|
9903 |
+
// context (optional): If specified, the fragment will be created in this context, defaults to document
|
9904 |
+
// keepScripts (optional): If true, will include scripts passed in the html string
|
9905 |
+
jQuery.parseHTML = function( data, context, keepScripts ) {
|
9906 |
+
if ( !data || typeof data !== "string" ) {
|
9907 |
+
return null;
|
9908 |
+
}
|
9909 |
+
if ( typeof context === "boolean" ) {
|
9910 |
+
keepScripts = context;
|
9911 |
+
context = false;
|
9912 |
+
}
|
9913 |
+
context = context || document;
|
9914 |
+
|
9915 |
+
var parsed = rsingleTag.exec( data ),
|
9916 |
+
scripts = !keepScripts && [];
|
9917 |
+
|
9918 |
+
// Single tag
|
9919 |
+
if ( parsed ) {
|
9920 |
+
return [ context.createElement( parsed[1] ) ];
|
9921 |
+
}
|
9922 |
+
|
9923 |
+
parsed = jQuery.buildFragment( [ data ], context, scripts );
|
9924 |
+
|
9925 |
+
if ( scripts && scripts.length ) {
|
9926 |
+
jQuery( scripts ).remove();
|
9927 |
+
}
|
9928 |
+
|
9929 |
+
return jQuery.merge( [], parsed.childNodes );
|
9930 |
+
};
|
9931 |
+
|
9932 |
+
|
9933 |
+
// Keep a copy of the old load method
|
9934 |
+
var _load = jQuery.fn.load;
|
9935 |
+
|
9936 |
+
/**
|
9937 |
+
* Load a url into a page
|
9938 |
+
*/
|
9939 |
+
jQuery.fn.load = function( url, params, callback ) {
|
9940 |
+
if ( typeof url !== "string" && _load ) {
|
9941 |
+
return _load.apply( this, arguments );
|
9942 |
+
}
|
9943 |
+
|
9944 |
+
var selector, response, type,
|
9945 |
+
self = this,
|
9946 |
+
off = url.indexOf(" ");
|
9947 |
+
|
9948 |
+
if ( off >= 0 ) {
|
9949 |
+
selector = jQuery.trim( url.slice( off, url.length ) );
|
9950 |
+
url = url.slice( 0, off );
|
9951 |
+
}
|
9952 |
+
|
9953 |
+
// If it's a function
|
9954 |
+
if ( jQuery.isFunction( params ) ) {
|
9955 |
+
|
9956 |
+
// We assume that it's the callback
|
9957 |
+
callback = params;
|
9958 |
+
params = undefined;
|
9959 |
+
|
9960 |
+
// Otherwise, build a param string
|
9961 |
+
} else if ( params && typeof params === "object" ) {
|
9962 |
+
type = "POST";
|
9963 |
+
}
|
9964 |
+
|
9965 |
+
// If we have elements to modify, make the request
|
9966 |
+
if ( self.length > 0 ) {
|
9967 |
+
jQuery.ajax({
|
9968 |
+
url: url,
|
9969 |
+
|
9970 |
+
// if "type" variable is undefined, then "GET" method will be used
|
9971 |
+
type: type,
|
9972 |
+
dataType: "html",
|
9973 |
+
data: params
|
9974 |
+
}).done(function( responseText ) {
|
9975 |
+
|
9976 |
+
// Save response for use in complete callback
|
9977 |
+
response = arguments;
|
9978 |
+
|
9979 |
+
self.html( selector ?
|
9980 |
+
|
9981 |
+
// If a selector was specified, locate the right elements in a dummy div
|
9982 |
+
// Exclude scripts to avoid IE 'Permission Denied' errors
|
9983 |
+
jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
|
9984 |
+
|
9985 |
+
// Otherwise use the full result
|
9986 |
+
responseText );
|
9987 |
+
|
9988 |
+
}).complete( callback && function( jqXHR, status ) {
|
9989 |
+
self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
|
9990 |
+
});
|
9991 |
+
}
|
9992 |
+
|
9993 |
+
return this;
|
9994 |
+
};
|
9995 |
+
|
9996 |
+
|
9997 |
+
|
9998 |
+
|
9999 |
+
jQuery.expr.filters.animated = function( elem ) {
|
10000 |
+
return jQuery.grep(jQuery.timers, function( fn ) {
|
10001 |
+
return elem === fn.elem;
|
10002 |
+
}).length;
|
10003 |
+
};
|
10004 |
+
|
10005 |
+
|
10006 |
+
|
10007 |
+
|
10008 |
+
|
10009 |
+
var docElem = window.document.documentElement;
|
10010 |
+
|
10011 |
+
/**
|
10012 |
+
* Gets a window from an element
|
10013 |
+
*/
|
10014 |
+
function getWindow( elem ) {
|
10015 |
+
return jQuery.isWindow( elem ) ?
|
10016 |
+
elem :
|
10017 |
+
elem.nodeType === 9 ?
|
10018 |
+
elem.defaultView || elem.parentWindow :
|
10019 |
+
false;
|
10020 |
+
}
|
10021 |
+
|
10022 |
+
jQuery.offset = {
|
10023 |
+
setOffset: function( elem, options, i ) {
|
10024 |
+
var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
|
10025 |
+
position = jQuery.css( elem, "position" ),
|
10026 |
+
curElem = jQuery( elem ),
|
10027 |
+
props = {};
|
10028 |
+
|
10029 |
+
// set position first, in-case top/left are set even on static elem
|
10030 |
+
if ( position === "static" ) {
|
10031 |
+
elem.style.position = "relative";
|
10032 |
+
}
|
10033 |
+
|
10034 |
+
curOffset = curElem.offset();
|
10035 |
+
curCSSTop = jQuery.css( elem, "top" );
|
10036 |
+
curCSSLeft = jQuery.css( elem, "left" );
|
10037 |
+
calculatePosition = ( position === "absolute" || position === "fixed" ) &&
|
10038 |
+
jQuery.inArray("auto", [ curCSSTop, curCSSLeft ] ) > -1;
|
10039 |
+
|
10040 |
+
// need to be able to calculate position if either top or left is auto and position is either absolute or fixed
|
10041 |
+
if ( calculatePosition ) {
|
10042 |
+
curPosition = curElem.position();
|
10043 |
+
curTop = curPosition.top;
|
10044 |
+
curLeft = curPosition.left;
|
10045 |
+
} else {
|
10046 |
+
curTop = parseFloat( curCSSTop ) || 0;
|
10047 |
+
curLeft = parseFloat( curCSSLeft ) || 0;
|
10048 |
+
}
|
10049 |
+
|
10050 |
+
if ( jQuery.isFunction( options ) ) {
|
10051 |
+
options = options.call( elem, i, curOffset );
|
10052 |
+
}
|
10053 |
+
|
10054 |
+
if ( options.top != null ) {
|
10055 |
+
props.top = ( options.top - curOffset.top ) + curTop;
|
10056 |
+
}
|
10057 |
+
if ( options.left != null ) {
|
10058 |
+
props.left = ( options.left - curOffset.left ) + curLeft;
|
10059 |
+
}
|
10060 |
+
|
10061 |
+
if ( "using" in options ) {
|
10062 |
+
options.using.call( elem, props );
|
10063 |
+
} else {
|
10064 |
+
curElem.css( props );
|
10065 |
+
}
|
10066 |
+
}
|
10067 |
+
};
|
10068 |
+
|
10069 |
+
jQuery.fn.extend({
|
10070 |
+
offset: function( options ) {
|
10071 |
+
if ( arguments.length ) {
|
10072 |
+
return options === undefined ?
|
10073 |
+
this :
|
10074 |
+
this.each(function( i ) {
|
10075 |
+
jQuery.offset.setOffset( this, options, i );
|
10076 |
+
});
|
10077 |
+
}
|
10078 |
+
|
10079 |
+
var docElem, win,
|
10080 |
+
box = { top: 0, left: 0 },
|
10081 |
+
elem = this[ 0 ],
|
10082 |
+
doc = elem && elem.ownerDocument;
|
10083 |
+
|
10084 |
+
if ( !doc ) {
|
10085 |
+
return;
|
10086 |
+
}
|
10087 |
+
|
10088 |
+
docElem = doc.documentElement;
|
10089 |
+
|
10090 |
+
// Make sure it's not a disconnected DOM node
|
10091 |
+
if ( !jQuery.contains( docElem, elem ) ) {
|
10092 |
+
return box;
|
10093 |
+
}
|
10094 |
+
|
10095 |
+
// If we don't have gBCR, just use 0,0 rather than error
|
10096 |
+
// BlackBerry 5, iOS 3 (original iPhone)
|
10097 |
+
if ( typeof elem.getBoundingClientRect !== strundefined ) {
|
10098 |
+
box = elem.getBoundingClientRect();
|
10099 |
+
}
|
10100 |
+
win = getWindow( doc );
|
10101 |
+
return {
|
10102 |
+
top: box.top + ( win.pageYOffset || docElem.scrollTop ) - ( docElem.clientTop || 0 ),
|
10103 |
+
left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )
|
10104 |
+
};
|
10105 |
+
},
|
10106 |
+
|
10107 |
+
position: function() {
|
10108 |
+
if ( !this[ 0 ] ) {
|
10109 |
+
return;
|
10110 |
+
}
|
10111 |
+
|
10112 |
+
var offsetParent, offset,
|
10113 |
+
parentOffset = { top: 0, left: 0 },
|
10114 |
+
elem = this[ 0 ];
|
10115 |
+
|
10116 |
+
// fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
|
10117 |
+
if ( jQuery.css( elem, "position" ) === "fixed" ) {
|
10118 |
+
// we assume that getBoundingClientRect is available when computed position is fixed
|
10119 |
+
offset = elem.getBoundingClientRect();
|
10120 |
+
} else {
|
10121 |
+
// Get *real* offsetParent
|
10122 |
+
offsetParent = this.offsetParent();
|
10123 |
+
|
10124 |
+
// Get correct offsets
|
10125 |
+
offset = this.offset();
|
10126 |
+
if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
|
10127 |
+
parentOffset = offsetParent.offset();
|
10128 |
+
}
|
10129 |
+
|
10130 |
+
// Add offsetParent borders
|
10131 |
+
parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
|
10132 |
+
parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
|
10133 |
+
}
|
10134 |
+
|
10135 |
+
// Subtract parent offsets and element margins
|
10136 |
+
// note: when an element has margin: auto the offsetLeft and marginLeft
|
10137 |
+
// are the same in Safari causing offset.left to incorrectly be 0
|
10138 |
+
return {
|
10139 |
+
top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
|
10140 |
+
left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
|
10141 |
+
};
|
10142 |
+
},
|
10143 |
+
|
10144 |
+
offsetParent: function() {
|
10145 |
+
return this.map(function() {
|
10146 |
+
var offsetParent = this.offsetParent || docElem;
|
10147 |
+
|
10148 |
+
while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
|
10149 |
+
offsetParent = offsetParent.offsetParent;
|
10150 |
+
}
|
10151 |
+
return offsetParent || docElem;
|
10152 |
+
});
|
10153 |
+
}
|
10154 |
+
});
|
10155 |
+
|
10156 |
+
// Create scrollLeft and scrollTop methods
|
10157 |
+
jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
|
10158 |
+
var top = /Y/.test( prop );
|
10159 |
+
|
10160 |
+
jQuery.fn[ method ] = function( val ) {
|
10161 |
+
return access( this, function( elem, method, val ) {
|
10162 |
+
var win = getWindow( elem );
|
10163 |
+
|
10164 |
+
if ( val === undefined ) {
|
10165 |
+
return win ? (prop in win) ? win[ prop ] :
|
10166 |
+
win.document.documentElement[ method ] :
|
10167 |
+
elem[ method ];
|
10168 |
+
}
|
10169 |
+
|
10170 |
+
if ( win ) {
|
10171 |
+
win.scrollTo(
|
10172 |
+
!top ? val : jQuery( win ).scrollLeft(),
|
10173 |
+
top ? val : jQuery( win ).scrollTop()
|
10174 |
+
);
|
10175 |
+
|
10176 |
+
} else {
|
10177 |
+
elem[ method ] = val;
|
10178 |
+
}
|
10179 |
+
}, method, val, arguments.length, null );
|
10180 |
+
};
|
10181 |
+
});
|
10182 |
+
|
10183 |
+
// Add the top/left cssHooks using jQuery.fn.position
|
10184 |
+
// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
|
10185 |
+
// getComputedStyle returns percent when specified for top/left/bottom/right
|
10186 |
+
// rather than make the css module depend on the offset module, we just check for it here
|
10187 |
+
jQuery.each( [ "top", "left" ], function( i, prop ) {
|
10188 |
+
jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
|
10189 |
+
function( elem, computed ) {
|
10190 |
+
if ( computed ) {
|
10191 |
+
computed = curCSS( elem, prop );
|
10192 |
+
// if curCSS returns percentage, fallback to offset
|
10193 |
+
return rnumnonpx.test( computed ) ?
|
10194 |
+
jQuery( elem ).position()[ prop ] + "px" :
|
10195 |
+
computed;
|
10196 |
+
}
|
10197 |
+
}
|
10198 |
+
);
|
10199 |
+
});
|
10200 |
+
|
10201 |
+
|
10202 |
+
// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
|
10203 |
+
jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
|
10204 |
+
jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
|
10205 |
+
// margin is only for outerHeight, outerWidth
|
10206 |
+
jQuery.fn[ funcName ] = function( margin, value ) {
|
10207 |
+
var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
|
10208 |
+
extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
|
10209 |
+
|
10210 |
+
return access( this, function( elem, type, value ) {
|
10211 |
+
var doc;
|
10212 |
+
|
10213 |
+
if ( jQuery.isWindow( elem ) ) {
|
10214 |
+
// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
|
10215 |
+
// isn't a whole lot we can do. See pull request at this URL for discussion:
|
10216 |
+
// https://github.com/jquery/jquery/pull/764
|
10217 |
+
return elem.document.documentElement[ "client" + name ];
|
10218 |
+
}
|
10219 |
+
|
10220 |
+
// Get document width or height
|
10221 |
+
if ( elem.nodeType === 9 ) {
|
10222 |
+
doc = elem.documentElement;
|
10223 |
+
|
10224 |
+
// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
|
10225 |
+
// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
|
10226 |
+
return Math.max(
|
10227 |
+
elem.body[ "scroll" + name ], doc[ "scroll" + name ],
|
10228 |
+
elem.body[ "offset" + name ], doc[ "offset" + name ],
|
10229 |
+
doc[ "client" + name ]
|
10230 |
+
);
|
10231 |
+
}
|
10232 |
+
|
10233 |
+
return value === undefined ?
|
10234 |
+
// Get width or height on the element, requesting but not forcing parseFloat
|
10235 |
+
jQuery.css( elem, type, extra ) :
|
10236 |
+
|
10237 |
+
// Set width or height on the element
|
10238 |
+
jQuery.style( elem, type, value, extra );
|
10239 |
+
}, type, chainable ? margin : undefined, chainable, null );
|
10240 |
+
};
|
10241 |
+
});
|
10242 |
+
});
|
10243 |
+
|
10244 |
+
|
10245 |
+
// The number of elements contained in the matched element set
|
10246 |
+
jQuery.fn.size = function() {
|
10247 |
+
return this.length;
|
10248 |
+
};
|
10249 |
+
|
10250 |
+
jQuery.fn.andSelf = jQuery.fn.addBack;
|
10251 |
+
|
10252 |
+
|
10253 |
+
|
10254 |
+
|
10255 |
+
// Register as a named AMD module, since jQuery can be concatenated with other
|
10256 |
+
// files that may use define, but not via a proper concatenation script that
|
10257 |
+
// understands anonymous AMD modules. A named AMD is safest and most robust
|
10258 |
+
// way to register. Lowercase jquery is used because AMD module names are
|
10259 |
+
// derived from file names, and jQuery is normally delivered in a lowercase
|
10260 |
+
// file name. Do this after creating the global so that if an AMD module wants
|
10261 |
+
// to call noConflict to hide this version of jQuery, it will work.
|
10262 |
+
|
10263 |
+
// Note that for maximum portability, libraries that are not jQuery should
|
10264 |
+
// declare themselves as anonymous modules, and avoid setting a global if an
|
10265 |
+
// AMD loader is present. jQuery is a special case. For more information, see
|
10266 |
+
// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
|
10267 |
+
|
10268 |
+
if ( typeof define === "function" && define.amd ) {
|
10269 |
+
define( "jquery", [], function() {
|
10270 |
+
return jQuery;
|
10271 |
+
});
|
10272 |
+
}
|
10273 |
+
|
10274 |
+
|
10275 |
+
|
10276 |
+
|
10277 |
+
var
|
10278 |
+
// Map over jQuery in case of overwrite
|
10279 |
+
_jQuery = window.jQuery,
|
10280 |
+
|
10281 |
+
// Map over the $ in case of overwrite
|
10282 |
+
_$ = window.$;
|
10283 |
+
|
10284 |
+
jQuery.noConflict = function( deep ) {
|
10285 |
+
if ( window.$ === jQuery ) {
|
10286 |
+
window.$ = _$;
|
10287 |
+
}
|
10288 |
+
|
10289 |
+
if ( deep && window.jQuery === jQuery ) {
|
10290 |
+
window.jQuery = _jQuery;
|
10291 |
+
}
|
10292 |
+
|
10293 |
+
return jQuery;
|
10294 |
+
};
|
10295 |
+
|
10296 |
+
// Expose jQuery and $ identifiers, even in
|
10297 |
+
// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
|
10298 |
+
// and CommonJS for browser emulators (#13566)
|
10299 |
+
if ( typeof noGlobal === strundefined ) {
|
10300 |
+
window.jQuery = window.$ = jQuery;
|
10301 |
+
}
|
10302 |
+
|
10303 |
+
|
10304 |
+
|
10305 |
+
|
10306 |
+
return jQuery;
|
10307 |
+
|
10308 |
+
}));
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/jquery.js
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
|
2 |
+
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;
|
3 |
+
if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")
|
4 |
+
},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.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(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/js/modernizr.min.js
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
/* Modernizr 2.6.2 (Custom Build) | MIT & BSD
|
2 |
+
* Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
|
3 |
+
*/
|
4 |
+
;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a){var e=a[d];if(!G(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function K(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["­",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return J("flexWrap")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=function(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var L in s)C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));return e.input||K(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)C(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},D(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,e.prefixed=function(a,b,c){return b?J(a,b,c):J(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/js/theme.js
ADDED
@@ -0,0 +1,153 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"sphinx-rtd-theme":[function(require,module,exports){
|
2 |
+
var jQuery = (typeof(window) != 'undefined') ? window.jQuery : require('jquery');
|
3 |
+
|
4 |
+
// Sphinx theme nav state
|
5 |
+
function ThemeNav () {
|
6 |
+
|
7 |
+
var nav = {
|
8 |
+
navBar: null,
|
9 |
+
win: null,
|
10 |
+
winScroll: false,
|
11 |
+
winResize: false,
|
12 |
+
linkScroll: false,
|
13 |
+
winPosition: 0,
|
14 |
+
winHeight: null,
|
15 |
+
docHeight: null,
|
16 |
+
isRunning: null
|
17 |
+
};
|
18 |
+
|
19 |
+
nav.enable = function () {
|
20 |
+
var self = this;
|
21 |
+
|
22 |
+
jQuery(function ($) {
|
23 |
+
self.init($);
|
24 |
+
|
25 |
+
self.reset();
|
26 |
+
self.win.on('hashchange', self.reset);
|
27 |
+
|
28 |
+
// Set scroll monitor
|
29 |
+
self.win.on('scroll', function () {
|
30 |
+
if (!self.linkScroll) {
|
31 |
+
self.winScroll = true;
|
32 |
+
}
|
33 |
+
});
|
34 |
+
setInterval(function () { if (self.winScroll) self.onScroll(); }, 25);
|
35 |
+
|
36 |
+
// Set resize monitor
|
37 |
+
self.win.on('resize', function () {
|
38 |
+
self.winResize = true;
|
39 |
+
});
|
40 |
+
setInterval(function () { if (self.winResize) self.onResize(); }, 25);
|
41 |
+
self.onResize();
|
42 |
+
});
|
43 |
+
};
|
44 |
+
|
45 |
+
nav.init = function ($) {
|
46 |
+
var doc = $(document),
|
47 |
+
self = this;
|
48 |
+
|
49 |
+
this.navBar = $('div.wy-side-scroll:first');
|
50 |
+
this.win = $(window);
|
51 |
+
|
52 |
+
// Set up javascript UX bits
|
53 |
+
$(document)
|
54 |
+
// Shift nav in mobile when clicking the menu.
|
55 |
+
.on('click', "[data-toggle='wy-nav-top']", function() {
|
56 |
+
$("[data-toggle='wy-nav-shift']").toggleClass("shift");
|
57 |
+
$("[data-toggle='rst-versions']").toggleClass("shift");
|
58 |
+
})
|
59 |
+
|
60 |
+
// Nav menu link click operations
|
61 |
+
.on('click', ".wy-menu-vertical .current ul li a", function() {
|
62 |
+
var target = $(this);
|
63 |
+
// Close menu when you click a link.
|
64 |
+
$("[data-toggle='wy-nav-shift']").removeClass("shift");
|
65 |
+
$("[data-toggle='rst-versions']").toggleClass("shift");
|
66 |
+
// Handle dynamic display of l3 and l4 nav lists
|
67 |
+
self.toggleCurrent(target);
|
68 |
+
self.hashChange();
|
69 |
+
})
|
70 |
+
.on('click', "[data-toggle='rst-current-version']", function() {
|
71 |
+
$("[data-toggle='rst-versions']").toggleClass("shift-up");
|
72 |
+
})
|
73 |
+
|
74 |
+
// Make tables responsive
|
75 |
+
$("table.docutils:not(.field-list)")
|
76 |
+
.wrap("<div class='wy-table-responsive'></div>");
|
77 |
+
|
78 |
+
// Add expand links to all parents of nested ul
|
79 |
+
$('.wy-menu-vertical ul').not('.simple').siblings('a').each(function () {
|
80 |
+
var link = $(this);
|
81 |
+
expand = $('<span class="toctree-expand"></span>');
|
82 |
+
expand.on('click', function (ev) {
|
83 |
+
self.toggleCurrent(link);
|
84 |
+
ev.stopPropagation();
|
85 |
+
return false;
|
86 |
+
});
|
87 |
+
link.prepend(expand);
|
88 |
+
});
|
89 |
+
};
|
90 |
+
|
91 |
+
nav.reset = function () {
|
92 |
+
// Get anchor from URL and open up nested nav
|
93 |
+
var anchor = encodeURI(window.location.hash);
|
94 |
+
if (anchor) {
|
95 |
+
try {
|
96 |
+
var link = $('.wy-menu-vertical')
|
97 |
+
.find('[href="' + anchor + '"]');
|
98 |
+
$('.wy-menu-vertical li.toctree-l1 li.current')
|
99 |
+
.removeClass('current');
|
100 |
+
link.closest('li.toctree-l2').addClass('current');
|
101 |
+
link.closest('li.toctree-l3').addClass('current');
|
102 |
+
link.closest('li.toctree-l4').addClass('current');
|
103 |
+
}
|
104 |
+
catch (err) {
|
105 |
+
console.log("Error expanding nav for anchor", err);
|
106 |
+
}
|
107 |
+
}
|
108 |
+
};
|
109 |
+
|
110 |
+
nav.onScroll = function () {
|
111 |
+
this.winScroll = false;
|
112 |
+
var newWinPosition = this.win.scrollTop(),
|
113 |
+
winBottom = newWinPosition + this.winHeight,
|
114 |
+
navPosition = this.navBar.scrollTop(),
|
115 |
+
newNavPosition = navPosition + (newWinPosition - this.winPosition);
|
116 |
+
if (newWinPosition < 0 || winBottom > this.docHeight) {
|
117 |
+
return;
|
118 |
+
}
|
119 |
+
this.navBar.scrollTop(newNavPosition);
|
120 |
+
this.winPosition = newWinPosition;
|
121 |
+
};
|
122 |
+
|
123 |
+
nav.onResize = function () {
|
124 |
+
this.winResize = false;
|
125 |
+
this.winHeight = this.win.height();
|
126 |
+
this.docHeight = $(document).height();
|
127 |
+
};
|
128 |
+
|
129 |
+
nav.hashChange = function () {
|
130 |
+
this.linkScroll = true;
|
131 |
+
this.win.one('hashchange', function () {
|
132 |
+
this.linkScroll = false;
|
133 |
+
});
|
134 |
+
};
|
135 |
+
|
136 |
+
nav.toggleCurrent = function (elem) {
|
137 |
+
var parent_li = elem.closest('li');
|
138 |
+
parent_li.siblings('li.current').removeClass('current');
|
139 |
+
parent_li.siblings().find('li.current').removeClass('current');
|
140 |
+
parent_li.find('> ul li.current').removeClass('current');
|
141 |
+
parent_li.toggleClass('current');
|
142 |
+
}
|
143 |
+
|
144 |
+
return nav;
|
145 |
+
};
|
146 |
+
|
147 |
+
module.exports.ThemeNav = ThemeNav();
|
148 |
+
|
149 |
+
if (typeof(window) != 'undefined') {
|
150 |
+
window.SphinxRtdTheme = { StickyNav: module.exports.ThemeNav };
|
151 |
+
}
|
152 |
+
|
153 |
+
},{"jquery":"jquery"}]},{},["sphinx-rtd-theme"]);
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/minus.png
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/plus.png
ADDED
Binary file
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/pygments.css
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.highlight .hll { background-color: #ffffcc }
|
2 |
+
.highlight { background: #eeffcc; }
|
3 |
+
.highlight .c { color: #408090; font-style: italic } /* Comment */
|
4 |
+
.highlight .err { border: 1px solid #FF0000 } /* Error */
|
5 |
+
.highlight .k { color: #007020; font-weight: bold } /* Keyword */
|
6 |
+
.highlight .o { color: #666666 } /* Operator */
|
7 |
+
.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
|
8 |
+
.highlight .cp { color: #007020 } /* Comment.Preproc */
|
9 |
+
.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
|
10 |
+
.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
|
11 |
+
.highlight .gd { color: #A00000 } /* Generic.Deleted */
|
12 |
+
.highlight .ge { font-style: italic } /* Generic.Emph */
|
13 |
+
.highlight .gr { color: #FF0000 } /* Generic.Error */
|
14 |
+
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
15 |
+
.highlight .gi { color: #00A000 } /* Generic.Inserted */
|
16 |
+
.highlight .go { color: #333333 } /* Generic.Output */
|
17 |
+
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
|
18 |
+
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
19 |
+
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
20 |
+
.highlight .gt { color: #0044DD } /* Generic.Traceback */
|
21 |
+
.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
|
22 |
+
.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
|
23 |
+
.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
|
24 |
+
.highlight .kp { color: #007020 } /* Keyword.Pseudo */
|
25 |
+
.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
|
26 |
+
.highlight .kt { color: #902000 } /* Keyword.Type */
|
27 |
+
.highlight .m { color: #208050 } /* Literal.Number */
|
28 |
+
.highlight .s { color: #4070a0 } /* Literal.String */
|
29 |
+
.highlight .na { color: #4070a0 } /* Name.Attribute */
|
30 |
+
.highlight .nb { color: #007020 } /* Name.Builtin */
|
31 |
+
.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
|
32 |
+
.highlight .no { color: #60add5 } /* Name.Constant */
|
33 |
+
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
|
34 |
+
.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
|
35 |
+
.highlight .ne { color: #007020 } /* Name.Exception */
|
36 |
+
.highlight .nf { color: #06287e } /* Name.Function */
|
37 |
+
.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
|
38 |
+
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
|
39 |
+
.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
|
40 |
+
.highlight .nv { color: #bb60d5 } /* Name.Variable */
|
41 |
+
.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
|
42 |
+
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
43 |
+
.highlight .mb { color: #208050 } /* Literal.Number.Bin */
|
44 |
+
.highlight .mf { color: #208050 } /* Literal.Number.Float */
|
45 |
+
.highlight .mh { color: #208050 } /* Literal.Number.Hex */
|
46 |
+
.highlight .mi { color: #208050 } /* Literal.Number.Integer */
|
47 |
+
.highlight .mo { color: #208050 } /* Literal.Number.Oct */
|
48 |
+
.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
|
49 |
+
.highlight .sc { color: #4070a0 } /* Literal.String.Char */
|
50 |
+
.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
|
51 |
+
.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
|
52 |
+
.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
|
53 |
+
.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
|
54 |
+
.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
|
55 |
+
.highlight .sx { color: #c65d09 } /* Literal.String.Other */
|
56 |
+
.highlight .sr { color: #235388 } /* Literal.String.Regex */
|
57 |
+
.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
|
58 |
+
.highlight .ss { color: #517918 } /* Literal.String.Symbol */
|
59 |
+
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
|
60 |
+
.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
|
61 |
+
.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
|
62 |
+
.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
|
63 |
+
.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/searchtools.js
ADDED
@@ -0,0 +1,622 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* searchtools.js_t
|
3 |
+
* ~~~~~~~~~~~~~~~~
|
4 |
+
*
|
5 |
+
* Sphinx JavaScript utilties for the full-text search.
|
6 |
+
*
|
7 |
+
* :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
|
8 |
+
* :license: BSD, see LICENSE for details.
|
9 |
+
*
|
10 |
+
*/
|
11 |
+
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Porter Stemmer
|
15 |
+
*/
|
16 |
+
var Stemmer = function() {
|
17 |
+
|
18 |
+
var step2list = {
|
19 |
+
ational: 'ate',
|
20 |
+
tional: 'tion',
|
21 |
+
enci: 'ence',
|
22 |
+
anci: 'ance',
|
23 |
+
izer: 'ize',
|
24 |
+
bli: 'ble',
|
25 |
+
alli: 'al',
|
26 |
+
entli: 'ent',
|
27 |
+
eli: 'e',
|
28 |
+
ousli: 'ous',
|
29 |
+
ization: 'ize',
|
30 |
+
ation: 'ate',
|
31 |
+
ator: 'ate',
|
32 |
+
alism: 'al',
|
33 |
+
iveness: 'ive',
|
34 |
+
fulness: 'ful',
|
35 |
+
ousness: 'ous',
|
36 |
+
aliti: 'al',
|
37 |
+
iviti: 'ive',
|
38 |
+
biliti: 'ble',
|
39 |
+
logi: 'log'
|
40 |
+
};
|
41 |
+
|
42 |
+
var step3list = {
|
43 |
+
icate: 'ic',
|
44 |
+
ative: '',
|
45 |
+
alize: 'al',
|
46 |
+
iciti: 'ic',
|
47 |
+
ical: 'ic',
|
48 |
+
ful: '',
|
49 |
+
ness: ''
|
50 |
+
};
|
51 |
+
|
52 |
+
var c = "[^aeiou]"; // consonant
|
53 |
+
var v = "[aeiouy]"; // vowel
|
54 |
+
var C = c + "[^aeiouy]*"; // consonant sequence
|
55 |
+
var V = v + "[aeiou]*"; // vowel sequence
|
56 |
+
|
57 |
+
var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
|
58 |
+
var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
|
59 |
+
var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
|
60 |
+
var s_v = "^(" + C + ")?" + v; // vowel in stem
|
61 |
+
|
62 |
+
this.stemWord = function (w) {
|
63 |
+
var stem;
|
64 |
+
var suffix;
|
65 |
+
var firstch;
|
66 |
+
var origword = w;
|
67 |
+
|
68 |
+
if (w.length < 3)
|
69 |
+
return w;
|
70 |
+
|
71 |
+
var re;
|
72 |
+
var re2;
|
73 |
+
var re3;
|
74 |
+
var re4;
|
75 |
+
|
76 |
+
firstch = w.substr(0,1);
|
77 |
+
if (firstch == "y")
|
78 |
+
w = firstch.toUpperCase() + w.substr(1);
|
79 |
+
|
80 |
+
// Step 1a
|
81 |
+
re = /^(.+?)(ss|i)es$/;
|
82 |
+
re2 = /^(.+?)([^s])s$/;
|
83 |
+
|
84 |
+
if (re.test(w))
|
85 |
+
w = w.replace(re,"$1$2");
|
86 |
+
else if (re2.test(w))
|
87 |
+
w = w.replace(re2,"$1$2");
|
88 |
+
|
89 |
+
// Step 1b
|
90 |
+
re = /^(.+?)eed$/;
|
91 |
+
re2 = /^(.+?)(ed|ing)$/;
|
92 |
+
if (re.test(w)) {
|
93 |
+
var fp = re.exec(w);
|
94 |
+
re = new RegExp(mgr0);
|
95 |
+
if (re.test(fp[1])) {
|
96 |
+
re = /.$/;
|
97 |
+
w = w.replace(re,"");
|
98 |
+
}
|
99 |
+
}
|
100 |
+
else if (re2.test(w)) {
|
101 |
+
var fp = re2.exec(w);
|
102 |
+
stem = fp[1];
|
103 |
+
re2 = new RegExp(s_v);
|
104 |
+
if (re2.test(stem)) {
|
105 |
+
w = stem;
|
106 |
+
re2 = /(at|bl|iz)$/;
|
107 |
+
re3 = new RegExp("([^aeiouylsz])\\1$");
|
108 |
+
re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
|
109 |
+
if (re2.test(w))
|
110 |
+
w = w + "e";
|
111 |
+
else if (re3.test(w)) {
|
112 |
+
re = /.$/;
|
113 |
+
w = w.replace(re,"");
|
114 |
+
}
|
115 |
+
else if (re4.test(w))
|
116 |
+
w = w + "e";
|
117 |
+
}
|
118 |
+
}
|
119 |
+
|
120 |
+
// Step 1c
|
121 |
+
re = /^(.+?)y$/;
|
122 |
+
if (re.test(w)) {
|
123 |
+
var fp = re.exec(w);
|
124 |
+
stem = fp[1];
|
125 |
+
re = new RegExp(s_v);
|
126 |
+
if (re.test(stem))
|
127 |
+
w = stem + "i";
|
128 |
+
}
|
129 |
+
|
130 |
+
// Step 2
|
131 |
+
re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
|
132 |
+
if (re.test(w)) {
|
133 |
+
var fp = re.exec(w);
|
134 |
+
stem = fp[1];
|
135 |
+
suffix = fp[2];
|
136 |
+
re = new RegExp(mgr0);
|
137 |
+
if (re.test(stem))
|
138 |
+
w = stem + step2list[suffix];
|
139 |
+
}
|
140 |
+
|
141 |
+
// Step 3
|
142 |
+
re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
|
143 |
+
if (re.test(w)) {
|
144 |
+
var fp = re.exec(w);
|
145 |
+
stem = fp[1];
|
146 |
+
suffix = fp[2];
|
147 |
+
re = new RegExp(mgr0);
|
148 |
+
if (re.test(stem))
|
149 |
+
w = stem + step3list[suffix];
|
150 |
+
}
|
151 |
+
|
152 |
+
// Step 4
|
153 |
+
re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
|
154 |
+
re2 = /^(.+?)(s|t)(ion)$/;
|
155 |
+
if (re.test(w)) {
|
156 |
+
var fp = re.exec(w);
|
157 |
+
stem = fp[1];
|
158 |
+
re = new RegExp(mgr1);
|
159 |
+
if (re.test(stem))
|
160 |
+
w = stem;
|
161 |
+
}
|
162 |
+
else if (re2.test(w)) {
|
163 |
+
var fp = re2.exec(w);
|
164 |
+
stem = fp[1] + fp[2];
|
165 |
+
re2 = new RegExp(mgr1);
|
166 |
+
if (re2.test(stem))
|
167 |
+
w = stem;
|
168 |
+
}
|
169 |
+
|
170 |
+
// Step 5
|
171 |
+
re = /^(.+?)e$/;
|
172 |
+
if (re.test(w)) {
|
173 |
+
var fp = re.exec(w);
|
174 |
+
stem = fp[1];
|
175 |
+
re = new RegExp(mgr1);
|
176 |
+
re2 = new RegExp(meq1);
|
177 |
+
re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
|
178 |
+
if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
|
179 |
+
w = stem;
|
180 |
+
}
|
181 |
+
re = /ll$/;
|
182 |
+
re2 = new RegExp(mgr1);
|
183 |
+
if (re.test(w) && re2.test(w)) {
|
184 |
+
re = /.$/;
|
185 |
+
w = w.replace(re,"");
|
186 |
+
}
|
187 |
+
|
188 |
+
// and turn initial Y back to y
|
189 |
+
if (firstch == "y")
|
190 |
+
w = firstch.toLowerCase() + w.substr(1);
|
191 |
+
return w;
|
192 |
+
}
|
193 |
+
}
|
194 |
+
|
195 |
+
|
196 |
+
|
197 |
+
/**
|
198 |
+
* Simple result scoring code.
|
199 |
+
*/
|
200 |
+
var Scorer = {
|
201 |
+
// Implement the following function to further tweak the score for each result
|
202 |
+
// The function takes a result array [filename, title, anchor, descr, score]
|
203 |
+
// and returns the new score.
|
204 |
+
/*
|
205 |
+
score: function(result) {
|
206 |
+
return result[4];
|
207 |
+
},
|
208 |
+
*/
|
209 |
+
|
210 |
+
// query matches the full name of an object
|
211 |
+
objNameMatch: 11,
|
212 |
+
// or matches in the last dotted part of the object name
|
213 |
+
objPartialMatch: 6,
|
214 |
+
// Additive scores depending on the priority of the object
|
215 |
+
objPrio: {0: 15, // used to be importantResults
|
216 |
+
1: 5, // used to be objectResults
|
217 |
+
2: -5}, // used to be unimportantResults
|
218 |
+
// Used when the priority is not in the mapping.
|
219 |
+
objPrioDefault: 0,
|
220 |
+
|
221 |
+
// query found in title
|
222 |
+
title: 15,
|
223 |
+
// query found in terms
|
224 |
+
term: 5
|
225 |
+
};
|
226 |
+
|
227 |
+
|
228 |
+
/**
|
229 |
+
* Search Module
|
230 |
+
*/
|
231 |
+
var Search = {
|
232 |
+
|
233 |
+
_index : null,
|
234 |
+
_queued_query : null,
|
235 |
+
_pulse_status : -1,
|
236 |
+
|
237 |
+
init : function() {
|
238 |
+
var params = $.getQueryParameters();
|
239 |
+
if (params.q) {
|
240 |
+
var query = params.q[0];
|
241 |
+
$('input[name="q"]')[0].value = query;
|
242 |
+
this.performSearch(query);
|
243 |
+
}
|
244 |
+
},
|
245 |
+
|
246 |
+
loadIndex : function(url) {
|
247 |
+
$.ajax({type: "GET", url: url, data: null,
|
248 |
+
dataType: "script", cache: true,
|
249 |
+
complete: function(jqxhr, textstatus) {
|
250 |
+
if (textstatus != "success") {
|
251 |
+
document.getElementById("searchindexloader").src = url;
|
252 |
+
}
|
253 |
+
}});
|
254 |
+
},
|
255 |
+
|
256 |
+
setIndex : function(index) {
|
257 |
+
var q;
|
258 |
+
this._index = index;
|
259 |
+
if ((q = this._queued_query) !== null) {
|
260 |
+
this._queued_query = null;
|
261 |
+
Search.query(q);
|
262 |
+
}
|
263 |
+
},
|
264 |
+
|
265 |
+
hasIndex : function() {
|
266 |
+
return this._index !== null;
|
267 |
+
},
|
268 |
+
|
269 |
+
deferQuery : function(query) {
|
270 |
+
this._queued_query = query;
|
271 |
+
},
|
272 |
+
|
273 |
+
stopPulse : function() {
|
274 |
+
this._pulse_status = 0;
|
275 |
+
},
|
276 |
+
|
277 |
+
startPulse : function() {
|
278 |
+
if (this._pulse_status >= 0)
|
279 |
+
return;
|
280 |
+
function pulse() {
|
281 |
+
var i;
|
282 |
+
Search._pulse_status = (Search._pulse_status + 1) % 4;
|
283 |
+
var dotString = '';
|
284 |
+
for (i = 0; i < Search._pulse_status; i++)
|
285 |
+
dotString += '.';
|
286 |
+
Search.dots.text(dotString);
|
287 |
+
if (Search._pulse_status > -1)
|
288 |
+
window.setTimeout(pulse, 500);
|
289 |
+
}
|
290 |
+
pulse();
|
291 |
+
},
|
292 |
+
|
293 |
+
/**
|
294 |
+
* perform a search for something (or wait until index is loaded)
|
295 |
+
*/
|
296 |
+
performSearch : function(query) {
|
297 |
+
// create the required interface elements
|
298 |
+
this.out = $('#search-results');
|
299 |
+
this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
|
300 |
+
this.dots = $('<span></span>').appendTo(this.title);
|
301 |
+
this.status = $('<p style="display: none"></p>').appendTo(this.out);
|
302 |
+
this.output = $('<ul class="search"/>').appendTo(this.out);
|
303 |
+
|
304 |
+
$('#search-progress').text(_('Preparing search...'));
|
305 |
+
this.startPulse();
|
306 |
+
|
307 |
+
// index already loaded, the browser was quick!
|
308 |
+
if (this.hasIndex())
|
309 |
+
this.query(query);
|
310 |
+
else
|
311 |
+
this.deferQuery(query);
|
312 |
+
},
|
313 |
+
|
314 |
+
/**
|
315 |
+
* execute search (requires search index to be loaded)
|
316 |
+
*/
|
317 |
+
query : function(query) {
|
318 |
+
var i;
|
319 |
+
var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
|
320 |
+
|
321 |
+
// stem the searchterms and add them to the correct list
|
322 |
+
var stemmer = new Stemmer();
|
323 |
+
var searchterms = [];
|
324 |
+
var excluded = [];
|
325 |
+
var hlterms = [];
|
326 |
+
var tmp = query.split(/\s+/);
|
327 |
+
var objectterms = [];
|
328 |
+
for (i = 0; i < tmp.length; i++) {
|
329 |
+
if (tmp[i] !== "") {
|
330 |
+
objectterms.push(tmp[i].toLowerCase());
|
331 |
+
}
|
332 |
+
|
333 |
+
if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
|
334 |
+
tmp[i] === "") {
|
335 |
+
// skip this "word"
|
336 |
+
continue;
|
337 |
+
}
|
338 |
+
// stem the word
|
339 |
+
var word = stemmer.stemWord(tmp[i].toLowerCase());
|
340 |
+
var toAppend;
|
341 |
+
// select the correct list
|
342 |
+
if (word[0] == '-') {
|
343 |
+
toAppend = excluded;
|
344 |
+
word = word.substr(1);
|
345 |
+
}
|
346 |
+
else {
|
347 |
+
toAppend = searchterms;
|
348 |
+
hlterms.push(tmp[i].toLowerCase());
|
349 |
+
}
|
350 |
+
// only add if not already in the list
|
351 |
+
if (!$u.contains(toAppend, word))
|
352 |
+
toAppend.push(word);
|
353 |
+
}
|
354 |
+
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
|
355 |
+
|
356 |
+
// console.debug('SEARCH: searching for:');
|
357 |
+
// console.info('required: ', searchterms);
|
358 |
+
// console.info('excluded: ', excluded);
|
359 |
+
|
360 |
+
// prepare search
|
361 |
+
var terms = this._index.terms;
|
362 |
+
var titleterms = this._index.titleterms;
|
363 |
+
|
364 |
+
// array of [filename, title, anchor, descr, score]
|
365 |
+
var results = [];
|
366 |
+
$('#search-progress').empty();
|
367 |
+
|
368 |
+
// lookup as object
|
369 |
+
for (i = 0; i < objectterms.length; i++) {
|
370 |
+
var others = [].concat(objectterms.slice(0, i),
|
371 |
+
objectterms.slice(i+1, objectterms.length));
|
372 |
+
results = results.concat(this.performObjectSearch(objectterms[i], others));
|
373 |
+
}
|
374 |
+
|
375 |
+
// lookup as search terms in fulltext
|
376 |
+
results = results.concat(this.performTermsSearch(searchterms, excluded, terms, Scorer.term))
|
377 |
+
.concat(this.performTermsSearch(searchterms, excluded, titleterms, Scorer.title));
|
378 |
+
|
379 |
+
// let the scorer override scores with a custom scoring function
|
380 |
+
if (Scorer.score) {
|
381 |
+
for (i = 0; i < results.length; i++)
|
382 |
+
results[i][4] = Scorer.score(results[i]);
|
383 |
+
}
|
384 |
+
|
385 |
+
// now sort the results by score (in opposite order of appearance, since the
|
386 |
+
// display function below uses pop() to retrieve items) and then
|
387 |
+
// alphabetically
|
388 |
+
results.sort(function(a, b) {
|
389 |
+
var left = a[4];
|
390 |
+
var right = b[4];
|
391 |
+
if (left > right) {
|
392 |
+
return 1;
|
393 |
+
} else if (left < right) {
|
394 |
+
return -1;
|
395 |
+
} else {
|
396 |
+
// same score: sort alphabetically
|
397 |
+
left = a[1].toLowerCase();
|
398 |
+
right = b[1].toLowerCase();
|
399 |
+
return (left > right) ? -1 : ((left < right) ? 1 : 0);
|
400 |
+
}
|
401 |
+
});
|
402 |
+
|
403 |
+
// for debugging
|
404 |
+
//Search.lastresults = results.slice(); // a copy
|
405 |
+
//console.info('search results:', Search.lastresults);
|
406 |
+
|
407 |
+
// print the results
|
408 |
+
var resultCount = results.length;
|
409 |
+
function displayNextItem() {
|
410 |
+
// results left, load the summary and display it
|
411 |
+
if (results.length) {
|
412 |
+
var item = results.pop();
|
413 |
+
var listItem = $('<li style="display:none"></li>');
|
414 |
+
if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
|
415 |
+
// dirhtml builder
|
416 |
+
var dirname = item[0] + '/';
|
417 |
+
if (dirname.match(/\/index\/$/)) {
|
418 |
+
dirname = dirname.substring(0, dirname.length-6);
|
419 |
+
} else if (dirname == 'index/') {
|
420 |
+
dirname = '';
|
421 |
+
}
|
422 |
+
listItem.append($('<a/>').attr('href',
|
423 |
+
DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
|
424 |
+
highlightstring + item[2]).html(item[1]));
|
425 |
+
} else {
|
426 |
+
// normal html builders
|
427 |
+
listItem.append($('<a/>').attr('href',
|
428 |
+
item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
|
429 |
+
highlightstring + item[2]).html(item[1]));
|
430 |
+
}
|
431 |
+
if (item[3]) {
|
432 |
+
listItem.append($('<span> (' + item[3] + ')</span>'));
|
433 |
+
Search.output.append(listItem);
|
434 |
+
listItem.slideDown(5, function() {
|
435 |
+
displayNextItem();
|
436 |
+
});
|
437 |
+
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
|
438 |
+
$.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[0] + '.txt',
|
439 |
+
dataType: "text",
|
440 |
+
complete: function(jqxhr, textstatus) {
|
441 |
+
var data = jqxhr.responseText;
|
442 |
+
if (data !== '' && data !== undefined) {
|
443 |
+
listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
|
444 |
+
}
|
445 |
+
Search.output.append(listItem);
|
446 |
+
listItem.slideDown(5, function() {
|
447 |
+
displayNextItem();
|
448 |
+
});
|
449 |
+
}});
|
450 |
+
} else {
|
451 |
+
// no source available, just display title
|
452 |
+
Search.output.append(listItem);
|
453 |
+
listItem.slideDown(5, function() {
|
454 |
+
displayNextItem();
|
455 |
+
});
|
456 |
+
}
|
457 |
+
}
|
458 |
+
// search finished, update title and status message
|
459 |
+
else {
|
460 |
+
Search.stopPulse();
|
461 |
+
Search.title.text(_('Search Results'));
|
462 |
+
if (!resultCount)
|
463 |
+
Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
|
464 |
+
else
|
465 |
+
Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
|
466 |
+
Search.status.fadeIn(500);
|
467 |
+
}
|
468 |
+
}
|
469 |
+
displayNextItem();
|
470 |
+
},
|
471 |
+
|
472 |
+
/**
|
473 |
+
* search for object names
|
474 |
+
*/
|
475 |
+
performObjectSearch : function(object, otherterms) {
|
476 |
+
var filenames = this._index.filenames;
|
477 |
+
var objects = this._index.objects;
|
478 |
+
var objnames = this._index.objnames;
|
479 |
+
var titles = this._index.titles;
|
480 |
+
|
481 |
+
var i;
|
482 |
+
var results = [];
|
483 |
+
|
484 |
+
for (var prefix in objects) {
|
485 |
+
for (var name in objects[prefix]) {
|
486 |
+
var fullname = (prefix ? prefix + '.' : '') + name;
|
487 |
+
if (fullname.toLowerCase().indexOf(object) > -1) {
|
488 |
+
var score = 0;
|
489 |
+
var parts = fullname.split('.');
|
490 |
+
// check for different match types: exact matches of full name or
|
491 |
+
// "last name" (i.e. last dotted part)
|
492 |
+
if (fullname == object || parts[parts.length - 1] == object) {
|
493 |
+
score += Scorer.objNameMatch;
|
494 |
+
// matches in last name
|
495 |
+
} else if (parts[parts.length - 1].indexOf(object) > -1) {
|
496 |
+
score += Scorer.objPartialMatch;
|
497 |
+
}
|
498 |
+
var match = objects[prefix][name];
|
499 |
+
var objname = objnames[match[1]][2];
|
500 |
+
var title = titles[match[0]];
|
501 |
+
// If more than one term searched for, we require other words to be
|
502 |
+
// found in the name/title/description
|
503 |
+
if (otherterms.length > 0) {
|
504 |
+
var haystack = (prefix + ' ' + name + ' ' +
|
505 |
+
objname + ' ' + title).toLowerCase();
|
506 |
+
var allfound = true;
|
507 |
+
for (i = 0; i < otherterms.length; i++) {
|
508 |
+
if (haystack.indexOf(otherterms[i]) == -1) {
|
509 |
+
allfound = false;
|
510 |
+
break;
|
511 |
+
}
|
512 |
+
}
|
513 |
+
if (!allfound) {
|
514 |
+
continue;
|
515 |
+
}
|
516 |
+
}
|
517 |
+
var descr = objname + _(', in ') + title;
|
518 |
+
|
519 |
+
var anchor = match[3];
|
520 |
+
if (anchor === '')
|
521 |
+
anchor = fullname;
|
522 |
+
else if (anchor == '-')
|
523 |
+
anchor = objnames[match[1]][1] + '-' + fullname;
|
524 |
+
// add custom score for some objects according to scorer
|
525 |
+
if (Scorer.objPrio.hasOwnProperty(match[2])) {
|
526 |
+
score += Scorer.objPrio[match[2]];
|
527 |
+
} else {
|
528 |
+
score += Scorer.objPrioDefault;
|
529 |
+
}
|
530 |
+
results.push([filenames[match[0]], fullname, '#'+anchor, descr, score]);
|
531 |
+
}
|
532 |
+
}
|
533 |
+
}
|
534 |
+
|
535 |
+
return results;
|
536 |
+
},
|
537 |
+
|
538 |
+
/**
|
539 |
+
* search for full-text terms in the index
|
540 |
+
*/
|
541 |
+
performTermsSearch : function(searchterms, excluded, terms, score) {
|
542 |
+
var filenames = this._index.filenames;
|
543 |
+
var titles = this._index.titles;
|
544 |
+
|
545 |
+
var i, j, file, files;
|
546 |
+
var fileMap = {};
|
547 |
+
var results = [];
|
548 |
+
|
549 |
+
// perform the search on the required terms
|
550 |
+
for (i = 0; i < searchterms.length; i++) {
|
551 |
+
var word = searchterms[i];
|
552 |
+
// no match but word was a required one
|
553 |
+
if ((files = terms[word]) === undefined)
|
554 |
+
break;
|
555 |
+
if (files.length === undefined) {
|
556 |
+
files = [files];
|
557 |
+
}
|
558 |
+
// create the mapping
|
559 |
+
for (j = 0; j < files.length; j++) {
|
560 |
+
file = files[j];
|
561 |
+
if (file in fileMap)
|
562 |
+
fileMap[file].push(word);
|
563 |
+
else
|
564 |
+
fileMap[file] = [word];
|
565 |
+
}
|
566 |
+
}
|
567 |
+
|
568 |
+
// now check if the files don't contain excluded terms
|
569 |
+
for (file in fileMap) {
|
570 |
+
var valid = true;
|
571 |
+
|
572 |
+
// check if all requirements are matched
|
573 |
+
if (fileMap[file].length != searchterms.length)
|
574 |
+
continue;
|
575 |
+
|
576 |
+
// ensure that none of the excluded terms is in the search result
|
577 |
+
for (i = 0; i < excluded.length; i++) {
|
578 |
+
if (terms[excluded[i]] == file ||
|
579 |
+
$u.contains(terms[excluded[i]] || [], file)) {
|
580 |
+
valid = false;
|
581 |
+
break;
|
582 |
+
}
|
583 |
+
}
|
584 |
+
|
585 |
+
// if we have still a valid result we can add it to the result list
|
586 |
+
if (valid) {
|
587 |
+
results.push([filenames[file], titles[file], '', null, score]);
|
588 |
+
}
|
589 |
+
}
|
590 |
+
return results;
|
591 |
+
},
|
592 |
+
|
593 |
+
/**
|
594 |
+
* helper function to return a node containing the
|
595 |
+
* search summary for a given text. keywords is a list
|
596 |
+
* of stemmed words, hlwords is the list of normal, unstemmed
|
597 |
+
* words. the first one is used to find the occurance, the
|
598 |
+
* latter for highlighting it.
|
599 |
+
*/
|
600 |
+
makeSearchSummary : function(text, keywords, hlwords) {
|
601 |
+
var textLower = text.toLowerCase();
|
602 |
+
var start = 0;
|
603 |
+
$.each(keywords, function() {
|
604 |
+
var i = textLower.indexOf(this.toLowerCase());
|
605 |
+
if (i > -1)
|
606 |
+
start = i;
|
607 |
+
});
|
608 |
+
start = Math.max(start - 120, 0);
|
609 |
+
var excerpt = ((start > 0) ? '...' : '') +
|
610 |
+
$.trim(text.substr(start, 240)) +
|
611 |
+
((start + 240 - text.length) ? '...' : '');
|
612 |
+
var rv = $('<div class="context"></div>').text(excerpt);
|
613 |
+
$.each(hlwords, function() {
|
614 |
+
rv = rv.highlightText(this, 'highlighted');
|
615 |
+
});
|
616 |
+
return rv;
|
617 |
+
}
|
618 |
+
};
|
619 |
+
|
620 |
+
$(document).ready(function() {
|
621 |
+
Search.init();
|
622 |
+
});
|
app/code/community/Expressly/Expressly/vendor/expressly/php-common/docs/build/html/_static/underscore-1.3.1.js
ADDED
@@ -0,0 +1,999 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// Underscore.js 1.3.1
|
2 |
+
// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
|
3 |
+
// Underscore is freely distributable under the MIT license.
|
4 |
+
// Portions of Underscore are inspired or borrowed from Prototype,
|
5 |
+
// Oliver Steele's Functional, and John Resig's Micro-Templating.
|
6 |
+
// For all details and documentation:
|
7 |
+
// http://documentcloud.github.com/underscore
|
8 |
+
|
9 |
+
(function() {
|
10 |
+
|
11 |
+
// Baseline setup
|
12 |
+
// --------------
|
13 |
+
|
14 |
+
// Establish the root object, `window` in the browser, or `global` on the server.
|
15 |
+
var root = this;
|
16 |
+
|
17 |
+
// Save the previous value of the `_` variable.
|
18 |
+
var previousUnderscore = root._;
|
19 |
+
|
20 |
+
// Establish the object that gets returned to break out of a loop iteration.
|
21 |
+
var breaker = {};
|
22 |
+
|
23 |
+
// Save bytes in the minified (but not gzipped) version:
|
24 |
+
var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
|
25 |
+
|
26 |
+
// Create quick reference variables for speed access to core prototypes.
|
27 |
+
var slice = ArrayProto.slice,
|
28 |
+
unshift = ArrayProto.unshift,
|
29 |
+
toString = ObjProto.toString,
|
30 |
+
hasOwnProperty = ObjProto.hasOwnProperty;
|
31 |
+
|
32 |
+
// All **ECMAScript 5** native function implementations that we hope to use
|
33 |
+
// are declared here.
|
34 |
+
var
|
35 |
+
nativeForEach = ArrayProto.forEach,
|
36 |
+
nativeMap = ArrayProto.map,
|
37 |
+
nativeReduce = ArrayProto.reduce,
|
38 |
+
nativeReduceRight = ArrayProto.reduceRight,
|
39 |
+
nativeFilter = ArrayProto.filter,
|
40 |
+
nativeEvery = ArrayProto.every,
|
41 |
+
nativeSome = ArrayProto.some,
|
42 |
+
nativeIndexOf = ArrayProto.indexOf,
|
43 |
+
nativeLastIndexOf = ArrayProto.lastIndexOf,
|
44 |
+
nativeIsArray = Array.isArray,
|
45 |
+
nativeKeys = Object.keys,
|
46 |
+
nativeBind = FuncProto.bind;
|
47 |
+
|
48 |
+
// Create a safe reference to the Underscore object for use below.
|
49 |
+
var _ = function(obj) { return new wrapper(obj); };
|
50 |
+
|
51 |
+
// Export the Underscore object for **Node.js**, with
|
52 |
+
// backwards-compatibility for the old `require()` API. If we're in
|
53 |
+
// the browser, add `_` as a global object via a string identifier,
|
54 |
+
// for Closure Compiler "advanced" mode.
|
55 |
+
if (typeof exports !== 'undefined') {
|
56 |
+
if (typeof module !== 'undefined' && module.exports) {
|
57 |
+
exports = module.exports = _;
|
58 |
+
}
|
59 |
+
exports._ = _;
|
60 |
+
} else {
|
61 |
+
root['_'] = _;
|
62 |
+
}
|
63 |
+
|
64 |
+
// Current version.
|
65 |
+
_.VERSION = '1.3.1';
|
66 |
+
|
67 |
+
// Collection Functions
|
68 |
+
// --------------------
|
69 |
+
|
70 |
+
// The cornerstone, an `each` implementation, aka `forEach`.
|
71 |
+
// Handles objects with the built-in `forEach`, arrays, and raw objects.
|
72 |
+
// Delegates to **ECMAScript 5**'s native `forEach` if available.
|
73 |
+
var each = _.each = _.forEach = function(obj, iterator, context) {
|
74 |
+
if (obj == null) return;
|
75 |
+
if (nativeForEach && obj.forEach === nativeForEach) {
|
76 |
+
obj.forEach(iterator, context);
|
77 |
+
} else if (obj.length === +obj.length) {
|
78 |
+
for (var i = 0, l = obj.length; i < l; i++) {
|
79 |
+
if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;
|
80 |
+
}
|
81 |
+
} else {
|
82 |
+
for (var key in obj) {
|
83 |
+
if (_.has(obj, key)) {
|
84 |
+
if (iterator.call(context, obj[key], key, obj) === breaker) return;
|
85 |
+
}
|
86 |
+
}
|
87 |
+
}
|
88 |
+
};
|
89 |
+
|
90 |
+
// Return the results of applying the iterator to each element.
|
91 |
+
// Delegates to **ECMAScript 5**'s native `map` if available.
|
92 |
+
_.map = _.collect = function(obj, iterator, context) {
|
93 |
+
var results = [];
|
94 |
+
if (obj == null) return results;
|
95 |
+
if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
|
96 |
+
each(obj, function(value, index, list) {
|
97 |
+
results[results.length] = iterator.call(context, value, index, list);
|
98 |
+
});
|
99 |
+
if (obj.length === +obj.length) results.length = obj.length;
|
100 |
+
return results;
|
101 |
+
};
|
102 |
+
|
103 |
+
// **Reduce** builds up a single result from a list of values, aka `inject`,
|
104 |
+
// or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
|
105 |
+
_.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
|
106 |
+
var initial = arguments.length > 2;
|
107 |
+
if (obj == null) obj = [];
|
108 |
+
if (nativeReduce && obj.reduce === nativeReduce) {
|
109 |
+
if (context) iterator = _.bind(iterator, context);
|
110 |
+
return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
|
111 |
+
}
|
112 |
+
each(obj, function(value, index, list) {
|
113 |
+
if (!initial) {
|
114 |
+
memo = value;
|
115 |
+
initial = true;
|
116 |
+
} else {
|
117 |
+
memo = iterator.call(context, memo, value, index, list);
|
118 |
+
}
|
119 |
+
});
|
120 |
+
if (!initial) throw new TypeError('Reduce of empty array with no initial value');
|
121 |
+
return memo;
|
122 |
+
};
|
123 |
+
|
124 |
+
// The right-associative version of reduce, also known as `foldr`.
|
125 |
+
// Delegates to **ECMAScript 5**'s native `reduceRight` if available.
|
126 |
+
_.reduceRight = _.foldr = function(obj, iterator, memo, context) {
|
127 |
+
var initial = arguments.length > 2;
|
128 |
+
if (obj == null) obj = [];
|
129 |
+
if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
|
130 |
+
if (context) iterator = _.bind(iterator, context);
|
131 |
+
return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
|
132 |
+
}
|
133 |
+
var reversed = _.toArray(obj).reverse();
|
134 |
+
if (context && !initial) iterator = _.bind(iterator, context);
|
135 |
+
return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator);
|
136 |
+
};
|
137 |
+
|
138 |
+
// Return the first value which passes a truth test. Aliased as `detect`.
|
139 |
+
_.find = _.detect = function(obj, iterator, context) {
|
140 |
+
var result;
|
141 |
+
any(obj, function(value, index, list) {
|
142 |
+
if (iterator.call(context, value, index, list)) {
|
143 |
+
result = value;
|
144 |
+
return true;
|
145 |
+
}
|
146 |
+
});
|
147 |
+
return result;
|
148 |
+
};
|
149 |
+
|
150 |
+
// Return all the elements that pass a truth test.
|
151 |
+
// Delegates to **ECMAScript 5**'s native `filter` if available.
|
152 |
+
// Aliased as `select`.
|
153 |
+
_.filter = _.select = function(obj, iterator, context) {
|
154 |
+
var results = [];
|
155 |
+
if (obj == null) return results;
|
156 |
+
if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
|
157 |
+
each(obj, function(value, index, list) {
|
158 |
+
if (iterator.call(context, value, index, list)) results[results.length] = value;
|
159 |
+
});
|
160 |
+
return results;
|
161 |
+
};
|
162 |
+
|
163 |
+
// Return all the elements for which a truth test fails.
|
164 |
+
_.reject = function(obj, iterator, context) {
|
165 |
+
var results = [];
|
166 |
+
if (obj == null) return results;
|
167 |
+
each(obj, function(value, index, list) {
|
168 |
+
if (!iterator.call(context, value, index, list)) results[results.length] = value;
|
169 |
+
});
|
170 |
+
return results;
|
171 |
+
};
|
172 |
+
|
173 |
+
// Determine whether all of the elements match a truth test.
|
174 |
+
// Delegates to **ECMAScript 5**'s native `every` if available.
|
175 |
+
// Aliased as `all`.
|
176 |
+
_.every = _.all = function(obj, iterator, context) {
|
177 |
+
var result = true;
|
178 |
+
if (obj == null) return result;
|
179 |
+
if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);
|
180 |
+
each(obj, function(value, index, list) {
|
181 |
+
if (!(result = result && iterator.call(context, value, index, list))) return breaker;
|
182 |
+
});
|
183 |
+
return result;
|
184 |
+
};
|
185 |
+
|
186 |
+
// Determine if at least one element in the object matches a truth test.
|
187 |
+
// Delegates to **ECMAScript 5**'s native `some` if available.
|
188 |
+
// Aliased as `any`.
|
189 |
+
var any = _.some = _.any = function(obj, iterator, context) {
|
190 |
+
iterator || (iterator = _.identity);
|
191 |
+
var result = false;
|
192 |
+
if (obj == null) return result;
|
193 |
+
if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
|
194 |
+
each(obj, function(value, index, list) {
|
195 |
+
if (result || (result = iterator.call(context, value, index, list))) return breaker;
|
196 |
+
});
|
197 |
+
return !!result;
|
198 |
+
};
|
199 |
+
|
200 |
+
// Determine if a given value is included in the array or object using `===`.
|
201 |
+
// Aliased as `contains`.
|
202 |
+
_.include = _.contains = function(obj, target) {
|
203 |
+
var found = false;
|
204 |
+
if (obj == null) return found;
|
205 |
+
if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
|
206 |
+
found = any(obj, function(value) {
|
207 |
+
return value === target;
|
208 |
+
});
|
209 |
+
return found;
|
210 |
+
};
|
211 |
+
|
212 |
+
// Invoke a method (with arguments) on every item in a collection.
|
213 |
+
_.invoke = function(obj, method) {
|
214 |
+
var args = slice.call(arguments, 2);
|
215 |
+
return _.map(obj, function(value) {
|
216 |
+
return (_.isFunction(method) ? method || value : value[method]).apply(value, args);
|
217 |
+
});
|
218 |
+
};
|
219 |
+
|
220 |
+
// Convenience version of a common use case of `map`: fetching a property.
|
221 |
+
_.pluck = function(obj, key) {
|
222 |
+
return _.map(obj, function(value){ return value[key]; });
|
223 |
+
};
|
224 |
+
|
225 |
+
// Return the maximum element or (element-based computation).
|
226 |
+
_.max = function(obj, iterator, context) {
|
227 |
+
if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj);
|
228 |
+
if (!iterator && _.isEmpty(obj)) return -Infinity;
|
229 |
+
var result = {computed : -Infinity};
|
230 |
+
each(obj, function(value, index, list) {
|
231 |
+
var computed = iterator ? iterator.call(context, value, index, list) : value;
|
232 |
+
computed >= result.computed && (result = {value : value, computed : computed});
|
233 |
+
});
|
234 |
+
return result.value;
|
235 |
+
};
|
236 |
+
|
237 |
+
// Return the minimum element (or element-based computation).
|
238 |
+
_.min = function(obj, iterator, context) {
|
239 |
+
if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj);
|
240 |
+
if (!iterator && _.isEmpty(obj)) return Infinity;
|
241 |
+
var result = {computed : Infinity};
|
242 |
+
each(obj, function(value, index, list) {
|
243 |
+
var computed = iterator ? iterator.call(context, value, index, list) : value;
|
244 |
+
computed < result.computed && (result = {value : value, computed : computed});
|
245 |
+
});
|
246 |
+
return result.value;
|
247 |
+
};
|
248 |
+
|
249 |
+
// Shuffle an array.
|
250 |
+
_.shuffle = function(obj) {
|
251 |
+
var shuffled = [], rand;
|
252 |
+
each(obj, function(value, index, list) {
|
253 |
+
if (index == 0) {
|
254 |
+
shuffled[0] = value;
|
255 |
+
} else {
|
256 |
+
rand = Math.floor(Math.random() * (index + 1));
|
257 |
+
shuffled[index] = shuffled[rand];
|
258 |
+
shuffled[rand] = value;
|
259 |
+
}
|
260 |
+
});
|
261 |
+
return shuffled;
|
262 |
+
};
|
263 |
+
|
264 |
+
// Sort the object's values by a criterion produced by an iterator.
|
265 |
+
_.sortBy = function(obj, iterator, context) {
|
266 |
+
return _.pluck(_.map(obj, function(value, index, list) {
|
267 |
+
return {
|
268 |
+
value : value,
|
269 |
+
criteria : iterator.call(context, value, index, list)
|
270 |
+
};
|
271 |
+
}).sort(function(left, right) {
|
272 |
+
var a = left.criteria, b = right.criteria;
|
273 |
+
return a < b ? -1 : a > b ? 1 : 0;
|
274 |
+
}), 'value');
|
275 |
+
};
|
276 |
+
|
277 |
+
// Groups the object's values by a criterion. Pass either a string attribute
|
278 |
+
// to group by, or a function that returns the criterion.
|
279 |
+
_.groupBy = function(obj, val) {
|
280 |
+
var result = {};
|
281 |
+
var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };
|
282 |
+
each(obj, function(value, index) {
|
283 |
+
var key = iterator(value, index);
|
284 |
+
(result[key] || (result[key] = [])).push(value);
|
285 |
+
});
|
286 |
+
return result;
|
287 |
+
};
|
288 |
+
|
289 |
+
// Use a comparator function to figure out at what index an object should
|
290 |
+
// be inserted so as to maintain order. Uses binary search.
|
291 |
+
_.sortedIndex = function(array, obj, iterator) {
|
292 |
+
iterator || (iterator = _.identity);
|
293 |
+
var low = 0, high = array.length;
|
294 |
+
while (low < high) {
|
295 |
+
var mid = (low + high) >> 1;
|
296 |
+
iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid;
|
297 |
+
}
|
298 |
+
return low;
|
299 |
+
};
|
300 |
+
|
301 |
+
// Safely convert anything iterable into a real, live array.
|
302 |
+
_.toArray = function(iterable) {
|
303 |
+
if (!iterable) return [];
|
304 |
+
if (iterable.toArray) return iterable.toArray();
|
305 |
+
if (_.isArray(iterable)) return slice.call(iterable);
|
306 |
+
if (_.isArguments(iterable)) return slice.call(iterable);
|
307 |
+
return _.values(iterable);
|
308 |
+
};
|
309 |
+
|
310 |
+
// Return the number of elements in an object.
|
311 |
+
_.size = function(obj) {
|
312 |
+
return _.toArray(obj).length;
|
313 |
+
};
|
314 |
+
|
315 |
+
// Array Functions
|
316 |
+
// ---------------
|
317 |
+
|
318 |
+
// Get the first element of an array. Passing **n** will return the first N
|
319 |
+
// values in the array. Aliased as `head`. The **guard** check allows it to work
|
320 |
+
// with `_.map`.
|
321 |
+
_.first = _.head = function(array, n, guard) {
|
322 |
+
return (n != null) && !guard ? slice.call(array, 0, n) : array[0];
|
323 |
+
};
|
324 |
+
|
325 |
+
// Returns everything but the last entry of the array. Especcialy useful on
|
326 |
+
// the arguments object. Passing **n** will return all the values in
|
327 |
+
// the array, excluding the last N. The **guard** check allows it to work with
|
328 |
+
// `_.map`.
|
329 |
+
_.initial = function(array, n, guard) {
|
330 |
+
return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
|
331 |
+
};
|
332 |
+
|
333 |
+
// Get the last element of an array. Passing **n** will return the last N
|
334 |
+
// values in the array. The **guard** check allows it to work with `_.map`.
|
335 |
+
_.last = function(array, n, guard) {
|
336 |
+
if ((n != null) && !guard) {
|
337 |
+
return slice.call(array, Math.max(array.length - n, 0));
|
338 |
+
} else {
|
339 |
+
return array[array.length - 1];
|
340 |
+
}
|
341 |
+
};
|
342 |
+
|
343 |
+
// Returns everything but the first entry of the array. Aliased as `tail`.
|
344 |
+
// Especially useful on the arguments object. Passing an **index** will return
|
345 |
+
// the rest of the values in the array from that index onward. The **guard**
|
346 |
+
// check allows it to work with `_.map`.
|
347 |
+
_.rest = _.tail = function(array, index, guard) {
|
348 |
+
return slice.call(array, (index == null) || guard ? 1 : index);
|
349 |
+
};
|
350 |
+
|
351 |
+
// Trim out all falsy values from an array.
|
352 |
+
_.compact = function(array) {
|
353 |
+
return _.filter(array, function(value){ return !!value; });
|
354 |
+
};
|
355 |
+
|
356 |
+
// Return a completely flattened version of an array.
|
357 |
+
_.flatten = function(array, shallow) {
|
358 |
+
return _.reduce(array, function(memo, value) {
|
359 |
+
if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value));
|
360 |
+
memo[memo.length] = value;
|
361 |
+
return memo;
|
362 |
+
}, []);
|
363 |
+
};
|
364 |
+
|
365 |
+
// Return a version of the array that does not contain the specified value(s).
|
366 |
+
_.without = function(array) {
|
367 |
+
return _.difference(array, slice.call(arguments, 1));
|
368 |
+
};
|
369 |
+
|
370 |
+
// Produce a duplicate-free version of the array. If the array has already
|
371 |
+
// been sorted, you have the option of using a faster algorithm.
|
372 |
+
// Aliased as `unique`.
|
373 |
+
_.uniq = _.unique = function(array, isSorted, iterator) {
|
374 |
+
var initial = iterator ? _.map(array, iterator) : array;
|
375 |
+
var result = [];
|
376 |
+
_.reduce(initial, function(memo, el, i) {
|
377 |
+
if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) {
|
378 |
+
memo[memo.length] = el;
|
379 |
+
result[result.length] = array[i];
|
380 |
+
}
|
381 |
+
return memo;
|
382 |
+
}, []);
|
383 |
+
return result;
|
384 |
+
};
|
385 |
+
|
386 |
+
// Produce an array that contains the union: each distinct element from all of
|
387 |
+
// the passed-in arrays.
|
388 |
+
_.union = function() {
|
389 |
+
return _.uniq(_.flatten(arguments, true));
|
390 |
+
};
|
391 |
+
|
392 |
+
// Produce an array that contains every item shared between all the
|
393 |
+
// passed-in arrays. (Aliased as "intersect" for back-compat.)
|
394 |
+
_.intersection = _.intersect = function(array) {
|
395 |
+
var rest = slice.call(arguments, 1);
|
396 |
+
return _.filter(_.uniq(array), function(item) {
|
397 |
+
return _.every(rest, function(other) {
|
398 |
+
return _.indexOf(other, item) >= 0;
|
399 |
+
});
|
400 |
+
});
|
401 |
+
};
|
402 |
+
|
403 |
+
// Take the difference between one array and a number of other arrays.
|
404 |
+
// Only the elements present in just the first array will remain.
|
405 |
+
_.difference = function(array) {
|
406 |
+
var rest = _.flatten(slice.call(arguments, 1));
|
407 |
+
return _.filter(array, function(value){ return !_.include(rest, value); });
|
408 |
+
};
|
409 |
+
|
410 |
+
// Zip together multiple lists into a single array -- elements that share
|
411 |
+
// an index go together.
|
412 |
+
_.zip = function() {
|
413 |
+
var args = slice.call(arguments);
|
414 |
+
var length = _.max(_.pluck(args, 'length'));
|
415 |
+
var results = new Array(length);
|
416 |
+
for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i);
|
417 |
+
return results;
|
418 |
+
};
|
419 |
+
|
420 |
+
// If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
|
421 |
+
// we need this function. Return the position of the first occurrence of an
|
422 |
+
// item in an array, or -1 if the item is not included in the array.
|
423 |
+
// Delegates to **ECMAScript 5**'s native `indexOf` if available.
|
424 |
+
// If the array is large and already in sort order, pass `true`
|
425 |
+
// for **isSorted** to use binary search.
|
426 |
+
_.indexOf = function(array, item, isSorted) {
|
427 |
+
if (array == null) return -1;
|
428 |
+
var i, l;
|
429 |
+
if (isSorted) {
|
430 |
+
i = _.sortedIndex(array, item);
|
431 |
+
return array[i] === item ? i : -1;
|
432 |
+
}
|
433 |
+
if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item);
|
434 |
+
for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i;
|
435 |
+
return -1;
|
436 |
+
};
|
437 |
+
|
438 |
+
// Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
|
439 |
+
_.lastIndexOf = function(array, item) {
|
440 |
+
if (array == null) return -1;
|
441 |
+
if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item);
|
442 |
+
var i = array.length;
|
443 |
+
while (i--) if (i in array && array[i] === item) return i;
|
444 |
+
return -1;
|
445 |
+
};
|
446 |
+
|
447 |
+
// Generate an integer Array containing an arithmetic progression. A port of
|
448 |
+
// the native Python `range()` function. See
|
449 |
+
// [the Python documentation](http://docs.python.org/library/functions.html#range).
|
450 |
+
_.range = function(start, stop, step) {
|
451 |
+
if (arguments.length <= 1) {
|
452 |
+
stop = start || 0;
|
453 |
+
start = 0;
|
454 |
+
}
|
455 |
+
step = arguments[2] || 1;
|
456 |
+
|
457 |
+
var len = Math.max(Math.ceil((stop - start) / step), 0);
|
458 |
+
var idx = 0;
|
459 |
+
var range = new Array(len);
|
460 |
+
|
461 |
+
while(idx < len) {
|
462 |
+
range[idx++] = start;
|
463 |
+
start += step;
|
464 |
+
}
|
465 |
+
|
466 |
+
return range;
|
467 |
+
};
|
468 |
+
|
469 |
+
// Function (ahem) Functions
|
470 |
+
// ------------------
|
471 |
+
|
472 |
+
// Reusable constructor function for prototype setting.
|
473 |
+
var ctor = function(){};
|
474 |
+
|
475 |
+
// Create a function bound to a given object (assigning `this`, and arguments,
|
476 |
+
// optionally). Binding with arguments is also known as `curry`.
|
477 |
+
// Delegates to **ECMAScript 5**'s native `Function.bind` if available.
|
478 |
+
// We check for `func.bind` first, to fail fast when `func` is undefined.
|
479 |
+
_.bind = function bind(func, context) {
|
480 |
+
var bound, args;
|
481 |
+
if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
|
482 |
+
if (!_.isFunction(func)) throw new TypeError;
|
483 |
+
args = slice.call(arguments, 2);
|
484 |
+
return bound = function() {
|
485 |
+
if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
|
486 |
+
ctor.prototype = func.prototype;
|
487 |
+
var self = new ctor;
|
488 |
+
var result = func.apply(self, args.concat(slice.call(arguments)));
|
489 |
+
if (Object(result) === result) return result;
|
490 |
+
return self;
|
491 |
+
};
|
492 |
+
};
|
493 |
+
|
494 |
+
// Bind all of an object's methods to that object. Useful for ensuring that
|
495 |
+
// all callbacks defined on an object belong to it.
|
496 |
+
_.bindAll = function(obj) {
|
497 |
+
var funcs = slice.call(arguments, 1);
|
498 |
+
if (funcs.length == 0) funcs = _.functions(obj);
|
499 |
+
each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
|
500 |
+
return obj;
|
501 |
+
};
|
502 |
+
|
503 |
+
// Memoize an expensive function by storing its results.
|
504 |
+
_.memoize = function(func, hasher) {
|
505 |
+
var memo = {};
|
506 |
+
hasher || (hasher = _.identity);
|
507 |
+
return function() {
|
508 |
+
var key = hasher.apply(this, arguments);
|
509 |
+
return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
|
510 |
+
};
|
511 |
+
};
|
512 |
+
|
513 |
+
// Delays a function for the given number of milliseconds, and then calls
|
514 |
+
// it with the arguments supplied.
|
515 |
+
_.delay = function(func, wait) {
|
516 |
+
var args = slice.call(arguments, 2);
|
517 |
+
return setTimeout(function(){ return func.apply(func, args); }, wait);
|
518 |
+
};
|
519 |
+
|
520 |
+
// Defers a function, scheduling it to run after the current call stack has
|
521 |
+
// cleared.
|
522 |
+
_.defer = function(func) {
|
523 |
+
return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
|
524 |
+
};
|
525 |
+
|
526 |
+
// Returns a function, that, when invoked, will only be triggered at most once
|
527 |
+
// during a given window of time.
|
528 |
+
_.throttle = function(func, wait) {
|
529 |
+
var context, args, timeout, throttling, more;
|
530 |
+
var whenDone = _.debounce(function(){ more = throttling = false; }, wait);
|
531 |
+
return function() {
|
532 |
+
context = this; args = arguments;
|
533 |
+
var later = function() {
|
534 |
+
timeout = null;
|
535 |
+
if (more) func.apply(context, args);
|
536 |
+
whenDone();
|
537 |
+
};
|
538 |
+
if (!timeout) timeout = setTimeout(later, wait);
|
539 |
+
if (throttling) {
|
540 |
+
more = true;
|
541 |
+
} else {
|
542 |
+
func.apply(context, args);
|
543 |
+
}
|
544 |
+
whenDone();
|
545 |
+
throttling = true;
|
546 |
+
};
|
547 |
+
};
|
548 |
+
|
549 |
+
// Returns a function, that, as long as it continues to be invoked, will not
|
550 |
+
// be triggered. The function will be called after it stops being called for
|
551 |
+
// N milliseconds.
|
552 |
+
_.debounce = function(func, wait) {
|
553 |
+
var timeout;
|
554 |
+
return function() {
|
555 |
+
var context = this, args = arguments;
|
556 |
+
var later = function() {
|
557 |
+
timeout = null;
|
558 |
+
func.apply(context, args);
|
559 |
+
};
|
560 |
+
clearTimeout(timeout);
|
561 |
+
timeout = setTimeout(later, wait);
|
562 |
+
};
|
563 |
+
};
|
564 |
+
|
565 |
+
// Returns a function that will be executed at most one time, no matter how
|
566 |
+
// often you call it. Useful for lazy initialization.
|
567 |
+
_.once = function(func) {
|
568 |
+
var ran = false, memo;
|
569 |
+
return function() {
|
570 |
+
if (ran) return memo;
|
571 |
+
ran = true;
|
572 |
+
return memo = func.apply(this, arguments);
|
573 |
+
};
|
574 |
+
};
|
575 |
+
|
576 |
+
// Returns the first function passed as an argument to the second,
|
577 |
+
// allowing you to adjust arguments, run code before and after, and
|
578 |
+
// conditionally execute the original function.
|
579 |
+
_.wrap = function(func, wrapper) {
|
580 |
+
return function() {
|
581 |
+
var args = [func].concat(slice.call(arguments, 0));
|
582 |
+
return wrapper.apply(this, args);
|
583 |
+
};
|
584 |
+
};
|
585 |
+
|
586 |
+
// Returns a function that is the composition of a list of functions, each
|
587 |
+
// consuming the return value of the function that follows.
|
588 |
+
_.compose = function() {
|
589 |
+
var funcs = arguments;
|
590 |
+
return function() {
|
591 |
+
var args = arguments;
|
592 |
+
for (var i = funcs.length - 1; i >= 0; i--) {
|
593 |
+
args = [funcs[i].apply(this, args)];
|
594 |
+
}
|
595 |
+
return args[0];
|
596 |
+
};
|
597 |
+
};
|
598 |
+
|
599 |
+
// Returns a function that will only be executed after being called N times.
|
600 |
+
_.after = function(times, func) {
|
601 |
+
if (times <= 0) return func();
|
602 |
+
return function() {
|
603 |
+
if (--times < 1) { return func.apply(this, arguments); }
|
604 |
+
};
|
605 |
+
};
|
606 |
+
|
607 |
+
// Object Functions
|
608 |
+
// ----------------
|
609 |
+
|
610 |
+
// Retrieve the names of an object's properties.
|
611 |
+
// Delegates to **ECMAScript 5**'s native `Object.keys`
|
612 |
+
_.keys = nativeKeys || function(obj) {
|
613 |
+
if (obj !== Object(obj)) throw new TypeError('Invalid object');
|
614 |
+
var keys = [];
|
615 |
+
for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;
|
616 |
+
return keys;
|
617 |
+
};
|
618 |
+
|
619 |
+
// Retrieve the values of an object's properties.
|
620 |
+
_.values = function(obj) {
|
621 |
+
return _.map(obj, _.identity);
|
622 |
+
};
|
623 |
+
|
624 |
+
// Return a sorted list of the function names available on the object.
|
625 |
+
// Aliased as `methods`
|
626 |
+
_.functions = _.methods = function(obj) {
|
627 |
+
var names = [];
|
628 |
+
for (var key in obj) {
|
629 |
+
if (_.isFunction(obj[key])) names.push(key);
|
630 |
+
}
|
631 |
+
return names.sort();
|
632 |
+
};
|
633 |
+
|
634 |
+
// Extend a given object with all the properties in passed-in object(s).
|
635 |
+
_.extend = function(obj) {
|
636 |
+
each(slice.call(arguments, 1), function(source) {
|
637 |
+
for (var prop in source) {
|
638 |
+
obj[prop] = source[prop];
|
639 |
+
}
|
640 |
+
});
|
641 |
+
return obj;
|
642 |
+
};
|
643 |
+
|
644 |
+
// Fill in a given object with default properties.
|
645 |
+
_.defaults = function(obj) {
|
646 |
+
each(slice.call(arguments, 1), function(source) {
|
647 |
+
for (var prop in source) {
|
648 |
+
if (obj[prop] == null) obj[prop] = source[prop];
|
649 |
+
}
|
650 |
+
});
|
651 |
+
return obj;
|
652 |
+
};
|
653 |
+
|
654 |
+
// Create a (shallow-cloned) duplicate of an object.
|
655 |
+
_.clone = function(obj) {
|
656 |
+
if (!_.isObject(obj)) return obj;
|
657 |
+
return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
|
658 |
+
};
|
659 |
+
|
660 |
+
// Invokes interceptor with the obj, and then returns obj.
|
661 |
+
// The primary purpose of this method is to "tap into" a method chain, in
|
662 |
+
// order to perform operations on intermediate results within the chain.
|
663 |
+
_.tap = function(obj, interceptor) {
|
664 |
+
interceptor(obj);
|
665 |
+
return obj;
|
666 |
+
};
|
667 |
+
|
668 |
+
// Internal recursive comparison function.
|
669 |
+
function eq(a, b, stack) {
|
670 |
+
// Identical objects are equal. `0 === -0`, but they aren't identical.
|
671 |
+
// See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.
|
672 |
+
if (a === b) return a !== 0 || 1 / a == 1 / b;
|
673 |
+
// A strict comparison is necessary because `null == undefined`.
|
674 |
+
if (a == null || b == null) return a === b;
|
675 |
+
// Unwrap any wrapped objects.
|
676 |
+
if (a._chain) a = a._wrapped;
|
677 |
+
if (b._chain) b = b._wrapped;
|
678 |
+
// Invoke a custom `isEqual` method if one is provided.
|
679 |
+
if (a.isEqual && _.isFunction(a.isEqual)) return a.isEqual(b);
|
680 |
+
if (b.isEqual && _.isFunction(b.isEqual)) return b.isEqual(a);
|
681 |
+
// Compare `[[Class]]` names.
|
682 |
+
var className = toString.call(a);
|
683 |
+
if (className != toString.call(b)) return false;
|
684 |
+
switch (className) {
|
685 |
+
// Strings, numbers, dates, and booleans are compared by value.
|
686 |
+
|